从系列中:实际中的控制系统
布莱恩·道格拉斯
通常,最好的控制系统是最简单的。当你试图控制的系统是高度非线性的,这就会导致非常复杂的控制器。本视频通过讨论非线性控制的一种简单形式:增益调度,继续我们在实践中对控制系统的讨论。
增益调度是一种基于系统当前状态调整线性控制器增益的方法。通过这种方法,增益调度控制器可以将系统的整个工作范围分割成更小的线性可控区域,从而对整个工作范围产生足够的控制。然而,在控制器增益之间切换可能会产生一些意想不到的影响。除了提供对增益调度的直观理解,本视频还介绍了一些实现这些控制器的方法,以及选择的实现如何最小化开关增益的一些负面影响。
增益调度在实践中经常使用,所以值得通过这个视频学习这种方法的基础知识。然而,没有什么比坐下来自己练习更好的了。这里有一些其他的教程和例子,将帮助你开始在MATLAB中设计增益调度控制器®和仿真软金宝app件®.
让我们通过讨论非线性控制的一种形式:增益调度来继续我们在实践中控制系统的讨论。当我从大学毕业的时候,我就有了这样的想法,我将花大量的时间应用最先进的非线性控制理论,并构建非常漂亮的控制器。但我发现,在大多数情况下,您都试图使用尽可能简单的设计,因为这些设计通常更便宜,更容易实现、理解和故障排除。有一些简单的非线性控制器,室内恒温器的开关控制器就是其中之一,但一般来说,非线性控制背后的数学更复杂,只能应用于狭窄的系统类别。因此,有时,最好的解决方案就是坚持使用可靠的线性控制器,即使对于高度非线性的系统也是如此。这就是我们要做的增益调度。我是Brian,欢迎来到MATLAB技术讲座。
假设你被要求为一架商用飞机的自动驾驶仪开发一个俯仰控制器。当自动驾驶仪要求某一俯仰角度时,控制器需要将该命令与当前俯仰角度进行比较,然后驱动电梯控制面相应地调整俯仰。你已经为设备推导出一个线性传递函数,并验证了系统的行为足够线性,你可以使用这个模型来设计和调整控制器。如果你所需要做的只是设计你的系统在飞机处于巡航高度和保持飞行速度时工作,那么你可能可以设计一个工作良好的线性控制器。
但是,有一个抓住。该型号仅代表了在单个操作条件下飞机的动态。飞机在单一的运行条件下不能飞行。马赫数改变,动态压力,襟翼位置,重心和质量变化的燃料消耗,攻击变化等待。操作条件始终变化。并且每个操作条件都有自己的一组参数,因此是线性模型的不同实例。这是非线性系统的类型称为线性参数变化系统(LPV)。其中模型本身是线性的,但参数随时间或操作条件而变化。因此,使用单一的操作条件非常适用的线性控制器可能在其他操作条件下工作非常好,其模型的不同实例。
那么我们能做什么呢?我们可以尝试设计在整个工作范围内工作的复杂非线性控制器,我们可以尝试设计能够工作的鲁棒线性控制器-尽管这几乎肯定会导致性能下降,甚至可能不可能,我们可以限制机组人员在非常严格的条件下只能在巡航中使用自动驾驶仪,或者我们可以使用一个线性控制器,根据我们定义的时间表改变控制器的增益。让我们选择这个选项。
让我们更仔细地看一下我们的反馈俯仰控制系统的简化框图。对于这个思想练习,我们使用的是PID控制器,但是任何基于增益的控制架构都可以工作。PID控制器有3个可调增益,Kp、Ki和Kd,假设我们已经为给定马赫数开发了一组增益。也许更低的马赫数,比如0.3左右。
假设这些是我们得到的收益。在这一点上,我们已经确定,当飞机加速到更高的马赫数时,这些增益不再足以满足我们想要的性能,我们重新调整PID,以适应新的操作条件。现在我们又有了一些收获。
我们有两组独立的增益,所以直观地测量飞机的实时速度是有意义的,当飞机飞行缓慢时选择一组增益,当它飞行快速时选择另一组增益。这是一个非常简单的增益计划。我们根据调度变量选择增益,在我们的例子中是马赫数。
一旦我们选择了我们想要的增益,我们需要能够使用这些新增的增益更新控制器。这就是从PID控制器的顶部进入的箭头旨在表示。在Simuli金宝appnk中,有许多控制器块允许您为此原因定义作为外部输入的增益。如果您想查看它,我在下面的描述中留下了更多信息,请在下面查看并练习开发自己的增益计划程序。
到目前为止,我们只有一个调度变量,马赫数。但是现在让我们看看操作包线,或者飞机可以在上面飞行的测距仪,它有两个计划变量:马赫数和动态压力,我们的增益计划图应该是这样的——分成两半,仍然有两个不同的增益集。然而,我们可能会发现,are增益在整个动态压力范围内都不起作用,我们还希望基于此变量添加一个新的计划。现在我们有四个增益集,每个增益集由PID控制器的三个增益组成。通过这种方法,我们可以划分工作包线,并分别克服每种情况,在增益集之间随着马赫数和动态压力的变化而跳跃。我们可以添加第三个调度变量CG location,并制作三维地图。第四维是攻角,依此类推。您可以看到变量矩阵的增长速度,这是增益调度的一个缩进。您希望划分足够多的操作包线,以在任何地方都获得良好的性能,但不要太多,以至于前面有一个巨大的调优任务。
真正大的增益矩阵的另一个缺点是您必须存储它们,然后有效地搜索它们中的控制器值.B,因此有一些希望将它们保持尽可能小。
在侧面注意:这个图形是术语角色案例的良好演示。当您在其极端运行的多个条件时,以图形方式在信封的拐角处。通常,这些角落案例是您设计中的异常值,因为您必须考虑两个或多个极端条件。因此,当您调整控制器时,您可能会发现它在操作信封中间相对容易且快速,而您则在花费更多的时间和精力,从而使角落案件工作。
现在我们已经解释了什么是增益调度,让我们来谈谈如何实现它。总的来说,有四个步骤,前两个步骤,我想你现在可能已经猜到了:
第一步,在每个设计运行条件下线性化工厂。基本上,我们想要开发一个线性控制器,我们需要确保我们有一个线性植物。让我们回顾一下我们的简单计划,它只有两个增益集:一个用于高马赫数,一个用于低马赫数。在本例中,您将选择两个操作点,每个区域一个。你会想要找到一个点来平均整个区域的植物变化,这样当你调整控制器时,它仍然有最好的机会在整个区域产生足够的性能。之后,如果您发现有一个区域的性能不是很好,那么您可以将其从一个新的区域中剥离出来,并设置相应的增益集。
这里重要的部分是,至少您涵盖了关键操作点。这可能是系统的稳态操作点,也可能是模型的结构或稳定性发生变化的地方。了解你的系统将帮助你确定这些临界点在哪里。
对于像我们这样的LPV系统,你已经有了一个线性模型。然后,对于这一步,您只需要选择设计点并找到相关参数。
现在我们有了线性模型,第二步是为每个模型调整控制器增益。基本上,我们不是将其扩展为一个单一的设计问题,而是将其扩展为设计操作点所包含的许多设计问题。在我们的例子中,我们使用一个PID控制器,所以我们会像调整其他PID控制器一样调整每个PID控制器。有许多不同的较小的控制问题的好处是,每个设计点的需求不必相同。您可能因为可行性考虑而选择不同的需求,也可能只是因为您希望行为有所不同。
这里值得一提的是,通过这种方法,我们只能保证性能,在相同的情况下稳定,在设计点。我会在一系列中向您展示我们要么在整个区域上使用单一的增长,或者我们正在插入点之间的收益。无论哪种方式,我们都只是在少数斑点上调整,并且期望性能适用于整个包围。因此,您可以通过增加设计边距或其他一些技术来设置控制器要求时考虑到这一点,以使控制器更加强大,以便它拥有最佳机会与经营包围的大面积工作。您将在第四步中评估性能,因此您应该能够捕获任何异常值并更改收益以工作或将其分成两个较小的区域。
在这一点上,我们有一些设计操作点和它们相关的增益集,所以有趣的部分开始了。第三步是实现一个基于调度变量在这些增益集之间切换的体系结构。这里一个非常简单的方法是实现一个简单的开关。如果调度变量小于某个值,则使用增益集A,如果该值大于或等于该值,则使用增益集B。这是一个很有吸引力的体系结构,因为考虑和实施起来非常简单,但是,当开关发生时,它会产生一些非预期的瞬态。
要了解这是如何发生的,请想象以下情况。我们可以用比例控制器代替PID控制器,这样就只有一个增益值。我们的增益计划中有两个设计点,当马赫数大于或等于0.5时增益为3,当马赫数小于0.5时增益为2。最初,飞机处于零度俯仰,我们命令自动驾驶仪俯仰10度。飞机以0.6马赫的速度飞行,当飞机开始向上俯仰时,它相应地使用了3的增益。随着飞机继续向上俯仰,速度开始下降。在马赫数0.5时,我们会说俯仰误差是5度,我们还没有到10度,所以控制器的输出是15,因为有3的增益。在下一时间步,马赫数为0.499,增益设置立即切换为2。在这段时间内,误差变化不大,因此仍在5度左右,因此控制器的输出下降到10度。这将导致电梯快速移动,飞机将在该点快速改变其俯仰,惊吓乘客并溅出饮料。不是一个伟大的设计。
解决这个问题的一种方法是实现一个瞬态自由开关。这种类型的开关不会立即跳转控制器的输出,因为它会在两个增益集之间生成平滑过渡,例如,在某个指定的时间段内从3平滑过渡到2。这将消除这种突然的瞬态,但设置起来可能有点棘手。这是因为您需要设置足够长的过渡时间,以使瞬态平滑,但不要设置太长,以使增益过渡不够快。
另一种方法,也可以说是一种更好的消除瞬变的方法是把所有开关都去掉。而不是两个不同的增益集,我们可以开发一条从一个操作点平滑地改变到另一个操作点的曲线。对于我们的单个调度变量例子,这可能意味着在低马赫数设置为2时的增益,并且增益随着速度的增加而逐渐增加。这条曲线可以定义为一个方程,也可以定义为查找表中的一系列点,然后在这些点之间进行插值。但由于增益总是平稳地变化,并且随着调度变量的变化而迅速变化,因此不会有突然的瞬变。
如果您有两个调度变量,那么您将得到一个增益曲面,该曲面在每个指定的设计操作点之间插值。使用这种方法,您仍然可以拥有任意多的调度变量,它只是使描述增益的曲面具有更高的阶数。
您可能不了解这是一种很酷的是Matlab和Simulink中的系统系统系统和控制系统调谐器。金宝app使用这些工具,您可以选择设计工作点,将增益表面定义为多项式作为方程,并自动调谐多项式的增益。所以它需要很多腿为你锻炼。我留下了如何在下面的描述中执行此操作的示例。
无论选择的架构如何,第四步是关键:评估整个操作信封的控制性能 - 这通常是由于您需要运行的大量测试条件的模型和仿真。如果模拟它会更快。并且由于您无法保证远离设计操作点的性能,请选择您的测试条件(您模拟的是什么以及您没有的)非常重要。您需要确保所有临界转换和每个潜在的角落外壳都被覆盖。
尽管对于这种方法来说似乎是不必要的工作量,但增益调度经常在实际情况中使用,所以它值得你更详细地学习和实践。
如果你看这个视频只是为了学习一点增益调度的概念,那真是太棒了!但是,如果你想练习我刚刚介绍的内容,或者学习如何在MATLAB和Simulink中实现这些,请务必查看我在描述中链接的所有示例和教程。金宝app
如果你不想错过下一个科技演讲视频,别忘了订阅这个频道。此外,如果你想看看我的频道,控制系统讲座,我也涵盖了更多的控制理论主题。感谢收看,我们下期节目再见。
您还可以从以下列表中选择一个网站:
选择中国网站(中文或英文)以获得最佳网站性能。其他MathWorks国家站点没有针对您所在位置的访问进行优化。