实验二 控制系统的数学模型、转换及连续系统的数字仿真
MATLAB实验(控制系统的模型及其转换)

《MATLAB 语言及其应用》实验报告学院:电气与信息工程学院班级:自动化1004姓名:甘显豪学号:10401701305指导老师:张满生《MATLAB 语言及其应用》实验指导书目录实验一Matlab 使用方法和程序设计........................实验二控制系统的模型及其转换.............................实验三控制系统的时域、频域和根轨迹分析...........实验四动态仿真集成环境-Simulink...........................实验五直流电机拖动系统控制器设计………………实验一Matlab使用方法和程序设计一、实验目的1、掌握Matlab软件使用的基本方法;2、熟悉Matlab的数据表示、基本运算和程序控制语句3、熟悉Matlab绘图命令及基本绘图控制4、熟悉Matlab程序设计的基本方法二、实验内容:1、帮助命令使用help命令,查找 sqrt(开方)函数的使用方法;2、矩阵运算(1)矩阵的乘法已知A=[1 2;3 4]; B=[5 5;7 8];求A^2*B(2)矩阵除法已知 A=[1 2 3;4 5 6;7 8 9];B=[1 0 0;0 2 0;0 0 3];A\B,A/B,运行结果如下:(3)矩阵的转置及共轭转置已知A=[5+i,2-i,1;6*i,4,9-i]; 求A.', A'(4)使用冒号表达式选出指定元素已知: A=[1 2 3;4 5 6;7 8 9];求A中第3列前2个元素;A中所有列第2,3行的元素;方括号[]用magic函数生成一个4阶魔术矩阵,删除该矩阵的第四列3、多项式(1)求多项式4xxp的根=x-2)(3-(2)已知A=[1.2 3 5 0.9;5 1.7 5 6;3 9 0 1;1 2 3 4] ,求矩阵A的特征多项式把矩阵A作为未知数代入到多项式中;4、基本绘图命令(1)绘制余弦曲线 y=cos(t),t∈[0,2π](2)在同一坐标系中绘制余弦曲线y=cos(t-0.25)和正弦曲线y=sin(t-0.5),t∈[0,2π]5、基本绘图控制绘制[0,4π]区间上的x1=10sint曲线,并要求:(1)线形为点划线、颜色为红色、数据点标记为加号;(2)坐标轴控制:显示范围、刻度线、比例、网络线(3)标注控制:坐标轴名称、标题、相应文本;6、基本程序设计(1)编写命令文件:计算1+2+…+n<2000 时的最大n值;(2)编写函数文件:分别用for和while循环结构编写程序,求2的0到n次幂的和。
控制系统数字仿真技术实验

实验一控制系统的模型转换、数据处理与曲线拟合(2学时)一.实验目的:掌握控制系统的微分方程、状态方程、传递函数、零极点增益、部分分式描述及转换;掌握常用数据拟合与插值方法。
二.实验方法及预习内容:1.利用Matlab工具箱中常用的五种模型转换命令进行模型描述和转换;2.利用Matlab工具箱中的多项式拟合命令polyfit对实验数据进行拟合。
三.实验内容:1.用Matlab语言求下列系统的状态方程、传递函数、零极点增益、和部分分式形式的模型参数,并分别写出其相应的数学模型表达式:(1)G(s)=32432144848207010048s s ss s s s+++++++(2).X=2.25 -5 -1.25 -0.542.25 -4.25 -1.25 -0.2520.25 -0.5 -1.25 -121.25 -1.75 -0.25 -0.75 0X⎡⎤⎡⎤⎢⎥⎢⎥⎢⎥⎢⎥+⎢⎥⎢⎥⎢⎥⎢⎥⎣⎦⎣⎦u y=[0 2 0 2] X2.已知元件的实验数据如下,拟合这一数据,并尝试给出其特性方程。
X 0.0100 1.0100 2.0100 3.0100 4.0100Y 2.5437 7.8884 9.6242 11.6071 11.9727X 5.0100 6.0100 7.0100 8.0100 9.0100y 13.2189 14.2679 14.6134 15.4045 15.0805四.实验总体要求:1.每次实验前应做好预习和准备;2.实验后应及时提交仿真程序Word文档(包括:程序、实验结果和图示、实验分析与总结);3.重点检查Matlab中M文件的运行;4.请认真撰写实验报告,实验结果可贴在报告相应位置。
注:格式不符合要求、或字迹潦草的一律退回重写。
五.本次实验要求:1.熟悉五种连续系统控制模型的Matlab转换命令,并得出相应数学模型表达式;2.熟悉常用数据拟合方法。
(1)G(s)=32432144848207010048s s ss s s s+++++++程序den=[1,20,70,100,48];num=[1,14,48,48];[A,B,C,D]=tf2ss(num,den)[z,p,k]=ss2zp(A,B,C,D)[R,P,H]=residue(num,den)结果>>A =-20 -70 -100 -481 0 0 00 1 0 00 0 1 0B =1C =1 14 48 48D =z =-9.4641-2.5359-2.0000p =-16.0051-1.5269 + 0.9247i -1.5269 - 0.9247i -0.9412k =1.0000R =0.3892-0.0932 - 0.3754i -0.0932 + 0.3754i0.7973P =-16.0051-1.5269 + 0.9247i -1.5269 - 0.9247i -0.9412H =[](2).X=2.25 -5 -1.25 -0.542.25 -4.25 -1.25 -0.2520.25 -0.5 -1.25 -121.25 -1.75 -0.25 -0.75 0X⎡⎤⎡⎤⎢⎥⎢⎥⎢⎥⎢⎥+⎢⎥⎢⎥⎢⎥⎢⎥⎣⎦⎣⎦u y=[0 2 0 2] X程序A=[2.25,-5,-1.25,-0.5;2.25,-4.25,-1.25,-0.25;0.25,-0.5,-1.25,-1;1.25,-1.75,-0.25,-0.75];B=[4;2;2;0];C=[0,2,0,2];D=[0];[num,den]=ss2tf(A,B,C,D)[z,p,k]=ss2zp(A,B,C,D)[R,P,H]=residue(num,den)>> 结果>>num =0 4.0000 14.0000 22.0000 15.0000 den =1.0000 4.0000 6.2500 5.25002.2500z =-1.0000 + 1.2247i-1.0000 - 1.2247i-1.5000p =-0.5000 + 0.8660i-0.5000 - 0.8660i-1.5000-1.5000k =4.0000R =4.0000-0.00000.0000 - 2.3094i0.0000 + 2.3094iP =-1.5000-1.5000-0.5000 + 0.8660i-0.5000 - 0.8660iH =[]>>实验二基于Matlab的微分方程数值解法(2学时)一.实验目的:掌握欧拉法、四阶龙格库塔法的程序编制方法。
计算机仿真技术第2章控制系统的数学模型及其转换

2.1.3 部分分式形式 传递函数也可表示成部分分式或留数形式,即 (2-8) 式中 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 … hm-n]
15
例2-6 对于例2-5中给出的多变量系统,可以由 下面的命令分别对各个输入信号求取传递函数 向量,然后求出这个传递函数阵。 解 利用下列MATLAB语句 >>[num1,den1]=ss2tf(A,B,C,D,1) num1= 0 1.0000 5.0000 6.0000 0 -1.0000 -5.0000 -6.0000 den1= 1 6 11 6
7
例2-3 对于单输入多输出系统 3s 2 s 3 2 s 5 G (s) 3s 3 5 s 2 2 s 1
解 则可将其用下列MATLAB语句表示 >>num=[0 0 3 2;1 0 2 5];den=[3 5 2 1];
8
2.1.2 零极点增益形式 单输入单输出系统的零极点模型可表示为 m
20
2.2.4 传递函数形式到零极点形式的转换 MATLAB函数tf2zp( )的调用格式为 [Z,P,K]=tf2zp(num,den) 2.2.5 零极点形式到状态空间表达式的转换 MATLAB函数zp2ss( )的调用格式为 [A,B,C,D]=zp2ss(Z,P,K) 2.2.6 零极点形式到传递函数形式的转换 MATLAB函数zp2tf( )的调用格式为 [num,den]=zp2tf(Z,P,K)
计算机与CAD仿真第2章 控制系统的数学模型及其转换

