Main Content

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

使用命令行设计 PID 控制器设计

此示例说明如何为由下式给出的被控对象设计 PID 控制器:

sys=1(s+1)3.

首先,创建一个被控对象模型,并为其设计简单的 PI 控制器。

sys = zpk([],[-1 -1 -1],1); 
[C_pi,info] = pidtune(sys,'PI')
C_pi =
 
             1 
  Kp + Ki * ---
             s 

  with Kp = 1.14, Ki = 0.454
 
Continuous-time PI controller in parallel form.
info = struct with fields:
                Stable: 1
    CrossoverFrequency: 0.5205
           PhaseMargin: 60.0000

C_pi 是表示 PI 控制器的 pid 控制器对象。info 的字段显示,调节算法选择约 0.52 弧度/秒的开环穿越频率。

检查受控系统的闭环阶跃响应(参考跟踪)。

T_pi = feedback(C_pi*sys, 1);
step(T_pi)

Figure contains an axes object. The axes object contains an object of type line. This object represents T\_pi.

为了改进响应时间,您可以设置比 pidtune 自动选择的结果(即 0.52)更高的目标穿越频率。将穿越频率提高到 1.0。

[C_pi_fast,info] = pidtune(sys,'PI',1.0)
C_pi_fast =
 
             1 
  Kp + Ki * ---
             s 

  with Kp = 2.83, Ki = 0.0495
 
Continuous-time PI controller in parallel form.
info = struct with fields:
                Stable: 1
    CrossoverFrequency: 1
           PhaseMargin: 43.9973

新控制器可实现更高的穿越频率,但代价是相位裕度降低。

比较两个控制器的闭环阶跃响应。

T_pi_fast = feedback(C_pi_fast*sys,1);
step(T_pi,T_pi_fast)
axis([0 30 0 1.4])
legend('PI','PI,fast')

Figure contains an axes object. The axes object contains 2 objects of type line. These objects represent PI, PI,fast.

性能下降的原因是 PI 控制器没有足够的自由度在 1.0 弧度/秒的穿越频率下实现良好的相位裕度。增加导数动作可以改进响应。

Gc 设计 PIDF 控制器,目标穿越频率为 1.0 弧度/秒。

[C_pidf_fast,info] = pidtune(sys,'PIDF',1.0)
C_pidf_fast =
 
             1            s    
  Kp + Ki * --- + Kd * --------
             s          Tf*s+1 

  with Kp = 2.72, Ki = 0.985, Kd = 1.72, Tf = 0.00875
 
Continuous-time PIDF controller in parallel form.
info = struct with fields:
                Stable: 1
    CrossoverFrequency: 1
           PhaseMargin: 60.0000

信息字段显示,控制器中的导数动作允许调节算法设计一个更激进的控制器,以实现具有良好相位裕度的目标穿越频率。

比较快速 PI 和 PIDF 控制器的闭环阶跃响应和抗扰。

T_pidf_fast =  feedback(C_pidf_fast*sys,1);
step(T_pi_fast, T_pidf_fast);
axis([0 30 0 1.4]);
legend('PI,fast','PIDF,fast');

Figure contains an axes object. The axes object contains 2 objects of type line. These objects represent PI,fast, PIDF,fast.

您可以将受控系统的输入(负载)抗扰与快速 PI 和 PIDF 控制器进行比较。为此,绘制从被控对象输入到被控对象输出的闭环传递函数的响应。

S_pi_fast = feedback(sys,C_pi_fast);
S_pidf_fast = feedback(sys,C_pidf_fast);
step(S_pi_fast,S_pidf_fast);
axis([0 50 0 0.4]);
legend('PI,fast','PIDF,fast');

Figure contains an axes object. The axes object contains 2 objects of type line. These objects represent PI,fast, PIDF,fast.

上图表明,PIDF 控制器还展示了更快的抗扰能力。

另请参阅

|

相关主题