1.符号说明与结构框图

  1. y(k)——系统响应输出的离散值
  2. u(k)——数字PID控制输出的离散值
  3. r(k)——期望输出的离散值(事先已知),在本例中为常数(即阶跃输入)
  4. e(k)——e(k)=r(k)-y(k),为期望值-实际值,是单位负反馈的误差比较信号
  5. D(z)——数字控制器的脉冲传递函数
  6. G(s)——被控对象的传递函数,G(z)——广义被控对象的脉冲传递函数
  7. Φ ( z ) = C ( z ) / R ( z ) \Phi(z)=C(z)/R(z) Φ(z)=C(z)/R(z)——系统的闭环传递函数, Φ e ( z ) = E ( z ) / C ( z ) \Phi_e(z)=E(z)/C(z) Φe(z)=E(z)/C(z)——系统的闭环误差传递函数
    系统的结构框图如下:
    系统结构框图

2.最小拍控制系统构造原则

最少拍系统是指系统对某些典型的输入(阶跃、速度、加速度输入)具有最快的响应特性。具体来说,最少拍系统应满足对典型输入在有限个采样周期内结束过渡过程且稳态误差为零。研究误差序列 e ( k ) e(k) e(k)的特性之前,不妨通过在Z域研究 Φ e ( z ) \Phi_e(z) Φe(z)的表达式来得出使得 e ( k ) e(k) e(k)最快收敛至0的条件。
最小拍控制系统的设计原理是使得系统的闭环误差传递函数 Φ e ( z ) = a 1 z − 1 + a 2 z − 2 + . . . + a n z − n \Phi_e(z)=a_1z^{-1}+a_2z^{-2}+...+a_nz^{-n} Φe(z)=a1z1+a2z2+...+anzn具有最简单的表达式。因为 z − k z^{-k} zk的反Z变换为 δ ( t − k ) \delta(t-k) δ(tk),因此 e ( k ) = a 1 δ ( t − T ) + a 2 δ ( t − 2 T ) + . . . + a n δ ( t − n T ) ( a n ≠ 0 ) e(k)=a_1\delta(t-T)+a_2\delta(t-2T)+...+a_n\delta(t-nT)(a_n≠0) e(k)=a1δ(tT)+a2δ(t2T)+...+anδ(tnT)(an̸=0),即 e ( 1 ) = a 1 , e ( 2 ) = a 2 , . . . , e ( n ) = a n e(1)=a_1,e(2)=a_2,...,e(n)=a_n e(1)=a1,e(2)=a2,...,e(n)=ann的值是有限的说明系统能在有限拍内达到最小,n的值越小, Φ e ( z ) \Phi_e(z) Φe(z)的表达式越简单,能达到稳态值所需的拍数(周期数)越少。而我们的目的就是设计控制器D(z)使其达到稳态误差e(k)(甚至是e(t))的要求。
设计步骤大体如下:

  1. 根据被控对象的数学模型求出广义被控对象的脉冲传递函数G(z)
  2. 根据输入信号的类型,确定模型 Φ e ( z ) = 1 − Φ ( z ) \Phi_e(z)=1-\Phi(z) Φe(z)=1Φ(z),其对应关系如下表:
典型输入Z域表达式 Φ e ( z ) 的 形 式 \Phi_e(z)的形式 Φe(z)
u ( t ) u(t) u(t) 1 1 − z − 1 \frac{1}{1-z^{-1}} 1z11 ( 1 − z − 1 ) F ( z ) (1-z^{-1})F(z) (1z1)F(z)
t u ( t ) tu(t) tu(t) T z − 1 ( 1 − z − 1 ) 2 \frac{Tz^{-1}}{{(1-z^{-1})}^2} (1z1)2Tz1 ( 1 − z − 1 ) 2 F ( z ) {(1-z^{-1})}^2F(z) (1z1)2F(z)
1 2 t 2 u ( t ) \frac{1}{2}t^2u(t) 21t2u(t) T 2 z − 1 ( 1 + z − 1 ) 2 ( 1 − z − 1 ) 3 \frac{T^2z^{-1}(1+z^{-1})}{2{(1-z^{-1})}^3} 2(1z1)3T2z1(1+z1) ( 1 − z − 1 ) 3 F ( z ) {(1-z^{-1})}^3F(z) (1z1)3F(z)

