Main Content

本页翻译不是最新的。点击此处可查看最新英文版本。

调节 PID 控制器以侧重参考跟踪或抗扰(命令行)

此示例说明如何在命令行中使用 PID 调节选项,以减少参考跟踪中的超调或改善对被控对象输入扰动的抑制。通过使用 pidtune 命令,该示例说明如何在 PI 和 PID 控制系统中权衡参考跟踪和抗扰性能。

以下图中的控制系统为例。

设定点跟踪是输出 y 对输入信号 r 的响应。输入抗扰是抑制信号 d 对输出 y 产生的影响。

创建一个被控对象模型,在此示例中由下式给出:

$$G = \frac{{0.3}}{{{s^2} + 0.1s}}.$$

G = tf(0.3,[1 0.1 0]);

为此被控对象设计一个 PI 控制器,使用带宽 0.03 rad/s。

wc = 0.03;
[C1,info] = pidtune(G,'PI',wc);

使用默认控制器检查控制系统的阶跃参考跟踪和阶跃抗扰。从 dy 的扰动响应等效于由 feedback(G,C1) 给出的闭环响应。

T1 = feedback(G*C1,1);
GS1 = feedback(G,C1);

subplot(2,1,1);
stepplot(T1)
title('Reference Tracking')
subplot(2,1,2);
stepplot(GS1)
title('Disturbance Rejection')

默认情况下,pidtune 会根据给定的带宽调节控制器以实现参考跟踪和抗扰之间的平衡。在此例中,控制器产生的参考跟踪响应中出现了一些超调。而且在初始峰值后,控制器需用比参考跟踪稍长的稳定时间来抑制输入扰动。

根据您的应用,您可能需要更改参考跟踪和抗扰之间的平衡以侧重其中一项。对于 PI 控制器,您可以通过更改所调节系统的相位裕度来改变这种平衡。pidtune 返回的默认控制器会产生 60° 的相位裕度。

info.PhaseMargin
ans =

   60.0000

针对具有相同带宽的 45° 和 70° 相位裕度设计控制器,并比较它们产生的参考跟踪和抗扰。

opts2 = pidtuneOptions('PhaseMargin',45);
C2 = pidtune(G,'PI',wc,opts2);
T2 = feedback(G*C2,1);
GS2 = feedback(G,C2);

opts3 = pidtuneOptions('PhaseMargin',70);
C3 = pidtune(G,'PI',wc,opts3);
T3 = feedback(G*C3,1);
GS3 = feedback(G,C3);

subplot(2,1,1);
stepplot(T1,T2,T3)
legend('PM = 60','PM = 45','PM = 70')
title('Reference Tracking')
subplot(2,1,2);
stepplot(GS1,GS2,GS3)
title('Disturbance Rejection')

将相位裕度降至 45° 可加快抗扰,但也会增大参考跟踪响应的超调量。将相位裕度增至 70° 可完全消除超调,但会导致抑制扰动极其缓慢。您可以尝试不同相位裕度值,直到找到适合的值,能为您的应用平衡参考跟踪和抗扰。相位裕度对这种平衡的影响取决于被控对象模型。对于某些被控对象模型,这种影响不像此示例中表现得那样明显。

如果要同时固定控制系统的带宽和相位裕度,您仍可以使用 pidtuneDesignFocus 选项来更改参考跟踪和抗扰之间的平衡。您可以将 DesignFocus 设置为 'disturbance-rejection''reference-tracking' 来调节控制器,使其侧重其中之一。

DesignFocus 选项对于具有更多可调参数的控制系统更高效。因此,当与 PI 控制器结合使用时,其效果不明显。要查看其效果,请分别使用不同的 DesignFocus 值为相同的带宽和默认相位裕度 (60°) 设计一个 PIDF 控制器。比较结果。

opts4 = pidtuneOptions('DesignFocus','balanced');   % default focus
C4 = pidtune(G,'PIDF',wc,opts4);
T4 = feedback(G*C4,1);
GS4 = feedback(G,C4);

opts5 = pidtuneOptions('DesignFocus','disturbance-rejection');
C5 = pidtune(G,'PIDF',wc,opts5);
T5 = feedback(G*C5,1);
GS5 = feedback(G,C5);

opts6 = pidtuneOptions('DesignFocus','reference-tracking');
C6 = pidtune(G,'PIDF',wc,opts6);
T6 = feedback(G*C6,1);
GS6 = feedback(G,C6);

subplot(2,1,1);
stepplot(T4,T5,T6)
legend('Balanced','Rejection','Tracking')
title('Reference Tracking')
subplot(2,1,2);
stepplot(GS4,GS5,GS6)
title('Disturbance Rejection')

当使用 DesignFocus 选项来侧重调整后控制系统中的参考跟踪或抗扰时,您仍可以调整相位裕度,以进一步微调这两种性能测度之间的平衡。将 DesignFocusPhaseMargin 结合使用,以实现最符合您设计需求的性能平衡。

这两个选项对系统性能的影响很大程度上取决于被控对象的属性。对某些被控对象来说,更改 PhaseMarginDesignFocus 选项没有或几乎没有影响。

相关主题