PID控制算法及MATLAB仿真分析.docx
- 文档编号:27496876
- 上传时间:2023-07-02
- 格式:DOCX
- 页数:33
- 大小:444.08KB
PID控制算法及MATLAB仿真分析.docx
《PID控制算法及MATLAB仿真分析.docx》由会员分享,可在线阅读,更多相关《PID控制算法及MATLAB仿真分析.docx(33页珍藏版)》请在冰豆网上搜索。
PID控制算法及MATLAB仿真分析
题目:
以PID控制进行系统仿真
学院自动化学院
专业班级工业自动化111班
学生姓名黄熙晴
目录
1引言1
1.1本论文研究内容1
2PID控制算法3
2.1模拟PID控制算法4
2.2数字式PID控制算法5
2.3PID控制算法的改进7
2.3.1微分项的改进7
2.3.2积分项的改进11
2.4模糊PID控制算法13
2.4.1模糊推理的系统结构14
2.4.2PID参数在线整定原则14
2.5PID控制器研究面临的主要问题15
3MATLAB编程和仿真16
3.1PID控制算法分析16
3.2MATLAB仿真17
4结语23
参考文献24
1引言
PID控制器以其结构简单、稳定性好、工作可靠、调整方便而成为工业控制的主要技术之一。
光学表面等离子共振生物传感技术受温度影响很大,因此设计高精度的温度控制器对于生物分析仪十分重要。
研究PID的控制算法是PID控制器整定参数优化和设定的关键技术之一。
在工业过程控制中,目前采用最多的控制方式依然是PID方式。
它具有容易实现、控制效果好、鲁棒性强等特点,同时它原理简单,参数物理意义明确,理论分析体系完整,并为工程界所熟悉,因而在工业过程控制中得到了广泛应用。
在实际的应用中,许多被控过程机理复杂,具有高度非线性、时变不确定性和纯滞后等特点,特别是在噪声、负载扰动等因素的影响下,参数复杂烦琐的整定过程一直困扰着工程技术人员。
为了减少参数整定的工作量,克服因环境变化或扰动作用造成系统性能的降低,就要提出一种PID控制参数的自动整定。
1.2本论文研究内容
本文在介绍传统的PID控制算法,并对传统算法改进后,在学习的基础上提出一种模糊参数自整定方法,这种模糊控制的PID算法必须精确地确定对象模型。
它在常规PID基础上,以输出反馈值与目标值的误差e和误差变化率ec作为输入,用模糊推理的方法对PID参数kp,ki,kd进行在线自整定,以满足不同e和ec对控制器参数的不同要求。
2PID控制算法
2.1模拟PID控制算法
模拟PID控制系统结构如图2-1所示。
它主要由PID控制器和被控对象所组成。
而PID控制器则由比例、积分、微分三个环节组成。
它的数学描述为:
(2-1)
(2-2)
式中,K
为比例系数T
;为积分时间常数;T
为微分时间常数.
PID控制器各校正环节的主要控制作用如下:
(l)比例环节及时成比例地反映控制系统的偏差信号e(t),偏差一旦产生,控制器立即产生控制作用,以减少偏差。
比例系数k
的作用在于加快系统的响应速度,提高系统调节精度。
k
越大,系统的响应速度越快,系统的调节精度越高,也就是对偏差的分辨率(重视程度)越高,但将产生超调,甚至导致系统不稳定。
k
取值过小,则会降低调节精度,尤其是使响应速度缓慢,从而延长调节时间,使系统静态、动态特性变坏。
(2)积分环节主要用于消除静差,提高系统的无差度。
积分作用的强弱取决于积分时间常数τ,τ越大,积分作用越弱,反之则越强。
积分作用系数越大,系统静态误差消除越大,但积分作用过大,在响应过程的初期会产生积分饱和现象,从而引起响应过程的较大超调。
若积分作用系数过小,将使系统静差难以消除,影响系统的调节精度。
(3)微分环节能反映偏差信号的变化趋势(变化速率),并能在偏差信号值变得太大之前,在系统中引入一个有效的早期修正信号,从而加快系统的动作速度,减少调节时间。
2.2数字式PID控制算法
在计算机控制系统中,使用的是数字PID控制器,数字PID控制算法通常又分为位置式HD控制算法和增量式PID控制算法。
(1)位置式PID控制算法由于计算机控制是一种采样控制,它只能根据采样时刻的偏差值计算控制量,故对式(2-1)中的积分和微分项不能直接使用,需要进行离散化处理。
按模拟PID控制算法的算式(2-1),现以一系列的采样时刻点kT代表连续时间t,以和式代替积分,以增量代替微分,则可以作如下的近似变换:
(2-3)
显然,上述离散化过程中,采样周期T必须足够短,才能保证有足够的精度。
为了书写方便,将e(kT)简化表示成e(k)等,即省去T。
将式(2-3)代入式(2-1),可以得到离散的PID表达式为:
(2-4)
中式:
k—采样序列号;
u(k)—第k次采样时刻的计算机输出值;
e(k)—第k次采样时刻输入的偏差值;
e(k-1)—第k-1次采样时刻输入的偏差值;
K
—积分系数,K
=K
T/T
K
—微分系数,K
T
/T。
我们常称式(2-4)为位置式PID控制算法。
对于位置式PID控制算法来说,位置式PID控制算法示意图如图2-2所示,由于全量输出,所以每次输出均与过去的状态有关,计算时要对误差进行累加,所以运算工作量大。
而且如果执行器(计算机)出现故障,则会引起执行机构位置的大幅度变化,而这种情况在生产场合不允许的,因而产生了增量式PID控制算法。
(2)增量式PID控制算法
所谓增量式PID是指数字控制器的输出只是控制量的增量Δ(k)。
增量式PID控制系统框图如图2-3所示。
当执行机构需要的是控制量的增量时,可以由式(2-4)导出提供增量的PID控制算式。
根据递推原理可得:
(2-4)
用式(2-3)减去式(2-4),可得:
(2-5)
式(2-5)称为增量式PID控制算法。
增量式控制算法的优点是误动作小,便于实现无扰动切换。
当计算机出现故障时,可以保持原值,比较容易通过加权处理获得比较好的控制效果。
但是由于其积分截断效应大,有静态误差,溢出影响大。
所以在选择时不可一概而论。
2.3PID控制算法的改进
针对常规PID控制存在的问题,将PID控制器与其他的算法相结合,对PID控制器进行改进,得到了多种改进型PID控制器。
2.3.1微分项的改进
1)不完全微分PID控制算法
在PID控制中,微分信号的引入可改善系统的动态特性,但也易引起高频干扰。
在误差扰动突变时尤其显出微分项的不足。
若在控制算法中加入低通滤波器,则可使系统性能得到改善。
1.不完全微分型PID算法传递函数为式(2-6),传递函数框图如图2-4所示:
(2-6)
图2-4不完全微分型PID算法传递函数框图
2.完全微分和不完全微分作用的区别
图2-5完全微分和不完全微分作用的区别
3、不完全微分型PID算法的差分方程
(2-7)
(2-8)
4.仿真分析:
设被控对象的传递函数为:
在对象的输出端加幅值为0.01的随机信号。
采样时间为20ms。
低通滤波器为:
仿真程序:
%PIDControler不完全微分
clearall;
closeall;
ts=20;
sys=tf([1],[60,1],'inputdelay',80);
dsys=c2d(sys,ts,'zoh');
[num,den]=tfdata(dsys,'v');
u_1=0;u_2=0;u_3=0;u_4=0;u_5=0;
ud_1=0;
y_1=0;y_2=0;y_3=0;
error_1=0;
ei=0;
fork=1:
1:
100
time(k)=k*ts;
rin(k)=1.0;
%Linearmodel
yout(k)=-den
(2)*y_1+num
(2)*u_5;
D(k)=0.01*rands
(1);
yout(k)=yout(k)+D(k);
error(k)=rin(k)-yout(k);
%PIDControllerwithpartlydifferential
ei=ei+error(k)*ts;
kc=0.30;
ki=0.0055;
TD=140;
kd=kc*TD/ts;
Tf=180;
Q=tf([1],[Tf,1]);%LowFreqSignalFilter
M=2;%M=1不完全微分,
%M=2普通Pid控制!
!
ifM==1
%UsingPIDwithPartialdifferential
alfa=Tf/(ts+Tf);
ud(k)=kd*(1-alfa)*(error(k)-error_1)+alfa*ud_1;
u(k)=kc*error(k)+ud(k)+ki*ei;
ud_1=ud(k);
elseifM==2%UsingSimplePID
u(k)=kc*error(k)+kd*(error(k)-error_1)+ki*ei;
end
%Restrictingtheoutputofcontroller
ifu(k)>=10
u(k)=10;
end
ifu(k)<=-10
u(k)=-10;
end
u_5=u_4;u_4=u_3;u_3=u_2;u_2=u_1;u_1=u(k);
y_3=y_2;y_2=y_1;y_1=yout(k);
error_1=error(k);
end
figure
(1);
plot(time,rin,'b',time,yout,'r');
xlabel('time(s)');ylabel('rin,yout');
由仿真结果可以看出,采用不完全微分型PID算法,引入不完全微分后能有效克服普通PID的不足,尽管不完全微分算法比普通PID控制算法要复杂的多,但由于其良好的控制特性,近年来越来越广泛的应用。
图(2-6)不完全微分型(r输入,b输出,下同)图(2-7)普通PID控制
2)微分先行和输入滤波PID控制算法
微分先行PID控制算法的特点是只对输出量进行微分,而对给定值不进行
微分。
这样,在改变给定值时,输出不会改变,而且由于被控量一般不会突变,即使给定值已发生改变,被控量也是缓慢变化的,从而不致引起微分项的突变。
微分先行PID控制算式为:
(2-9)
输入滤波,输入滤波就是在计算微分项时,不是直接应用当前时刻的误差e(n),而是采用滤波值e(n),即用过去和当前四个采样时刻的误差的平均值,再通过加权求和形式近似构成微分项
(2-10)
(2-11)
仿真分析:
设被控对象的传递函数为:
仿真程序:
%PIDControler微分先行
clearall;
closeall;
ts=20;
sys=tf([1],[60,1],'inputdelay',80);
dsys=c2d(sys,ts,'zoh');
[num,den]=tfdata(dsys,'v');
u_1=0;u_2=0;u_3=0;u_4=0;u_5=0;
ud_1=0;
y_1=0;y_2=0;y_3=0;
error_1=0;error_2=0;
ei=0;
fork=1:
1:
400
time(k)=k*ts;
%Linearmodel
yout(k)=-den
(2)*y_1+num
(2)*u_5;
kp=0.36;kd=14;ki=0.0021;
rin(k)=1.0*sign(sin(0.00025*2*pi*k*ts));
rin(k)=rin(k)+0.05*sin(0.03*pi*k*ts);
error(k)=rin(k)-yout(k);
ei=ei+error(k)*ts;
gama=0.50;
Td=kd/kp;
Ti=0.5;
c1=gama*Td/(gama*Td+ts);
c2=(Td+ts)/(gama*Td+ts);
c3=Td/(gama*Td+ts);
M=1;%M=1微分先行算法方
%波响应M=2普通算法
ifM==1%PIDControlwithdifferentialinadvance
ud(k)=c1*ud_1+c2*yout(k)-c3*y_1;
u(k)=kp*error(k)+ud(k)+ki*ei;
elseifM==2%SimplePIDControl
u(k)=kp*error(k)+kd*(error(k)-error_1)/ts+ki*ei;
end
ifu(k)>=110
u(k)=110;
end
ifu(k)<=-110
u(k)=-110;
end
%Updateparameters
u_5=u_4;u_4=u_3;u_3=u_2;u_2=u_1;u_1=u(k);
y_3=y_2;y_2=y_1;y_1=yout(k);
error_2=error_1;
error_1=error(k);
end
figure
(1);
plot(time,rin,'r',time,yout,'b');
xlabel('time(s)');ylabel('rin,yout');
从仿真结果可以看出,该算法适用于给定值频繁升降的场合,可以避免系统振荡,从而明显地改善系统的动态特性。
图(2-8)微分先行算法方波响应图(2-9)普通算法方波响应
2.3.2积分项的改进
抗积分饱和,积分作用虽能消除控制系统的静差,但它也有一个副作用,即会引起积分饱和。
在偏差始终存在的情况下,造成积分过量。
当偏差方向改变后,需经过一段时间后,输出u(n)才脱离饱和区。
这样就造成调节滞后,使系统出现明显的超调,恶化调节品质。
这种由积分项引起的过积分作用称为积分饱和现象。
以下为几种克服积分饱和的方法。
1)积分限幅法
积分限幅法的基本思想是当积分项输出达到输出限幅值时,即停止积分项的计算,这时积分项的输出取上一时刻的积分值。
其算法流程如图2-10所示。
2)积分分离PID控制算法
在普通PID控制中,引入积分环节的目的主要是为了消除静差,提高控制精度。
但在过程控制的启动、结束或大幅度增减设定时,短时间内系统输出有很大的偏差,会造成PID运算的积分积累,致使控制量超过执行机构可能允许的最大动作范围对应的极限控制量,引起系统较大的超调,甚至引起系统较大的振荡,这在生产中是绝对不允许的。
算法流程如图2-11所示:
积分分离控制基本思路是:
当被控量与设定值偏差较大时,取消积分作用,以免由于积分作用使系统稳定性降低,超调量增大;当被控量接近给定值时,引入积分控制,以便消除静差,提高控制精度。
其具体实现步骤如下:
根据实际情况,人为设定阈值ε>0。
(l)当|e(k)|>ε时,采用PD控制,可避免产生过大的超调,又使系有较快的响应。
(2)当|e(k)|<ε时,采用PID控制,以保证系统的控制精度。
采用积分分离方法,控制效果有很大的改善。
该算的优点是:
当偏差值较小时,采用PID控制,可保证系统的控制精度;当差值较大时,采用PD控制,可使超调量大幅度降低。
图2-10积分限幅法算法流程图2-11积分分离算法流程
3)遇限消弱积分PID控制算法
该算法的基本思想是:
当控制进入饱和区以后,便不再进行积分项的累加,而只执行削弱积分的运算计算,先判断u(k-1)是否超出限制值,若超出,则只累加负偏差,否则,累加正偏差。
采用遇限消弱积分PID算法,可以避免控制长时间停留在饱和区,防止系统产生超调。
2.4模糊PID控制算法
模糊控制是以模糊集合论、模糊语言变量及模糊推理为基础的计算机智能控制,基本概念是美国加利福尼亚大学著名教授查德(L.A.Zadeh)首先提出的,经过二十多年的发展,在模糊控制理论和应用研究方面都取得了重大的成功。
模糊控制器的基本组成框图如图2-12所示,模糊控制器实际上是依靠微机或单片机构成的,它的绝大部分功能是由计算机程序来完成,随着专用模糊芯片的研究和开发,也可以由硬件逐步取代各组成单元的软件功能。
2.4.1模糊推理的系统结构
参数自整定模糊PID控制系统结构如图2-13所示。
在常规PID基础上,以温度反馈值与目标值的误差e和误差变化率ec作为输入,用模糊推理的方法对PID参数kp,ki,kd进行在线自整定,以满足不同e和ec对控制器参数的不同要求,从而使受控对象具有良好的动、静态性能。
2.4.2PID参数在线整定原则
PID控制中K
、K
、K
各参数的作用不再赘述。
根据系统在受控过程中对应不同的|e|和|ec|,将PID参数的整定原则归纳如下:
(1)当|e|较大时,取较大的K
与较小的K
,K
=0,以使系统有较好的跟踪性能,同时由于对积分作用进行了限制,可避免出现较大的超调。
(2)当|e|为中等大小时,K
取较小值,以降低响应超调量。
K
的取值对系统响应影响较大,K
的取值也要适当。
(3)当|e|较小时,K
与K
均取较大值,以提高系统的稳定性,此时K
值的选择应根据|ec|的大小,|ec|较大时,K
取较小值,|ec|较小时,K
值取大一些,以避免系统在设定值附近出现振荡。
3MATLAB编程和仿真
3.1PID控制算法分析
设计模糊控制器,本文采用的是两输入(e,ec)三输出(Kp,Ki,Kd)的形式,模糊集均为{负大,负中,负小,零,正小,正中,正大},简记为{NB,NM,NS,ZO,PS,PM,PB},其中e,ec的论域为[-3,-2,-1,0,1,2,3],Kp,Ki,Kd的论域为[-6,-4,-2,0,2,4,6],由工程设计人员的技术和实际操作经验,建立了合适的模糊规则,在这里直接引用:
(1)Kp的模糊规则表
表3.1Kp的模糊规则表(行为ec,列为e,内容为ΔKd,下同)
NB
NM
NS
ZO
PS
PM
PB
NB
PB
PB
PM
PM
PS
ZO
ZO
NM
PB
PB
PM
PS
PS
ZO
NS
NS
PM
PM
PM
PS
ZO
NS
NS
ZO
PM
PM
PS
ZO
NS
NM
NM
PS
PS
PS
ZO
NS
NS
NM
NM
PM
PS
ZO
NS
NM
NM
NM
NB
PB
ZO
ZO
NM
NM
NM
NB
NB
(2)Ki的模糊规则表
表3.2Ki的模糊规则表
NB
NM
NS
ZO
PS
PM
PB
NB
NB
NB
NM
NM
NS
ZO
ZO
NM
NB
NB
NM
NS
NS
ZO
ZO
NS
NM
NM
NS
NS
ZO
PS
PS
ZO
NM
NM
NS
ZO
PS
PM
PM
PS
NS
NS
ZO
PS
PS
PM
PB
PM
ZO
ZO
PS
PS
PM
PB
PB
PB
ZO
ZO
PS
PM
PM
PB
PB
(3)Kd的模糊规则表
表3.3Kd的模糊规则
NB
NM
NS
ZO
PS
PM
PB
NB
PS
NS
NB
NB
NB
NM
PS
NM
PS
NS
NB
NM
NM
NS
ZO
NS
ZO
NS
NM
NM
NS
NS
ZO
ZO
ZO
NS
NS
NS
NS
NS
ZO
PS
ZO
ZO
ZO
ZO
ZO
ZO
ZO
PM
PB
NS
PS
PS
PS
PS
PB
PB
PB
PM
PM
PM
PS
PS
PB
Kp,Ki,Kd的模糊规则表建立好后,可根据以下方法进行Kp,Ki,Kd的自适应校正。
设e,ec和Kp,Ki,Kd均服从正态分布,可得到各模糊子集的隶属度,应用模糊合成推理设计PID参数的模糊矩阵表,查出修正参数代入下式计算:
Kp=Kp’+{ei,eci}
;Ki=Ki’+{ei,eci}
;Kd=Kd’+{ei,eci}
(3-1)
控制系统通过对模糊逻辑规则的结果处理、查表和运算。
完成对PID参数在线自动校正,工作流程如图3-1所示。
3.2MATLAB仿真
设被控对象为:
(3-2)
采样时间为0.5ms,采用模糊Pid控制进行阶跃响应,在第400个采样时间(0.2s)时控制器输出加2.5的干扰,相应的结果如图3-2~3-7。
图3-2模糊PID控制阶跃响应图3-3模糊PID控制误差响应
图3-4控制器输出U图3-5kp的自适应调整
图3-6ki的自适应调整图3-7kd的自适应调整
图3-8抗积分饱和的Pid控制
模糊控制仿真程序[1]:
%FuzzyTunningPIDControl
clearall;
closeall;
a=newfis('fuzzpid');
a=addvar(a,'input','e',[-3,3]);%Parametere
a=addmf(a,'input',1,'NB','zmf',[-3,-1]);
a=addmf(a,'input',1,'NM','trimf',[-3,-2,0]);
a=addmf(a,'input',1,'NS','trimf',[-3,-1,1]);
a=addmf(a,'input',1,'Z','trimf',[-2,0,2]);
a=addmf(a,'input',1,'PS','trimf',[-1,1,3]);
a=addmf(a,'input',1,'PM','trimf',[0,2,3]);
a=addmf(a,'input',1,'PB','smf',[1,3]);
a=addvar(a,'input','ec',[-3,3]);%Parameterec
a=addmf(a,'input',2,'NB','zmf',[-3,-1]);
a=addmf(a,'input',2,'NM','trimf',[-3,-2,0]);
a=addmf(a,'input',2,'NS','trimf',[-3,-1,1]);
a=addmf(a,'input',2,'Z','trimf',[-2,0,2]);
a=addmf(a,'input',2,'PS','trimf',[-1,1,3]);
a=addmf(a,'input',2,'PM','trimf',[0,2,3]);
a=addmf(a,'input',2,'PB','smf',[1,3]);
a=addvar(a,'output','kp',[-0.3,0.3]);%Parameterkp
a=addmf(a,'output',1,'NB','zmf',[-0.3,-0.1]);
a=addmf(a,'output',1,'NM','trimf',[-0.3,-0.2,0]);
a=addmf(a,'output',1,'NS','trimf',[-0.3,-0.1,0.1]);
a=addmf(a,'output',1,'Z','trimf',[-0.2,0,0.2]);
a=addmf(a,'output',1,'PS','trimf',[-0.1,0.1,0.3]);
a
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- PID 控制 算法 MATLAB 仿真 分析
![提示](https://static.bdocx.com/images/bang_tan.gif)