Matalb&Simulink Control Tutorials笔记3-PID控制器设计
控制–PID设计
概述
考虑单位反馈系统:
PID时域:
拉普拉斯变换后:
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 = 1 kg;
b = 10 N s / m;
k = 20 N / m;
F = 1 N;
开环阶跃响应
s = tf('s');
P = 1/(s^2 + 10*s + 20);
step(P)
阻尼比:
增益:1/20 稳态误差 0.95 太大。
上升时间、稳定时间长。
比例控制
加比例控制后,单位反馈系统的闭环传递函数为:
Kp = 100;
C = pid(Kp)
T = feedback(C*P,1)
t = 0:0.01:2;
step(T,t)
若改变
Kp = 300;
C = pid(Kp)
T = feedback(C*P,1)
t = 0:0.01:2;
step(T,t)
比例控制器减小了上升时间和稳态误差,增加了过冲,并将稳定时间减少了一小部分。
比例-微分控制
Kp = 300;
Kd = 10;
C = pid(Kp,0,Kd)
T = feedback(C*P,1)
t = 0:0.01:2;
step(T,t)
增加微分项减少了过冲和稳定时间,并且对上升时间和稳态误差的影响可忽略不计。
比例-积分控制
Kp = 30;
Ki = 70;
C = pid(Kp,Ki)
T = feedback(C*P,1)
t = 0:0.01:2;
step(T,t)
我们减小了比例增益(),因为积分还减少了上升时间并增加了过冲(同比例项的作用)。上述响应表明,在这种情况下,积分控制器消除了稳态误差。
比例-积分-微分控制
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控制器时,请按照下面显示的步骤获得所需的响应。
- 获得开环响应并确定需要改进的内容
- 添加比例控制以改善上升时间
- 添加微分控制以减少过冲
- 添加积分控制以减少稳态误差
- 每次调整的增益,以及直到你获得所需的整体响应。
最后,请记住,如果不需要,您不需要将所有三个控制器(比例,微分和积分)实现到单个系统中。例如,如果PI控制器满足给定的要求(如上例所示),那么您不需要在系统上实现派生控制器。保持控制器尽可能简单。
可以在以下链接中找到在实际物理系统上调整PI控制器的示例。这个例子也开始说明实现控制的一些挑战,包括:控制饱和,积分器卷绕和噪声放大。
自动PID调整
(GUI)pidTuner