(1) 利用 利用MATLAB描述在控制系统中常见的几种数学模型; 描述在控制系统中常见的几种数学模型; 描述在控制系统中常见的几种数学模型 (2) 利用 利用MATLAB实现任意数学模型之间的相互转换; 实现任意数学模型之间的相互转换; 实现任意数学模型之间的相互转换 (3) 利用 利用MATLAB求解系统经过串联,并联和反馈连接后的系统 求解系统经过串联, 求解系统经过串联 模型; 模型; (4) 利用 利用MATLAB获取一些典型系统的模型; 获取一些典型系统的模型; 获取一些典型系统的模型 (5) 利用 利用MATLAB实现连续系统的离散化和离散系统的连续化; 实现连续系统的离散化和离散系统的连续化; 实现连续系统的离散化和离散系统的连续化 (6) 利用 利用MATLAB求取系统的特性函数. 求取系统的特性函数. 求取系统的特性函数
15】 【例2-15】 求下列两系统并联后的系统模型
2.3 系统模型的连接
在一般情况下,控制系统常常由若干个环节通 过串联,并联和反馈连接的方式而组成,对在各种 连接模式下的系统能够进行分析就需要对系统的模 型进行适当的处理, 在MATLAB的控制系统工具箱中 提供了大量的对控制系统的简单模型进行连接的函 数.
sys = append(sys1,sys2,...,sysN) sys = series(sys1,sys2,outputs1,inputs2) sys = feedback(sys1,sys2) sys = lft(sys1,sys2,nu,ny) sysc = connect(sys,Q,inputs,outputs) 子系统合成对角形式 串联连接 反馈连接 模型连接 框图建模 sys = parallel(sys1,sys2,inp1,inp2,out1,out2) 并联连接
《控制系统数字仿真与cad》第2章控制系统的数学模型及其转换

