![计算机仿真技术与CAD](https://wfqqreader-1252317822.image.myqcloud.com/cover/64/680064/b_680064.jpg)
第2章 控制系统的数学模型及其转换
控制系统计算机仿真是建立在控制系统数学模型基础之上的一门技术。对系统进行仿真,首先应该知道系统的数学模型,然后才可以在此基础上设计一个合适的控制器,使得原系统的响应达到预期的效果。本章将着重介绍常见的控制系统数学模型、系统数学模型间的相互转换及其MATLAB的实现。
2.1 线性系统数学模型的基本描述方法
根据系统数学描述方法的不同,系统可建立不同形式的数学模型。
1.传递函数
单输入单输出系统可以用高阶微分方程来表示,其一般形式为
![](https://epubservercos.yuewen.com/EEEACA/3590441704674701/epubprivate/OEBPS/Images/figure_0084_0001.jpg?sign=1739587436-v0S8sFbrJk4NKR3cjp9ybEbjkxr1DAEy-0-f4376f30b823ec8691e173e948043447)
对此系统的微分方程做拉普拉斯变换,则在初始条件为零时,可得单输入单输出系统的传递函数为
![](https://epubservercos.yuewen.com/EEEACA/3590441704674701/epubprivate/OEBPS/Images/figure_0084_0002.jpg?sign=1739587436-ef56CRgTeUhxG2Hq4N1iH3Wm7TKbPdb5-0-5624cd23e871ffa2e7ed5f617aa59edf)
传递函数在MATLAB下可以方便地由其分子和分母多项式系数所构成的两个向量唯一确定出来,即
num=[b0 b1… bm];den=[1 a1 a2… an]
可见,在这样的表示方法下,分子和分母向量的内容分别是传递函数的分子和分母系数的降幂排列。
【例2-1】 若给定系统的传递函数为
![](https://epubservercos.yuewen.com/EEEACA/3590441704674701/epubprivate/OEBPS/Images/figure_0084_0003.jpg?sign=1739587436-JENsfchspQ0lVjFRLCuzfg92pgewUgYt-0-35f56f208cae23b1e58052943d958ed3)
解 MATLAB命令及其执行结果如下:
![](https://epubservercos.yuewen.com/EEEACA/3590441704674701/epubprivate/OEBPS/Images/figure_0084_0004.jpg?sign=1739587436-e3rXQMOVYMjZFDGkBGvjr9M4vxdAXcta-0-36a3bea8d1b5f6d85d5812dec7aed5f7)
当传递函数的分子或分母由若干个多项式的乘积表示时,它可由MATLAB提供的多项式乘法运算函数conv()来处理,以获得分子和分母多项式向量。此函数的调用格式为
p=conv(p1,p2)
其中,p1和p2分别为由两个多项式系数构成的向量;而p为p1和p2多项式的乘积多项式系
数向量。conv()函数的调用是允许多级嵌套的。
【例2-2】 若给定系统的传递函数为
![](https://epubservercos.yuewen.com/EEEACA/3590441704674701/epubprivate/OEBPS/Images/figure_0085_0001.jpg?sign=1739587436-m1e8bPZ8P4LEvRltpe9QR4anzioZdXCJ-0-f45bee32a7ca69741b82aafda839dd0a)
解 MATLAB命令及其执行结果如下:
![](https://epubservercos.yuewen.com/EEEACA/3590441704674701/epubprivate/OEBPS/Images/figure_0085_0002.jpg?sign=1739587436-ZIiylLzsPu4UJjibKNqWuZufjyXQIRXX-0-49ca0ca7f7cbb16d079dab3687731fb0)
相应地,离散时间系统的动态模型一般是以差分方程来描述的。假设在采样k时刻系统的输入信号为u(kT),且输出信号为y(kT),其中 T为采样周期,则此系统相应的差分方程可以写成
![](https://epubservercos.yuewen.com/EEEACA/3590441704674701/epubprivate/OEBPS/Images/figure_0085_0003.jpg?sign=1739587436-bfme1J6XjYT7KPdgTUnfubYdaFos20BZ-0-bb25d58aa5a0a2444da3c3851c26a5d4)
对上述差分方程进行z变换,在初始条件为零时,可得系统的脉冲传递函数为
![](https://epubservercos.yuewen.com/EEEACA/3590441704674701/epubprivate/OEBPS/Images/figure_0085_0004.jpg?sign=1739587436-WELLpA7mQhCqeyzGudEYmmsyZtBUEoXG-0-14711f4896047a1f6dcee1cbcde566d6)
这种系统在MATLAB下也可以由其分子和分母系数构成的两个向量来唯一确定,即
num=[h0 h1 h2… hm];den=[1 g1 g2… gn]
对具有r个输入和m个输出的多变量系统,可把m ×r的传递函数矩阵G(s)写成和单变量系统传递函数相类似的形式,即
![](https://epubservercos.yuewen.com/EEEACA/3590441704674701/epubprivate/OEBPS/Images/figure_0085_0005.jpg?sign=1739587436-QwE3LZJqGXRk1EAgaKIj6j5rCmimaZ1E-0-1f298a1bdc886d2469c668bcfb2ca354)
式中,B0,B1,…,Bn均为m ×r实常数矩阵,分母多项式为该传递函数矩阵的特征多项式。
在MATLAB控制系统工具箱中,提供了表示单输入多输出系统的表示方法,即
num=[B0 B1… Bn];den=[1 a1 a2… an]
其中,分子系数包含在矩阵num中,num行数与输出的维数一致,每行对应一个输出,den是行向量,为传递函数矩阵的公分母多项式的系数。
因此,系统的传递函数矩阵在MATLAB命令下也可以用两个系数向量来唯一确定。
【例2-3】 对于单输入多输出系统
![](https://epubservercos.yuewen.com/EEEACA/3590441704674701/epubprivate/OEBPS/Images/figure_0085_0006.jpg?sign=1739587436-JTNswMzzzQ9SLmaGvEwgSiZKysz0fzJs-0-6deb81c911d50673c40e94dd60b0c3c6)
解 在MATLAB命令窗口中,可将其用下列MATLAB命令表示
>>num=[0,0,3,2;1,0,2,5];den=[3,5,2,1];printsys(num,den)
执行后结果显示:
![](https://epubservercos.yuewen.com/EEEACA/3590441704674701/epubprivate/OEBPS/Images/figure_0085_0007.jpg?sign=1739587436-co1plr3o7L3w9u2C4zLVYKceBDgAM6Hk-0-4c9f2c9d1600d8a3308ad18e94cdea71)
2.零极点增益形式
单输入单输出系统的零极点模型可表示为
![](https://epubservercos.yuewen.com/EEEACA/3590441704674701/epubprivate/OEBPS/Images/figure_0086_0001.jpg?sign=1739587436-ewgbK6nPJthz38soTTofkmKVluFWsUj6-0-60ff04f4a1b3eddce0d1bd9e0e5c55ff)
式中,zj(j=1,2,…,m)和pi(i=1,2,…,n)称为系统的零点和极点,它们既可以为实数又可以为复数,而K称为系统的增益。
在MATLAB下,零极点模型可以由增益K和零极点所构成的列向量唯一确定出来。即
Z=[z1;z2;…;zm];P=[p1;p2;…;pn];K=K
零极点模型实际上是传递函数模型的另一种表现形式,其原理是分别对原系统传递函数的分子和分母进行分解因式处理,以获得系统的零极点表示形式。系统的增益K即为原传递函数分子的最高项系数与分母最高项系数的比值。
系统的零极点模型可以被直接用来判断系统的稳定性。如果系统的所有极点都位于左半s平面,即Re{pi} <0,i=1,2,3,…,n,则称该系统是稳定的,否则称系统是不稳定的。如果稳定系统所有的零点都位于左半s平面,即Re{zj} <0,j=1,2,…,m,则称该系统为最小相位系统,否则称为非最小相位系统。如果系统的某个零点的值恰好等于其中一个极点的值,则它们之间可以对消,直接获得一个完全等效的低阶系统。
对于式(2-4)所表示的脉冲传递函数来说,也可用类似的方法直接获得其零极点表示的模型。这时若系统的全部极点都位于单位圆内,即 |pi|<1,i=1,2,…,n,则称该系统为稳定系统,否则称为不稳定系统。同样若稳定系统的全部零点均位于单位圆内,则称系统为最小相位系统。
对于单输入多输出系统,列向量P中储存系统的极点;零点储存在矩阵Z中,Z的列数等于输出向量的维数,每列对应一个输出,对应增益则在列向量K中。
因此,系统的零极点模型在MATLAB命令下可用一个增益向量、零点向量和极点向量来唯一确定。
【例2-4】 已知单输入双输出系统的零极点模型
![](https://epubservercos.yuewen.com/EEEACA/3590441704674701/epubprivate/OEBPS/Images/figure_0086_0002.jpg?sign=1739587436-mlIclmJrYEHNE5Zqk35A12lsXvzsNbnT-0-bc8b721432168039aaa5ffefb34bb270)
解 在MATLAB命令窗口中,可将其用下列MATLAB语句表示
>>K=[3;4],Z=[ -12 -1;inf -2],P=[ -3;-4;-5]
在此多输出系统中,第一分子比第二分子的阶次低,因此,要使用inf来将第一分子在无穷远处拓展一个零点,使之与第二分子阶次相同。
MATLAB工具箱中的函数poly()和roots()可用来实现多项式和零极点间的转换。例如,在MATLAB命令窗口中进行如下操作可实现互相转换。
>>P=[1 3 5 2];R=roots(P),P1=poly(R)
结果显示:
![](https://epubservercos.yuewen.com/EEEACA/3590441704674701/epubprivate/OEBPS/Images/figure_0087_0001.jpg?sign=1739587436-uV4a6IuDkj8gWLJIwd5mctEaDAMfA9QL-0-9638fbc1201b87913ed88ba5afcf8594)
对于离散系统,零极点增益模型为
![](https://epubservercos.yuewen.com/EEEACA/3590441704674701/epubprivate/OEBPS/Images/figure_0087_0002.jpg?sign=1739587436-pYBXrfWkdKV9v6bXSgvN3siuibUnF733-0-f5ed004760867215232f92d481d7c399)
可记为
Z=[z1;z2;…;zn],P=[p1;p2;…;pn],K=K
3.部分分式形式
传递函数也可表示成部分分式或留数形式,即
![](https://epubservercos.yuewen.com/EEEACA/3590441704674701/epubprivate/OEBPS/Images/figure_0087_0003.jpg?sign=1739587436-Tl6UGBgR1fkyVMJdwR3GI7h0bxpsAxaT-0-03076f23947d137a2c73130680795210)
式中,pi(i =1,2,…,n)为该系统的 n 个极点,与零极点形式的 n 个极点是一致的;ri(i=1,2,…,n)是对应各极点的留数;h(s)则表示传递函数分子多项式除以分母多项式的余式。若分子多项式的阶次与分母多项式的相等,h(s)为标量;若分子多项式阶次小于分母多项式,该项不存在。
在MATLAB下它也可由系统的极点、留数和余式系数所构成的向量唯一确定,即
P=[p1;p2;…;pn];R=[r1;r2;…;rn];H=[h0;h1;…;h(m-n)]
因此,系统的部分分式模型在MATLAB命令下可用一个极点向量、留数向量和余式系数向量来唯一确定。
4.状态空间表达式
状态空间表达式是描述控制系统的一种常用的方式。对多输入多输出(MIMO)系统而言,状态空间表达式是唯一方便的模型描述方法。由于它是基于系统的不可见的状态变量,所以又称为系统的内部模型。传递函数和微分方程都只描述了系统输入与输出之间的关系,而没有描述系统内部的情况,所以这些模型称为外部模型。从仿真的角度来看,为在计算机上对系统的数学模型进行试验,就要在计算机上复现(实现)这个系统,有时,仅仅复现输入量及输出量是不够的,还必须复现系统的内部变量——状态变量。
设线性定常连续系统的状态空间表达式为
![](https://epubservercos.yuewen.com/EEEACA/3590441704674701/epubprivate/OEBPS/Images/figure_0087_0004.jpg?sign=1739587436-ZrDRspunM66xwgYRZOihFL8NavpRB8cg-0-c572c42419ecbfbd3c826af7c31b878a)
式中,A:n ×n;B:n ×r;C:m ×n;D:m ×r
如果传递函数(阵)各元素为严格真有理分式,则D=0,此时上式可写为
![](https://epubservercos.yuewen.com/EEEACA/3590441704674701/epubprivate/OEBPS/Images/figure_0087_0005.jpg?sign=1739587436-Nh0FKp4UkycPWDfDc6Wbg1jQnZivzBo7-0-1f68cfc93941f03929665ac5be88dc99)
它们可分别简记为∑(A,B,C,D)和∑(A,B,C)
因此,系统的状态方程在MATLAB下可以用一个矩阵组∑(A,B,C,D)或∑(A,B,C)来唯一确定。
【例2-5】 设系统的状态空间表达式为
![](https://epubservercos.yuewen.com/EEEACA/3590441704674701/epubprivate/OEBPS/Images/figure_0088_0001.jpg?sign=1739587436-hiZyEW2xm4J76Ea8y1p29nlXBmAjBN5U-0-588adefc9ff35b25796d95b5dc46cd60)
解 此系统在MATLAB命令窗口中,可由下面的MATLAB命令唯一地表示出来
>>A=[0 0 1;-3/2 -2 -1/2;-3 0 -4] >>B=[1 1;-1 -1;-1 -3],C=[1 0 0;0 1 0],D=zeros(2,2)
对于离散系统,状态空间表达式可表示为
![](https://epubservercos.yuewen.com/EEEACA/3590441704674701/epubprivate/OEBPS/Images/figure_0088_0002.jpg?sign=1739587436-k9xXGLHiIct7Nk8UzgoR9zueQC3OCko0-0-b268a181b674eb1f561520d553d4574e)
或
![](https://epubservercos.yuewen.com/EEEACA/3590441704674701/epubprivate/OEBPS/Images/figure_0088_0003.jpg?sign=1739587436-JdSx1Ml7vjU1BbK2e6sND67HgVzx4lZd-0-f3fa2c3143e7519338daf46504acfb4c)
它们分别简记为∑(G,H,C,D)或∑(G,H,C)