现代控制理论 概念梳理
前言
现代控制理论可以用于多输入多输出的系统求解,本篇博客只限于线性系统分析。
(只为梳理作用,若有错漏,欢迎邮件沟通)
状态变量与状态空间
对于一个系统来说,如果我们知道系统某一时刻的全部状态,那么我们只要知道系统在这之后的输入,以及这些状态的状态方程,输出方程,我们就可以知道系统这一时刻之后的所有输出。
但是这显然是没有必要的,因为系统中可能存在冗余变量,也就是说这些变量可以被其他变量表示。
我们将可以完全描述系统的一个最小变量组中的变量称为状态变量,状态变量所张成的向量空间称为状态空间。
(其实系统所有变量张成的向量空间和这里所说的状态空间维度相同,也就是系统的最小阶数)
根据我的理解,状态空间的维数=系统的最小阶数=系统的微分方程的最高微分阶数
状态方程与输出方程
状态变量的一阶导数与状态变量、输入量的关系式称为状态方程。
输出变量与状态变量、输入量的关系式称为输出方程。
我们将上面两个方程合称为状态空间表达式。
一般来说我们只考虑线性定常(系统特性不随时间改变)系统的话状态空间表达式如下所示:
值得注意的是,上述等式都是矩阵运算。
我们可以将其很形象的表示为结构关系图以及系统框图:
无论是通过微分方程还是通过传递函数求解状态空间表达式都是比较固定的流程。
如果输入不含微分项,那么只需要将输出的0到n-1阶导数当成状态变量就可以。
如果输入变量中包含微分项的话,我们只需要将单个输入变量的输出视为中间变量z,那么我们就可以通过对中间变量的z的线性组合(求导、乘系数…)得到总的输出。
状态方程求解与状态转移矩阵
前文说了给定状态方程以及初始状态以及输入就可以知道之后的输出,那么我们具体要如何求解呢?
我们只假设没有输出的情况,我们需要对下面的方程组求解(矩阵形式):
这是一个微分方程组,求解有点复杂,所以我们先通过拉式变换将它变成代数方程组:
之后通过矩阵运算,就可以得到拉式空间的闭合解:
之后进行逆变换就行,初始状态是常系数可以提到变换外面:
我们求得的初值前面的系数就是状态转移矩阵:
能控性与能观性
能控性很好理解,就是在一个有限的时间间隔内,我们能否通过控制输入让状态变量达到任意状态。在后面我们会讲到如果系统具有能控性,那么我们就可以利用极点配置改造系统
能观性则是比较绕。
我们首先有一个认识,就是如果给定了状态变量初值、输入、状态方程,那么之后所有的状态变脸的值我们都是可以求解的。
能观性的要求则是更加苛刻,但是也更实际。
在现实中我们不可能对状态变量进行很好的监控,因为这些状态变量大都在系统内部,不好观测是一方面,观测这个动作本身就会引入误差。
所以我们有这样的需求:通过观察一段时间的输入、输出,得到状态变量在时间段起点的值。
能控性和能观性都可以通过两个固定公式判断,这里我就不细究为什么公式成立了,只把公式列出:
当然还有另外的判据,但是我就不全列了。
全状态反馈与极点配置
反馈对于一个系统是很重要的,在模电课上了解现代电路设计基本都是通过反馈完成的。
所以作为一个分析系统的体系,不可能漏掉分析利用反馈的方法。
全状态反馈通过一张图就可以很清晰的解释:
(感觉上图中的右下角有些符号有点问题,不过问题不大,因为我们这里只考虑反馈对于状态变量的影响)
通过反馈,我们可以让系统呈现出我们想要的性质。(衰减、震荡…)
如果系统具有能控性,那么我们就可以通过反馈,让系统具有任意极点。(极点对应系统的性质,具体可以参考信号与系统)
在我看来,极点配置的最好的点在于它完全不用管系统本身是否难以更改,只是通过反馈信号就可以达到更改系统性质的目的。
状态观测器
前面提到了利用系统的状态变量进行反馈就可以让系统呈现出我们想要的特性。(前提是系统可控)
但是这里有个问题,反馈的状态变量我们要怎么获得呢?
就比如说我想设计一个冶金系统,反馈设置温度低了就升温,温度高了就降温。但是温度的状态变量如何获得?
对于这种难以获取的状态变量,我们就需要系统的能观性来发挥作用了。
系统的能观性使得我们可以通过系统的输入以及输出得到系统的状态变量。
具体来说我们通过模拟系统的状态空间方程、输入、初始状态就可以完全获得状态变量之后的值,就可以了。吗?
初始状态一般是难以得到的,所以我们的模拟不可能准确。
能不能不用初始状态但是准确模拟系统呢?
可以啊,只要系统是能观的。
如果系统是能观的,我们就可以通过一段时间的输入输出推断出初始值,就可以完全模拟了!
虽然理论上是这样保证的,实际上则是通过让模拟器的输出和真实的输出的差值作为反馈加到模拟器的输入实现的。
这样利用差值作为反馈的模拟器就叫做状态观测器。
等一等,所以为什么需要可观测性呢?没有可观测性不还是能够通过负反馈使得模拟器趋向真实的系统吗?
还真不行。
具体的分析就不写了,直观上说就是如果系统不具有可观测性,那么模拟器和真实系统的误差不会趋近于0。