参考一下刘金琨的《先进PID控制》这本书。
例子:被控对象yout(k)=a(k)yout(k-1)/(1+yout(k-1)^2)+u(k_1)其中a(k)=1.2(1-0.8e^(-0.1k))输入信号:rin(k)=1.0和rin(k)=sin(2t)%BPbasedPIDControlclearall;closeall;xite=0.25;//学习速率alfa=0.05;//惯性系数S=1;%SignaltypeIN=4;H=5;Out=3;%NNStructureifS==1%StepSignalwi=[-0.6394-0.2696-0.3756-0.7023;-0.8603-0.2013-0.5024-0.2596;-1.07490.5543-1.6820-0.5437;-0.3625-0.0724-0.6463-0.2859;0.14250.0279-0.5406-0.7660];%wi=0.50*rands(H,IN);wi_1=wi;wi_2=wi;wi_3=wi;wo=[0.75760.26160.5820-0.1416-0.1325;-0.11460.29490.83520.22050.4508;0.72010.45660.76720.49620.3632];%wo=0.50*rands(Out,H);wo_1=wo;wo_2=wo;wo_3=wo;endifS==2%SineSignalwi=[-0.28460.2193-0.5097-1.0668;-0.7484-0.1210-0.47080.0988;-0.71760.8297-1.60000.2049;-0.08580.1925-0.63460.0347;0.43580.2369-0.4564-0.1324];%wi=0.50*rands(H,IN);wi_1=wi;wi_2=wi;wi_3=wi;wo=[1.04380.54780.86820.14460.1537;0.17160.58111.12140.50670.7370;1.00630.74281.05340.78240.6494];%wo=0.50*rands(Out,H);wo_1=wo;wo_2=wo;wo_3=wo;endx=[0,0,0];u_1=0;u_2=0;u_3=0;u_4=0;u_5=0;y_1=0;y_2=0;y_3=0;Oh=zeros(H,1);%OutputfromNNmiddlelayerI=Oh;%InputtoNNmiddlelayererror_2=0;error_1=0;ts=0.001;fork=1:1:6000time(k)=k*ts;ifS==1rin(k)=1.0;elseifS==2rin(k)=sin(1*2*pi*k*ts);end%Unlinearmodela(k)=1.2*(1-0.8*exp(-0.1*k));yout(k)=a(k)*y_1/(1+y_1^2)+u_1;error(k)=rin(k)-yout(k);xi=[rin(k),yout(k),error(k),1];x(1)=error(k)-error_1;x(2)=error(k);x(3)=error(k)-2*error_1+error_2;epid=[x(1);x(2);x(3)];I=xi*wi';forj=1:1:HOh(j)=(exp(I(j))-exp(-I(j)))/(exp(I(j))+exp(-I(j)));%MiddleLayerendK=wo*Oh;%OutputLayerforl=1:1:OutK(l)=exp(K(l))/(exp(K(l))+exp(-K(l)));%Gettingkp,ki,kdendkp(k)=K(1);ki(k)=K(2);kd(k)=K(3);Kpid=[kp(k),ki(k),kd(k)];du(k)=Kpid*epid;u(k)=u_1+du(k);ifu(k)>=10%Restrictingtheoutputofcontrolleru(k)=10;endifu(k)。
谷歌人工智能写作项目:神经网络伪原创
利用BP神经网络来整定PID,也许能实现AI爱发猫。但是书本上的这个BP-PID理论书本是错误的。你仔细看看,它的输出激活函数的值域是【0,1】,PID的参数不可能是只在这个范围啊!
可以说输出没有反归一化(值域扩展)。至于输入归一化,可用不做,但是输出在0和1之间,就是闹笑话了。
。
基于PID的锅炉温度控制系统设计摘要:利用BP神经网络PID控制具有逼近任意非线性函数的能力,将神经网络PID与LabVIEW友好地人机交互结合,实现对锅炉温度的控制.仿真结果表明,该系统具有更小的超调量,并且更快地到达需要的控制温度.关键词:BP神经网络;PID控制;温度控制温度是锅炉生产蒸汽质量的重要指标之一,也是保证锅炉设备安全的重要参数.同时,温度是影响锅炉传热过程和设备效率的主要因素.例如,在利用烟化炉对锌、铝冶炼过程中,如果温度过低,则还原速度和挥发速度都会降低;但温度也不宜过高,否则在温度超过1250℃时,可能形成Zn-Fe合金,有害于烟化炉的作业,因此温度的精确测量和控制是十分必要的.作为工业控制系统中的基本方式,PID控制对于动态反应较缓慢的工业过程是非常好的控制规律[1].但是,当工业过程复杂,负荷变化很多,对象的纯滞后又较大时常规PID控制达不到要求,为了解决上述问题系统采用PLC作为下位机,PC作为上位机,利用labVIEW构造人机交互界面,应用神经网络PID对系统进行控制,设计锅炉温度的监制电路.1系统总体设计系统通过热电偶传感器检测出锅炉的温度,采集的信号经过A/D电路转换后传给PLC控制器.PLC根据数据做出判断,当锅炉处在升温阶段时对锅炉进行加热,当锅炉处于保温段时调用PID算法控制温度满足输出要求.同时PLC把数据传给PC机,PC机做出显示和报警.具体电路如图1所示.1·1主控芯片S7-300PLC是西门子生产的模块式中小型PLC,提供了大量可以选择的模块,包括:PS电源模块、CPU模块、IM接口模块、SM信号模块、FM功能模块和CP通信模块.其中FM模块可实现高速级数、定位控制、闭环控制功能;CP模块是组态网使用的接口模块常用的网络有PROFIBUS,工业以太网及点对点连接网络.这些模块可以通过U形总线紧密地固定在轨道上,一条导轨共有11个槽号:1号槽至3号槽分别放置电源、CPU、IM模块4号槽至11号槽可以随意放置其他模块.1·2通信网络一般的自动化系统都是以单元生产设备为中心进行检测和控制,不同单元的生产设备间缺乏信息交流,难以满足生产过程的统一管理.西门子全集成自动化解决方案顺应了当今自动化的需求,TIA从统一的组态和编程、统一的数据管理及统一的通信三方面集成在一起,从现场级到管理级,可以使用如工业以太网、PROFIB-BUS,MPI,EIB等通信网络.根据设计的需要可以自由选择通信网络的配置[2].1·3温度传感器热电偶是将2种不同的导体焊接起来组成闭合回路,当两端节点有温度差时,两端点之间产生电动势,回路中会产生电流,这种现象称为热电效应.热电偶温度传感器就是利用这一效应来工作的.在工业生产过程中被测点与基准节点之间的距离常常过远,为了节省热电偶材料,降低成本,通常采用补偿导线的方式进行补偿[3].1·4显示界面LabVIEW是美国NI公司推出的图形化工业控制测控开发平台,是目前应用最广、发展最快、功能最强的图形软件集成开发环境.LabVIEW具有界面友好、开发周期短等优点,广泛应用于仪器控制、数据采集、数据分析和数据显示等领域.所以,我们可以在计算机上采用它来实现对设备运行状态的监控,同时也可以对各种数据进行采集显示.系统的温度显示界面如图2所示.2系统控制算法设计PID控制是工业过程控制中最常用的一种控制方法,但常规的PID控制在被控对象具有复杂的非线性时,如锅炉的温度控制,不仅具有较大的纯延迟,而且模型也不确定时,对于这种对象往往难以达到满意的控制效果.BP神经网络PID控制具有逼近任意非线性函数的能力,通过神经网络自身的学习,找到最佳组合的PID控制参数,以满足控制系统的要求.具体的神经网络PID控制系统框图如图3所示.设PID神经元网络是一个3层BP网络,包括2个输入节点,3个隐含层节点,1个输出接点.输入节点对应所选的系统运行状态量,如系统不同时刻的输入量和输出量等,必要时要进行归一化处理.输出节点分别对应PID控制的3个可调参数KP,KI,KD.输入层的2个神经元在构成控制系统可分别输入系统被调量的给定值和实际值.由文献[4]和[5]中的前向算法可得到输出层的权系数计算公式为:3结论PID控制算法是一种易于实现而且经济实用的方法,具有很强的灵活性,但在被控制对象具有复杂的非线性时,难以满足控制要求,而神经网络PID控制具有逼近任意非线性函数的能力,神经网络PID与LabVIEW结合实现对锅炉温度的数据采集、控制和显示,提高了锅炉监控系统的效率.参考文献:[1]邓洪伟.供暖锅炉温度和压力的PLC控制[J].动力与电力工程,2008(18):93-94.[2]张运刚.西门子S7-300/400PLC技术与应用[M].北京:人民邮电出版社,2007.[3]何希才.传感器及其应用实例[M].北京:机械工业出版社,2004.[4]何离庆.过程控制系统与装置[M].北京:重庆大学出版社,2003.[5]舒怀林.PID神经元网络及其控制系统[M].北京:国防工业出版社,2006.。
这厮是一个极品,先开口骂人,在下没有示弱,全力反击,并将其拉黑。后来者一定要注意,这厮不是好鸟,一定要多加提防与小心谨上传图片,有图有真相!这厮的口口是4;。【4。
【;8,;4、【;8;【、5、;【7;3【;1谨防,小心!!!!
。
其实只需要PID参数能够顺利确定就行了,这里有个程序,你试试看closeallclearallclctic%初始化x=[0;0;0];xiteP=0.4;xiteI=0.3;xiteD=0.4;K=0.15;%很关键,越大,快速性越好,但超调量大,甚至不稳定。
wkp_1=rand;wki_1=rand;wkd_1=rand;error_1=0;error_2=0;y_1=0;y_2=0;y_3=0;u_1=0;u_2=0;u_3=0;ts=0.001;%采样时间fork=1:1000time(k)=k*ts;rin(k)=1.0*sign(sin(2*2*pi*k*ts));%参考信号rin(k)=1.0*sgn(sin(4*pi*t))yout(k)=0.368*y_1+0.26*y_2+0.1*u_1+0.632*u_2;%被控对象y(k)=0.368y(k-1)+0.26y(k-2)+0.1u(k-1)+0.632error(k)=rin(k)-yout(k);%偏差和控制量求取x(1)=error(k)-error_1;%Px(2)=error(k);%Ix(3)=error(k)-2*error_1+error_2;%Dwkp(k)=wkp_1+xiteP*error(k)*u_1*(2*error(k)-error_1);wki(k)=wki_1+xiteI*error(k)*u_1*(2*error(k)-error_1);wkd(k)=wkd_1+xiteD*error(k)*u_1*(2*error(k)-error_1);wadd(k)=abs(wkp(k))+abs(wki(k))+abs(wkd(k));w11(k)=wkp(k)/wadd(k);w22(k)=wki(k)/wadd(k);w33(k)=wkd(k)/wadd(k);w=[w11(k),w22(k),w33(k)];u(k)=u_1+0.15*w*x;%输入限幅ifu(k)>10u(k)=10;endifu(k)。
PID调节器是一个在工业控制应用中常见的反馈回路部件,PID是以它的三种纠正算法而命名的。这三种算法都是用加法调整被控制的数值。而实际上这些加法运算大部分变成了减法运算因为被加数总是负值。
以下是PID的调节作用举例:1.比例-来控制当前,误差值和一个负常数P(表示比例)相乘,然后和预定的值相加。P只是在控制器的输出和系统的误差成比例的时候成立。
这种控制器输出的变化与输入控制器的偏差成比例关系。比如说,一个电热器的控制器的比例尺范围是10°C,它的预定值是20°C。
那么它在10°C的时候会输出100%,在15°C的时候会输出50%,在19°C的时候输出10%,注意在误差是0的时候,控制器的输出也是0。
2.积分-来控制过去,误差值是过去一段时间的误差和,然后乘以一个负常数I,然后和预定值相加。I从过去的平均误差值来找到系统的输出结果和预定值的平均误差。
一个简单的比例系统会振荡,会在预定值的附近来回变化,因为系统无法消除多余的纠正。通过加上一个负的平均误差比例值,平均的系统误差值就会总是减少。所以,最终这个PID回路系统会在预定值定下来。
3.微分 -来控制将来,计算误差的一阶导,并和一个负常数D相乘,最后和预定值相加。这个导数的控制会对系统的改变作出反应。导数的结果越大,那么控制系统就对输出结果作出更快速的反应。
这个D参数也是PID被称为可预测的控制器的原因。D参数对减少控制器短期的改变很有帮助。一些实际中的速度缓慢的系统可以不需要D参数。
扩展资料:用更专业的话来讲,一个PID控制器可以被称作一个在频域系统的滤波器。这一点在计算它是否会最终达到稳定结果时很有用。
如果数值挑选不当,控制系统的输入值会反复振荡,这导致系统可能永远无法达到预设值。