主要内容

使用 PID 调节器设计具备抗扰性能的 PID 控制器

此示例说明如何使用 PID 调节器设计具备良好抗扰性能的 PI 控制器。此示例还说明如何设计兼具良好抗扰性能和参考跟踪性能的 ISA-PID 控制器。

启动 PID 调节器并完成初始 PID 设计

被控对象是

G(s)=6(s+5)e-s(s+1)(s+2)(s+3)(s+4)

G = zpk(-5,[-1 -2 -3 -4],6,'OutputDelay',1);
G.InputName = 'u';  
G.OutputName = 'y';

使用以下命令启动 PID 调节器,为被控对象 G 设计并联型 PI 控制器。

pidTuner(G,'pi')

PID 调节器会自动完成初始 PI 控制器的设计。

piddemo1.png

要显示控制器增益和性能度量,请点击显示参数

piddemo1a.png

对于阶跃参考跟踪,稳定时间约为 12 秒,超调量约为 6.3%,这对于此示例是可接受的。

调节 PID 以实现抗扰

假定在被控对象输入端出现阶跃扰动,且 PI 控制器的主要用途是快速抑制该扰动。在本节的其余部分,我们将说明如何在 PID 调节器中设计 PI 控制器,以实现更优的抗扰性能。我们也预计,随着抗扰性能的提升,参考跟踪性能会有所下降。

由于低频扰动的衰减与积分增益 Ki 成反比,因此最大化积分增益是获得具备良好抗扰性能的 PI 控制器的有效启发法。有关背景知识,请参阅 Karl Astrom 等人编著的《Advanced PID Control》第 4 章“Controller Design”,2006 年,The ISA Society 出版。

点击添加绘图并选择输入抗扰,以绘制输入扰动阶跃响应。峰值偏差约为 1,约在 9 秒内稳定为小于 0.1。

piddemo1b.png

piddemo2.png

平铺绘图以同时显示参考跟踪和输入扰动响应。向右移动响应时间滑块以提高响应速度(开环带宽)。控制器参数表中的 Ki 增益先增大后减小,最大值出现在 0.3 处。当 Ki 为 0.3 时,峰值偏差减小至 0.9(约改善 10%),约在 6.7 秒内稳定为小于 0.1(约改善 25%)。

piddemo3.png

piddemo4.png

由于我们增加了带宽,阶跃参考跟踪响应变得更加振荡。此外,超调量超过 15%,这通常是不可接受的。这种参考跟踪与抗扰之间的性能权衡经常存在,因为单个 PID 控制器无法同时满足这两个设计目标。

点击导出将设计好的 PI 控制器导出到 MATLAB® 工作区。该控制器由一个 PID 对象表示,您在下一节创建 ISA-PID 控制器时需要它。

piddemo5.png

您也可以使用 pid 命令在 MATLAB 工作区中手动创建同样的 PI 控制器。在此命令中,您可以直接指定从 PID 调节器的参数表中获得的 Kp 增益和 Ki 增益。

C = pid(0.64362,0.30314);
C.InputName = 'e';  
C.OutputName = 'u';
C
C =
 
             1 
  Kp + Ki * ---
             s 

  with Kp = 0.644, Ki = 0.303
 
Continuous-time PI controller in parallel form.
Model Properties

将 PID 控制器扩展为 ISA-PID 控制器

让 PI 控制器兼具良好的参考跟踪和抗扰性能的简单解决方案是将其升级为 ISA-PID 控制器。这通过提供一个额外的调节参数 b 来改进参考跟踪响应,该参数允许独立控制参考信号对比例作用的影响。

在上述 ISA-PID 结构中,有一个反馈控制器 C 和一个前馈滤波器 F。在此示例中,C 是一个常规的并联型 PI 控制器,可以由 PID 对象表示:

C(s)=pid(Kp,Ki)=Kp+Kis

F 是一个预滤波器,它涉及来自 C 的 Kp 和 Ki 增益以及设定点权重 b

F(s)=bKps+KiKps+Ki

因此,ISA-PID 控制器有两个输入 (ry) 以及一个输出 (u)。

设定点权重 b 是一个介于 0 和 1 之间的实数。当它减小时,参考跟踪响应中的超调量会减少。在此示例中,b 选择的是 0.7。

b = 0.7;
% The following code constructs an ISA-PID from F and C
F = tf([b*C.Kp C.Ki],[C.Kp C.Ki]);
F.InputName = 'r';  
F.OutputName = 'uf';
Sum = sumblk('e','uf','y','+-');
ISAPID = connect(C,F,Sum,{'r','y'},'u');
tf(ISAPID)
ans =
 
  From input "r" to output "u":
  0.4505 s^2 + 0.5153 s + 0.1428
  ------------------------------
          s^2 + 0.471 s
 
  From input "y" to output "u":
  -0.6436 s - 0.3031
  ------------------
          s
 
Continuous-time transfer function.
Model Properties

比较性能

由于设定点权重 b 减小了超调量,ISA-PID 控制器的参考跟踪响应具有更小的超调量。

% Closed-loop system with PI controller for reference tracking 
sys1 = feedback(G*C,1);
% Closed-loop system with ISA-PID controller
sys2 = connect(ISAPID,G,{'r','u'},'y');
% Compare responses
step(sys1,'r-',sys2(1),'b.');
legend('show','location','southeast')
title('Reference Tracking')

MATLAB figure

抗扰响应相同,因为设定点权重 b 仅影响参考跟踪。

% Closed-loop system with PI controller for disturbance rejection
sys1 = feedback(G,C);
% Compare responses
step(sys1,'r-',sys2(2),'b.');
legend('PID','ISA-PID');
title('Disturbance Rejection')

MATLAB figure

另请参阅

主题