最小拍控制系统
采样周期为T=0.1s
display(G)
G =
5
-------
s (s+1)
Continuous-time zero/pole/gain model.
一、最小拍有纹波系统
针对图一所示的计算机控制系统,考虑输入为单位速度信号时,进行计算机控制算法D(Z)设计,编程实现最小拍有纹波系统;
1.1该系统的广义脉冲传递函数为:
[zero,pole,~]=zpkdata(Wd);
zero=zero{1};pole=pole{1};
display(Wd);
Wd =
0.024187 z^-1 (1+0.9672z^-1)
----------------------------
(1-z^-1) (1-0.9048z^-1)
Sample time: 0.1 seconds
Discrete-time zero/pole/gain model.
1.2有纹波最小拍系统的闭环传递函数及数字控制器的脉冲传递函数
从结果可以看出,广义脉冲传递函数没有不稳定的零极点,没有纯滞后环节,系统稳定,可以使用对简单对象的最小拍控制的设计方法。
由于输入为单位速度信号,查表5.1[2]得 WB=minreal(WB)
WB =
2 z - 1
-------
z^2
Sample time: 0.1 seconds
Discrete-time transfer function.
D=minreal(D)
D =
82.689 (1-0.5z^-1) (1-0.9048z^-1)
---------------------------------
(1+0.9672z^-1) (1-z^-1)
Sample time: 0.1 seconds
Discrete-time zero/pole/gain model.
1.3分析数字控制器D(z)对系统的控制效果
当控制型号为单位速度信号时,需要两排达到想要的控制效果
figure('position',[0,0,700,300]);
lsimplot(WB/Wd,0:0.1:1,0:0.1:1);
lsimplot(WB,0:0.1:1,0:0.1:1);
当控制信号为单位阶跃信号时,需要两拍达到控制效果
figure('position',[0,0,700,300]);
当控制信号为单位脉冲信号时,需要三拍达到目标控制效果
figure('position',[0,0,700,300]);
1.4 纹波情况
通过simulink仿真可以看到明显的纹波
simOut = sim('withPattern.slx','SaveOutput','on','OutputSaveName','yout','SaveFormat', 'Dataset');
outputs = simOut.get('yout');
r = (outputs.get('r').Values);
y = (outputs.get('y').Values);
二、最小拍无纹波系统
讨论纹波的生成原因,编程实现最小拍无纹波系统;
2.0 纹波形成的原因
如果系统进入稳态后,加在被控对象上的控制信号还在波动,则稳态过程中系统输出就有纹波
2.1 计算所需的闭环传递函数
最小拍无纹波控制必须满足以下条件
- 被控对象W(s)中必须包含足够多的积分环节(>=m-1阶),输入单位阶跃信号时为m=1
- 满足纹波控制的稳定性和控制器的物理可实现
- 包含W(z)中的所有零点
f1=(2+3*beta)/(1+beta)^2;
f2=-1*(1+2*beta)/(1+beta)^2;
WB2=(f1*z^(-1)+f2*z^(-2))*(1+beta*z^(-1))
WB2 =
1.267 z^3 + 0.4668 z^2 - 0.7334 z
---------------------------------
z^4
Sample time: 0.1 seconds
Discrete-time transfer function.
2.2数字控制器D的计算
D2=minreal(D2)
D2 =
52.367 (1-0.9048z^-1) (1-0.5987z^-1)
------------------------------------
(1+0.7334z^-1) (1-z^-1)
Sample time: 0.1 seconds
Discrete-time zero/pole/gain model.
2.3 性能分析
当输入为单位速度信号时,需要三拍实现所需的控制效果。
figure('position',[0,0,700,300]);
2.4 纹波情况
使用simulink模拟
simOut = sim('noPattern.slx','SaveOutput','on','OutputSaveName','yout','SaveFormat', 'Dataset');
outputs = simOut.get('yout');
r = (outputs.get('r').Values);
y = (outputs.get('y').Values);
三、改进最小拍系统
讨论最小拍系统的特点,采取惯性因子法对最小拍控制器加以改进,并研究惯性因子对系统性能的影响。
3.1 设计闭环传递函数
脉冲闭环传递函数可以设计为:
其中f1和f2通过以下条件得出
\ WB3=(f1*z^(-1)+f2*z^(-2))/(1-c*z^(-1))
WB3 =
1.55 z^3 - z^2
--------------
z^4 - 0.45 z^3
Sample time: 0.1 seconds
Discrete-time transfer function.
D3=minreal(D3)
D3 =
64.084 (1-z^-1) (1-0.9048z^-1) (1-0.6452z^-1) (1-0.45z^-1)
----------------------------------------------------------
(1+0.9672z^-1) (1-z^-1)^2 (1-0.45z^-1)
Sample time: 0.1 seconds
Discrete-time zero/pole/gain model.
当控制型号为单位速度信号时
figure('position',[0,0,700,300]);
lsimplot(WB3/Wd,0:0.1:1,0:0.1:1);
lsimplot(WB3,0:0.1:1,0:0.1:1);
当控制信号为单位阶跃信号时:
figure('position',[0,0,700,300]);
当控制信号为单位脉冲信号时
figure('position',[0,0,700,300]);
三、分析惯性因子对系统性能的影响
绘制不同c取值下的输出阶跃响应图和系统主要性能参数表
info=repmat(stepinfo(tf(1,1)),[N 1]);
WB3=tf([f1 f2],[1 -c 0],T);
tmp4{i4} = sprintf('c=%g',C(i4));
info=struct2table(orderfields(info,[5,2,1,3,4,7,8,6]),'RowNames',tmp4);
display(info);
info = 5×8 table
| Overshoot | SettlingTime | RiseTime | SettlingMin | SettlingMax | Peak | PeakTime | Undershoot |
---|
1 c=0.1 | 90.0000 | 0.3000 | 0 | 1.0000 | 1.9000 | 1.9000 | 0.1000 | 0 |
---|
2 c=0.3 | 70.0000 | 0.4000 | 0 | 1.0000 | 1.7000 | 1.7000 | 0.1000 | 0 |
---|
3 c=0.5 | 50.0000 | 0.6000 | 0 | 1.0000 | 1.5000 | 1.5000 | 0.1000 | 0 |
---|
4 c=0.7 | 30.0000 | 0.9000 | 0 | 1.0000 | 1.3000 | 1.3000 | 0.1000 | 0 |
---|
5 c=0.9 | 10.0000 | 1.7000 | 0 | 1.0000 | 1.1000 | 1.1000 | 0.1000 | 0 |
---|
观察以上结果可知,当输入为阶跃信号时,选取的附加极点(阻尼因子)c越大,超调量越小。
参考文献
- https://link.springer.com/chapter/10.1007%2F978-3-642-21697-8_21
- 刘建昌.计算机控制系统(第二版).2016,137
- P137 例5.1
- P148 例5.6
- P151 例5.7