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