技术文章和通讯

PID控制设计简单

作者:Murad Abu-Khalaf, MathWorks, Rong Chen, MathWorks, Arkadiy Turevskiy, MathWorks


调优PID控制器看起来很简单,只需要找到三个值:比例增益、积分增益和导数增益。事实上,安全地、系统地找到确保控制系统最佳性能的增益集是一项复杂的任务。传统上,PID控制器要么手动调优,要么使用基于规则的方法。手工方法是反复的,耗时的,如果在硬件上使用,可能会造成损坏。基于规则的方法也有严重的局限性:它们不支持某些类型的植物模型,如不稳定的植物、高阶植物或几乎没有时间延迟的植物。金宝app除了整定之外,PID控制还涉及到设计和实现方面的挑战,如离散时间实现和定点缩放。

本文以四杆机构为例,介绍了一种简化和改进PID控制器设计与实现的方法。该方法基于R2009b产品的两个特点:Simulink中的PID控制器模块金宝app®以及Simulink Control Design™中的PID整金宝app定算法。

四杆联动系统:控制设计目标

四连杆机构(图1)应用广泛,包括汽车悬架、机器人驱动器和飞机起落架。

pid_fig1_w.jpg
图1所示。四连杆机构,固定的下连杆为蓝色。

控制系统由前馈控制和反馈PID控制两部分组成。前馈控制是对对象动力学的反向控制,它通过考虑非线性行为来处理机构的主要运动。在面对建模不确定性和外界干扰的情况下,反馈PID控制使定位误差较小。本文主要研究反馈式PID控制的设计。

PID控制器(图2)获取其中一个连杆的期望和实际旋转角度之间的误差信号,并创建扭矩请求。这个请求被添加到前馈控制器的转矩请求中,并且这个和信号被用来驱动直流电机,驱动连接连杆的关节旋转。控制器必须使装置的运行稳定下来。它还必须提供快速响应时间和小超调。由于控制器将在一个16位的定点处理器上实现,因此它需要采用离散时间形式,并且增益和计算信号必须相应地缩放。

pid_fig2_w.jpg
图2。四连杆系统控制器结构。

闭环系统配置和控制器调优

工厂模型由SimMechanics™模型的四杆机构和SimElectronics模型的直流电机组成®(图3)要创建如图2所示的控制器架构,我们只需从Simulink Discrete库中添加一个离散时间PID控制器块。金宝app有了闭环系统的配置,我们就可以调整控制器了。

pid_fig3_w.jpg
图3。四杆机构的SimMechanics模型结合了直流电机的SimElectronics模型。

为此,我们打开PID Controller块对话框,指定控制器采样时间,然后按“Tune”(图4)打开PID Tuner GUI。在显示GUI之前,Simulink Control D金宝appesign将当前运行点的对象线性化,并推导出反馈控制回路中的PID控制器块所看到的线性时不变(LTI)对象模型。与采样相关的计算延迟被自动地考虑在内。利用自动整定方法,Simulink Control Design生成金宝appPID控制器的初始增益。这种调优方法对植物顺序和时间延迟没有限制,并且在连续和离散时域都能工作。

pid_fig4_w.jpg
图4。PID调谐器,从块对话框中打开。

图5显示了这个初始PID设计的闭环系统的设定值跟踪响应。如果控制器性能令人满意,我们按“应用”在PID控制器块对话框中更新P, I, D和N增益的值。然后,我们可以通过模拟非线性模型并查看结果来测试设计的性能(图6)。我们还可以使用简单的滑块交互调整设计,使控制器更快或更慢(图5,底部)。

这个例子显示了用这个初始PID设计的闭环系统的设定值跟踪响应。(没有声音)
pid_fig6_w.jpg
图6。仿真结果为四杆机构模型。

准备实施

为了准备在16位微处理器上实现的控制器,我们将其缩放为芯片支持的定点算法。金宝app

使用块对话框中的“数据类型”选项卡,我们应用定点设计所需的设置(图7)。我们可以使用Simulink中的定点工具自动获得这些设置。金宝app然后,我们使用定点设置运行仿真,以验证定点设计结果与我们得到的结果,当控制器增益和信号实现双精度值。

pid_fig7_w.jpg
图7。用于在具有16位定点架构的处理器上实现PID控制器的定点设置。

生成产品代码

在PID控制器准备好实现后,最后一步是使用Real-Time Workshop Embedded Coder™生成C代码(图8)。为了测试该代码,我们用生成的C代码替换PID控制器块,并在闭环仿真中运行代码。我们可以通过使用Real-Time Workshop Embedded Coder自动创建一个Simulink块来调用生成的C代码。金宝app

pid_fig8_w.jpg
图8。C-code实现的16位定点PID控制器。代码是从PID Controller块生成的。

现在,我们可以使用将在实际处理器上运行的C代码来运行模拟。仿真表明,生成的代码产生的结果与我们的PID控制器块获得的结果非常匹配,具有双精度值(图9)。

pid_fig9_w.jpg
图9。仿真结果将生成的C代码的性能与双精度PID控制器模块的性能进行了比较。

我们现在可以将这段代码部署到处理器中,并开始实时控制我们的四杆连杆。

出版于2009年- 91842v00

查看相关行业的文章