一、纯滞后理论概述
1.1 纯滞后的定义
所谓纯滞后,是指输入信号开始作用于系统的时刻到系统输出开始变化的时刻这段时间,是一种时间上的延迟。存在时间延迟的对象称为具有纯滞后的对象,简称为纯滞后对象,实际被控对象大多数都有纯滞后特性。
含有纯滞后的控制过程必然会产生较明显的超调量,从而降低系统的稳定性和准确性,也会产生较长的调节时间,从而影响系统的快速性被控对象的时滞与瞬态过程的时间常熟比值较大时,一般的控制策略无法实现系统的精度要求,甚至会导致系统变得不稳定。
1.2 纯滞后的控制
纯滞后控制过程的特点是:当系统收到扰动时,被控参数已经发生改变,控制虽然已经感受到这个变化,并且其输出立即改变,但是操纵变量要记过一定时间才能影响到被控参数,而在这期间被控参数还会继续变化,从而造成被控参数产生较大的偏差,因此,这一过程将有一个更加明显地超调量,并且需要一个较长地调节时间,所以,含有纯滞后地过程被公认为较难控制地,其控制难度随着纯滞后时间与整个动态参数时间成正比。
纯滞后系统的输入信号和输出信号有一定延迟,用图像可简单表现为下图
含有一阶惯性环节的纯滞后系统,可表示为:
G ( s ) = K e − τ s T S + 1 G(s) = \frac{Ke^{- \tau s} }{TS+1} G(s)=TS+1Ke−τs
其中: τ \tau τ为纯滞后时间; T T T为纯滞后时间常数; K K K为放大系数。
二、Smith预估控制
1 、史密斯预估补偿原理
史密斯预估补偿器是得到广泛应用的纯滞后系统的控制方法。它针对纯滞后系统闭环特征方程中含有纯滞后项,在PID反馈控制基础上,引入一个预估补偿环节,从而使系统闭环特征方程不含纯滞后项,抵消纯滞后特性所造成的影响,明显地减小超调量和加速调节过程提高控制质量。
由单回路纯滞后地闭环传递函数可以写成
W ( S ) = D ( S ) G 0 ( S ) e − τ s 1 + D ( S ) G 0 ( S ) e − τ s W(S) = \frac{D(S)G_{0}(S)e^{-\tau s}}{1+D(S)G_{0}(S)e^{-\tau s}} W(S)=1+D(S)G0(S)e−τsD(S)G0(S)e−τs
其系统闭环特征方程为: 1 + D ( S ) G 0 ( S ) e − τ s = 0 1+D(S)G_{0}(S)e^{-\tau s}=0 1+D(S)G0(S)e−τs=0
由于特征方程中包含 e − τ s e^{-\tau s} e−τs,随着频率 ω \omega ω的增加, e − τ s e^{-\tau s} e−τs的相角无限减小,使系统的稳定范围大大缩小,为了保证系统稳定性,只能减小增益,使调节控制作用减弱,这样使系统响应速度慢,系统适应性较差。
史密斯预估补偿的基本控制策略是:构造一个过程参考模型,将延迟环节 e − τ s e^{-\tau s} e−τs移出系统闭环,使系统反馈信号不受 e − τ s e^{-\tau s} e−τs的影响,使系统调节品质、稳定性等得到相应的改善。原理图如下:
由上图可以推导出闭环系统传递函数为:
W ( S ) = D ( S ) G 0 ( S ) e − τ s 1 + D ( S ) G 0 ( S ) W(S) = \frac{D(S)G_{0}(S)e^{-\tau s}}{1+D(S)G_{0}(S)} W(S)=1+D(S)G0(S)D(S)G0(S)e−τs
特征方程为: 1 + D ( S ) G 0 ( S ) = 0 1+D(S)G_{0}(S)=0 1+D(S)G0(S)=0。
这相当于把 G 0 ( s ) G_{0}(s) G0(s)作为对象,用 G 0 ( s ) G_{0}(s) G0(s)的输出作为反馈信号,从而使反馈信号相应地提前了 τ \tau τ时刻。所以这种控制称为预估补偿控制。经过预估补偿后,闭环特征方程中已消去了 e − τ s e^{-\tau s} e−τs项,从而也就消除了纯滞后对控制品质的不利影响。
三、MATLAB实现
使用具有20秒时间常数的一阶滤波器来捕获低频干扰。
s = tf('s');
Ts =10;
p = 10*exp(-90*s)/(60*s+1);
p.InputName = 'u';
p.OutputName = 'y0';
ps = c2d(p,Ts,'zoh');
% ps
% step(ps),grid on
%
Cpi = pidtune(p,pidstd(1,1),0.006);
% Cpi
Tpi = feedback([p*Cpi,1],1,1,1);
Tpi.InputName = {'ysp' 'd'};
%
% step(Tpi),grid on
%
Kp3 = [0.06;0.08;0.1];
Ti3 = repmat(Cpi.Ti,3,1);
C3 = pidstd(Kp3,Ti3);
T3 = feedback(p*C3,1);
T3.InputName = 'ysp';
%
% step(T3);
% title('loss of stability when increasing Kp')
F = 1/(20*s+1);
F.InputName = 'dy';
F.OutputName = 'dp';
% Prediction model
Gp = 10/(60*s+1);
Gp.InputName = 'u';
Gp.OutputName = 'yp';
Dp = exp(-90*s);
Dp.InputName = 'yp';
Dp.OutputName = 'y1';
S1 = sumblk('ym=yp+dp');
S2 = sumblk('dy = y0 - y1');
Plant = connect(p,Gp,Dp,F,S1,S2,'u','ym');
Options = pidtuneOptions('PhaseMargin',90);
C = pidtune(Plant,pidstd(1,1),0.08,Options);
C.InputName = 'e';
C.OutputName = 'u';
C
Sum1 = sumblk('e = ysp - yp - dp');
Sum2 = sumblk('y = y0 + d');
Sum3 = sumblk('dy = y - y1');
T = connect(p,Gp,Dp,C,F,Sum1,Sum2,Sum3,{'ysp','d'},'y');
% ts = c2d(T,Ts,'zoh');
step(T,'b',Tpi,'r--')
grid on
legend('Smith Predictor','PI Controller')
结果图:
参考文献
1.https://www.docin.com/p-2159650289.html
2.https://ww2.mathworks.cn/help/ident/ref/dynamicsystem.c2d.html?s_tid=srchtitle_c2d_2