当被控对象不含有不稳定零极点,不含有纯滞后环节 z − 1 z^{-1} z1时,F(z)=1,此时的被控对象也称为简单对象。
满足以上条件的任意一个,被控对象称为复杂对象,当G(s)中含有不稳定零点或纯滞后环节时,不能使用D(z)或者 Φ e ( z ) \Phi_e(z) Φe(z)中增加因式消除,只能保留至 Φ ( z ) \Phi(z) Φ(z),当G(s)中含有不稳定极点时,在 Φ e ( z ) \Phi_e(z) Φe(z)中增加对应的零点抵消 Φ ( z ) \Phi(z) Φ(z)中的不稳定极点。
3. 求控制器的脉冲传递函数D(z),求取原理如下:
由于 C ( z ) = E ( z ) D ( z ) G ( z ) C(z)=E(z)D(z)G(z) C(z)=E(z)D(z)G(z),所以 C ( z ) R ( z ) = D ( z ) G ( z ) E ( z ) R ( z ) \frac{C(z)}{R(z)}=D(z)G(z)\frac{E(z)}{R(z)} R(z)C(z)=D(z)G(z)R(z)E(z),即 Φ e ( z ) = D ( z ) G ( z ) Φ e ( z ) \Phi_e(z)=D(z)G(z)\Phi_e(z) Φe(z)=D(z)G(z)Φe(z)在单位负反馈系统中 Φ e ( z ) = 1 − Φ ( z ) \Phi_e(z)=1-\Phi(z) Φe(z)=1Φ(z),因此 D ( z ) = Φ ( z ) G ( z ) ( 1 − Φ ( z ) ) D(z)=\frac{\Phi(z)}{G(z)(1-\Phi(z))} D(z)=G(z)(1Φ(z))Φ(z)
4. 根据D(z)生成控制算法(或者脉冲传递函数)求出输出序列,画出系统的响应曲线。

2.1数字控制器D(z)的构造

我们已经知道 D ( z ) = Φ ( z ) G ( z ) ( 1 − Φ ( z ) ) D(z)=\frac{\Phi(z)}{G(z)(1-\Phi(z))} D(z)=G(z)(1Φ(z))Φ(z),因此欲求出D(z)只需知道 Φ ( z ) \Phi(z) Φ(z) Φ e ( z ) \Phi_e(z) Φe(z)即可。
Φ ( z ) = ( a 0 + a 1 z − 1 + a 2 z − 2 + . . . + a n z − n ) ( 1 − z 1 z − 1 ) ( 1 − z 2 z − 1 ) . . . ( 1 − z k z − 1 ) z − m \Phi(z)=(a_0+a_1z^{-1}+a_2z^{-2}+...+a_nz^{-n})(1-z_1z^{-1})(1-z_2z^{-1})...(1-z_kz^{-1})z^{-m} Φ(z)=(a0+a1z1+a2z2+...+anzn)(1z1z1)(1z2z1)...(1zkz1)zm
其中 z 1 , z 2 , . . . , z k z_1,z_2,...,z_k z1,z2,...,zk Φ ( z ) \Phi(z) Φ(z)保留的的广义被控对象G(z)不稳定零点, z − m z^{-m} zm是闭环传递函数 Φ ( z ) \Phi(z) Φ(z)保留的,在G(z)里面出现的纯滞后环节 z − m z^{-m} zm,而输入形式决定了前面多项式 a 0 + a 1 z − 1 + a 2 z − 2 + . . . + a n z − n a_0+a_1z^{-1}+a_2z^{-2}+...+a_nz^{-n} a0+a1z1+a2z2+...+anzn的阶数n,阶数n和 Φ e ( z ) = ( 1 − z − 1 ) p F ( z ) \Phi_e(z)={(1-z^{-1})}^pF(z) Φe(z)=(1z1)pF(z)中的p是一致的,即n=p,系数 a 0 、 a 1 、 . . . 、 a n a_0、a_1、...、a_n a0a1...an依赖于条件 Φ e ( z ) = ( 1 − z − 1 ) p F ( z ) \Phi_e(z)={(1-z^{-1})}^pF(z) Φe(z)=(1z1)pF(z)而定, Φ e ( z ) \Phi_e(z) Φe(z)中含有p重零点z=1,因此它的0阶导到p-1阶导在z=1处的值都应该是0,即

