系统仿真综合实验报告.docx
- 文档编号:6592912
- 上传时间:2023-01-08
- 格式:DOCX
- 页数:69
- 大小:997.94KB
系统仿真综合实验报告.docx
《系统仿真综合实验报告.docx》由会员分享,可在线阅读,更多相关《系统仿真综合实验报告.docx(69页珍藏版)》请在冰豆网上搜索。
系统仿真综合实验报告
(此文档为word格式,下载后您可任意编辑修改!
)
合肥工业大学电气与自动化工程学院
综合实验报告
实验名称:
系统仿真综合实验
姓名:
学号:
专业班级:
实验地点:
指导教师:
成绩:
日期:
2012年7月
实验一MATLAB基本操作
实验目的
1.熟悉MATLAB实验环境,练习MATLAB命令、m文件、Simulink的基本操作。
2.利用MATLAB编写程序进行矩阵运算、图形绘制、数据处理等。
3.利用Simulink建立系统的数学模型并仿真求解。
实验原理
MATLAB环境是一种为数值计算、数据分析和图形显示服务的交互式的环境。
MATLAB有3种窗口,即:
命令窗口(TheCommandWindow)、m-文件编辑窗口(TheEditWindow)和图形窗口(TheFigureWindow),而Simulink另外又有Simulink模型编辑窗口。
1.命令窗口(TheCommandWindow)
当MATLAB启动后,出现的最大的窗口就是命令窗口。
用户可以在提示符“>>”后面输入交互的命令,这些命令就立即被执行。
在MATLAB中,一连串命令可以放置在一个文件中,不必把它们直接在命令窗口内输入。
在命令窗口中输入该文件名,这一连串命令就被执行了。
因为这样的文件都是以“.m”为后缀,所以称为m-文件。
2.m-文件编辑窗口(TheEditWindow)
我们可以用m-文件编辑窗口来产生新的m-文件,或者编辑已经存在的m-文件。
在MATLAB主界面上选择菜单“File/New/M-file”就打开了一个新的m-文件编辑窗口;选择菜单“File/Open”就可以打开一个已经存在的m-文件,并且可以在这个窗口中编辑这个m-文件。
3.图形窗口(TheFigureWindow)
图形窗口用来显示MATLAB程序产生的图形。
图形可以是2维的、3维的数据图形,也可以是照片等。
MATLAB中矩阵运算、绘图、数据处理等内容参见教材《自动控制系统计算机仿真》的相关章节。
Simulink是MATLAB的一个部件,它为MATLAB用户提供了一种有效的对反馈控制系统进行建模、仿真和分析的方式。
有两种方式启动Simulink:
1.在Commandwindow中,键入simulink,回车。
2.单击工具栏上Simulink图标。
启动Simulink后,即打开了Simulink库浏览器(Simulinklibrarybrowser)。
在该浏览器的窗口中单击“Createanewmodel(创建新模型)”图标,这样就打开一个尚未命名的模型窗口。
把Simulink库浏览器中的单元拖拽进入这个模型窗口,构造自己需要的模型。
对各个单元部件的参数进行设定,可以双击该单元部件的图标,在弹出的对话框中设置参数。
实验内容
1用MATLAB可以识别的格式输入下面两个矩阵
再求出它们的乘积矩阵C,并将C矩阵的右下角2×3子矩阵赋给D矩阵。
赋值完成后,调用相应的命令查看MATLAB工作空间的占用情况。
答案:
1)程序:
A=[1233;2357;1357;3239;1894];B=[1+4i43678;233554+2i;26+7i5342;189543];
C=A*B
D=C(4:
5,4:
6)
结果:
C=
1.0e+002*
Columns1through4
0.1400+0.0400i0.5200+0.2100i0.51000.4000
0.2500+0.0800i1.0300+0.3500i1.03000.7700
0.2400+0.0400i0.9900+0.3500i1.00000.7100
0.2200+0.1200i1.0800+0.2100i1.11000.8200
0.3900+0.0400i1.1400+0.6300i1.08000.9300
Columns5through6
0.41000.3100+0.0400i
0.77000.5900+0.0600i
0.70000.5100+0.0600i
0.79000.6500+0.0400i
0.99000.7000+0.1600i
D=
82.000079.000065.0000+4.0000i
93.000099.000070.0000+16.0000i
工作空间:
NameValue
A<5x4double>
B<4x6double>
C<5x6double>
D[82.000+0.000i,79.000+0.000i,65.000+4.000i;93.000+0.000i,99.000+0.000i,70.000+16.000i]
小结:
matlab通过确认下标,可以对矩阵进行插入子块、提取子块和重排子块的操作。
如果提取子块时,n或m是常数,则返回指定的行列;如果n或m是向量,则返回的是指定矩阵的子块。
2分别用for和while循环结构编写程序,求出
答案:
程序1:
s=0;
fork=0:
63;
s=s+2^k;
end
disp('Thesumis'),s
结果:
Thesumis
s=
1.8447e+019
程序2:
>>s=0;
k=0;
whilek<=63;
s=s+2^k;
k=k+1;
end
disp('Thesumis'),s
结果:
Thesumis
s=
1.8447e+019
小结:
在for循环语句,循环体内不能出现对循环控制变量的重新设置,否则会出错;while循环语句中,在语句内必须有可以修改循环控制变量的命令,否则将陷入死循环,除非循环语句中有控制退出循环的语句。
3选择合适的步距绘制出下面的图形
(1),其中
(2),其中
答案:
(1)
t=0.1:
0.001:
10;
y=sin(t.^(-1));
plot(t,y)
小结:
t=0.1:
0.001:
10是代表一个步长为0.001的向量,t.^(-1)是代表这个向量的点运算,而不是代表这个向量的向量运算,运算才不会出错。
(2)
t=linspace(-pi,pi,60);
y=sin(tan(t))-tan(sin(t));
plot(t,y)
小结:
linspace函数能够生成线性分度的向量。
4对下面给出的各个矩阵求取矩阵的行列式、秩、特征多项式、范数。
,
,
答案:
程序:
A=[7.53.500;8334.10;09103-1.5;003.719.3];
B=[5765;71087;68109;57910];
C=[1234;5678;9101112;13141516];
D=[3-3-24;5-518;1185-7;5-1-3-1];
detA=det(A),rankA=rank(A),polyA=poly(A),normA=norm(A)
detB=det(B),rankB=rank(B),polyB=poly(B),normB=norm(B)
detC=det(C),rankC=rank(C),polyC=poly(C),normC=norm(C)
detD=det(D),rankD=rank(D),polyD=poly(D),normD=norm(D)
结果:
detA=
4.3222e+005
rankA=
4
polyA=
1.0e+005*
0.0000-0.00160.0713-1.06594.3222
normA=
103.7228
detB=
1.0000
rankB=
4
polyB=
1.0000-35.0000146.0000-100.00001.0000
normB=
30.2887
detC=
4.7332e-030
rankC=
2
polyC=
1.0000-34.0000-80.0000-0.0000-0.0000
normC=
38.6227
detD=
595.0000
rankD=
4
polyD=
1.0000-2.0000-32.0000532.0000595.0000
normD=
16.6958
小结:
det、rank、poly、norm分别求出矩阵的行列式、秩、特征多项式以及范数
5求解下面的线性代数方程,并验证得出的解真正满足原方程。
(a)
,(b)
答案:
(a).
程序:
A=[721-2;9153-2;-2-2115;13213];
B=[4;7;-1;0];
X=inv(A)*B
结果:
X=
0.4979
0.1445
0.0629
-0.0813
(b)
A=[13213;721-2;7153-2;-2-2115];
B=[90;64;117;-2-1];
X=inv(A)*B
结果
X=
0.92470.4695
0.41400.2186
-0.19070.0791
0.5550-0.0987
小结:
求矩阵A*B=C,已知A,C求B,则应用逆矩阵来求解即B=(A*(-1))*C
6假设有一组实测数据
x
0.1
0.2
0.3
0.4
0.5
0.6
0.7
0.8
0.9
1
y
2.3201
2.6470
2.9707
3.2885
3.6008
3.9090
4.2147
4.5191
4.8232
5.1275
用最小二乘法拟合,求出相应的二次函数。
答案:
程序
x=0.1:
0.1:
1;
y=[2.32012.64702.97073.28853.60083.90904.21474.51914.82325.1275];
p=polyfit(x,y,2)
结果:
p=
-0.15633.28281.9967
小结:
polyfit是最小二乘拟合的函数,本题说明用最小二乘拟合求得的二次函数为y=-0.1563*x^2+3.2828*x+1.9967
7考虑线性微分方程
(1)试用Simulink搭建起系统的仿真模型,并绘制出仿真结果曲线。
(2)将给定的微分方程转换成状态方程,并建立S函数,再利用Simulink进行仿真。
答案:
(1)
参数设置:
Integrator:
Initialcondition分别设置成0.2,0.5,0.5,1
Gain0,1,2,3:
gain分别设置成3,3,4,5
SineWave:
Frequency(rad/sec)设置成4;phase(rad)设置成pi/3
TransferFcn:
Numeratorcoefficients设置成[1];Denominatorcoefficients设置成[15]
TransferFcn1:
Numeratorcoefficients设置成[1];Numeratorcoefficients设置成[13]
Add:
Listofsigns设置成++----
仿真模型:
(2)
建立相应的S函数:
function[sys,x0,str,ts]=reds7_2(t,x,u,flag,A,B,C,D)
switchflag
case0
[sys,x0,str,ts]=mdlInitializeSizes(A,D);
case1
sys=mdlDerivatives(t,x,u,A,B);
case3
sys=mdlOutputs(t,x,u,C,D);
case{2,4,9}
sys=[];
otherwise
error(['Unhandledflag=',num2str(flag)]);
end
function[sys,x0,str,ts]=mdlInitializeSizes(A,D)
sizes=simsizes;
sizes.NumContStates=size(A,1);
sizes.NumDiscStates=0;
sizes.NumOutputs=size(A,1)+size(D,1);
sizes.NumInputs=size(D,2);
sizes.DirFeedthrough=1;
sizes.NumSampleTimes=1;
sys=simsizes(sizes);
x0=[1;0.5;0.5;0.2];
str=[];
ts=[-10];
functionsys=mdlDerivatives(t,x,u,A,B)
sys=A*x+B*u;
functionsys=mdlOutputs(t,x,u,C,D)
sys=[C*x+D*u;x];
由此建立仿真模型
仿真曲线:
小结:
可以根据微分方程做出状态图并赋初值,得到系统的仿真模型以及仿真结果曲线;通过构建S函数,可以将状态方程封装在S函数,以简化运算。
8建立下图所示非线性系统的Simulink模型,并观察在单位阶跃信号输入下系统的输出曲线和误差曲线。
答案:
参数设置:
Relay:
Switchonpoint设置成0.5;Switchonpoint设置成0.5;Outputwhenon设置成2.5;Outputwhenoff设置成0
Relay1:
Switchonpoint设置成-0.5;Switchonpoint设置成-0.5;Outputwhenon设置成2.5;Outputwhenoff设置成0
TransportDelay:
Timedelay设置成0.4
TransferFcn:
Numeratorcoefficients设置成[30];Denominatorcoefficients设置成[10.51]
TransferFcn1:
Numeratorcoefficients设置成[30];Denominatorcoefficients设置成[16.51]
仿真模型:
仿真曲线
小结:
1.用两个继电器并联得到具有死去特性的三位置继电特性
2.从图中可以看出输出比较稳定
实验二经典控制理论
实验目的
以MATLAB及Simulink为工具,对控制系统进行时域、频域及根轨迹分析。
实验原理
1、时域分析法是根据系统的微分方程(或传递函数),利用拉普拉斯变换直接解出动态方
程,并依据过程曲线及表达式分析系统的性能。
时域响应指标如图所示。
延迟时间td,指响应曲线第一次达到其终值一半所需要的时间。
上升时间tr,指响应曲线从终值10%上升到终值90%所需要的时间;对于有振荡的系统,也可定义为响应从零第一次上升到终值所需要的时间。
上升时间是系统响应速度的一种度量。
峰值时间tp,指响应超过终值达到第一个峰值所需要的时间。
调节时间ts,指响应达到并保持在终值±5%(或±2%)内所需要的时间。
超调量σ%,指响应的最大偏离量h(tp)与终值h(∞)之差的百分比,即:
稳态误差,描述系统稳态性能的一种性能指标。
2、频域分析法通常从频率特性出发对系统进行研究。
在工程分析和设计中,通常把频率特
性画成一些曲线,从频率特性曲线出发进行研究。
这些曲线包括幅频特性和相频特性曲线,幅相频率特性曲线,对数频率特性曲线以及对数幅相曲线等,其中以幅相频率特性曲线,对数频率特性曲线应用最广。
对于最小相位系统,幅频特性和相频特性之间存在着唯一的对于关系,故根据对数幅频特性,可以唯一地确定相应的相频特性和传递函数。
根据系统的开环频率特性去判断闭环系统的性能,并能较方便地分析系统参量对系统性能的影响,从而指出改善系统性能的途径。
3、根轨迹是求解闭环系统特征根的图解方法。
由于控制系统的动态性能是由系统闭环零极点共同决定,控制系统的稳定性由闭环系统极点唯一确定,利用根轨迹确定闭环系统的零极点在s平面的位置,分析控制系统的动态性能。
实验内容
*1.控制系统数学模型的转换
《自动控制系统计算机仿真》教材第4章中的所有例题
【例4-1】已知系统的传递函数如下,利用MATLAB建立其相应的传递函数系统模型
答案
程序:
clc,clear
num=5*[203];
den=conv(conv(conv([100],[31]),conv([12],[12])),[5038]);
printsys(num,den,'s')
G=tf(num,den)
结果:
小结:
G=tf(num,den)是用来求传递函数的系统模型的函数
【例4-2】已知系统传递函数如下
应用MATLAB函数将其转换为状态方程形式的模型
答案:
程序:
clc
clear
num=[1224020];
den=[24622];
sys=tf(num,den)
s=ss(sys)
结果:
Transferfunction:
12s^3+24s^2+20
2s^4+4s^3+6s^2+2s+2
a=
x1x2x3x4
x1-2-1.5-0.5-0.5
x22000
x30100
x40010
b=
u1
x14
x20
x30
x40
c=
x1x2x3x4
y11.51.501.25
d=
u1
y10
Continuous-timemodel.
小结:
tf(num,den)函数用来求传递函数的状态模型
【例4-3】某线性定常系统的状态空间表达式如下,求该系统的传递函数。
答案:
clc
clear
A=[011;001;-10-17-8];
B=[0;0;1];C=[561];D=0;
SS=ss(A,B,C,D)
G1=tf(SS)
结果:
Transferfunction:
s^2+11s+5
s^3+8s^2+27s+10
小结:
ss(A,B,C,D)函数是用来求状态方程的传递函数
【例4-4】对于例4-3题中的线性定常系统,将其转换为zpk形式
答案:
程序:
clc
clear
A=[011;001;-10-17-8];
B=[0;0;1];C=[561];D=0;
[z,p,k]=ss2zp(A,B,C,D)
G1=zpk(z,p,k)
结果:
z=
-10.5249
-0.4751
p=
-0.4199
-3.7901+3.0745i
-3.7901-3.0745i
k=
1.0000
Zero/pole/gain:
(s+10.52)(s+0.4751)
(s+0.4199)(s^2+7.58s+23.82)
小结:
zpk(z,p,k)是用来求状态方程的zpk形式的函数
【例4-5】某系统的传递函数如下,求它的部分分式形式。
答案:
程序:
clc
clear
num=[2010];den=[11574120];
[R,P,H]=residue(num,den)
结果
R=
-55.0000
90.0000
-35.0000
P=
-6.0000
-5.0000
-4.0000
H=
[]
小结:
[R,P,H]=residue(num,den)函数是用来求传递函数的部分分式函数
【例4-6】某连续系统的状态空间表达式如下,采用零阶保持器将其离散化,设采样周期为0.1秒,求离散化的系统方程。
答案:
程序:
A=[010;001;-6-11-6];
B=[10;2-1;02];
C=[1-10;21-1];
D=0;
T=0.1;
G=ss(A,B,C,D);
Gn=c2d(G,T)
结果
a=
x1x2x3
x10.99910.09840.004097
x2-0.024580.95410.07382
x3-0.4429-0.83660.5112
b=
u1u2
x10.1099-0.004672
x20.1959-0.0902
x3-0.11640.1936
c=
x1x2x3
y11-10
y221-1
d=
u1u2
y100
y200
Samplingtime:
0.1
Discrete-timemodel.
小结:
Gn=c2d(G,T)采用零阶保持器将系统模型离散化,求出采样周期为T离散化的系统方程的函数
【例4-7】已知系统如图所示,利用MATLAB求出系统的状态空间表达式。
其中,sys1:
sys2:
答案:
程序:
A1=[-917;-13];B1=[0-1;-10];C1=[-32;-1318];D1=[-10;-10];
num=[2];den=[12];
G1=ss(A1,B1,C1,D1);
G2=tf(num,den);
sys=feedback(G1,G)
结果
a=
x1x2x3
x1-9171
x2-130
x3-2636-2
b=
u1u2
x10-1
x2-10
x3-20
c=
x1x2x3
y1-320
y2-13180
d=
u1u2
y1-10
y2-10
Continuous-timemodel.
小结:
sys=feedback(G1,G)是用来求反馈系统的函数
【例4-8】已知系统的状态空间表达式如下,求线性变换,将其变换成能控标准形。
答案:
程序:
A=[12-1;021;1-32];B=[0;1;1];C=[101];
Qc=ctrb(A,B);
A1=poly(A)
ifrank(Qc)==3
disp('Thesystemiscontrollable')
Q=Qc*[A1(3)A1
(2)1;A1
(2)
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 系统 仿真 综合 实验 报告