Main Content

本页的翻译已过时。点击此处可查看最新英文版本。

使用 PID 控制器进行抗饱和控制

模型说明

此示例说明当作动器饱和时,如何使用抗饱和方案来防止 PID 控制器中的积分饱和。我们使用 Simulink® 中的 PID Controller 模块,该模块提供两种内置的抗饱和方法(back-calculationclamping),还提供一种跟踪模式来处理更复杂的场景。

要控制的被控对象是一个具有饱和时间的饱和一阶过程。

我们从打开模型开始。

图 1:具有输入饱和的被控对象的 PID 控制的 Simulink 模型。

要打开此模型,请在 MATLAB® 终端中键入 sldemo_antiwindup

已使用 Simulink® Control Design™ 的 PID 调节器在忽略饱和情况下对 PID 控制器进行调整。

被控对象是一阶过程,其饱和时间的描述如下

$$P(s)=\frac{1}{10s+1}e^{-2s}$$

被控对象具有已知的输入饱和限值 [-10, 10],限值由标签为 Plant Actuator 的 Saturation 模块提供。Simulink 中的 PID Controller 模块有两种内置的抗饱和方法,这两种方法允许 PID Controller 模块提供有关被控对象输入饱和的可用信息。

不使用抗饱和时的性能

首先,我们检查当 PID Controller 模块不考虑饱和模型时饱和对闭环的影响。对图 1 中的模型进行仿真会生成如下所示的结果。

图 2:设定值与无抗饱和的测量输出。

图 3:控制器输出与无抗饱和的饱和输入。

图 2 和 3 突出显示了当控制具有输入饱和的系统时出现的两个问题:

  1. 当设定值为 10 时,PID 控制信号在作动器范围之外的大约值为 24 处达到稳定状态。因此,控制器在非线性区域工作,此时增大控制信号对系统输出没有影响,这种情况称为饱和。请注意,被控对象的直流增益为 1,因此控制器输出没有理由在作动器范围之外具有稳定状态值。

  2. 当设定值变为 5 时,在 PID 控制器输出返回作动器范围内之前会有相当长的延迟。

设计考虑饱和影响的 PID 控制器可以让其大部分时间在线性区域中操作并快速从非线性中恢复,从而提高其性能。抗饱和电路是实现这一目标的一种方法。

基于反算配置抗饱和模块

当控制器达到指定的饱和限制并进入非线性操作时,反算抗饱和方法使用反馈回路来释放 PID 控制器内部积分器。要启用抗饱和,请转至模块对话框中的 Output Saturation 选项卡;选择 Limit output;并输入被控对象的饱和限制。然后,从 Anti-windup method 菜单中选择 back-calculation,并指定 Back-calculation coefficient (Kb)。此增益的倒数是抗饱和回路的时间常量。在此示例中,选择的反算增益为 1。有关如何选择此值的详细信息,请参阅参考文献 [1]。

图 4:启用反算抗饱和方法。

一旦启用反算,模块就有一个用于释放 Integrator 输出的内部跟踪回路。

图 5:带反算的 PID Controller 模块的封装下视图。

图 6 和 7 显示在激活抗饱和的情况下仿真模型的结果。注意 PID 控制信号返回线性区域的速度,以及回路从饱和状态恢复的速度。

图 6:设定值与带反算的测量输出。

图 7:采用反算时的控制器输出与饱和输入

图 7 显示控制器输出 u(t) 和饱和输入 SAT(u) 彼此吻合,这是因为启用了 Limit output

为了更好地可视化抗饱和效果,图 8 显示有和没有抗饱和时被控对象测量输出 y(t)

图 8:有和没有抗饱和时的测量输出。

基于积分器钳位配置抗饱和模块

另一种常用的抗饱和策略是基于条件积分。要启用抗饱和,请转至模块对话框中的 PID Advanced 选项卡;选择 Limit output;并输入被控对象的饱和限制。然后,从 Anti-windup method 菜单中选择 clamping

图 9:设定值与带钳位的测量输出。

图 10:采用钳位时的控制器输出与饱和输入

图 10 显示控制器输出 u(t) 和饱和输入 SAT(u) 彼此吻合,这是因为启用了 Limit output

有关何时使用钳位的详细信息,请参阅参考文献 [1]。

使用跟踪模式处理复杂的抗饱和场景

前面讨论的抗饱和策略依赖于内置方法来处理通过对话框提供给模块的饱和信息。要使这些内置方法按预期工作,必须满足两个条件:

  1. 被控对象的饱和限制是已知的,可以输入到模块的对话框中。

  2. PID Controller 输出信号是馈送给作动器的唯一信号。

这些条件在处理一般的抗饱和情况时可能是限制性的。PID Controller 模块具有一种跟踪模式,该模式允许用户在外部设置反算抗饱和回路。以下两个示例说明如何将跟踪模式用于抗饱和目的:

  1. 具有级联动态的饱和作动器的抗饱和

  2. 具有前馈的 PID 控制的抗饱和

为具有级联动态的饱和作动器构造抗饱和电路

在以下模型中,作动器具有复杂的动态。当作动器有自己的闭环动态时,这很常见。PID 控制器位于外回路,将作动器动态视为内回路,或简单地称为级联饱和动态,如图 1 中所示。

图 11:具有级联作动器动态的 PID 控制器的 Simulink 模型。

要打开此模型,请在 MATLAB 终端中键入 sldemo_antiwindupactuator

在本例中,成功的抗饱和策略需要将作动器输出反馈到 PID Controller 模块的跟踪端口,如图 11 中所示。要配置 PID Controller 模块的 tracking mode,请转至该模块的对话框中的 PID Advanced 选项卡;选择 Enable tracking mode;并指定增益 Kt。此增益的倒数是跟踪回路的时间常量。有关如何选择此增益的详细信息,请参阅参考文献 [1]。

图 12 和 13 显示,被控对象的测量输出 y(t) 和控制器输出 u(t) 几乎立即对设定值的变化作出响应。如果没有抗饱和电路,这些响应将会延迟很长时间。

图 12:设定值与测量输出。

图 13:控制器输出与有效饱和输入。

为具有前馈的 PID 控制构造抗饱和电路

在另一种常见的控制配置中,作动器接收控制信号,该控制信号是 PID 控制信号和前馈控制信号的组合。

为了精确地建立反算抗饱和回路,跟踪信号应减去前馈信号的贡献。这允许 PID Controller 模块知道其在施加到作动器的有效控制信号中的份额。

以下模型包括前馈控制。

图 14:具有前馈和被控对象输入饱和的 PID 控制器的 Simulink 模型。

此处选择前馈增益为 1,因为被控对象的直流增益为 1。

要打开此模型,请在 MATLAB 终端中键入 sldemo_antiwindupfeedforward

图 15 和 16 显示,被控对象的测量输出 y(t) 和控制器输出 u(t) 几乎立即对设定值的变化作出响应。当设定值为 10 时,请注意图 16 中控制器输出 u(t) 如何减小到作动器的范围内。

图 17:设定值与无抗饱和的测量输出。

图 18:具有抗饱和的控制器输出与饱和输入。

总结

PID Controller 模块支持几个功能,这些功能允许它在常见的工业场景下处理控制器饱和问题。

参考资料

  1. K. Åström, T. Hägglund, Advanced PID Control, ISA, Research Triangle Park, NC, August 2005.

另请参阅

相关主题