(s z j )
m
式中 zj(j=1,2,…,m) 和pi(i=1,2,…,n) 称为 系统的零点和极点,它们既可以为实数又可 以为复数,而K称为系统的增益。 在MATLAB下零极点模型可以由增益 K和零、 极点所构成的列向量唯一确定出来。即 Z=[z1;z2;…;zm]; P=[p1;p2;…;pn];K=K
例2-3 对于单输入多输出系统 3s 2 s 3 2s 5 G ( s) 3 3s 5s 2 2s 1
解 则可将其用下列MATLAB语句表示 >>num=[0 0 3 2;1 0 2 5];den=[3 5 2 1]; Printsys(num,den) 执行结果为:
对于单输入多输出系统,列向量P中 储存为系统的极点;零点储存在矩阵Z的 列中, Z的列数等于输出向量的维数,每 列对应一个输出,对应增益则在列向量K 中。 因此,系统的零极点模型在MATLAB命 令中可用一个增益向量、零点向量和极 点向量来唯一确定。
【例2-4】已知单入双出系统的零极点模型
执行结果为 num/den= 6s ^3 12s ^ 2 6s 10
s ^ 4 2s ^3 3s ^ 2 s 1
其中MATLAB的printsys( )函数可按特殊格式打印出 状态空间和传递函数表示的系统。 printsys(num,den,‘s’) %显示∕打印连续系统的传 递函数,默认方式; printsys(num,den,‘z’) %显示∕打印离散系统的脉 冲传递函数;
2.1 线性系统数学模型的基本描述方法
根据系统数学描述方法的不同,系统可建立不 同的数学模型。 2.1.1 传递函数 单入单出系统可用高阶微分方程来表示,其一 般形式为:
实验二 面向系统结构图的连续系统数字仿真实验 matlab程序

4.离散相似法编程
时域离散编程求解 程序:
clear num=[8 10]; den=[0.1 1 0 0]; [A,B,C,D]=tf2ss(num,den) sysc=ss(A,B,C,D); T=0.05; sysd=c2d(sysc,T); Ad=sysd.a; Bd=sysd.b;
0 0.5 1
程序:
clear all A = [-1000.25 999.75 0.5;999.75 -1000.25 0.5;0 0 0]; t = 0; x = [1 -1 1]; h = 0.05; M = round(10/h); for k = 1:M tt = t(k) + h; x1 = -exp(-0.5*tt)+exp(-2000*tt)+1; x2 = -exp(-0.5*tt)-exp(-2000*tt)+1; x3 = 0; temp = [x1 x2 x3]; x = [x; temp]; t = [t; tt]; end T = 0.003125; m = 4; t_frog = 0; x_frog = [1 -1 1]; start_time_frog = clock; F = expm(A*T); for k = 0:m tt = 2^(k) * T; temp = F*x_frog(1,:)'; temp = temp'; x_frog = [x_frog; temp]; t_frog = [t_frog; tt]; if k<m F=F*F; end end qT = 2^(m)*T; for k = 1:M-1 tt = t_frog(m+k+1) + qT; temp = F*x_frog(m+k+1,:)'; temp = temp'; x_frog = [x_frog; temp]; t_frog = [t_frog; tt]; end pass_time_frog = etime(clock,start_time_frog); hh = 0.001; end pass_time_rk4=etime(clock,start_time_rk4); t_display = t(2:31,:); x1_display = x(2:31,1); x1_frog_display = x_frog(6:35,1); x1_rk4_display = x_rk4(51:50:1501,1); disp(' 时间 解析解 蛙跳法 RK4法 ') t_rk4 = 0; x_rk4 = [1 -1 1]; start_time_rk4=clock; for k = 1:50*M tt = k*hh; K1 = A*x_rk4(k,:)'; K2 = A*(x_rk4(k,:)'+hh*K1/2); K3 = A*(x_rk4(k,:)'+hh*K2/2); K4 = A*(x_rk4(k,:)'+hh*K3); temp = x_rk4(k,:)'+hh*(K1/2+2*K2+2*K3+K4)/6; temp = temp'; x_rk4 = [x_rk4; temp]; t_rk4 = [t_rk4; tt];
控制系统仿真连续系统数学模型表示方法及实现

