从系列中:状态空间
布莱恩•道格拉斯
让我们介绍状态空间方程,现代控制选择的模型表示。本视频是MIMO控制系列的第一个视频,将提供一些关于如何思考状态变量的直觉,以及为什么这种表示如此强大。
对状态空间和状态变量有扎实的基础知识将帮助您学习建立在状态空间模型上的控制技术,如卡尔曼滤波、LQR控制、鲁棒控制和模型预测控制。
在这个视频中,我将介绍状态空间方程,现代控制的模型表示。然而,在我们开始之前,一个简短的警告:我们不会深入研究状态空间的数学。在这个视频之后你可能不会写出任意方程组的方程了。但我认为你们会对这些方程有一个很好的直观理解,这可以作为你们学习更多知识的基础。至少,这可能会让你解决一些挥之不去的问题。记住这些,让我们开始吧。我是Brian,欢迎来到MATLAB技术讲座。
我认为动态系统的一个有趣之处在于它们可以用常微分方程表示。这是因为它们有这样的性质,即系统在任何给定时间的变化是其当前状态的函数。
如果我们快速推导弹簧-质量系统,你可以看到我们最终得到一个微分方程。这里,变量p是位置,对时间的二阶导数是加速度。系统改变的方式——加速度——是当前状态、位置的函数。如果这个动态系统被初始化了一些能量它就会继续自己运动因为状态导数和状态本身之间的关系。我们可以通过拉伸弹簧来初始化这个系统。加速度改变速度,速度改变位置,然后改变加速度,它会来回振荡而不需要添加任何外部输入。由于在这个系统中没有阻尼,能量是守恒的,这个加速度-速度-位置的循环将永远持续下去。
对于任意的动态系统,如果我们通过分析其状态和导数之间的关系来观察能量是如何变化的,我们就可以断言系统的稳定性。能量会随着时间的推移而消散吗?那么系统是稳定的,能量耗散得越快,系统就越稳定。如果能量随时间无限增长,即使只是其中的一部分,那么整个系统是不稳定的。
稳定性是一个系统的固有属性,仅仅是由状态和它们的导数相互联系的方式决定的。然而,随着时间的推移,系统运动的方式也会受到外部能量的增加或减少的影响。所以动态系统的导数是当前状态和任何外部输入的函数。
而状态空间表示就是将高阶微分方程重新包装成一阶微分方程集中于这种关系。这种重新包装可以使系统更容易分析,因为我们可以看到互连系统的底层行为,以及外部输入(甚至是多个外部输入)如何影响系统,这非常强大。
还有很多控制技术是建立在状态空间模型上的,比如卡尔曼滤波、LQR控制、鲁棒控制和模型预测控制。当将系统模拟为状态空间模型时,也有数值求解的好处,因为您首先构建了导数向量,然后对整个向量进行积分以获得状态。所以,总而言之,它们非常棒,值得学习。
让我们花点时间来更详细地研究状态空间方程并试着理解它们。为此,我们将关注线性定常系统的连续形式。有两个方程。第一个是状态方程,我们已经对它有了一些直观的理解,第二个方程是输出方程,我马上就会讲到。
状态空间表示是围绕状态向量x建立的,这是所有状态变量的向量。状态向量如何变化,或者说状态向量的导数,是当前状态加上外部输入的线性组合。
这样,我们就不会像处理高阶微分方程或传递函数那样从头到尾地研究系统的整个动力学,而是关注每个状态变量的动力学以及这些变量之间的关系。
第一个状态作为所有状态和所有输入的函数是如何变化的?作为所有状态和输入的函数,第二个状态是如何变化的?等等。因为我们只考虑每个状态的一阶导数,我们最终得到一阶微分方程。
我们剩下的是一个线性方程组我们可以把它包装成矩阵形式。如果线性代数能做任何事情,它肯定能解线性方程组。
正是这种重新包装成矩阵的形式,让我们能够接触到很多以前没有的数学工具。
状态方程的矩阵形式有两个矩阵,A和b A矩阵描述了内部状态是如何相互联系的,这是系统的基本动力学;矩阵B描述输入如何进入系统——它们影响哪些状态?
现在让我们看一下输出方程。Y是系统输出的向量,或者说你感兴趣的部分。重要的是要认识到输出不一定是状态变量。C矩阵描述了如何组合状态以获得输出,D矩阵用于允许输入完全绕过系统并前馈到输出。
D矩阵实际应用的一个简单例子是一个简单乘法器的状态空间表示,一个增益块。输出等于输入乘以增益,所以在这种情况下,A, B和C矩阵都是0,因为没有导数,没有状态,D矩阵是增益的值。
当我们开始反馈输出来为我们的系统开发闭环控制器时,输出方程的重要性将变得显而易见。但是现在,理解这个方程的结构就足够了在下一个关于反馈控制的视频中,我们将更深入地研究输出方程和状态方程之间的关系。
你可能已经注意到了,状态变量是整个过程的关键。它们出现在三个地方,是我认为最难以概念化的部分。因此,了解它们是什么非常重要。状态变量是能完整描述系统的最小变量集。完全描述意味着我们对系统的变化部分或变量部分有足够的信息,我们可以预测系统未来的行为。
如果我们回到弹簧-质量系统在没有系统信息的情况下求出状态变量会更有意义。如果我这样画弹簧和质量,让你预测一秒钟内系统的位置,你需要什么信息?
你需要系统常数,比如弹簧常数和质量,我们想知道作用在质量上的外力是什么,所以输入,但这只告诉了你一部分因为你不知道你可以把系统可变部分的初始条件称为什么。如果物体当前在运动弹簧对物体的拉力有多大。如果我们知道这两个起始条件,以及系统常数和输入,那么我们就能预测一秒后质量的位置。
让我们考虑第一个问题,物体现在在运动吗?我们可以从质量的速度中知道速度是可变的,因为质量会来回振荡,假设系统中有一些能量。我们需要速度来预测未来的位置所以我们可以说它是一个状态变量;这是必须的。
现在让我们转向最初的弹簧力。力也是可变的,但让我们想想如何推导它。它是弹簧常数乘以弹簧拉伸的距离。所以如果我们有这个距离,或者质量相对于未拉伸的弹簧长度的位置,那么我们就能得到弹簧力。所以要完全描述这个系统我们需要的最小变量数是两个位置和速度。因为有两个,所以这是一个二阶方程组。
所以现在一个自然的问题可能是:为什么不增加更多的州?为什么不是三个?
为了回答这个问题,让我们考虑加速度。它是一个变量,因为它随着位置和速度变化。然而,我们不需要知道加速度来完整地描述系统;加速度是作用在物体上的力的结果,在这种情况下,力是物体位置的副产物。因此,我们通过位置得到加速度,将加速度添加到状态变量列表中是额外的信息。
一开始看起来很奇怪的是如果我们给这个系统加一个阻尼器,我们并没有增加这个系统的阶数,因为我们不需要任何额外的状态变量来解释这个额外的元素。来自阻尼器的力是由质量的速度决定的,同样,我们已经在状态变量表中有了。所以这两个系统都有相同数量的状态变量:两个。
一种验证您是否正确描述系统所需的状态数的方法是计算系统所拥有的能量存储设备。我不打算在这里讲太多细节,因为我认为里克·希尔博士在他的YouTube视频中做了很好的解释,我在下面的描述中链接了这个视频。但总的思想是这样的:动态系统以各种方式储存能量。在弹簧-质量系统中,有两个储能元件:弹簧,储存势能,质量,储存动能。
动态系统自身的移动和变化仅仅是因为系统内存在的能量在存储元素之间来回传输,最终通过热量消散,最终损失到环境中。在任何给定的时间,如果我们知道每个元素储存了多少能量,那么我们就知道了它的状态,并拥有了充分了解系统状态所需的信息。状态不代表能量。它们只是用来确定能量的。
对于弹簧-质量系统,我们从质量的速度知道质量的能量,我们从位置知道弹簧的能量,或者从弹簧被拉伸的距离。如果我们知道这些能量在系统中是如何连接的,或者换句话说,每个状态是如何根据系统的当前状态吸收和损失能量的,那么我们就完全理解了系统本身。
这就是状态空间表示法的作用。观察状态变量,即能量是如何储存的,并根据能量在状态之间的转移方式将它们组合起来,并加入外部来源的任何额外能量。
希尔教授描述了一些特别的警告,这就是为什么系统中能量存储元素的数量等于状态的数量。弹簧-质量-阻尼器仍然是二阶系统,因为阻尼器不储存能量;它只是消散了能量。
所以我们知道顺序是2,但为什么不是两种不同的状态呢?为什么是位置和速度?好吧,它们不一定是。这就是事情可能会有点令人困惑的地方。状态变量,位置和速度,可以看作是状态空间中的坐标系。经过五个单位的位置,上升三个单位的速度。状态空间中的这个点是系统的当前状态,状态向量描述了这个位置。
但是我们可以用任意两个线性无关的变量来描述状态空间中的这个位置。任意的状态1和状态2。我们会得到相同的系统状态,相同的总能量,只是坐标不同。
我们一直在用状态空间表示法重新定义状态变量。这就是我们所做的,例如,当我们对角A矩阵使它变成所谓的模态形式。这两个模型代表了完全相同的系统,我们只是为状态向量选择了不同的坐标系,不同的基。所以状态向量x是由位置和速度组成的,状态向量z是由两个模态组成的这些特殊的状态变化是它们自身的函数。也就是说,状态1不依赖于状态2的当前值,反之亦然。如果我们能用模态形式直接写出状态空间的表示,也许我们可以。对于状态变量来说位置和速度并没有什么特别的除了它们是直观的量。
然而,由于状态不再定义为位置和速度,如果我们想保持系统的输出为位置和速度,C矩阵也需要改变。通过这种方式,我们可以看到输出方程的好处。我们不需要精确地输出我们定义的状态,而是有能力将它们线性组合成我们感兴趣的变量。
好了,这节课就讲到这里。我希望这能帮助你们用稍微不同的方式思考状态空间方程。与其把它们看作是一组矩阵,把模型重新包装成任意一阶微分方程,我们可以把它们看作是分别写出每个状态变量的动力学。动力学与能量在系统内储存和转移的方式有关。通过这样做,我们能够理解这些内部状态是如何变化的以及彼此之间的关系,能量是如何移动的,我们可以使用线性代数中的强大工具来分析和求解这些方程。
MATLAB和Simu金宝applink是处理状态空间系统的很好的环境。您可以使用许多内置工具将传递函数转换为状态空间,操作矩阵,模拟它们,并设计和分析控制系统。在本系列的其余部分中,我将使用MATLAB演示带有状态空间方程的控制技术。如果你不熟悉在MATLAB中使用状态空间,或者你想快速复习一下,我在描述中链接了一些值得一看的视频。在本系列的下一个视频中,我将通过使用状态空间表示设计一个简单的反馈控制系统。
您也可以从以下列表中选择一个网站:
选择中国站点(中文或英文)以获得最佳站点性能。其他MathWorks国家站点没有针对您所在位置的访问进行优化。