控制–PID设计
概述
考虑单位反馈系统:
PID时域:
u
(
t
)
=
K
p
e
(
t
)
+
K
i
∫
e
(
t
)
d
t
+
K
p
d
e
(
t
)
d
t
u(t) = K_p e(t) + K_i \int e(t) dt + K_p \frac{de(t)}{dt}
u(t)=Kpe(t)+Ki∫e(t)dt+Kpdtde(t)
拉普拉斯变换后:
K
d
s
2
+
K
p
s
+
K
i
s
\frac{K_d s^{2} + K_p s + K_i}{s}
sKds2+Kps+Ki
Kp = 1;
Ki = 1;
Kd = 1;
s = tf('s');
C = Kp + Ki / s + Kd * s
%or
C = pid(Kp,Ki,Kd)
tf(C)
P I D 各环节作用
例子
质量弹簧阻尼系统。
控制方程:
m
x
¨
+
b
x
˙
+
k
x
=
F
m\ddot{x} + b\dot{x} + kx = F
mx¨+bx˙+kx=F
拉氏变换:
X
(
s
)
F
(
s
)
=
1
m
s
2
+
b
s
+
k
\frac{X(s)}{F(s)} = \frac{1}{ms^{2} + bs + k}
F(s)X(s)=ms2+bs+k1
m = 1 kg;
b = 10 N s / m;
k = 20 N / m;
F = 1 N;
X ( s ) F ( s ) = 1 s 2 + 10 s + 20 \frac{X(s)}{F(s)} = \frac{1}{s^{2} + 10s + 20} F(s)X(s)=s2+10s+201
开环阶跃响应
s = tf('s');
P = 1/(s^2 + 10*s + 20);
step(P)
阻尼比:
10
/
2
20
=
1.18
10/2\sqrt{20} = 1.18
10/220=1.18
增益:1/20 稳态误差 0.95 太大。
上升时间、稳定时间长。
比例控制
加比例控制后,单位反馈系统的闭环传递函数为:
X
(
s
)
R
(
s
)
=
K
p
s
2
+
10
s
+
(
20
+
K
p
)
\frac{X(s)}{R(s)} = \frac{K_p}{s^{2} + 10s +(20+K_p)}
R(s)X(s)=s2+10s+(20+Kp)Kp
Kp = 100;
C = pid(Kp)
T = feedback(C*P,1)
t = 0:0.01:2;
step(T,t)
若
K
p
K_p
Kp改变
Kp = 300;
C = pid(Kp)
T = feedback(C*P,1)
t = 0:0.01:2;
step(T,t)
比例控制器减小了上升时间和稳态误差,增加了过冲,并将稳定时间减少了一小部分。
比例-微分控制
X ( s ) R ( s ) = K d s + K p s 2 + ( 10 + K d ) s + ( 20 + K p ) \frac{X(s)}{R(s)} = \frac{K_ds+K_p}{s^{2} + (10+K_d)s +(20+K_p)} R(s)X(s)=s2+(10+Kd)s+(20+Kp)Kds+Kp
Kp = 300;
Kd = 10;
C = pid(Kp,0,Kd)
T = feedback(C*P,1)
t = 0:0.01:2;
step(T,t)
增加微分项减少了过冲和稳定时间,并且对上升时间和稳态误差的影响可忽略不计。
比例-积分控制
X ( s ) R ( s ) = K p s + K i s 3 + 10 s 2 + ( 20 + K p ) s + K i \frac{X(s)}{R(s)} = \frac{K_ps+K_i}{s^{3} + 10s^{2}+(20+K_p)s +K_i} R(s)X(s)=s3+10s2+(20+Kp)s+KiKps+Ki
Kp = 30;
Ki = 70;
C = pid(Kp,Ki)
T = feedback(C*P,1)
t = 0:0.01:2;
step(T,t)
我们减小了比例增益(
K
p
K_p
Kp),因为积分还减少了上升时间并增加了过冲(同比例项的作用)。上述响应表明,在这种情况下,积分控制器消除了稳态误差。
比例-积分-微分控制
X ( s ) R ( s ) = K d s 2 + K p s + K i s 3 + ( 10 + K d ) s 2 + ( 20 + K p ) s + K i \frac{X(s)}{R(s)} = \frac{K_ds^{2}+K_ps+K_i}{s^{3} + (10+K_d)s^{2}+(20+K_p)s +K_i} R(s)X(s)=s3+(10+Kd)s2+(20+Kp)s+KiKds2+Kps+Ki
Kp = 350;
Ki = 300;
Kd = 50;
C = pid(Kp,Ki,Kd)
T = feedback(C*P,1);
t = 0:0.01:2;
step(T,t)
设计PID的一般提示
在为给定系统设计PID控制器时,请按照下面显示的步骤获得所需的响应。
- 获得开环响应并确定需要改进的内容
- 添加比例控制以改善上升时间
- 添加微分控制以减少过冲
- 添加积分控制以减少稳态误差
- 每次调整的增益 K p K_p Kp, K I K_I KI以及 K D K_D KD直到你获得所需的整体响应。
最后,请记住,如果不需要,您不需要将所有三个控制器(比例,微分和积分)实现到单个系统中。例如,如果PI控制器满足给定的要求(如上例所示),那么您不需要在系统上实现派生控制器。保持控制器尽可能简单。
可以在以下链接中找到在实际物理系统上调整PI控制器的示例。这个例子也开始说明实现控制的一些挑战,包括:控制饱和,积分器卷绕和噪声放大。
自动PID调整
(GUI)pidTuner