Z变换
a
0
a1 z 1 a n z n Y z b1 z 1 bn z n U z
H z Y ( z) U ( z)
j b z j j a z j j 0 j 1 n n
系统的Z传递函数
10
2015/5/22
2015/5/22 控制系统仿真
a0 y n k a1 y n k 1 an y k
Байду номын сангаас
9
离散时间模型
(2)Z传递函数
若系统的初始条件为零,对差分方程两边取Z变换。
b1u n k 1 bn u k
a 0 y n k a1 y n k 1 a n y k
1)输入输出模型与状态空间模型的转换(本节内容) 2)模型的离散化(第三章)
2015/5/22
控制系统仿真
18
数学模型之间的转换
(1)状态空间模型与传递函数模型之间的转换 状态空间模型传递函数模型
t AX t BU t X Y t CX t DU t
yk a1 yk 1 an yk n b1uk 1 bnuk n
Z k 1 A* Z k B *u k
0 * A 0 a n
2015/5/22
yk H *Z k
I n 1
a n 1
a1
i 0
k
权序列 h(k)
Z变换
Z传递函数 H(z)
2015/5/22
控制系统仿真
12
离散时间模型
控制系统仿真课件:控制系统模型及转换

x1 0
x2
0
xn
an
1 0 an1
0 1 an2
0 x1 0
0
x2
0
u
a1
xn
1
x1
y 1
0
0
x2
xn
控制系统模型及转换
0
A
0
an
1 0 an1
0 1 an2
0
0
a1
为状态变量系数矩阵。 为输入变量系数矩阵。
a1
d n1 y dt n 1
an1
dy dt
an
y
u
(3-5)
式中:u为系统的输入量;y为输出量。
控制系统模型及转换
现引入n个状态变量,即x1,x2,…,xn,各个状态变量的一 阶导数与状态变量和式(3-5)原始方程中的各导数项的对应
关系
x1
x
x2
x
n
为系统状态变量矩阵。
控制系统模型及转换
x1
x
x
2
x
n
为状态变量的一阶导数矩阵。
控制系统模型及转换
x1 y
x1
x2
x2
x3
x n 1
xn
dy dt d2y dt 2
d n1 y dt n1
xn
xn1
dny dt n
an y an1
dy dt
an2
d2y dt 2
a1
d n1 y dt n1
u
控制系统模型及转换 将上述n个一阶微分方程组成矩阵形式,可以表示为
控制系统模型及转换
3.1.3 系统的状态空间模型 微分方程和传递函数均是描述系统性能的数学模型,它
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
实验二 控制系统的数学模型、转换及连续系统的数字仿真
1、实验目的与基本要求
(1)利用MA TLAB 描述控制系统的各种数学模型; (2)利用MA TLAB 实现系统数学模型间的相互转换;
(3)利用MA TLAB 实现控制系统的串联、并联和反馈连接。
(4)掌握面向系统微分方程的连续系统的数字仿真方法及程序; (5)掌握面向系统结构图的连续系统的数字仿真方法及程序; (6)连续系统的快速仿真。
2、实验环境
(1) 微机一台
(2) MATLAB6.5或者MATLAB7软件
3、实验内容
1、MA TLAB 描述控制系统的各种数学模型 例1 若给定系统的传递函数为
将其用MATLAB 语句表示。
num=4*conv([1,2],[1,6,6])
den=conv([1,0],conv([1,1],conv([1,1],conv([1,1],[1,3,2,5])))) printsys(num,den)
num/den =
4 s^3 + 32 s^2 + 72 s + 48
----------------------------------------------------- s^7 + 6 s^6 + 14 s^5 + 21 s^4 + 24 s^3 + 17 s^2 + 5 s
例2 设系统的状态空间表达式为 将其用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]; >> 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)
)
523()1()
66)(2(4)(2332+++++++=
s s s s s s s s s G ⎪⎪⎪
⎩⎪⎪⎪⎨⎧⎥⎦
⎤⎢⎣⎡=⎥⎥⎥⎦
⎤⎢⎢⎢⎣⎡----+⎥⎥⎥⎦⎤⎢⎢⎢⎣⎡-----=)(01000
1)()(311111
)(4032/122/3100)(t x t y t u t x t x
a =
0 0 1.0000
-1.5000 -2.0000 -0.5000
-3.0000 0 -4.0000
b =
1 1
-1 -1
-1 -3
c =
1 0 0
0 1 0
d =
0 0
0 0
>>
2、利用MATLAB实现系统数学模型间的转换
将例2状态空间表达式转换为传递函数;[num,den]=ss2tf(a,b,c,d,1)
num =
0 1.0000 5.0000 6.0000
0 -1.0000 -5.0000 -6.0000 den =
1 6 11 6
>> [num,den]=ss2tf(a,b,c,d,2)
num =
0 1.0000 3.0000 2.0000
0 -1.0000 -4.0000 -3.0000
den =
1 6 11 6
3、利用MATLAB实现控制系统的串联、并联和反馈连接
图2-7
已知系统的方框图如图2-7所示,求系统的传递函数。
num1=[1];den1=[2 0.5];num2=[10];den2=[1 1];num3=[0.1];den3=[1];num4=[540];den4=[1];num5=[1];den5=[1];
>> [n1,d1]=series(num2,den2,num1,den1);[n2,d2]=feedback(n1,d1,num3,den3);
>> [n3,d3]=series(num4,den4,n2,d2);[n4,d4]=feedback(n3,d3,num5,den5);
>> printsys(n4,d4)
num/den =
5400
----------------------
2 s^2 + 2.5 s + 5401.5
例3假设单变量系统如教材图3-5所示。
试根据四阶龙格库塔法,熟悉MATLAB仿真程序,求输出量y的动态响应曲线。
r=2;num=8;den=[1 3 0];num2=[1];den2=[1];
[no,do]=feedback(num,den,num2,den2);
[a,b,c,d]=tf2ss(no,do);
tf=input('仿真时间tf: ');h=input('计算步长h: ');
x=zeros(length(a),1);y=0;t=0;
for i=1:tf/h
k1=a*x+b*r;
k2=a*(x+h*k1/2)+b*r;
k3=a*(x+h*k2/2)+b*r;
k4=a*(x+h*k3/2)+b*r;
x=x+h*(k1+2*k2+2*k3+k4)/6;
y=[y;c*x];
t=[t;t(i)+h];
end
plot(t,y)
00.51 1.52 2.53 3.54 4.55
0.5
1
1.5
2
2.5
例4 假设某一系统由四个典型环节组成,如图3-11所示。
1、给出典型环节的参数矩阵P
2、给出连接矩阵W 、W 0和W c ;
3、熟悉 MATLAB 仿真程序,求输出量y 的动态响应曲线。
%ex3_2.m r=10;
p=[0.1 1 0.5 1;0 1 1 0;2 1 2 0;10 1 10 0]; W=[0 0 0 -1;1 0 0 0;0 1 0 0;0 0 1 0]; W0=[1;0;0;0];Wc=[0 0 0 1];
Tf=input('仿真时间Tf = ');h=input('计算步长h = ');
A1=diag(p(:,1));B1=diag(p(:,2));C1=diag(p(:,3));D1=diag(p(:,4)); H=B1-D1*W;Q=C1*W-A1; A=inv(H)*Q;B=inv(H)*C1*W0;
x=[zeros(length(A),1)];y=[zeros(length(Wc(:,1)),1)]; t=0;
for i = 1:Tf/h
K1=A*x+B*r;
K2=A*(x+h*K1/2) + B*r; K3=A*(x+h*K2/2) + B*r;
r
图3-11
Ⅰ
Ⅱ
Ⅲ
Ⅳ
K4=A*(x+h*K3) + B*r;
x=x+h*(K1+2*K2+2*K3+K4)/6;
y=[y,Wc*x];t=[t,t(i)+h];
end
plot(t,y)。