{ Φ e ( z ) ∣ z = 1 = 0 d Φ e ( z ) d z ∣ z = 1 = 0 d 2 Φ e ( z ) d z 2 ∣ z = 1 = 0 . . . d n Φ e ( z ) d z n ∣ z = 1 = 0 \begin{cases} \left. \Phi_e(z) \right| _{z=1}=0 \\ \left. \frac{{\rm d}\Phi_e(z)}{{\rm d}z} \right| _{z=1}=0 \\ \left. \frac{{\rm d^2}\Phi_e(z)}{{\rm d}z^2} \right| _{z=1}=0 \\ ...\\ \left. \frac{{\rm d^n}\Phi_e(z)}{{\rm d}z^n} \right| _{z=1}=0 \end{cases} Φe(z)z=1=0dzdΦe(z)z=1=0dz2d2Φe(z)z=1=0...dzndnΦe(z)z=1=0
根据上面的方程组可以解出 Φ e ( z ) \Phi_e(z) Φe(z)中的未知参数 a 0 、 a 1 、 . . . 、 a n a_0、a_1、...、a_n a0a1...an,因此 Φ e ( z ) \Phi_e(z) Φe(z)已经确定,D(z)即可求得。

3.简单控制对象的最小拍控制器设计

3.1阶跃输入

假设被控对象的传递函数为 G ( s ) = 9.4 0.017 s + 1 G(s)=\frac{9.4}{0.017s+1} G(s)=0.017s+19.4求阶跃输入下的最小拍控制器D(z)的表达式。在Simulink的仿真中,我们设定了Z变换的采样频率是0.005s,(其他地方默认为-1,即服从系统的采样频率)
Simulink仿真图示意
先求取广义被控对象的传递函数
G ( z ) = Z [ 1 − e − T s s 9.4 0.017 s + 1 ] = ( 1 − z − 1 ) Z [ ( 9.4 s ( 0.017 s + 1 ) ) ] = 2.394 z − 1 1 − 0.745 z − 1 G(z) =Z[\frac{1-e^{-Ts}}{s}\frac{9.4}{0.017s+1}] =(1-z^{-1})Z[(\frac{9.4}{s(0.017s+1)})] =\frac{2.394z^{-1}}{1-0.745z^{-1}} G(z)=Z[s1eTs0.017s+19.4]=(1z1)Z[(s(0.017s+1)9.4)]=10.745z12.394z1
没有不稳定零极点和纯滞后环节,因此选取 Φ e ( z ) = ( 1 − z − 1 ) , Φ ( z ) = z − 1 \Phi_e(z)=(1-z^{-1}),\Phi(z)=z^{-1} Φe(z)=(1z1),Φ(z)=z1
此时 D ( z ) = Φ ( z ) G ( z ) ( 1 − Φ ( z ) ) = 0.4174 z − 0.7452 z − 1 D(z)=\frac{\Phi(z)}{G(z)(1-\Phi(z))}=0.4174\frac{z-0.7452}{z-1} D(z)=G(z)(1Φ(z))Φ(z)=0.4174z1z0.7452
我们搭建好Simulink仿真电路如下:
Simulink的仿真图
按照我们的理论,系统的应该在控制算法作用的第一拍(0.005s处)时达到0稳态误差,仿真曲线如下图(给定值为1500):
最小拍的阶跃响应
可以看到验证结果与我们理论推导相符。注意我们这里示波器取的采样周期为-1(inherited),说明是Matlab内置的采样时间,会比我们定的Ts=1s要短的多,非常接近于连续系统的仿真结果。可以看出响应曲线在上升段有很微小的纹波抖动,在进入稳态值后,纹波消失。产生纹波的原因在于 Y ( z ) Y(z) Y(z)

3.2速度输入

假设被控对象的传递函数为 G ( s ) = 2 s ( s + 1 ) G(s)=\frac{2}{s(s+1)} G(s)=s(s+1)2,求系统在采样时间1s,输入信号为单位速度输入的条件下的最小拍控制器D(z)。系统的结构框图如下图所示:
系统结构框图
下面我们借助Matlab的命令轻松地解决这个问题。首先按照第二部分最小拍控制系统的设计原则的步骤,我们应该求出带零阶保持器的广义被控对象的Z域脉冲传递函数 G ( z ) = Z [ 1 − e − T s s ⋅ G ( s ) ] G(z)=Z[\frac{1-e^{-Ts}{s}\cdot G(s)}] G(z)=Z[]1eTssG(s),在Matlab工作区输入代码并获得输出的脉冲传递函数:

>> syms s;%定义符号变量s
>> s=tf('s');%s定义为tf(transfer function传递函数)类型的结构体
>> Gs=2/(s*(s+1));
>> Ts=1;
>> Gz=c2d(Gs,Ts,'zoh')%带零阶保持器(ZOH)的离散化,采样时间为1s

Gz =
 
    0.7358 z + 0.5285
  ----------------------
  z^2 - 1.368 z + 0.3679
 
Sample time: 1 seconds
Discrete-time transfer function.

>> zpk(Gz)%展示为零极点模式

ans =
 
  0.73576 (z+0.7183)
  ------------------
   (z-1) (z-0.3679)
 
Sample time: 1 seconds
Discrete-time zero/pole/gain model.

可以看出脉冲传递函数G(z)中含有1个不稳定极点z=1,但是考虑到此时的 Φ e ( z ) = ( 1 − z − 1 ) 2 F ( z ) \Phi_e(z)={(1-z^{-1})}^2F(z) Φe(z)=(1z1)2F(z),具有z=1这个零点,说明D(z)的表达式 D ( z ) = Φ ( z ) G ( z ) Φ e ( z ) D(z)=\frac{\Phi(z)}{G(z)\Phi_e(z)} D(z)=G(z)Φe(z)Φ(z)中可以将极点z=1约去,不必再增加额外的 ( 1 − z − 1 ) (1-z^{-1}) (1z1)因式,因此可以取F(z)=1即 Φ e ( z ) = ( 1 − z − 1 ) 2 \Phi_e(z)={(1-z^{-1})}^2 Φe(z)=(1z1)2,此时 Φ ( z ) = 1 − Φ e ( z ) = 1 − ( 1 − z − 1 ) 2 = 2 z − 1 − z − 2 \Phi(z)=1-\Phi_e(z)=1-{(1-z^{-1})}^2=2z^{-1}-z^{-2} Φ(z)=1Φe(z)=1(1z1)2=2z1z2,根据 D ( z ) = Φ ( z ) G ( z ) Φ e ( z ) D(z)=\frac{\Phi(z)}{G(z)\Phi_e(z)} D(z)=G(z)Φe(z)Φ(z)可以求出控制器表达式D(z)。

>> syms z;
>> z=tf('z');
>> Phiez=(1-z^(-1))^2;
>> Phiz=1-Phiez;%得到Φ(z)
>> Dz=Phiz/(Gz*Phiez);%得到数字控制器的脉冲传递函数
>> minreal(zpk(Dz))%得到最简零极点式

ans =
 
  2.7183 (z-0.5) (z-0.3679)
  -------------------------
      (z+0.7183) (z-1)
 
Sample time: 1 seconds
Discrete-time zero/pole/gain model.

我们按照此要去搭建好Simulink仿真图如下
Simulink仿真图
D(z)的Sample time设置为1(因为我们的采样时间是Ts=1s),仿真时间设为10s(差不多可以清楚地看见过渡过程)
速度输入的仿真
黄色为指令信号(单位速度输入),蓝色为响应曲线。我们将示波器的图形(print to figure)打印到图形。利用数据游标工具找到t=1和t=2的点。如果我们的理论正确,那么e(0)=0,e(1)=1,e(2)=0.e(3)=e(4)=…=0;

t数据游标(采样时刻的值)
1在这里插入图片描述
2在这里插入图片描述
3在这里插入图片描述
4在这里插入图片描述

由于r(k)=k,y(k)的采样值依次为0,2,3.002,3.997,e(k)=r(k)-y(k)基本满足e(0)=0,e(1)=1,e(2)=0.e(3)=e(4)=…=0。
从我们仿真的结果看,采样点处的值只需要两拍就达到了稳态,但是采样点之间有纹波(这是因为 E ( z ) = a 1 z − 1 + a 2 z − 2 + . . . + a n z − n E(z)=a_1z^{-1}+a_2z^{-2}+...+a_nz^{-n} E(z)=a1z1+a2z2+...+anzn并不是有限项,U(z)也并不是有限项,即u(k)最终并没有达到恒定,误差也并没有最终严格归0),这种控制属于有纹波的最小拍控制。还可以通过增加积分可牺牲控制拍数的手段,达到无纹波的最小拍控制,这是连续系统所做不到的。
希望本文对您有帮助,感谢大家对本站点的支持。

Logo

开放原子开发者工作坊旨在鼓励更多人参与开源活动,与志同道合的开发者们相互交流开发经验、分享开发心得、获取前沿技术趋势。工作坊有多种形式的开发者活动,如meetup、训练营等,主打技术交流,干货满满,真诚地邀请各位开发者共同参与!

更多推荐