之前已经简单了解过状态空间方程的离散化方法,对于二阶等效电路模型来讲,由于其本身各个方程之间不是耦合的,所以离散化计算过程并不是十分复杂,很容易就可以得到其状态空间方程的离散形式。
但是对于某些状态空间方程,比如圆柱电池的二状态热模型,由于方程本身是耦合的,所以无法直接通过公式推导就得到其离散化形式,这时就需要求助于matlab。
对于这样一个连续方程:
$$ \dfrac{dx}{dt}=Ax+Bu $$
通过[G,H]=c2d(F,G,ts);
,便可以将其转化为离散形式,其中时间步长为ts:
$$ x_{k+1}=Gx_{k}+Hu_{k} $$
G和H为A、B指定时间步长的离散化结果。
c2d函数过程实际上为之前“电池模型的状态空间方程”一文中介绍的状态空间方程的直接离散化方法,其具体的使用介绍参考Mathworks文档。具体格式如下:
1 | sysd = c2d(sys,Ts) |
其中method缺省值是零阶保持器。除了零阶保持器,还有一阶保持器、Tustin等等方法可以选择。但是对于Tustin尚存在一些疑问,因为这种近似方法涉及$x_{k+1}$的值。是不是如果我们并不关注状态值本身的话,只关心输出值,可以将状态方程和输出方程一起使用Tustin这种method离散化。而如果我们关注的是状态值$x_{k+1}$本身,而不是输出值$y_{k}$的话,那就只能使用零阶保持器。(疑问)
举个例子
$$ x’=\begin{bmatrix}
2 & -1 & -1 \\
0 & -1 & 0 \\
0 & 2 & 1
\end{bmatrix}x+\begin{bmatrix}
7 \\
2 \\
3
\end{bmatrix}u$$
$$ y=\begin{bmatrix} 1&2&4\end{bmatrix}x $$
将该连续方程离散化:
1 | >> A=[2 -1 -1; 0 -1 0;0 2 1]; |
当然离散系统与其对应的连续系统是存在误差的,时间步长ts越大,误差越大。如果时间步长取得过长,则需要检验一下离散化误差是否再接受范围内。
更多关于离散设计的内容。以后慢慢看。