采用将BP神经网络的学习算法应用于PID控制中,使BP神经网络与PID控制算法结合起来,通过吸收两者的优势,使系统具有自适应性。这样系统可自动调节控制参数,更好地适应输入变量的变化,提高控制性能和可靠性。本文从BP神经网络的基本构成原理、学习规则和学习算法出发,设计了基于BP神经网络的PID控制器,并对其进行了仿真分析,结果表明,该控制方案可行、有效。
上传时间: 2014-02-27
上传用户:源码3
介绍神经网络识别手写数字 反向传播算法和改进神经网络的学习方法
标签: 神经网络 深度学习
上传时间: 2017-08-02
上传用户:yaoshuai
/****************temic*********t5557***********************************/ #include <at892051.h> #include <string.h> #include <intrins.h> #include <stdio.h> #define uchar unsigned char #define uint unsigned int #define ulong unsigned long //STC12C2051AD的SFR定义 sfr WDT_CONTR = 0xe1;//stc2051的看门狗?????? /**********全局常量************/ //写卡的命令 #define write_command0 0//写密码 #define write_command1 1//写配置字 #define write_command2 2//密码写数据 #define write_command3 3//唤醒 #define write_command4 4//停止命令 #define TRUE 1 #define FALSE 0 #define OK 0 #define ERROR 255 //读卡的时间参数us #define ts_min 250//270*11.0592/12=249//取近似的整数 #define ts_max 304//330*11.0592/12=304 #define t1_min 73//90*11.0592/12=83:-10调整 #define t1_max 156//180*11.0592/12=166 #define t2_min 184//210*11.0592/12=194 #define t2_max 267//300*11.0592/12=276 //***********不采用中断处理:采用查询的方法读卡时关所有中断****************/ sbit p_U2270B_Standby = P3^5;//p_U2270B_Standby PIN=13 sbit p_U2270B_CFE = P3^3;//p_U2270B_CFE PIN=6 sbit p_U2270B_OutPut = P3^7;//p_U2270B_OutPut PIN=2 sbit wtd_sck = P1^7;//SPI总线 sbit wtd_si = P1^3; sbit wtd_so = P1^2; sbit iic_data = P1^2;//lcd IIC sbit iic_clk = P1^7; sbit led_light = P1^6;//测试绿灯 sbit led_light1 = P1^5;//测试红灯 sbit led_light_ok = P1^1;//读卡成功标志 sbit fengmingqi = P1^5; /***********全局变量************************************/ uchar data Nkey_a[4] = {0xA0, 0xA1, 0xA2, 0xA3};//初始密码 //uchar idata card_snr[4]; //配置字 uchar data bankdata[28] = {1,2,3,4,5,6,7,1,2,3,4,5,6,7,1,2,3,4,5,6,7,1,2,3,4,5,6,7}; //存储卡上用户数据(1-7)7*4=28 uchar data cominceptbuff[6] = {1,2,3,4,5,6};//串口接收数组ram uchar command; //第一个命令 uchar command1;// //uint temp; uchar j,i; uchar myaddr = 8; //uchar ywqz_count,time_count; //ywqz jishu: uchar bdata DATA; sbit BIT0 = DATA^0; sbit BIT1 = DATA^1; sbit BIT2 = DATA^2; sbit BIT3 = DATA^3; sbit BIT4 = DATA^4; sbit BIT5 = DATA^5; sbit BIT6 = DATA^6; sbit BIT7 = DATA^7; uchar bdata DATA1; sbit BIT10 = DATA1^0; sbit BIT11 = DATA1^1; sbit BIT12 = DATA1^2; sbit BIT13 = DATA1^3; sbit BIT14 = DATA1^4; sbit BIT15 = DATA1^5; sbit BIT16 = DATA1^6; sbit BIT17 = DATA1^7; bit i_CurrentLevel;//i_CurrentLevel BIT 00H(Saves current level of OutPut pin of U2270B) bit timer1_end; bit read_ok = 0; //缓存定时值,因用同一个定时器 union HLint { uint W; struct { uchar H;uchar L; } B; };//union HLint idata a union HLint data a; //缓存定时值,因用同一个定时器 union HLint0 { uint W; struct { uchar H; uchar L; } B; };//union HLint idata a union HLint0 data b; /**********************函数原型*****************/ //读写操作 void f_readcard(void);//全部读出1~7 AOR唤醒 void f_writecard(uchar x);//根据命令写不同的内容和操作 void f_clearpassword(void);//清除密码 void f_changepassword(void);//修改密码 //功能子函数 void write_password(uchar data *data p);//写初始密码或数据 void write_block(uchar x,uchar data *data p);//不能用通用指针 void write_bit(bit x);//写位 /*子函数区*****************************************************/ void delay_2(uint x) //延时,时间x*10us@12mhz,最小20us@12mhz { x--; x--; while(x) { _nop_(); _nop_(); x--; } _nop_();//WDT_CONTR=0X3C;不能频繁的复位 _nop_(); } ///////////////////////////////////////////////////////////////////// void initial(void) { SCON = 0x50; //串口方式1,允许接收 //SCON =0x50; //01010000B:10位异步收发,波特率可变,SM2=0不用接收到有效停止位才RI=1, //REN=1允许接收 TMOD = 0x21; //定时器1 定时方式2(8位),定时器0 定时方式1(16位) TCON = 0x40; //设定时器1 允许开始计时(IT1=1) TH1 = 0xfD; //FB 18.432MHz 9600 波特率 TL1 = 0xfD; //fd 11.0592 9600 IE = 0X90; //EA=ES=1 TR1 = 1; //启动定时器 WDT_CONTR = 0x3c;//使能看门狗 p_U2270B_Standby = 0;//单电源 PCON = 0x00; IP = 0x10;//uart you xian XXXPS PT1 PX1 PT0 PX0 led_light1 = 1; led_light = 0; p_U2270B_OutPut = 1; } /************************************************/ void f_readcard()//读卡 { EA = 0;//全关,防止影响跳变的定时器计时 WDT_CONTR = 0X3C;//喂狗 p_U2270B_CFE = 1;// delay_2(232); //>2.5ms /* // aor 用唤醒功能来防碰撞 p_U2270B_CFE = 0; delay_2(18);//start gap>150us write_bit(1);//10=操作码读0页 write_bit(0); write_password(&bankdata[24]);//密码block7 p_U2270B_CFE =1 ;// delay_2(516);//编程及确认时间5.6ms */ WDT_CONTR = 0X3C;//喂狗 led_light = 0; b.W = 0; while(!(read_ok == 1)) { //while(p_U2270B_OutPut);//等一个稳定的低电平?超时判断? while(!p_U2270B_OutPut);//等待上升沿的到来同步信号检测1 TR0 = 1; //deng xia jiang while(p_U2270B_OutPut);//等待下降沿 TR0 = 0; a.B.H = TH0; a.B.L = TL0; TH0 = TL0 = 0; TR0 = 1;//定时器晚启动10个周期 //同步头 if((324 < a.W) && (a.W < 353)) ;//检测同步信号1 else { TR0 = 0; TH0 = TL0 = 0; goto read_error; } //等待上升沿 while(!p_U2270B_OutPut); TR0 = 0; a.B.H = TH0; a.B.L = TL0; TH0 = TL0 = 0; TR0 = 1;//b.N1<<=8; if(a.B.L < 195);//0.5p else { TR0 = 0; TH0 = TL0 = 0; goto read_error; } //读0~7块的数据 for(j = 0;j < 28;j++) { //uchar i; for(i = 0;i < 16;i++)//8个位 { //等待下降沿的到来 while(p_U2270B_OutPut); TR0 = 0; a.B.H = TH0; a.B.L = TL0; TH0 = TL0 = 0; TR0 = 1; if(t2_max < a.W/*)&&(a.W < t2_max)*/)//1P { b.W >>= 2;//先左移再赋值 b.B.L += 0xc0; i++; } else if(t1_min < a.B.L/*)&&(a.B.L < t1_max)*/)//0.5p { b.W >>= 1; b.B.L += 0x80; } else { TR0 = 0; TH0 = TL0 = 0; goto read_error; } i++; while(!p_U2270B_OutPut);//上升 TR0 = 0; a.B.H = TH0; a.B.L = TL0; TH0 = TL0 = 0; TR0 = 1; if(t2_min < a.W/*)&&(a.W < t2_max)*/)//1P { b.W >>= 2; i++; } else if(t1_min < a.B.L/*a.W)&&(a.B.L < t1_max)*/)//0.5P //else if(!(a.W==0)) { b.W >>= 1; //temp+=0x00; //led_light1=0;led_light=1;delay_2(40000); } else { TR0 = 0; TH0 = TL0 = 0; goto read_error; } i++; } //取出奇位 DATA = b.B.L; BIT13 = BIT7; BIT12 = BIT5; BIT11 = BIT3; BIT10 = BIT1; DATA = b.B.H; BIT17 = BIT7; BIT16 = BIT5; BIT15 = BIT3; BIT14 = BIT1; bankdata[j] = DATA1; } read_ok = 1;//读卡完成了 read_error: _nop_(); } } /***************************************************/ void f_writecard(uchar x)//写卡 { p_U2270B_CFE = 1; delay_2(232); //>2.5ms //psw=0 standard write if (x == write_command0)//写密码:初始化密码 { uchar i; uchar data *data p; p = cominceptbuff; p_U2270B_CFE = 0; delay_2(31);//start gap>330us write_bit(1);//写操作码1:10 write_bit(0);//写操作码0 write_bit(0);//写锁定位0 for(i = 0;i < 35;i++) { write_bit(1);//写数据位1 } p_U2270B_CFE = 1; led_light1 = 0; led_light = 1; delay_2(40000);//测试使用 //write_block(cominceptbuff[4],p); p_U2270B_CFE = 1; bankdata[20] = cominceptbuff[0];//密码存入 bankdata[21] = cominceptbuff[1]; bankdata[22] = cominceptbuff[2]; bankdata[23] = cominceptbuff[3]; } else if (x == write_command1)//配置卡参数:初始化 { uchar data *data p; p = cominceptbuff; write_bit(1);//写操作码1:10 write_bit(0);//写操作码0 write_bit(0);//写锁定位0 write_block(cominceptbuff[4],p); p_U2270B_CFE= 1; } //psw=1 pssword mode else if(x == write_command2) //密码写数据 { uchar data*data p; p = &bankdata[24]; write_bit(1);//写操作码1:10 write_bit(0);//写操作码0 write_password(p);//发口令 write_bit(0);//写锁定位0 p = cominceptbuff; write_block(cominceptbuff[4],p);//写数据 } else if(x == write_command3)//aor //唤醒 { //cominceptbuff[1]操作码10 X xxxxxB uchar data *data p; p = cominceptbuff; write_bit(1);//10 write_bit(0); write_password(p);//密码 p_U2270B_CFE = 1;//此时数据不停的循环传出 } else //停止操作码 { write_bit(1);//11 write_bit(1); p_U2270B_CFE = 1; } p_U2270B_CFE = 1; delay_2(560);//5.6ms } /************************************/ void f_clearpassword()//清除密码 { uchar data *data p; uchar i,x; p = &bankdata[24];//原密码 p_U2270B_CFE = 0; delay_2(18);//start gap>150us //操作码10:10xxxxxxB write_bit(1); write_bit(0); for(x = 0;x < 4;x++)//发原密码 { DATA = *(p++); for(i = 0;i < 8;i++) { write_bit(BIT0); DATA >>= 1; } } write_bit(0);//锁定位0:0 p = &cominceptbuff[0]; write_block(0x00,p);//写新配置参数:pwd=0 //密码无效:即清除密码 DATA = 0x00;//停止操作码00000000B for(i = 0;i < 2;i++) { write_bit(BIT7); DATA <<= 1; } p_U2270B_CFE = 1; delay_2(560);//5.6ms } /*********************************/ void f_changepassword()//修改密码 { uchar data *data p; uchar i,x,addr; addr = 0x07;//block7 p = &Nkey_a[0];//原密码 DATA = 0x80;//操作码10:10xxxxxxB for(i = 0;i < 2;i++) { write_bit(BIT7); DATA <<= 1; } for(x = 0;x < 4;x++)//发原密码 { DATA = *(p++); for(i = 0;i < 8;i++) { write_bit(BIT7); DATA >>= 1; } } write_bit(0);//锁定位0:0 p = &cominceptbuff[0]; write_block(0x07,p);//写新密码 p_U2270B_CFE = 1; bankdata[24] = cominceptbuff[0];//密码存入 bankdata[25] = cominceptbuff[1]; bankdata[26] = cominceptbuff[2]; bankdata[27] = cominceptbuff[3]; DATA = 0x00;//停止操作码00000000B for(i = 0;i < 2;i++) { write_bit(BIT7); DATA <<= 1; } p_U2270B_CFE = 1; delay_2(560);//5.6ms } /***************************子函数***********************************/ void write_bit(bit x)//写一位 { if(x) { p_U2270B_CFE = 1; delay_2(32);//448*11.0592/120=42延时448us p_U2270B_CFE = 0; delay_2(28);//280*11.0592/120=26写1 } else { p_U2270B_CFE = 1; delay_2(92);//192*11.0592/120=18 p_U2270B_CFE = 0; delay_2(28);//280*11.0592/120=26写0 } } /*******************写一个block*******************/ void write_block(uchar addr,uchar data *data p) { uchar i,j; for(i = 0;i < 4;i++)//block0数据 { DATA = *(p++); for(j = 0;j < 8;j++) { write_bit(BIT0); DATA >>= 1; } } DATA = addr <<= 5;//0地址 for(i = 0;i < 3;i++) { write_bit(BIT7); DATA <<= 1; } } /*************************************************/ void write_password(uchar data *data p) { uchar i,j; for(i = 0;i < 4;i++)// { DATA = *(p++); for(j = 0;j < 8;j++) { write_bit(BIT0); DATA >>= 1; } } } /*************************************************/ void main() { initial(); TI = RI = 0; ES = 1; EA = 1; delay_2(28); //f_readcard(); while(1) { f_readcard(); //读卡 f_writecard(command1); //写卡 f_clearpassword(); //清除密码 f_changepassword(); //修改密码 } }
标签: 12345
上传时间: 2017-10-20
上传用户:my_lcs
数字电子电路的期中测试题,word文档,填空、单选、化简和设计题。
上传时间: 2018-10-13
上传用户:leeh
基于TMS320F2812 光伏并网发电模拟装置PROTEL设计原理图+PCB+软件源码+WORD论文文档,硬件采用2层板设计,PROTEL99SE 设计的工程文件,包括完整的原理图和PCB文件,可以做为你的学习设计参考。 摘要:本文实现了一个基于TMS320F2812 DSP芯片的光伏并网发电模拟装置,采用直流稳压源和滑动变阻器来模拟光伏电池。通过TMS320F2812 DSP芯片ADC模块实时采样模拟电网电压的正弦参考信号、光伏电池输出电压、负载电压电流反馈信号等。经过数据处理后,用PWM模块产生实时的SPWM 波,控制MOSFET逆变全桥输出正弦波。本文用PI控制算法实现了输出信号对给定模拟电网电压的正弦参考信号的频率和相位跟踪,用恒定电压法实现了光伏电池最大功率点跟踪(MPPT),从而达到模拟并网的效果。另外本装置还实现了光伏电池输出欠压、负载过流保护功能以及光伏电池输出欠压、过流保护自恢复功能、声光报警功能、孤岛效应的检测、保护与自恢复功能。系统测试结果表明本设计完全满定设计要求。关键词:光伏并网,MPPT,DSP Photovoltaic Grid-connected generation simulator Zhangyuxin,Tantiancheng,Xiewuyang(College of Electrical Engineering, Chongqing University)Abstract: This paper presents a photovoltaic grid-connected generation simulator which is based on TMS320F2812 DSP, with a DC voltage source and a variable resistor to simulate the characteristic of photovoltaic cells. We use the internal AD converter to real-time sampling the referenced grid voltage signal, outputting voltage of photovoltaic, feedback outputting voltage and current signal. The PWM module generates SVPWM according to the calculation of the real-time sampling data, to control the full MOSFET inverter bridge output sine wave. We realized that the output voltage of the simulator can track the frequency and phase of the referenced grid voltage with PI regulation, and the maximum photovoltaic power tracking with constant voltage regulation, thereby achieved the purpose of grid-connected simulation. Additionally, this device has the over-voltage and over-current protection, audible and visual alarm, islanding detecting and protection, and it can recover automatically. The testing shows that our design is feasible.Keywords: Photovoltaic Grid-connected,MPPT,DSP 目录引言 11. 方案论证 11.1. 总体介绍 11.2. 光伏电池模拟装置 11.3. DC-AC逆变桥 11.4. MOSFET驱动电路方案 21.5. 逆变电路的变频控制方案 22. 理论分析与计算 22.1. SPWM产生 22.1.1. 规则采样法 22.1.2. SPWM 脉冲的计算公式 32.1.3. SPWM 脉冲计算公式中的参数计算 32.1.4. TMS320F2812 DSP控制器的事件管理单元 42.1.5. 软件设计方法 62.2. MPPT的控制方法与参数计算 72.3. 同频、同相的控制方法和参数计算 8
标签: tms320f2812 光伏 并网发电 模拟 protel pcb
上传时间: 2021-11-02
上传用户:
蚁群算法基本模型STEP1(外循环)若满足算法停止规则,停止计算,输出计算得到的最好解给定外循环的最大数目,表明有足够的蚂蚁工作当前最优解连续K次相同而停止,K是给定的整数,表示算法已收敛◆给定优化问题的下界和误差值,当算法得到的目标值同下界之差小于给定的误差值时,算法终止否则使蚂蚁s(1≤s≤m)从起点出发,用L(S)表示蚂蚁S行走的城市集合,初始L(s)为空集。设m只蚂蚁在图的相邻节点间移动,协作异步地得到解。蚂蚁计算出下一步所有可达节点的一步转移概率,并按此概率实现一步移动,依此往复。一步转移概率由图中每条边上的两类参数决定:信息素值、可见度(即先验值)。信息素的更新有2种方式:挥发——所有路径上信息素以一定比率减少增强——给评价值“好”(有蚂蚁走过)的边增加信息素蚁群算法基木模型令我们以求解平面上n个城市的TSP问题(1,2,…,n)表示城市号为例说明ACA的模型。n个城市的TSP问题就是寻找通过n个城市各次且最后回到出发点的最短路径蚁群算法研究现状令ACA是模拟自然界中真实蚁群的觅食行为而形成的一种模拟进化算法。10年多来的研究结果已经表明:ACA用于组合优化具有很强的发现较好解的能力,具有分布式计算易于与其他方法相结合、鲁棒性强等优点,在动态环境下也表现出高度的灵活性和健壮性。在求解TSP、QAP问题方面,与遗传算法、模拟退火算法等算法比较,ACA仍是最好的解决方法之一。
标签: 蚂蚁算法
上传时间: 2022-03-10
上传用户:
本文首先对eMMC5.0规范进行了研究总结,并在此基础上根据系统指标提出了整体设计方案。存储器以FPGA作为主控制器,按照功能划分为SFP光纤接口模块、DDR3高速缓存模块、eMMC阵列存储模块和与上位机通信的干兆网模块。在系统逻辑设计中重点介绍了eMMC阵列控制逻辑的实现。通过对eMMC阵列的初始化单元、传输控制单元、命令接口单元以及阵列同步逻辑单元的设计,实现了eMMC阵列在HS400工作模式下的数据存储。然后对系统其他模块进行设计,配合完成整个系统的存储功能。最后,依据设计方案,搭建了硬件测试平台。使用ChipScope,IBERT等对各个模块进行了在线调试。重点对eMMC阵列控制器进行了调试,并对SFP光纤接口模块和DDR3高速缓存模块的逻辑进行了验证。结果表明,本文设计的使用eMMC新型存储介质的高速固态存储器能够实现156MB/s的存储带宽,同时具有容量大、可移植强与系统升级容易等特点,满足设计要求。本文开展的基于eMMC阵列的高速固态存储器的研究与设计,为后续动态测试领域的应用奠定了基础。关键词:eMMC阵列,eMMC5.0,数据存储器,HS400
上传时间: 2022-06-19
上传用户:
木书以神经网络结构为主线,以学习算法为副线,详细介绍了神经网络结构和算法步骤,并给出实例和练习,目的是使读者易看懂,能动手,会应用。主要内容包括:人工神经网络简介、单层前向网络及LMS学习算法、多层前向网络及BP学习算法、支持向量机及其学习算法、 Hopfield神经网络与联想记忆、随机神经网络及模拟退火算法、竞争神经网络和协同神经网络。每章均给出了基于 MATLAB的仿真实例以及练习。
标签: 人工神经网络
上传时间: 2022-07-12
上传用户:
全书共分17章:第1至7章分别讲述蓄电池、交流发电机与调节器、起动系统、传统点火系统与电子点火系统、照明与信号系统、汽车仪表与报警指示灯系统、汽车辅助电器设备等汽车电器设备内容;第8至16章分别讲述汽油机电子燃油喷射系统与发动机管理系统,柴油机高压共轨喷射系统,电控自动变速器,防抱死制动系统、驱动防滑系统与电子稳定程序控制系统安全气囊系统,汽车巡航控制系统,电子控制悬架,汽车电子系统网络与汽车CAN总线等汽车电子控制系统内容;第17章综合分析汽车电器与电子系统总电路。
上传时间: 2022-07-12
上传用户:
电磁场与微波技术专业主要从事电磁场理论、微波光波技术及其工程应用的研究,包括电磁场理论与应用、光波导理论与技术、微波毫米波技术与系统、微波毫米波集成技术、光波技术及其应用等几个主要研究方向。研究课题主要涉及电磁理论中的辐射与散射、计算电磁学、微波毫米波器件与电路、微波毫米波通信与雷达系统、超宽带(UWB)技术、新型天线技术、复杂目标的散射特性和复杂环境的传播特性、光器件与光传感技术、空间光通信与量子密钥分配技术以及与相关学科交叉的理论与技术等。适合从事微波在介质中的传输,电磁场目标识别、成像,微波波谱理论与技术研究和微波、光纤传感器,微波波谱仪、微波吸收材料的开发研制的工程人员学习。
上传时间: 2022-07-17
上传用户:得之我幸78