1、 1 实验一 基于 MATLAB 的 被控对象 的建立 与 转换 洗手 说明 洗手 一个控制系统主要由 被控对象 、 b ef检测测量装置 、 b ef控制器和执行器四大部分构成 。 洗手用于自控原理实验方面的被控对象可以有 洗手 用于实际生产的 实际系统的 真实被控对象 , 吃饭如进行温度控制的锅炉 、 b ef进行转速控制的电机等 ; b ef洗手 用于实验研究 的 真实被控对象 , 吃饭 如进行温度控制的实验用锅炉 、 b ef进行转速控制的电机等 ;b e ef洗手 用运算放大器等电子器件搭建的电模拟 被控对象(电路板形式) , 吃饭它们 的数学模型与 真实被控对象的数学模型基本一致
2、, 吃饭 而且比真实被控对象更典型 , 吃饭 更精准 。 洗手 它们是实物型原理仿真被控对象 。 洗手洗手 计算机仿真的被控对象 , 吃饭它们是非实物型原理仿真被控对象 , 吃饭是以各种形式展现的被控对象的数学模型 。 洗手 它们通过计算机屏幕展示 , 吃饭 或是 公式形式的 数学 算式 , 吃饭 或是 数字形式 的数表 、 b e ef矩阵 , 吃饭或是 图形形式的 结构框图 , 吃饭或是动画形式的真实被控对象实物的 动态 图形 。 洗手洗手 在自控原理实验中 , 吃饭极少用 ; b ef用的不多 ; b e ef用的较多 ; b ef在 MATLAB 软件广泛使用后 , 吃饭用的较多 。
3、洗手 、 b ef各有其优缺点 。 洗手洗手 MATLAB 软件的应用对提高控制系统的分析 、 b ef设计和应用水平起着十分重要的作用 。 洗手 我们的实验采用的是 : b ef采用 MATLAB 软件 平台的 计算机仿真的被控对象 。 洗手 这里“ 被控对象的建立” ,吃饭指在 MATLAB 软件平台上怎样正确表示 被控对象的数学模型 。 洗手洗手 洗手 洗手 洗手 洗手 洗手 洗手 洗手 洗手 洗手 洗手 实验目的 洗手 2 1 了解 MATLAB 软件的基本特点和功能 ; b eef洗手 2 掌握线性系统 被控对象 传递函数 数学 模型在 MATLAB 环境下的 表示方法及转换 ; b
4、 eef洗手 3 掌握多环节串联 、 b eef并联 、 beef反馈连接时 整体 传递函数的求取方法 ; beef洗手 4 掌握在 SIMULINK 环境下系统结构图的形成方法及整体 传递函数的求取方法 ; b eef洗手 5 了解在 MATLAB 环境下求取 系统 的 输出时域表达式的方法 。 洗手洗手 洗手 实验指导 洗手 一 、 b e ef被控对象 模型的建立 洗手 在线性系统理论中 , 吃饭 一般常用的 描述系统的 数学模型形式有 : beef洗手 ( 1)传递函数模型 有理多项式分式表达式 洗手 ( 2)传递函数模型 零极点 增益 表达 式 洗手 ( 3)状态空间模型(系统的内部
5、模型) 洗手 这些模型之间都有着内在的联系 , 吃饭 可以相互进行转换 。 洗手洗手 洗手 1、 b e ef传递函数模型 有理多项式分式表达式 洗手 设系统的传递函数模型为 洗手 01110111 .)( )()( asasasa bsbsbsbsR sCsG nnnnmmmm洗手 对线性定常系统 , 吃饭 式中 s 的系数均为常数 , 吃饭 且 an不等于零 。 洗手洗手 这时系统在 MATLAB 中可以方便地由分子和分母 各项 系数构成的两个向量唯一地确定 , 吃饭 这两个向量常 用 num 和 den 表示 。 洗手 洗手 num=bm,bm-1, b1,b0洗手 den=an,an-
6、1,a 1,a0洗手 注意 : b eef它们都是按 s 的降幂进行排列的 。 洗手 分子应为 m项 , 吃饭 分母应为 n项 , 吃饭 若有空缺项(系数为零的项) , 吃饭 在相应的位置补零 。 洗手洗手 然后写上 传递函数模型建立函数 : b e efsys=tf(num,den)。 洗手 这个 传递函数便在 MATLAB 平台中被建立 , 吃饭 并可以在屏幕上显示出来 。 洗手洗手 洗手 洗手 3 举例 1-1: b ef已知系统的传递函数描述如下 : beef洗手 22642 202412)( 23423 ssss sssG 洗手 在 MATLAB 命令窗口 ( Command Win
7、dow)键入以下程序 : b eef洗手 洗手 num=12,24,0,20;b eef洗手 den=2 4 6 2 2;b eef洗手 sys=tf(num,den)洗手 洗手 回车后显示结果 : b eef洗手 Transfer function:洗手 12 s3 + 24 s2 + 20 洗手 -洗手 2 s4 + 4 s3 + 6 s2 + 2 s + 2 洗手 洗手 并 同时 在 MATLAB 中建立了这个相应的 有理多项式分式形式的 传递函数模型 。 洗手洗手 洗手 举例 1-2: b ef已知系统的传递函数描述如下 : beef洗手 )523()1( )66)(2(4)( 233
8、22 sssss ssssG洗手 其中 , 吃饭 多项式相乘项 , 吃饭 可借助多项式乘法函数 conv 来处理 。 洗手洗手 在 MATLAB 命令窗口 ( Command Window)键入以下程序 : b eef洗手 洗手 num=4*conv(1,2,conv(1,6,6,1,6,6);b eef洗手 den=conv(1,0,conv(1,1,conv(1,1,conv(1,1,1,3,2,5);b eef洗手 sys=tf(num,den) 洗手 洗手 回车后显示结果 : b eef洗手 Transfer function:洗手 4 s5 + 56 s4 + 288 s3 + 67
9、2 s2 + 720 s + 288 洗手 -洗手 4 s7 + 6 s6 + 14 s5 + 21 s4 + 24 s3 + 17 s2 + 5 s 洗手 即 同时 在 MATLAB 中建立了这个 有理多项式分式形式的 传递函数模型 。 洗手洗手 洗手 2 传递函数模型 零极点增益模型 洗手 零极点增益模型 为 : b eef洗手 ) . . . ()( ) . . . ()()( 21 21 nmpspsps zszszsKsG 洗手 其中 : b eefK为 零极点 增益 , 吃饭 zi为零点 , 吃饭 pj 为极点 。 洗手洗手 该模型 在 MATLAB 中 , 吃饭 可 用 z,p,
10、k矢量组表示 , 吃饭 即 洗手 z=z1,z2,z m;b ef洗手 p=p1,p2,.,pn;b ef洗手 k=K;b ef洗手 然后 在 MATLAB 中 写上 零极点增益形式的传递函数模型建立函数 : b eef洗手 sys=zpk(z,p,k)洗手 这个 零极点增益模型便在 MATLAB 平台中被建立 , 吃饭 并可以在屏幕上显示出来 。 洗手洗手 洗手 举 例 1-3: b ef已知系统的零极点增益模型 : beef洗手 )5)(2)(1( )3(6)( sss ssG洗手 在 MATLAB 命令窗口 ( Command Window)键入以下程序 : b eef洗手 洗手 z=-
11、3;b eefp=-1,-2,-5;beefk=6;beef洗手 sys=zpk(z,p,k)洗手 洗手 回车后显示结果 : b eef洗手 Zero/pole/gain:洗手 6 (s+3)洗手 -洗手 (s+1) (s+2) (s+5)洗手 洗手 5 则 在 MATLAB 中建立 了 这个 零极点增益 的 模型 。 洗手洗手 洗手 洗手 3 状态空间模型 洗手 状态方程与输出方程的组合称为状态 空间表达式 , 吃饭 又称为动态方程 , 吃饭 如下 : beef洗手 DuCxy BuAxx 洗手 则 在 MATLAB 中建立状态空间模型的程序如下 : b eef洗手 A=A;b eef洗手
12、B=B;b eef洗手 C=C;b eef 洗手 D=D;b eef洗手 sys=ss(A,B,C,D)洗手 洗手 二 、 b e ef不同形式模型之间的相互转换 洗手 不同形式之间 模型转换的函数 : b eef洗手 ( 1) tf2zp: beef 多项式 传递函数模型转换为零极点增益模型 。 洗手洗手 格式为 : b eefz,p,k=tf2zp(num,den)洗手 ( 2) zp2tf: beef 零极点增益模型转换为多项式传递函数模型 。 洗手洗手 格式为 : b eefnum,den=zp2tf(z,p,k)洗手 ( 3) ss2tf: beef 状态空间模型转换为多项式传递函数
13、模型 。 洗手洗手 格式为 : b eefnum,den=ss2tf(a,b,c,d)洗手 ( 4) tf2ss: 多项式传递函数模型转换为状态空间模型 。 洗手 洗手 格式为 : b eefa,b,c,d=tf2ss(num,den)洗手 ( 4) zp2ss: beef 零极点增益模型转换为状态空间模型 。 洗手洗手 格式为 : b eefa,b,c,d=zp2ss(z,p,k)洗手 ( 5) ss2zp: beef 状态空间模型转换为零极点增益模型 。 洗手洗手 格式为 : b eefz,p,k=ss2zp(a,b,c,d)洗手 洗手 6 洗手 洗手 三 、 b e ef环节串联 、 b
14、 ef并联 、 b ef反馈连接时 等效的 整体 传递函数的求取 洗手 1、 b e ef串联 洗手 洗手 这里 : beef 洗手 在 MATLAB 中求取 整体 传递 函数的 功能 , 吃饭 采用 如下 的语句或函数来实现 。 洗手洗手 G=G1*G2洗手 G=series(G1,G2)洗手 num,den=series(num1,den1,num2,den2)洗手 举例 1-4 两环节 G1、 b eefG2串联 , 吃饭 求等效的 整体 传递函数 G 洗手 32)(1 ssG 127)( 22 sssG 洗手 解 : b eef实现的程序 : beef洗手 n1=2;b eefd1=1
15、 3;b eefn2=7;beefd2=1 2 1;b eefG1=tf(n1,d1);beefG2=tf(n2,d2);beefG=G1*G2洗手 运行结果 : b eef洗手 Transfer function:洗手 14 洗手 -洗手 s3 + 5 s2 + 7 s + 3 洗手 实现的程序 : b eef洗手 n1=2;b eefd1=1 3;b eefn2=7;beefd2=1 2 1;b eefG1=tf(n1,d1);beefG2=tf(n2,d2);beefG=series(G1,G2)洗手 运行结 果 : b eef洗手 Transfer function:洗手 14 洗手
16、-洗手 s3 + 5 s2 + 7 s + 3 洗手 实现的程序 : b eef洗手 n1=2;b eefd1=1 3;b eefn2=7;beefd2=1 2 1;b eefG1=tf(n1,d1);beefG2=tf(n2,d2);beef洗手 n,m=series(n1,d1,n2,d2)洗手 7 运行结果 : b eef洗手 n =洗手 0 0 0 14 洗手 m =洗手 1 5 7 3 洗手 洗手 举例 1-5 四 环节 G1、 b eefG2、 beef G3、 b eefG4串联 , 吃饭 求等效的 整体 传递函数 G 洗手 32321 sGGG 12722 ssG 洗手 解 :
17、 b eef实现的程序 : beef洗手 n1=2;b efd1=1 3;b efn2=7;b efd2=1 2 1;b efG1=tf(n1,d1);b efG2=tf(n2,d2);b ef洗手 G=G1*G2*G1*G1 洗手 运行结果 : b eef洗手 Transfer function:洗手 56 洗手 -洗手 s5 + 11 s4 + 46 s3 + 90 s2 + 81 s + 27 洗手 洗手 2、 b e ef并联 洗手 洗手 两环节 G1(s)与 G2(s)并联 , 吃饭 则 等效的 整体 传递函数 为 洗手 G(s)=G1(s)+G2(s)洗手 在 MATLAB 中求取
18、 整体 传递函数的功 能 , 吃饭 采用如下的语句或函数来实现 。 洗手洗手 G=G1+G2 洗手 G= parallel (G1,G2)洗手 num,den= parallel (num1,den1,num2,den2)洗手 举例 1-6 两环节 G1、 b eefG2并联 , 吃饭 求等效的 整体 传递函数 G(s)洗手 32)(1 ssG 127)( 22 sssG 洗手 解 : b eef实现的程序 : beef洗手 8 n1=2;b efd1=1 3;b efn2=7;b efd2=1 2 1;b efG1=tf(n1,d1);b efG2=tf(n2,d2);b efG1+G2洗手
19、 运行结果 : b eef洗手 Transfer function:洗手 2 s2 + 11 s + 23 洗手 -洗手 s3 + 5 s2 + 7 s + 3 洗手 实现的程序 :洗手 n1=2;b eefd1=1 3;b eefn2=7;beefd2=1 2 1;b eefG1=tf(n1,d1);beefG2=tf(n2,d2);beefG=parallel(G1,G2)洗手 运行结果 : b eef洗手 Transfer function:洗手 2 s2 + 11 s + 23 洗手 -洗手 s3 + 5 s2 + 7 s + 3 洗手 实现的程序 :洗手 n1=2;b eefd1=1
20、 3;b eefn2=7;beefd2=1 2 1;b eef n,d=parallel(n1,d1,n2,d2)洗手 运行结果 : b eef洗手 n =洗手 0 2 11 23 洗手 d =洗手 1 5 7 3 洗手 洗手 洗手 若 洗手 洗手 则 G(s)=G1(s)-G2(s)洗手 相应的 语句 为 洗手 G=G1-G2 洗手 举例 1-7: beef程序如下 洗手 9 n1=2;b efd1=1 3;b efn2=7;b efd2=1 2 1;b efG1=tf(n1,d1);b efG2=tf(n2,d2);b efG=G1-G2 洗手 运行结果 : b eef洗手 Transfe
21、r function:洗手 2 s2 - 3 s - 19 洗手 -洗手 s3 + 5 s2 + 7 s + 3 洗手 洗手 3 反馈 : b effeedback洗手 洗手 则 洗手 在 MATLAB 中采用如下的语句或函数来求取 闭环 传递函数 )(sG闭环 洗手 G= feedback(G1,G2,sign)洗手 num,den=feedback(num1,den1,num2,den2,sign) 洗手 G= cloop (G1, sign)洗手 numc,denc=cloop(num,den,sign) 洗手 这里 , 吃饭 sign=1 时采用正反馈 ; beef当 sign= -1
22、时采用负反馈 ; b eefsign 缺省时 , 吃饭 默认为负反馈 。 洗手洗手 其中 G2; b eefnum2,den2; beef对应 H(s)。 洗手洗手 只用于单位反馈 系统 。 洗手 洗手 举例 1-8 , 吃饭 已知 洗手 求 闭环 传递函数 。 洗手 洗手 两环节 G1、 b eefG2分别为 洗手 812 1003)(21 ss ssG52 2)(2 ssG洗手 解 : b eef a:洗手 n1=3 100 ;b eefd1=1 2 81;b eefn2=2;beefd2=2 5;b eef洗手 10 G1=tf(n1,d1);b eefG2=tf(n2,d2);beef
23、G=feedback(G1,G2,-1)洗手 结果 ; b eef洗手 Transfer function:洗手 6 s2 + 215 s + 500 洗手 -洗 手 2 s3 + 9 s2 + 178 s + 605 洗手 b:洗手 n1=3 100 ;b eefd1=1 2 81;b eefn2=2;beefd2=2 5;b eef洗手 G1=tf(n1,d1);b eefG2=tf(n2,d2);beefG=feedback(G1,G2,1)洗手 结果 : b eef洗手 Transfer function:洗手 6 s2 + 215 s + 500 洗手 -洗手 2 s3 + 9 s2
24、 + 166 s + 205 洗手 洗手 num1=3 100 ;b eefden1=1 2 81;b eefnum2=2;beefden2=2 5;b eef洗手 num,den=feedback(num1,den1,num2,den2,-1) 洗手 结果 : b eef洗手 num =洗手 0 6 215 500 洗手 den =洗手 2 9 178 605 洗手 举例 1-9 , 吃饭 已知 洗手 求 闭环 传递函数 。 洗手 洗手 两环节 G1、 b eefG2分 别为 洗手 812 1003)(21 ss ssG1)(2 sG 洗手 解 洗手 n1=3 100 ;b eefd1=1 2 81;b eefG1=tf(n1,d1);beefG2=1;beefG=feedback(G1,G2,-1)洗手