从系列:国家空间
布莱恩•道格拉斯
让我们介绍状态空间方程,现代控制选择的模型表示。这个视频是关于MIMO控制系列的第一个视频,它将提供一些关于如何思考状态变量以及为什么这种表示是如此强大的直觉。
掌握状态空间和状态变量的基础知识将帮助您学习建立在状态空间模型上的控制技术,如卡尔曼滤波、LQR控制、鲁棒控制和模型预测控制。
在此视频中,我将引入状态空间方程,即现代控制的选择的模型表示。然而,在我们开始之前,快速警告:我们不会在国家空间的数学中深入。在此视频之后,您可能无法为任何任意系统写出方程。但我认为你会得到什么是对这些方程式的良好的直观理解,这可能是您可以在您了解更多内建立的基础。至少,它可能会清除您可能拥有的一些挥之不去的问题。所以请记住,让我们来吧。我是布莱恩,欢迎来到Matlab技术谈话。
我认为动态系统的有趣事情是它们可以由常微分方程表示。这是因为它们具有该属性,系统如何在任何给定的时间在任何时间变化是其当前状态的函数。
如果我们快速推导弹簧-质量系统,你会看到我们最终得到一个微分方程。这里,变量p是位置,对时间的二阶导数是加速度。系统变化的方式——加速度——是当前状态和位置的函数。如果这个动态系统初始化为一些能量它会继续自己运动因为状态的导数和状态本身之间的关系。想一下通过拉伸弹簧并放手来初始化这个系统。加速度改变速度,速度改变位置,位置改变加速度,它会前后摆动而不需要增加任何外部输入。因为在这个系统中没有阻尼,能量守恒,这个加速度-速度-位置循环将永远持续下去。
对于任何一个动态系统,如果我们通过分析它的状态和它们的导数之间的关系来观察能量是如何变化的,我们可以得出系统稳定性的结论。能量是否随时间消散?那么系统就稳定了,能量消耗得越快,系统就越稳定。如果能量随时间不受限制地增长,即使只是一部分,那么系统作为一个整体是不稳定的。
稳定性是一个系统的固有属性,仅仅从状态及其衍生物相互联系的方式来看。然而,随着时间的推移,系统的运动方式也会受到外部能量的增加或减少的影响。所以一个动态系统的导数是当前状态和任何外部输入的函数。
状态空间的表示只是将高阶微分方程重新包装成一组关注这个关系的一阶微分方程。这种重新包装可以使系统更容易分析,因为我们可以看到互联系统的潜在行为,以及系统如何受到外部输入的影响,甚至是多个外部输入,这是非常强大的。
还有很多控制技术,基于卡尔曼滤波,LQR控制,鲁棒控制和模型预测控制等状态空间模型,以命名为少数。当您首先构建衍生物的向量后,在模拟系统时,还存在数值解决方案优势,然后将传染媒体集成到衍生物的向量,然后整合整个向量以获得状态。所以,总而言之,他们非常令人敬畏,值得学习。
让我们花点时间更详细地查看状态空间方程,并试图对他们有点感。为此,我们将专注于线性,时不变系统的连续形式。有两个等式。第一个是我们已经开发了一点直觉的状态等式,第二方程式是输出方程,我将在一点中进入。
状态空间表示围绕状态向量x构建。这是所有状态变量的向量。状态矢量如何改变或状态向量的导数是当前状态加上外部输入的线性组合的线性组合。
这样,我们就不会像研究高阶微分方程或传递函数那样从头到尾地研究整个系统的动力学,而是关注每个状态变量的动力学以及这些变量之间的相互关系。
第一个状态如何改变为所有州和所有输入的函数?第二个状态如何变为所有状态和输入的函数?等等。并且由于我们只是看每个州的第一个衍生,我们最终得到一组一阶微分方程。
我们剩下的是一个线性方程组我们可以把它打包成矩阵形式。如果线性代数适用于任何事情,它肯定是解线性方程组。
正是这种重新包装成矩阵的形式让我们能够使用很多以前没有的数学工具。
状态等式的矩阵形式具有两个矩阵,A和B.矩阵描述了内部状态如何彼此连接,系统的基础动态;B矩阵描述了输入如何进入系统 - 它们影响哪些状态?
现在我们来看看输出方程。Y是系统输出的向量,或者说是你们感兴趣的部分。重要的是要意识到输出不一定是状态变量。C矩阵描述了如何将状态组合起来得到输出,而D矩阵用于允许输入完全绕过系统并前馈到输出。
和动作中的D矩阵的实际简单示例将是一个简单乘法器,增益块的状态空间表示。输出等于增益的输入次数,因此通过这种方式,A,B和C矩阵均为0,因为没有衍生物,并且没有状态并且D矩阵是增益的值。
当我们开始反馈输出来开发闭环系统控制器时,输出方程的重要性将变得明显。但是现在,理解这个方程的结构就足够了在下一个关于反馈控制的视频中,我们会更深入地讨论输出和状态方程之间的关系。
正如您可能已经注意到的那样,状态变量是整个事情的关键。他们出现在三个地方,是这个代表的一部分,我认为最难概念化。因此,了解他们的是真的很重要。状态变量是完全描述系统的最小变量集。完全描述的意味着我们有足够的信息有关系统的变化部分或可变部分的信息,我们可以预测系统的未来行为。
如果我们返回春季大众系统并阐明状态变量是通过从无信息开始的信息,这将更为有意义。如果我绘制了这样的春天和群众,并要求您预测系统在其中一秒钟,您需要哪些信息?
Well, you’ll want the system constants like the spring constant and mass, and we’d want to know what the external force is that’s acting on the mass, so the inputs, but this only tells you part of the story because you don’t know what you might call the initial conditions for the variable parts of the system. If the mass is currently moving and how hard is the spring currently pulling on the mass. If we knew those two starting conditions, along with the system constants and inputs, then we’d be able to predict where the mass would be after one second.
让我们考虑第一个问题:物体现在在运动吗?我们可以从质量的速度知道速度是可变的因为质量会来回摆动,假设系统中有一些能量。我们需要速度来预测未来的位置所以我们可以说它是一个状态变量;这是必须的。
现在我们来看看最初的弹力。力也是可变的,但我们想想怎么推导它。它是弹簧常数乘以弹簧拉伸的距离。所以如果我们有这个距离,或者质量相对于弹簧未拉伸长度的位置,那么我们就能得到弹簧力。所以我们需要充分描述这个系统的最小变量是两个位置和速度。因为有两个,所以这是一个二阶系统。
所以现在一个很自然的问题可能是:为什么没有更多的国家?为什么不三呢?
要回答这个问题,让我们考虑加速。这是一个变量,因为它与位置和速度发生变化。但是,我们不需要知道加速以完全描述系统;加速是作用在质量上的力的结果,并且在这种情况下的力是质量位置的副产物。因此,我们通过位置加速并将加速添加到状态变量列表中是额外的信息。
首先可能看起来很奇怪的是,如果我们在这个系统中添加阻尼器,我们不会增加这个系统的顺序,因为我们不需要任何其他状态变量来解释此附加元素。来自阻尼器的力由质量的速度决定,我们在我们的状态变量列表中再次进行了。所以这两个系统都具有相同数量的状态变量:两个。
验证描述系统所需的状态数是否正确的方法是计算系统拥有的能量存储设备。我不打算在这里讲太多细节,因为我认为Rick Hill博士在他的YouTube视频中做了很好的解释,我在下方链接了这个视频。但一般的想法是这样的:一个动态系统以各种方式储存能量。在我们的弹簧质量系统中,有两个储能元素:弹簧,储存势能,和质量,储存动能。
动态系统自身移动和变化的原因很简单,因为存在于系统内部的能量在存储单元之间来回传递,最终通过热量消散,热量最终丢失到环境中。在任何给定的时间,如果我们知道每个元素中储存了多少能量,那么我们就知道了它的状态,就有了充分理解系统状态所需的信息。状态并不代表能量。它们只是用来确定能量。
对于春细系统,我们从质量速度中知道质量的能量,我们从位置的弹簧中知道能量,或者从弹簧拉伸多远。如果我们知道这些能量如何在系统内连接 - 或者另一种放置它的方法,每个状态如何吸收和失去能量的基于系统的当前状态 - 然后我们完全理解系统本身。
这基本上是州空间代表对我们所做的事情。看待状态变量 - 能量如何存储 - 根据能量在状态之间传输能量,并从外部来源添加任何额外的能量。
希尔教授描述了一些特殊的警告,这就是为什么系统中储能元素的数量等于状态的数量。所以弹簧-质量-阻尼器仍然是一个二阶系统,因为阻尼器不存储能量;它只是消散它。
所以我们知道订单必须是两个,但为什么不两个不同的州?为什么要点和速度?好吧,他们不必是。这是事情会有点令人困惑的地方。状态变量,位置和速度可以被认为是状态空间内的坐标系。超过五个位置单位和三个速度单位。状态空间中的这一点是系统的当前状态,并且状态向量描述该位置。
但我们可以用任何两个线性独立变量描述状态空间中的这个位置。一些任意状态1和状态2.我们最终会以相同的系统状态,相同的总能量,仅用不同的坐标。
我们总是用状态空间表示来重新定义状态变量。这就是我们所做的,例如,当我们对角化A矩阵使它变成所谓的模态形式。这两个模型代表了完全相同的系统,我们只是选择了不同的坐标系,不同的基底,来表示状态向量。状态向量x由位置和速度组成,状态向量z由两个模态组成这些特定的状态是它们自己的函数。也就是说,状态1不依赖于状态2的当前值,反之亦然。如果我们能把状态空间的表示直接写成模态形式,也许我们可以。对于状态变量来说,位置和速度没有什么特别的,除了它们是直观意义上的量。
但是,由于状态不再被定义为位置和速度,因此如果我们希望将系统的输出保持为位置和速度,则需要改变C矩阵。通过这种方式,我们可以看到输出方程的好处。我们并未被迫完全按照我们定义它们的情况来输出各州,而是有能力将它们与我们感兴趣的变量线性结合起来。
好的,这就是我现在要离开这个视频的地方。我希望这有助于您以略微不同的方式思考状态空间方程。而不是认为它们作为一组矩阵,该矩阵将模型重新打造成任意一阶微分方程,而是可以将它们视为单独写出每个状态变量的动态。动态与如何在系统内存储和传输的能量相关联。通过这样做,我们得到能够了解这些内部状态如何变化和相互关系的好处,能量如何移动,我们可以使用线性代数中的强大工具来分析和解决方程。
MATLAB和Simu万博1manbetxlink是处理状态空间系统的理想环境。您可以将传递函数转换为状态空间,操纵矩阵,模拟它们,并使用许多内置工具设计和分析控制系统。在接下来的系列中,我将使用MATLAB来演示状态空间方程的控制技术。如果你不熟悉在MATLAB中使用状态空间,或者你正在寻找一个快速复习,我在描述中链接了一些视频,值得一看。在本系列的下一个视频中,我将使用状态空间表示来设计一个简单的反馈控制系统。
您还可以从以下列表中选择一个网站:
选择中国网站(中文或英文)以获得最佳网站性能。其他MathWorks国家站点没有针对您所在位置的访问进行优化。