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