[转载]控制系统的积分饱和现象及其解决办法

标签:
转载 |
分类: matlab |
位置式PID调节器输出:http://s7/middle/61be97e9hc5a4d17f3336&690
积分调节规律是调节器输出控制作用μ(t)与其偏差输入信号e(t)随时间的积累值成正比,即
μ(t)=( 1/Ti)∫e(t)dt
其传递函数形式:
W(s)=1/ (Ti*s)
式中Ti为积分时间。
积分调节器的阶跃响应如图一,由图可以看出,当被调量出现偏差并
http://s2/middle/61be97e9hc5a4d32a1a61&690
呈阶跃形式变化时,积分作用并不立即变化,而是由零开始线性增长。因此只要偏差信号存在,调节器的输出旨在消除对系统影响的控制作用就一直增加,且增长的速度始终为初始速度。只有偏差为零时,积分控制作用才停止变化。这表明系统达到再次稳定时,被调量的偏差必然为零。
下面以单回路控制系统为例说明积分饱和的产生。系统原理方框图如图二。该系统由一个测量变送器,调节器部分,一个执行部分,连同被控对象组成的闭环反馈控制系统。
调节机构是自动调节系统的重要环节,它是接受调节器的控制信号去调节被调量的工具。常用的调节机构有调节阀门和挡板等,通常由执行机带动。热工自调中电动执行机动作的位置反馈信号r(t)通常为0-10mA或4-20mA.,表示阀门行程或挡板开度从最小到最大,即1-100%。
http://s10/middle/61be97e9hc5a4dce993b9&690
在正常工况下,整定好PID参数的调节器输出在5%-95%范围内就可以满足调节要求,使被调参数在规定范围内按一定规律变化。对应着执行机位置反馈r在5%-95%。
有些非正常工况下调节器输出已达到了100%,对应执行机位置反馈也达到100%,此时对于这个负反馈的闭环调节单回路的调节对象的参数值仍然小于设定值,也即调节器的偏差输入信号e(t)仍然大于零,正向偏差的存在使积分调节规律作用下的调节器输出μ(t)继续增大,然而阀门行程或挡板开度已经最大,执行机位置反馈信号不会再增加。调节器的输出μ(t)这一增加过程直到系统其自平衡能力,或
http://s1/middle/61be97e9hc5a4d77317a0&690
由于运行值班员对系统做出其它措施,使得被调对象的参数测量值等于或大于设定值。偏差输入信号e(t)不再大于零,调节器的输出μ(t)不再增大。
由于系统的惯性作用,被调参数很可能将继续增加,使偏差输入信号e(t)小于零,在积分调节规律的作用下调节器的输出μ(t)开始减小。系统要求此时的执行机构向关阀门或挡板的方向动作,但是实际上,直到调节器的输出μ(t)减到小于100%后对执行机构的关向指令才开始有效。也即是如图三所示,调节系统经过t2这段时间的延迟以后才又开始正常的调节过程。
我们暂且将调节器由于积分作用规律造成的输出μ(t)大于100% 的上升和下降过程,如图三中表现为t1+t2这段时间的调节过程称为积分饱和。(简单控制系统的积分饱和)
积分饱和:如果执行机构已经到极限位置,仍然不能消除静差时,由于积分作用,尽管PID差分方程式所得的运算结果继续增大或减小,但执行机构已无相应的动作,这就叫积分饱和。
积分饱和的产生
1、当偏差产生跃变时,位置型PID算式的输出将急剧增大或减小,有可能超过执行机构的上(下)限,而此时执行机构只能工作在上(下)限。
2、系统输出需要很长时间才达到给定值,在这段时间内算式的积分项将产生一个很大的积累值。
3、当系统输出超过给定值后,偏差反向,但由于大的积分积累值,控制量需要相当一段时间脱离饱和区。因此引起系统产生大幅度超调,系统不稳定。
所谓积分饱和现象是指若系统存在一个方向的偏差,PID控制器的输出由于积分作用的不断累加而加大,从而导致u(k)达到极限位置。此后若控制器输出继续增大,u(k)也不会再增大,即系统输出超出正常运行范围而进入了饱和区。一旦出现反向偏差,u(k)逐渐从饱和区退出。进入饱和区愈深则退饱和时间愈长。此段时间内,执行机构仍停留在极限位置而不能随着偏差反向立即做出相应的改变,这时系统就像失去控制一样,造成控制性能恶化。这种现象称为积分饱和现象或积分失控现象。
积分饱和产生的条件
1、调节器长期处于开环状态
2、调节器具有积分控制作用
3、调节器输入偏差长期得不到校正
http://s10/middle/61be97e9hc5a4df4f7729&690
增量算法采用M语言仿真程序如下:(控制对象:http://s6/middle/61be97e9hc5a4e10cb0c5&690)
%Increment PID Controller
clear all;
close all;
ts=0.001;
sys=tf(400,[1,50,0]);
dsys=c2d(sys,ts,'z');
[num,den]=tfdata(dsys,'v');
u_1=0.0;u_2=0.0;u_3=0.0;
y_1=0;y_2=0;y_3=0;
x=[0,0,0]';
error_1=0;
error_2=0;
for k=1:1:1000
time(k)=k*ts;
yd(k)=1.0;
kp=8;
ki=0.10;
kd=10;
du(k)=kp*x(1)+kd*x(2)+ki*x(3);
u(k)=u_1+du(k);
if u(k)>=10
u(k)=10;
end
if u(k)<=-10
u(k)=-10;
end
y(k)=-den(2)*y_1-den(3)*y_2+num(2)*u_1+num(3)*u_2;
error=yd(k)-y(k);
u_3=u_2;u_2=u_1;u_1=u(k);
y_3=y_2;y_2=y_1;y_1=y(k);
x(1)=error-error_1; �lculating P
x(2)=error-2*error_1+error_2; �lculating D
x(3)=error; �lculating I
error_2=error_1;
error_1=error;
end
figure(1);
plot(time,yd,'r',time,y,'k:','linewidth',2);
xlabel('time(s)');ylabel('yd,y');
legend('Ideal position signal','Position tracking');
仿真效果:
http://s2/middle/61be97e9h7a2a16b033d1&690
积分饱和现象的解决方法:
1.有效偏差法
基本思路:当位置型PID算式的控制输出超过限制范围时,控制量只能取边界值。有效偏差法的实质是将相当于边界控制量的偏差值作为有效偏差值进行积分。
2.积分分离法
基本思路:只在|e|小于某一界限,即当被控变量相当接近设定值时,才把△UI引入,而在其余情况下,把△UI切除。
采用M语言仿真程序如下:(控制对象:http://s1/middle/61be97e9hc5a4e74f26c0&690)
%Integration Separation PID Controller
clear all;
close all;
ts=20;
�lay plant
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;
y_1=0;y_2=0;y_3=0;
error_1=0;error_2=0;
ei=0;
for k=1:1:200
time(k)=k*ts;
�lay plant
y(k)=-den(2)*y_1+num(2)*u_5;
%I separation
yd(k)=40;
error(k)=yd(k)-y(k);
ei=ei+error(k)*ts;
M=2;
if M==1 %Using integration separation
if abs(error(k))>=30&abs(error(k))<=40
beta=0.3;
elseif abs(error(k))>=20&abs(error(k))<=30
beta=0.6;
elseif abs(error(k))>=10&abs(error(k))<=20
beta=0.9;
else
beta=1.0;
end
elseif M==2
beta=1.0; %Not using integration separation
end
kp=0.80;
ki=0.005;
kd=3.0;
u(k)=kp*error(k)+kd*(error(k)-error_1)/ts+beta*ki*ei;
if u(k)>=110 % Restricting the output of controller,即有效偏差法
u(k)=110;
end
if u(k)<=-110
u(k)=-110;
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=y(k);
error_2=error_1;
error_1=error(k);
end
figure(1);
plot(time,yd,'r',time,y,'k:','linewidth',2);
xlabel('time(s)');ylabel('yd,y');
legend('Ideal position signal','Position tracking');
figure(2);
plot(time,u,'r','linewidth',2);
xlabel('time(s)');ylabel('Control input');
仿真效果:
M=2时,普通PID控制
http://s2/middle/61be97e9hc5a4e937ec91&690
http://s7/middle/61be97e9h7a2a17a0b676&690
采用simulink仿真
连续系统:
http://s9/middle/61be97e9hc5a4edd238a8&690
离散系统:
http://s14/middle/61be97e9hc5a4efcb1d6d&690
初始化程序:
clear all;
close all;
ts=20;
sys=tf([1],[60,1],'inputdelay',80);
dsys=c2d(sys,ts,'zoh');
[num,den]=tfdata(dsys,'v');
kp=1.80;
ki=0.05;
kd=0.20;
作图程序:
close all;
plot(t,y(:,1),'r',t,y(:,2),'k:','linewidth',2);
xlabel('time(s)');ylabel('yd,y');
legend('Ideal position signal','Position tracking');
仿真效果:
http://s14/middle/61be97e9hc5a4f16bb71d&690
3.变速积分 PID 控制算法
基本思路:设法改变积分项的累加速度,使其与偏差大小相对应,偏差越大,积分越慢,偏差越小,积分越快。
为此设置系数f(e(k)),当|e(k)|增大时,f减小,反之增大。变速积分的PID积分项表达式为:http://s13/middle/61be97e9hc5a4f419437c&690
%PID Controller with changing integration rate
clear all;
close all;
%Big time delay Plant
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;
y_1=0;y_2=0;y_3=0;
error_1=0;error_2=0;
ei=0;
for k=1:1:200
time(k)=k*ts;
yd(k)=1.0; %Step Signal
%Linear model
y(k)=-den(2)*y_1+num(2)*u_5;
error(k)=yd(k)-y(k);
kp=0.45;kd=12;ki=0.0048;
A=0.4;B=0.6;
%T type integration
ei=ei+(error(k)+error_1)/2*ts;
M=2;
if M==1 %Changing integration rate
if abs(error(k))<=B
f(k)=1;
elseif abs(error(k))>B&abs(error(k))<=A+B
f(k)=(A-abs(error(k))+B)/A;
else
f(k)=0;
end
elseif M==2 %Not changing integration rate
f(k)=1;
end
u(k)=kp*error(k)+kd*(error(k)-error_1)/ts+ki*f(k)*ei;
if u(k)>=10
u(k)=10;
end
if u(k)<=-10
u(k)=-10;
end
%Return of PID parameters
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=y(k);
error_2=error_1;
error_1=error(k);
end
figure(1);
plot(time,yd,'r',time,y,'k:','linewidth',2);
xlabel('time(s)');ylabel('yd,y');
legend('Ideal position signal','Position tracking');
figure(2);
plot(time,f,'r','linewidth',2);
xlabel('time(s)');ylabel('Integration rate f');
仿真效果:
M=2时,普通PID控制
http://s9/middle/61be97e9hc5a4f7544a58&690
M=1时,变速积分
PID控制
http://s3/middle/61be97e9hc5a4fb3029f2&690
基本思路:在计算P(k)时,根据上一时刻的控制量P(k-1)是否超过限制范围,若P(k-1)>,则只累加负偏差,若P(k-1)<,则只累加正偏差。
采用M语言仿真程序如下:(控制对象:http://s11/middle/61be97e9hc5a501b293fa&690)
%PID Controler with intergration sturation
clear all;
close all;
ts=0.001;
sys=tf(5.235e005,[1,87.35,1.047e004,0]);
dsys=c2d(sys,ts,'z');
[num,den]=tfdata(dsys,'v');
u_1=0.0;u_2=0.0;u_3=0.0;
y_1=0;y_2=0;y_3=0;
x=[0,0,0]';
error_1=0;
um=6;
kp=0.85;ki=9.0;kd=0.0;
for k=1:1:800
time(k)=k*ts;
yd(k)=30; %Step Signal
u(k)=kp*x(1)+kd*x(2)+ki*x(3); % PID Controller
if u(k)>=um
u(k)=um;
end
if u(k)<=-um
u(k)=-um;
end
%Linear model
y(k)=-den(2)*y_1-den(3)*y_2-den(4)*y_3+num(2)*u_1+num(3)*u_2+num(4)*u_3;
error(k)=yd(k)-y(k);
M=2;
if M==1 %Using intergration sturation
if u(k)>=um
if error(k)>0
alpha=0;
else
alpha=1;
end
elseif u(k)<=-um
if error(k)>0
alpha=1;
else
alpha=0;
end
else
alpha=1;
end
elseif M==2 %Not using intergration sturation
alpha=1;
end
%Return of PID parameters
u_3=u_2;u_2=u_1;u_1=u(k);
y_3=y_2;y_2=y_1;y_1=y(k);
error_1=error(k);
x(1)=error(k); % Calculating P
x(2)=(error(k)-error_1)/ts; % Calculating D
x(3)=x(3)+alpha*error(k)*ts; % Calculating I
xi(k)=x(3);
end
plot(time,yd,'r',time,y,'k:','linewidth',2);
xlabel('time(s)');ylabel('yd,y');
legend('Ideal position signal','Position tracking');
仿真效果:
M=2时,普通PID控制
http://s9/middle/61be97e9hc5a504110b88&690
M=1时,超限削弱积分控制
http://s14/middle/61be97e9hc5a5059e90fd&690
对于单回路有效的对PID功能模块的输出μ(t)加以限制的方法对于串级调节或其它复杂调节系统简单地限制PID功能模块的输出μ(t)并不能解决问题。
下面以依靠喷水减温控制的串级双冲量过热汽温系统为例作以说明。
在串级双冲量过热汽温系统中有两个闭合回路:
⑴由对象超前区、超前信号(减温器后蒸汽温度)热电偶、副调节器(比例-积分)、执行机和调节阀门组成的内回路(或称副回路);
⑵由对象惰性区、主信号(过热汽温度)热电偶、主调节器(比例-积分-微分)和副回路组成的外回路(或称主回路)。
采用喷水减温调节过热汽温时,汽温调节对象的滞后时间和时间常数较大。对于减温水流量的变化,超前汽温的反应要比主汽温的反应快得多,因此在减温水自发扰动后,由于副调节器在主蒸汽还没有明显变化时及时动作能及时消除它的影响而使主汽温很少变化。当主汽温度偏离给定值时,则由主调节器发出信号校正副调节器的给定值,通过副调节器控制执行机去操纵减温水调节阀门,使主汽温度最后恢复到给定值。
对于串级控制系统,主、副控制器正、反作用的选择顺序应该是先副后主。
副控制器的正、反作用要根据副环的具体情况决定,而与主环无关。为了使副环回路构成一个稳定的系统,副环的开环放大系数的符号必须为"负",即副环内所有各环节放大倍数符号的乘积应为"负"。在本设计中随着调节阀的开度增加,减温水量增加,副对象即减温器后端蒸汽温度会降低,所以调节阀对副对象的作用为"负";而调节阀为气开+阀,即其控制作用为"正",所以副调节器的控制作用应为正作用。
主控制器的正、反作用要根据主环所包括的各个环节的情况来确定,同时可将副回路视为一放大倍数为"正"的环节来看待,因为副回路是以随动系统。这样只要根据主对象与主变送器放大倍数的符号及整个主环开环放大倍数的符号为"负"的要求,就可以确定主控制器的正、反作用。在本系统中,主对象的放大倍数的符号为"正",所以主控制器应选反作用。
以下分析系统发生积分饱和时主调节器的情况。
当主信号测量值持续降低,低于设定值,主调节器输入偏差e1(t)正向增大,主调节器在PID调节规律的作用下使输出μ1(t)增大,副调节器输入偏差e2(t)负向增大,副调节器在PI调节规律的作用下使输出μ2(t)减小,带动执行机构关小减温器阀门。如果这一扰动是由减温水量扰动引起,前面所说的调节过程将会使过热蒸汽温度恢复到给定值附近。
但除了减温水量扰动,引起过热汽温度变化的扰动因素很多,不容易控制。如蒸汽流量、过剩空气系数、火焰中心位置、煤种的改变、燃烧工况、烟气温度和流速、炉膛受热面结焦和过热器积灰的变化等,都会使过热蒸汽温度发生变化。
前面所说的扰动如果由于这些因素的影响使过热蒸汽温度仍然向减小方向变化,副调节器输出μ2(t)减到最小0%,相应执行机构位置反馈也下降至0%,仍未能使过热蒸汽温度回升。于是主调节器输出μ1(t)继续负向增大,若此时减温器后超前信号变化较小,就使得副调节器输入偏差e2(t)继续负向增大的过程。副调节器输出μ2(t)却不再变化,只能依靠过热蒸汽系统调节对象的自平衡能力使过热蒸汽温度回升。过热蒸汽温度这一回升过程的开始,由于主信号测量值仍低于设定值,所以主调节器输入偏差e1(t)仍小于零,主调节器输出μ1(t)仍将变小,副调节器输入偏差e2(t)继续负向增大。当过热蒸汽温度回升到等于或稍大于设定值,副调节器输入偏差e2(t)不会立即为正,必须经过一段时间,主调节器由于输入偏差e1(t)大于零使输出μ1(t)变小,副调节器输入偏差e2(t)才会大于零,比例-积分调节规律的作用才会使副调节器输出μ2(t)增大,带动执行机构使减温器阀门开大。
要解决这一问题,必须在副调节器输出μ2(t)达到下限后,限制副调节器输入偏差e2(t)的持续减小过程。也就是限制此时主调节器输出μ1(t),而此时主信号测量值同设定值的偏差是客观存在,所以考虑此时让主调节器输出切换为跟踪值(即乘上系数后的超前信号的测量值)直到主调节器输入偏差e1(t)大于零。切换条件设计为μ2(t)=0,e2(t)<0与e1(t)<0。系统组态经过这一改进后可以消除由于积分调节饱和引起的调节过程的滞后。
上述对串级双冲量系统提出的积分调饱和对调节过程负面影响的解决思路对其它较复杂的调节系统如带氧量修正的送风调节系统也同样有效。