来自系列:状态空间
布莱恩道格拉斯
这个视频提供了对极点放置的直观理解,也被称为全状态反馈。这是一种反馈每个状态以保证闭环稳定性的控制技术,也是其他方法(如LQR和H∞)的基石。
我们将涵盖控制法的结构,为什么将围绕系统的杆或特征值改变系统的动态。我们还将在Matlab中介绍一个例子,并触及一些有趣的比较对其他控制技术。
在此视频中,我们将讨论一种方法来开发用于使用状态空间方程表示的模型的反馈控制器。我们将使用称为极点放置或完整的状态反馈的方法来做到这一点。现在,我的经验是,杆子放置本身并不在行业中广泛使用;您可能会发现您使用的其他方法如LQR或H Infinity更常见。然而,极点放置值得花费一些时间,因为它会使您可以更好地理解使用状态空间方程的反馈控制的一般方法,并且它是一个踩到那些其他方法的踏脚石。所以我希望你坚持下去。我是布莱恩,欢迎来到Matlab技术谈话。
要开始关闭,我们有一个输入U和输出y的工厂。而且目标是开发一个反馈控制系统,将输出驱动到某个所需值。您可能熟悉这样做的方式是将输出与参考信号进行比较以获得控制错误。然后,您开发一个使用该错误术语的控制器,以将输入信号生成到工厂中,其目标是将错误驱动到零。这是您看到的反馈系统的结构,如果您正在开发,例如PID控制器。
但对于杆子放置,我们将以不同的方式接近这个问题。而不是汇回输出y,我们将在我们的状态向量中反馈每个状态变量的值x。我们将声称我们知道每个状态的值,即使它不一定是输出y的一部分。我们会在一点地实现这一点,但现在,假设我们可以访问所有这些值。然后,我们采取状态向量并将其乘以由一堆不同增益值组成的矩阵。从缩放的参考信号中减去结果,并且将该结果直接进入我们的工厂作为输入。
现在,您会注意到这里没有块在这里标记为“控制器”,就像我们在顶部块图中拥有。在此反馈结构中,整个部分是控制器。杆展示位置是一种方法,通过它可以计算适当的增益矩阵来保证系统稳定性,并且参考上的缩放术语用于确保稳态误差性能是可接受的。我将在此视频中涵盖这两个。
在上个视频中,我们介绍了状态方程x导= Ax + Bu。我们已经证明了线性系统的动力学在第一部分中得到了,Ax。第二部分是系统如何响应输入,但系统中的能量如何存储和移动是由Ax项捕获的。所以你可能会认为在控制器设计中A矩阵有一些特别之处。任何反馈控制器都必须修改A矩阵以改变系统的动力学。当涉及到稳定时,尤其如此。
矩阵的特征值是系统的极点,极点的位置决定了线性系统的稳定性。这是极点配置的关键:通过移动极点或闭环A矩阵的特征值来产生所需的闭环稳定性。
在我们继续之前,我想进一步扩展一下极点,特征值,和稳定性之间的关系,因为我认为这会帮助你们理解极点配置是如何工作的。
对于这个例子,我们从一个任意的系统开始关注它的动力学,A矩阵。我们可以把它写成非矩阵形式这样更容易看出状态导数和状态之间的关系。一般来说,每个州都可以作为其他州的函数而改变。这就是这里的情况;X·1是基于x2而X·2是基于x1和x2而变化的。这是完全可以接受的,但它使它很难想象特征值是如何对整体动力学做出贡献的。所以我们能做的就是把A矩阵转换成一个用不同的状态变量来描述系统的矩阵。
使用该变换矩阵完成该转换,该变换矩阵列是矩阵的特征向量。在转换之后,我们最终得到了一种修改的一个矩阵,该矩阵由沿着其他地方的对角线和零的复杂特征值组成。这两个模型代表相同的系统。它们具有相同的特征值,相同的动态;它只是使用一组状态变量来描述第二个,该状态变量彼此独立地改变。
用对角形式写出A矩阵,很容易看到我们剩下一组一阶微分方程每个状态的导数只受那个状态的影响,没有其他的。这是最酷的部分,微分方程的解是这样的形式Z =常数乘以e ^ t,其中是给定状态函数的特征值。
好的,让我们潜入这个方程一点。Zn显示了在某些初始条件,C.或另一种思考方式的时间内如何变化,如果您使用一些能量初始化状态,则该等式显示出在该节能随时间发生的情况。并且通过改变λa,您可以影响能量消耗的方式,或者在不稳定的系统的情况下,能量如何增长。
让我们看几个不同的值,所以你可以直观地看到能量是如何变化的,基于特征值在复平面内的位置。
如果Lambda是负实数,则该模式是稳定的,因为e将e升至负数,并且任何初始能量会随着时间的推移消失。如果它是积极的,那么这是不稳定的,因为能量随着时间的推移而生长。如果有一对假想的特征值,则模式中的能量将振荡,因为E ^虚数会产生SINE和余弦。特征值中的真实和虚数的任何组合都会产生振荡和指数能量耗散的组合。
我知道这非常快,但希望它足够有意义现在我们可以表述我们想要解的问题。如果我们的植物的特征值在复平面的不希望的位置,那么我们可以使用极点放置将它们移到其他地方。当然,如果它们在右半平面,这是不可取的,因为它们是不稳定的,但不可取也可能意味着有一些振荡,你想要摆脱,或者可能只是加速或减缓特定模式的能量耗散。
在我们身后,我们现在可以进入杆子放置如何移动特征值。记住我们在开始时画的控制器的结构吗?这导致输入u = r * kr - k * x。其中R KR是缩放参考,我们再次进入其中。KX是我们喂回的状态矢量乘以增益矩阵。
这是魔法发生的地方。如果我们将此控件插入我们的状态方程,我们正在关闭循环,我们得到以下状态等式:请注意,在状态向量上行动A和-BK,以便我们可以将它们组合以进行修改以修改矩阵。
这是一个闭环矩阵,我们有能力通过选择一个合适的k来移动特征值,对于简单的系统,这很容易用手来做。让我们以一个只有一个输入的二阶系统为例。我们可以通过将A - I的行列式设为0来找到特征值然后解出。它们分别是-2和+1。其中一个模态会爆炸到无穷大因为存在正的实本征值所以系统是不稳定的。让我们使用极点放置来设计一个反馈控制器,通过将不稳定极点移动到左半平面来稳定这个系统。
闭环矩阵A是A - BK,增益矩阵k是1x2,因为有一个输出和两个状态。结果是- K1 1 - k2 2和-1。我们可以解出Acl的特征值就像我们之前做的那样我们得到这个特征方程它是两个增益值的函数。
我们想让闭环极点在-1和-2处。这样,特征方程就是L²+ 3L + 2 = 0。在这一点上,很容易找到合适的K1和K2使这两个方程相等。我们只要让系数相等,然后解出来。我们得到K1 = 2 K2 = 1,就是这样。如果我们把这两个增益放在这个系统的状态反馈路径中,它将用-1和-2的特征值稳定下来。
我认为,通过手动走过一个例子,让您了解杆子展示;但是,涉及的数学开始对具有超过两个状态的系统来压倒性。这个想法是一样的;刚解决决定蛋白变得不切实际。但是我们可以在Matlab中做出这一点,而且很多命令。
通过重新创建我们手工制作的相同系统,我将快速向您展示如何在Matlab中使用Place命令。我将定义四个矩阵,然后创建开环状态空间对象。我可以检查矩阵的开环的特征值只是为了向您展示,实际上存在导致该系统不稳定的正事实值。
这不好,所以我们把系统的特征值移到-2和-1。现在,利用极点放置来求解增益矩阵可以用place命令来完成。我们得到了2和1,和我们期望的一样。
现在,新的闭环A矩阵是A - BK,只是仔细检查,这就是ACL的样子,它确实在-1和-2处具有特征值。好的,我将创建闭环系统对象,现在我们可以比较两者的步骤响应。
开环系统的阶跃响应是不稳定的。闭环系统的阶跃响应看起来要好得多。然而,它并不完美。与我们预期的上升到1不同,稳态输出仅为0.5。这就是参考上的缩放。到目前为止,我们只关心稳定性,很少关注稳态性能。但即使是解决这个问题也相当简单。如果输入的响应只有你期望的一半,为什么我们不把输入翻倍呢?这就是我们所做的。不是翻倍,而是用稳态值的倒数来缩放输入。
在MATLAB中,我们可以通过反转系统的直流增益来执行此操作。您可以看到DC增益为0.5,因此逆为2.现在我们可以通过通过kr缩放输入来重建闭环系统。并检查阶跃响应。没有惊喜;其稳态值为1。
这就是基本的极点设置。我们反馈每个状态变量,并将它们乘以增益矩阵,以移动闭环特征值的方式,然后我们缩放参考信号,使稳态输出是我们想要的。
Of course, there’s more to pole placement than what I could cover in this 12-minute video, and I don’t want to drag this on too long, but I also don’t want to leave this video without addressing a few more interesting things for you to consider. So in the interest of time, let’s blast through these final thoughts lightning-round style. Are you ready? Let’s go!
极点的位置就像花式的根轨迹。对于根轨迹,你有一个增益,你可以调整它只能沿着轨迹线移动到极点。但是有了极点的位置,我们就有了一个增益矩阵,它使我们能够在复杂平面的任何地方移动极点,而不仅仅是沿着一维的线。
双状态极点配置控制器与PD控制器非常相似。对于PD,你反馈输出并在控制器内生成导数。在极点配置中,你将导数作为状态反馈,但结果本质上是相同的:2个增益,一个用于状态,一个用于其导数。
好的,我们可以移动特征值,但是我们应该把它们放在哪里呢?答案是一个更长的视频,但这里有一些事情需要思考。如果你有一个高阶系统,考虑保持两个极点比其他极点更接近虚轴,这样系统就会像一个普通的二阶系统。这些被称为主导极,因为它们较慢,并倾向于主导系统的响应。
记住,如果你试图将一堆特征值非常左移以得到一个超快的响应,你可能会发现你的驱动器没有速度或权威来产生必要的响应。这是因为它需要更多的增益,或更多的执行器的努力,以移动特征值更远的开环起点。
完全状态反馈有点用词不当。你可以反馈数学模型中的每个状态,但你不能,也不能,反馈真实系统中的每个状态。举个例子,在某种程度上,所有的机械硬件都是灵活的,这意味着额外的状态,但你可以选择忽略模型中的这些状态,并假设一个刚性系统开发反馈控制器。重要的是,你要将所有关键状态反馈给你的设计,这样你的控制器才能在真正的硬件上运行。
您必须有某种访问所有关键状态,以便送回它们。输出y可能包括每个状态,在这种情况下,您都设置了。但是,如果不是这种情况,您将需要向系统添加更多传感器以测量丢失状态或使用现有输出来估计或观察您未直接测量的状态。为了观察您的系统,需要可观察到,并且类似地,为了控制您的系统,它需要可控的系统。我们将讨论下一个视频中的这些概念。
所以这是现在的。我希望这些最后几个想法有助于您了解一下,了解杆位的意义以及如何成为整体控制架构的一部分。
如果您想要一些额外的信息,在描述中有一些链接值得查看,它们解释了使用MATLAB的极点放置的更多信息。
如果您不想错过下一个技术谈话视频,请不要忘记订阅此频道。此外,如果您想查看我的频道,控制系统讲座,我还涵盖了更多的控制理论主题。谢谢你的观点。下次我会见到你。
你也可以从以下列表中选择一个网站:
选择中国网站(中文或英文)以获得最佳网站性能。其他MathWorks国家站点没有针对您所在位置的访问进行优化。