Matlab之simulink中的PID模块的使用

1 Simulink中PID模块的介绍

首先,找到PID模块,双击打开模块的参数设置,如下:

可以通过Automated tuning,可选择的方法有基于频率响应和基于传递函数。

注意:基于传递函数的时候自己定义的多个模块可能会无法调试。


1.1 控制器类型的选择

可以看到Controller:可以选择PI、PD、PID、仅P或仅I控制等。


1.2 PID控制器格式

Form:有并行(默认)和理想型(串行),其传函如下:

注意:传函中的P(比例增益)、I(积分增益)、D(微分增益)系数就是我们需要整定的三个PID参数。


1.3 时域选择

Time domain:连续时间和离散时间。

当选择离散时间时,需要设置积分器和微分器中的滤波器的离散化方法,有向前欧拉,后向欧拉,双线性变换法,如下图:

可以看出,积分环节(1/s)通过前向欧拉离散化方法变成了Ts(1/(z-1))。


1.4 PID的饱和输出限制

限制PID的输出,还有去饱和积分的方法,如,反算法、钳位法。如图所示:

更多详细的参数请参考官方文档:连续时间或离散时间 PID 控制器 - Simulink- MathWorks 中国


1.5 简单PID模型示例

然后使用tune中的传递函数

通过滑动上面的滑条找到自己想要的效果然后点击应用即可。

最终跟踪的大致效果如下:


2 自建PID模块

下面搭建一个常用的离散型带输出饱和限制和积分饱和限制的PI控制器。如下:

从这个离散的PI控制模块中,可以看出积分环节是带有限幅输出的,当然还要对这个积分模块的限幅进行设置勾选,如图:

为什么我们需要对积分环节进行单独的限制输出。看个例子:

这个是带有积分饱和限制的PI控制器调节出来的系统响应。

这个是用simulink系统自带的PI控制器调节出来的系统响应。

两个PI控制器的参数设置一样。但是带抗饱和积分的PI控制器调节出来的系统响应效果明显更好。

那么什么时候需要加积分环节限制输出呢?当系统在抗扰动时,需要一个大的Ki参数来快速消除稳态误差,而在开始从0到稳态这个过程又会因为Ki太大而引起过大超调时,这个时候就需要加积分过饱和限制。