Simulink&车辆巡航控制 (2) -PID控制设计
1.系统模型和参数
下面给出了巡航控制问题的传递函数模型。有关推导,请参阅:MATLAB/Simulink建模-车辆巡航控制 (1)。
公式(1)中使用的相关参数:
(m) 整车质量 1000 kg
(b) 阻尼系数 50 N.s/m
(r) 参考车速 10 m/s
2.性能设定
上升时间 < 5 s
过冲 < 10%
稳态误差 < 2%
3.PID 概述
典型单位反馈系统的框图如下所示。
PID控制器的传递函数是:
我们可以在MATLAB中直接定义传递函数:
Kp = 1;
Ki = 1;
Kd = 1;
s = tf('s');
C = Kp + Ki/s + Kd*s
C =
s^2 + s + 1
-----------
s
连续时间传递函数。
或者,我们可以使用 MATLAB 的 pid 控制器对象来生成等效的连续时间控制器,如下所示:
C = pid(Kp,Ki,Kd)
C =
1
Kp + Ki * --- + Kd * s
s
with Kp = 1, Ki = 1, Kd = 1
并联形式的连续时间 PID 控制器。
4.比例控制
在这个问题中要做的第一件事是找到一个添加了比例控制 (C=Kp) 的闭环传递函数。通过减少单位反馈框图,带有比例控制器的闭环传递函数变为:
比例控制器 Kp减少上升时间,这在这种情况下是可取的。现在,使用等于 100 的Kp和 10 m/s 的参考速度。 创建一个新的 m 文件并输入以下命令。
m = 1000;
b = 50;
r = 10;
s = tf('s');
P_cruise = 1/(m*s + b);
Kp = 100;
C = pid(Kp);
T = feedback(C*P_cruise,1)
t = 0:0.1:20;
step(r*T,t)
axis([0 20 0 10])
T =
100
------------
1000 s + 150
连续时间传递函数。
请注意,我们使用 MATLAB 反馈命令来简化闭环系统的框图简化。 请自行验证结果是否与上面推导的闭环传递函数 T 一致。在 MATLAB 中运行 m 文件应该会给您上面的阶跃响应。 从图中可以看出,稳态误差和上升时间都不满足我们的设计标准。您可以增加比例增益 Kp,以减少上升时间和稳态误差。 更改现有的 m 文件,使 Kp等于 5000,然后在 MATLAB 命令窗口中重新运行它。 你应该看到下面的情节。
Kp = 5000;
C = pid(Kp);
T = feedback(C*P_cruise,1);
step(r*T,t)
axis([0 20 0 10])
稳态误差现在基本上为零,并且上升时间已大大减少。 然而,这种响应是不现实的,因为由于发动机和动力传动系统的功率限制,真正的巡航控制系统通常不能在不到 0.5 秒的时间内将车辆的速度从 0 改变到 10 m/s。在控制系统工程的实践中经常遇到执行器的限制,因此,在提出新的控制器时必须始终考虑所需的控制动作。在这种情况下,这个问题的解决方案是选择一个较低的比例增益Kp,这将提供一个合理的上升时间,并添加一个积分控制器来消除稳态误差。
5.PI 控制
这个带有 PI 控制器的巡航控制系统的闭环传递函数 (C = Kp + Ki/s) 是:
向系统添加积分控制器可消除稳态误差。 现在,让 Kp 等于 600 和 Ki 等于 1,看看响应会发生什么。 将您的 m 文件更改为以下内容。
Kp = 600;
Ki = 1;
C = pid(Kp,Ki);
T = feedback(C*P_cruise,1);
step(r*T,t)
axis([0 20 0 10])
现在调整比例增益 Kp 和积分增益 Ki,以获得所需的响应。当调整积分增益 Ki 时,建议从较小的值开始,因为较大的 Ki 会使响应不稳定。 当 Kp 等于 800 且 Ki等于 40 时,阶跃响应将如下所示:
Kp = 800;
Ki = 40;
C = pid(Kp,Ki);
T = feedback(C*P_cruise,1);
step(r*T,t)
axis([0 20 0 10])
6.PID 控制
对于这个特定的例子,不需要实现微分控制器来获得所需的输出。 但是,您可能希望了解如何使用 PID 控制以供将来参考。 这个带有 PID 控制器的巡航控制系统的闭环传递函数 (C = Kp + Ki/s + Kds) 是:
令 Kp等于1,Ki等于1,Kd等于 1,然后在新的 m 文件中输入以下命令。
Kp = 1;
Ki = 1;
Kd = 1;
C = pid(Kp,Ki,Kd);
T = feedback(C*P_cruise,1);
绘制阶跃响应并调整所有 Kp、Kd 和Ki,直到获得满意的结果。
建议:通常选择合适的增益需要一个反复试验的过程。 解决这一繁琐过程的最佳方法是一次调整一个变量(Kp、Ki 或 Kd),并观察改变一个变量如何影响系统输出。
【免责声明】本文部分资料摘自网络平台,版权归原作者所有,仅用于技术分享与交流,非商业用途!若有涉及版权等请告知,将及时修订删除,谢谢大家的关注!