3.机电系统的计算机辅助分析与设计 3.1机电系统的数学模型及其转换方法 机电系统计算机仿真与辅助设计是建立在机电系统数学模型基础之上的。对于各 类机电系统,利用仿真手段对其进行分析与设计,首先就需要建立相应的系统数学 模型,此后,就需要研究如何将系统的数学模型转变为适合于计算机进行分析计算 的仿真模型,即数值算法模型。在此基础上,即可通过对数学模型的求解分析,实 现对系统动静态特性的分析与设计。显然,进行上述工作的重要基础就是系统的数 学模型。因此本章首先介绍系统的几种典型数学描述,然后介绍各种数学模型之间 的相互转换,以及系统环节不同形式的相互连接的 MATLAB实现。 3.1.1连续系统的数学描述 连续系统的数学模型通常可以用微分方程、传递函数、状态空间表达式三种形 式对系统加以描述。下面将简单对这几类数学模型加以回顾,同时给出 MATLAB对 它们的表示方法 1.系统的微分方程形式模型 个系统的动态特性通常可用高阶微分方程加以描述,因此描述一个系统最常 用的数学 模型就是微分方程的形式。假设连续系统为单入单出(简称SISO)系统,其输入与 输出分别用u(t)、y(t)加以表示,则描述系统的高阶微分方程为: y +a1 dr"-l+a :+a (3-1) 其初始条件为:y(t)=y,j)=j,…,u)=l0,in)=i 如果引入微分算子P=,则(3-1)式可以写作:
52 3.机电系统的计算机辅助分析与设计 3.1 机电系统的数学模型及其转换方法 机电系统计算机仿真与辅助设计是建立在机电系统数学模型基础之上的。对于各 类机电系统,利用仿真手段对其进行分析与设计,首先就需要建立相应的系统数学 模型,此后,就需要研究如何将系统的数学模型转变为适合于计算机进行分析计算 的仿真模型,即数值算法模型。在此基础上,即可通过对数学模型的求解分析,实 现对系统动静态特性的分析与设计。显然,进行上述工作的重要基础就是系统的数 学模型。因此本章首先介绍系统的几种典型数学描述,然后介绍各种数学模型之间 的相互转换,以及系统环节不同形式的相互连接的 MATLAB 实现。 3.1.1 连续系统的数学描述 连续系统的数学模型通常可以用微分方程、传递函数、状态空间表达式三种形 式对系统加以描述。下面将简单对这几类数学模型加以回顾,同时给出 MATLAB 对 它们的表示方法。 1.系统的微分方程形式模型 一个系统的动态特性通常可用高阶微分方程加以描述,因此描述一个系统最常 用的数学 模型就是微分方程的形式。假设连续系统为单入单出(简称 SISO)系统,其输入与 输出分别用 u(t)、y(t)加以表示,则描述系统的高阶微分方程为: c u dt d u c dt d u c a y dt dy a dt d y a dt d y a dt d y n n n n n n n n n n n n n = + + + + + + + + − − − − − − − − − 2 2 1 2 1 1 2 1 2 1 2 1 1 (3-1) 其初始条件为: ( ) 0 0 y t = y , ( ) 0 0 y t = y ,…, ( ) 0 u0 u t = , ( ) 0 u0 u t = ,… 如果引入微分算子 dt d p = ,则(3-1)式可以写作:
Py+a1p"y+……+an1py+any=c1pl+c2pl+…+cnl 即 an-iP 对上式稍加整理并令a0=1,可以得到 n-ip 2.系统传递函数形式模型 1)传递函数模型 对(3-1)式等号两边取拉氏变换,并假设y与u的各阶导数的初值均为零, 则存在 s"Y(s)+a;s"4Y(s)+…+an-1sY(s)+anF(s) (3-3) csm-lU(S)+C2sm-AU(s)+.+c,U(s) 式中:Y(s)—一输出yt)的拉氏变换; U()输入()的拉氏变换 从而(3-1)式所描述的系统的传递函数为 G(s) (s) CIs-l+C25"-+.+Cm-S+c (3-4) s+a1S+a2S+…+an1S+an 对照(3-2)式与(3-4)式可以清楚地看出,当描述系统的微分方程的初始值为零时, 用算子p所表示的式子与传递函数G(S)在形式上完全相同。 传递函数是经典控制论描述系统的数学模型之一,它表达了系统输入量和输出 量之间的关系。它只与系统本身的结构、特性和参数有关,而与输入量的变化无关 传递函数是研究线性系统动态响应和性能的重要手段与方法。在 MATLAB语言中 可以利用分别定义的传递函数分子、分母多项式系数向量方便地对其加以描述。例 如对于(3-4)式,系统可以别定义传递函数的分子、分母多项式系数向量为
53 p y a p y a py a y c p u c p u cnu n n n n n n + + + + = + + + − − − 1 −1 1 1 1 2 2 即 a p y c p u i n i n i j n j n j − = − = − = 1 0 0 对上式稍加整理并令 a0 = 1 ,可以得到 = − − = − = n j j n j n i i n i a p c p u y 0 1 0 (3-2) 2.系统传递函数形式模型 1) 传递函数模型 对(3-1)式等号两边取拉氏变换,并假设 y 与 u 的各阶导数的初值均为零, 则存在 ( ) ( ) ( ) ( ) c s U(s) c s U(s) c U(s) s Y s a s Y s a sY s a Y s n n n n n n n = + + + + + + + − − − − 2 2 1 1 1 1 1 (3-3) 式中: Y(s)——输出 y(t) 的拉氏变换; U(s)——输入 u(t) 的拉氏变换。 从而(3-1)式所描述的系统的传递函数为 ( ) ( ) ( ) n n n n n n n n n s a s a s a s a c s c s c s c U s Y s G s + + + + + + + + + = = − − − − − − 1 2 2 1 1 1 2 2 1 1 (3-4) 对照(3-2)式与(3-4)式可以清楚地看出,当描述系统的微分方程的初始值为零时, 用算子 p 所表示的式子与传递函数 G(S)在形式上完全相同。 传递函数是经典控制论描述系统的数学模型之一,它表达了系统输入量和输出 量之间的关系。它只与系统本身的结构、特性和参数有关,而与输入量的变化无关, 传递函数是研究线性系统动态响应和性能的重要手段与方法。在 MATLAB 语言中, 可以利用分别定义的传递函数分子、分母多项式系数向量方便地对其加以描述。例 如对于(3-4)式,系统可以别定义传递函数的分子、分母多项式系数向量为
nm[e1c2…Cn1ca] de=[lana2…an1an] 这里分子、分母多项式系数向量中的系数均按s的降幂排列,由于传递函数G(s)的 最高次项系数为1,所以分母多项式系数向量dem中第一个元素为1。在 MATLAB 5x中,可以用t来建立传递函数的系统模型,其基本格式为 s=tf(num, den) 例3-1已知系统传递函数为 2s+9 s4+3s3+a2s3+4s+6 解:可以利用 MATLAB将上述系统模型表示出来,并将其建立在工作空间 ( Workspace)中,写成 num den=[12346] printsys(num, den, 's') 执行上述语句后得到 num/den= 2s+9 4+3s^3+2s^2+4s+6 对于 MATLAB5.x可以利用tf直接建立系统模型,即 den=[13246] model=tf(num, den) 执行上述语句后得 Transfer function s^4+3s^3+2s^2+4s+6 由上例可以看出,对于 MATLAB的不同版本建立的传递函数有所不同,但结果 是一致的。下面考虑一种较复杂的传递函数形式。 例3-2已知系统传递函数为 7(2s+3 s2(3s+1)s+2)( 解:可以利用 MATLAB建立其相应的传递函数系统模型。 num=7*[23] den=conv(conv(conv([1,0,0],[3,1]),conv([12],[1,2]),[5,0,3,8]); model=tf (num den)
54 num=[ c1 c2…cn-1 cn] den=[1 a1 a2…an-1 an] 这里分子、分母多项式系数向量中的系数均按 s 的降幂排列,由于传递函数 G(s)的 最高次项系数为 1,所以分母多项式系数向量 den 中第一个元素为 1。在 MATLAB 5.X 中,可以用 tf 来建立传递函数的系统模型,其基本格式为 sys=tf(num,den) 例 3-1 已知系统传递函数为 ( ) 3 2 4 6 2 9 4 3 3 + + + + + = s s a s s s G s 解:可以利用 MATLAB 将上述系统模型表示出来,并将其建立在工作空间 (Workspace)中,写成 num=[2 9]; den=[1 2 3 4 6]; printsys(num,den,'s') 执行上述语句后得到 num/den= 2s+9 s ^ 4 + 3 s ^ 3 + 2 s ^ 2 + 4 s + 6 对于 MATLAB 5.x 可以利用 tf 直接建立系统模型,即 num=[2 9]; den=[1 3 2 4 6]; model=tf(num,den) 执行上述语句后得 Transfer function: 2s+9 s ^ 4 + 3 s ^ 3 + 2 s ^ 2 + 4 s + 6 由上例可以看出,对于 MATLAB 的不同版本建立的传递函数有所不同,但结果 是一致的。下面考虑一种较复杂的传递函数形式。 例 3-2 已知系统传递函数为 ( ) ( ) (3 1)( 2) (5 3 8) 7 2 3 2 2 3 + + + + + = s s s s s s G s 解:可以利用 MATLAB 建立其相应的传递函数系统模型。 num= 7*[2 3]; den= conv(conv(conv([1,0,0],[3,1]),conv([1 2],[1,2])),[5,0,3,8]); model=tf(num,den)
运行结果 Transfer function 4s+21 15s^8+65s^7+89s^6+83s^5+152s^4+140s^3+32s^2 在这里使用了conv函数,它是 MATLA B中的标准函数,用来求取两个向量的 卷积分。因此当两个多项式相乘,需两个多项式系数向量相乘时,就可利用conv函 数来进行。conv函数允许多重嵌套,由上例已清楚地看到这一点。 对于连续时间系统可以用传递函数对其加以表示,而对于离散时间系统则应采 用脉冲传递函数对其进行描述。脉冲传递函数一般可表示为关于z的降幂多项式分 式形式,即 +cm-1二 +c12+c U(=)an+an-12+…+a12+ao 在MA∏LAB5.0中,对于离散系统同样可以建立相应的系统模型,其基本格式为 sys=tf(num, den, T) 其中T为系统采样周期。 2)系统的零极点形式模型 系统的传递函数还可表示成另一种形式,即零极点形式。这种形式的系统传递 函数比标准形式传递函数更加直观,可清楚地看到系统零极点分布情况。系统的零 极点模型一般可表示为 二2 (3-5) (s-PuXs-p2)(s-Pu) 其中,=(=12,…,m)和P,(=12,…,m)分别为系统的零点和极点,二、P既 可以是实数也可是复数,K为系统增益。 MATLAB可以使用pk函数建立零极点形 式的系统模型.其基本格式为 sys- zpk([z], [p], [k]) 其中,[z]、[p]、[k]分分别为系统的零极点和增益
55 运行结果 Transfer function: 14s+21 15s ^ 8 + 65s ^ 7 + 89s ^ 6 + 83s ^ 5 + 152s ^ 4 + 140s ^ 3 + 32s ^ 2 在这里使用了 conv 函数,它是 MATLAB 中的标准函数,用来求取两个向量的 卷积分。因此当两个多项式相乘,需两个多项式系数向量相乘时,就可利用 conv 函 数来进行。conv 函数允许多重嵌套,由上例已清楚地看到这一点。 对于连续时间系统可以用传递函数对其加以表示,而对于离散时间系统则应采 用脉冲传递函数对其进行描述。脉冲传递函数一般可表示为关于 z 的降幂多项式分 式形式,即 ( ) ( ) ( ) 1 0 1 1 1 0 1 1 a z a z a z a c z c z c z c U z Y z G z n n n n m m m m + + + + + + + + = = − − − − 在 MATLAB 5.0 中,对于离散系统同样可以建立相应的系统模型,其基本格式为 num=[ cm,cm-1,…,c1, c0]; den=[ an,an-1,…,a1, a0]; sys= tf(num,den,T) 其中 T 为系统采样周期。 2) 系统的零极点形式模型 系统的传递函数还可表示成另一种形式,即零极点形式。这种形式的系统传递 函数比标准形式传递函数更加直观,可清楚地看到系统零极点分布情况。系统的零 极点模型一般可表示为 ( ) ( )( ) ( ) ( )( ) ( ) n m s p s p s p s z s z s z G s K − − − − − − = 1 2 1 2 (3-5) 其中, z (i m) i = 1,2, , 和 p ( j n) j = 1,2, , 分别为系统的零点和极点, i z 、 j p 既 可以是实数也可是复数,K 为系统增益。MATLAB 可以使用 zpk 函数建立零极点形 式的系统模型.其基本格式为 sys= zpk([z],[p],[k] ) 其中,[z]、[p]、[k]分分别为系统的零极点和增益
3.系统的状态空间表达式 状态方程是研究系统的最为有效的系统数学描述,不论是单入单出系统还是多 入多出(简称MIMO)系统,若可用一组一阶微分方程对其加以表示,在引进相应的 状态变量后,则可将这一组一阶微分方程写成紧凑形式,即状态空间表达式。通常 个线性定常系统可以表示为 X=AX+BU (3-6 Y=CX+DU 其中上述第一式由n个一阶微分方程构成,称为系统的状态方程表达式,下式由 个线性代数程组构成,称为系统的输出方程。X为n维状态向量:U为m维输入向 量:Y为l维输出向量:A为n×n维的系统状态阵,由系统的参数所决定:B为n m维的系统输入阵C为/×n维输出阵;D为1×m维直接传输阵 应用 MATLAB可以方便地表示系统的状态方程模型,只要按照矩阵输入方式建 立相应的系统系数阵即可,考虑SISO系统,容易在 MATLAB工作空间中建立系统 的系数阵,形式为 A=[ all al2…aln;a2la22…a2n;…; anl an2…am}; B=[b1;b2;…;bnl; C=clc2…cnl D=d 当然,也完全可以在 MATLAB工作空间中建立MIMO系统的系数阵。根据系统状 态方程的系数阵,可在MA∏LAB中建立相应的系统模型,其基本格式为 sys=ss (A, B, C, D) 上述是 MATLAB5x中的格式,在 MATLAB42中其格式为 printsys(A, B, C, D) 对于离散系统,其状态空间表达式可表示成 X(k十1)=AX(k)+BU(k) Y (k)=Cx (k)+ Du(k) 在MA∏LAB5x中同样也可建立相应的系统模型,其格式为 sys-ss 其中,T为系统采样周期。在 MATLAB4.2中也可建立类似的系统模型。 3.1.2系统模型的相互转换 在前一节中已经介绍了描述一个系统的数学模型主要有三种形式;微分方程模 型、传递函数模型(包括零极点形式模型)、状态空间模型等。显然在这些不同形式 的系统数学模型中存在着内在的联系,虽然它们外在形式不同,但它们的实质内容
56 3.系统的状态空间表达式 状态方程是研究系统的最为有效的系统数学描述,不论是单入单出系统还是多 入多出(简称 MIMO)系统,若可用一组一阶微分方程对其加以表示,在引进相应的 状态变量后,则可将这一组一阶微分方程写成紧凑形式,即状态空间表达式。通常 一个线性定常系统可以表示为 Y CX DU X AX BU = + = + (3-6) 其中上述第一式由 n 个一阶微分方程构成,称为系统的状态方程表达式,下式由 l 个线性代数程组构成,称为系统的输出方程。X 为 n 维状态向量;U 为 m 维输入向 量;Y 为 l 维输出向量;A 为 n×n 维的系统状态阵,由系统的参数所决定;B 为 n ×m 维的系统输入阵;C 为 l×n 维输出阵;D 为 l×m 维直接传输阵。 应用 MATLAB 可以方便地表示系统的状态方程模型,只要按照矩阵输入方式建 立相应的系统系数阵即可,考虑 SISO 系统,容易在 MATLAB 工作空间中建立系统 的系数阵,形式为 A=[a11 a12…a1n ;a21 a22…a2n ;…;an1 an2…ann]; B=[b1; b2;…;bn]; C=[c1 c2 …cn]; D=d; 当然,也完全可以在 MATLAB 工作空间中建立 MIMO 系统的系数阵。根据系统状 态方程的系数阵,可在 MATLAB 中建立相应的系统模型,其基本格式为 sys=ss (A,B,C,D) 上述是 MATLAB 5.x 中的格式,在 MATLAB 4.2 中其格式为 printsys(A,B,C,D) 对于离散系统,其状态空间表达式可表示成 X(k 十 1)=AX(k)+BU(k) Y(k)= CX(k)+ DU(k) 在 MATLAB 5.x 中同样也可建立相应的系统模型,其格式为 sys=ss(A, B, C, D, T) 其中,T 为系统采样周期。在 MATLAB 4.2 中也可建立类似的系统模型。 3.1.2 系统模型的相互转换 在前一节中已经介绍了描述一个系统的数学模型主要有三种形式;微分方程模 型、传递函数模型(包括零极点形式模型)、状态空间模型等。显然在这些不同形式 的系统数学模型中存在着内在的联系,虽然它们外在形式不同,但它们的实质内容