积分分离PID控制算法及继电法整定Word下载.docx
《积分分离PID控制算法及继电法整定Word下载.docx》由会员分享,可在线阅读,更多相关《积分分离PID控制算法及继电法整定Word下载.docx(9页珍藏版)》请在冰点文库上搜索。
具有比例-积分-微分控制规律的控制器,称PID控制器。
其运动方程为:
(2)式
1 普通PID控制基本原理
比例环节是按比例反应系统的偏差信号e(t),系统一旦出现了偏差,比例调节立即产生调节作用以减少偏差。
比例作用大,可以加快调节,减少误差,但是过大的比例kp,使系统的稳定性下降,甚至造成系统的不稳定。
要有效消除静差,需引入积分环节和微分环节。
积分环节用于消除系统稳态误差,提高无差度。
输出信号与偏差存在随时间的增长而增强,直到偏差消除,输出信号保持原输出值不变,故能消除静差。
积分作用的强弱取决于积分时间常数Ti,Ti越小,积分作用就越强。
反之则积分作用弱,但加入积分调节会使系统稳定性下降,动态过程变慢。
而微分调节是指调节器的输出与偏差对时间的微分成比例,微分调节器在温度有变化“苗头”时就有调节信号输出,变化速度越快、输出信号越强,故能加快调节速度,降低温度波动幅度,改善系统的动态性能。
在微分时间Td选择合适情况下,可以减少超调,减少调节时间。
微分作用对噪声干扰有放大作用,因此过强的加微分调节,对系统抗干扰不利。
2 积分分离PID控制基本原理
随着数字技术、计算机技术的发展,采样控制系统在工业控制中得到了广泛的应用。
数字PID算法便成为一种最常用的控制算法。
在普通的PID控制中,积分环节的引入是为了消除静差,提高控制精度。
但系统在启动、结束或大幅度调整设定时,系统输出大的偏差,造成积分积累,引起系统较大的超调,甚至引起较大的震荡,这在实际生产中是不允许的。
积分分离控制基本原理是,当被控量与设定值偏差较大时,取消积分作用,以免由于积分作用使系统稳定性降低,超调量增大;
当被控量接近给定值时,引入积分控制,以便消除静差,提高控制精度[2-3]。
积分分离控制算法可表示为:
(3)式
式中,T为采样时间,β项为积分项的开关系数
上式ε为认为设定的阈值。
3继电法PID整定得基本原理
继电PID整定的基本原理是在系统中设置两种模态:
振荡模态和调节模态,两个模态之间的切换靠开关来实现.
图1继电整定原理启动自整定程序,即在闭环中接入二位继电特性,系统将产生极限周期振荡,由此测试出系统的临界振荡周期和增益,系统及继电特性输出波形如图2所示.
而在调节模态下,根据以上参数并应用幅值相位裕度法确定PID控制参数,然后由此PID控制器对系统动态性能进行调节.图2中R为设定值,τ为纯滞后时间,ε为继电环节的滞环宽度,h为滞环幅度,A为系统输出的极限图2系统及继电特性输出波形环振荡幅度,TC为振荡周期.由上述测试得到的波形可提取出A和TC,但实际应用中会有如下问题:
1)各种干扰影响(如负载扰动和量测噪声)致使波形失真,使得提取出的特征参数有很大偏差甚至无法提取.为此,必须提高振荡幅值,即加大滞环宽度ε,实际中ε一般取大于2倍系统噪声带幅值,但过大的振荡幅度又会对系统稳定运行产生危害.2)继电特性对噪声反应极其敏感,过强的噪声会导致继电环节不停地上下切换,无法形成稳定的极限周期振荡,使整定失败.因此,根本的解决办法是滤除噪声干扰.传统的基于傅立叶变换原理的滤波器设计繁琐算法复杂,而基于小波变换原理的数字滤波器具有傅立叶变换不可比拟的优越性[5]:
小波(尺度)分解与重构算法简单,且满足正交性,使得滤波器实现起来简单可靠.因此首先选定某种小波函数和尺度函数。
具体算法步骤如下:
1)启动自整定程序,引入继电特性环节,并根据式(4)以尺度函数滤波器对系统输出反馈进行在线低通滤波,消除噪声对继电特性的影响;
2)获得系统振荡波形后,对受噪声污染的波形进行多层小波分解,得到各层小波系数;
3)根据SURE法在各层确定阈值;
4)以折衷法对各层小波系数进行阈值处理,得到处理后的小波系数;
5)将处理后的各层小波系数与同层尺度系数相加,得到重构后的振荡波形;
6)从处理后的波形中提取出振荡周期与振幅等特征参数,然后根据幅值相位裕度法整定出PID参数.
三、程序设计
由于采用继电法进行整定,则继电器非线性环节。
其描述函数为
则
(4)式
设h=1,M=1;
所以
虚部为
利用matlab编写程序求解
(1)式得nyquist图,程序如下:
a=tf([3.063.4],[495.2545.851],'
inputdelay'
8);
nyquist(a)
holdon
得到nyquist图如下:
由上图得
(1)式的nyquist图与继电器非线性环节的描述函数的交点及(-0.784,-0.776)交点的频率为
所以:
根据积分分离PID控制算法的原理,编写积分分离PID控制算法程序如下示;
ts=1;
sys=tf([3.063.4],[495.2545.851],'
dsys=c2d(sys,ts,'
zoh'
);
[num,den]=tfdata(dsys,'
v'
l_1=0;
l_2=0;
l_3=0;
l_4=0;
l_5=0;
l_6=0;
l_7=0;
l_8=0;
l_9=0;
l_10=0;
y_1=0;
y_2=0;
y_3=0;
e_1=0;
e_2=0;
ei=0;
fork=1:
1:
200
time(k)=k*ts;
yt(k)=-den
(2)*y_1-den(3)*y_2+num
(2)*l_9-num(3)*l_10
rin(k)=0.99;
e(k)=rin(k)-yt(k);
ei=ei+e(k)*ts;
ifabs(e(k))>
=0.5&
abs(e(k))<
=0.99
beta=0.8;
else
beta=1.0;
end
kc=0.73;
ki=0.148;
kd=8.650;
l(k)=kc*e(k)+kd*(e(k)-e_1)/ts+beta*ki*ei;
ifl(k)>
=110
l(k)=110;
ifl(k)<
=-110
l(k)=-110;
l_10=l_9;
l_9=l_8;
l_8=l_7;
l_7=l_6;
l_6=l_5;
l_5=l_4;
l_4=l_3;
l_3=l_2;
l_2=l_1;
l_1=l(k);
y_3=y_2;
y_2=y_1;
y_1=yt(k);
e_2=e_1;
e_1=e(k);
figure;
plot(time,rin,'
b'
time,yt,'
r'
xlabel('
time(s)'
ylabel('
rin,yt'
三、设计结果
将计算得得PID参数代如程序,结果如下:
显然系统形成了发散震荡,超调量大。
所以增加Ti。
调整后结果如下: