5仿真试验指导书.docx
- 文档编号:8161119
- 上传时间:2023-01-29
- 格式:DOCX
- 页数:14
- 大小:144.41KB
5仿真试验指导书.docx
《5仿真试验指导书.docx》由会员分享,可在线阅读,更多相关《5仿真试验指导书.docx(14页珍藏版)》请在冰豆网上搜索。
5仿真试验指导书
目录
第一章MATLAB窗口环境
一、MATLAB语言的显著特点…………………………………………………2
二、MATLAB命令窗口…………………………………………………………2
三、MATLAB的工作空间………………………………………………………2
四、使用帮助……………………………………………………………………2
第二章MATLAB实验任务书
实验一、MATLAB基本指令的使用……………………………………………3
实验二、M-file文件的编写……………………………………………………4
实验三、控制系统的稳定性分析……………………………………………5
实验四、自动控制系统PID控制仿真…………………………………………6
第三章SIMULINK窗口环境
一、启用Simulink……………………………………………………………7
二、Simulink模块库简介……………………………………………………7
第四章SIMULINK实验任务书
实验五、计算机数值仿真的常用算法………………………………………10
实验六、直流调速系统的simulink仿真……………………………………11
实验七、离散系统的仿真分析………………………………………………12
第一章MATLAB的窗口环境
一、MATLAB语言的显著特点
1、具有强大的矩阵运算能力:
MatrixLaboratory(矩阵实验室),使得矩阵运算非常简单。
2、是一种演算式语言
MATLAB的基本数据单元是既不需要指定维数,也不需要说明数据类型的矩阵(向量和标量为矩阵的特例),而且数学表达式和运算规则与通常的习惯相同。
因此MATLAB语言编程简单,使用方便。
二、MATLAB命令窗口
1、启动MATLAB命令窗口
计算机安装好MATLAB之后,双击MATLAB图标,就可以进入命令窗口,此时意味着系统处于准备接受命令的状态,可以在命令窗口中直接输入命令语句。
MATLAB语句形式》变量=表达式;通过等于符号将表达式的值赋予变量。
当键入回车键时,该语句被执行。
语句执行之后,窗口自动显示出语句执行的结果。
如果希望结果不被显示,则只要在语句之后加上一个分号“;”即可。
此时尽管结果没有显示,但它依然被赋值并在MATLAB工作空间中分配了内存。
2、命令行编辑器
方向键和控制键可以编辑修改已输入的命令:
向上箭头回调上一行命令;向下箭头回调下一行命令;回车前进一行;空格键显示下一页;q结束当前显示;多行命令(…)。
三、MATLAB的工作空间
1、MATLAB的工作空间包含了一组可以在命令窗口中调整(调用)的参数
who:
显示当前工作空间中所有变量的一个简单列表
whos:
则列出变量的大小、数据格式等详细信息
clear:
清除工作空间中所有的变量
clear变量名:
清除指定的变量
2、文件管理的命令,包括列文件名、显示或删除文件、显示或改变当前目录等。
what:
显示当前目录下所有与matlab相关的文件及它们的路径。
dir:
显示当前目录下所有的文件
which:
显示某个文件的路径
cdpath:
由当前目录进入path目录
cd..:
返回上一级目录
cd:
显示当前目录
typefilename:
在命令窗口中显示文件filename
deletefilename:
删除文件filename
四、使用帮助
1、help命令,在命令窗口中显示
MATLAB的所有函数都是以逻辑群组方式进行组织的,而MATLAB的目录结构就是以这些群组方式来编排的。
helpmatfun:
矩阵函数-数值线性代数
helpgeneral:
通用命令
helpgraphics:
通用图形函数
helpelfun:
基本的数学函数
helpelmat:
基本矩阵和矩阵操作
helpdatafun:
数据分析和傅立叶变换函数
helpops:
操作符和特殊字符
helppolyfun:
多项式和内插函数
helplang:
语言结构和调试
helpstrfun:
字符串函数
helpcontrol:
控制系统工具箱函数
2、helpwin:
帮助窗口
3、helpdesk:
帮助桌面,浏览器模式
4、lookfor命令:
返回包含指定关键词的那些项
5、demo:
打开示例窗口
第二章MATLAB实验任务书
实验一MATLAB语言程序设计基础
实验目的:
通过简单的编程:
MATLAB语言的数据结构、矩阵运算、M函数,使学生初步掌握MATLAB语言程序设计基础。
实验内容:
利用MATLAB语言实现矩阵的快速运算。
1.已知矩阵
求
a+ba-ba^3a.*ba./ba.\ba.^3
实验步骤:
》a=[123;456]'
》a=[123;456].'
》b=[1+2i2-7i]'
》b=[1+2i2-7i].'
》a=[12;34];b=[35;59]
》c=a+b,d=a-b,
》a*b,
》a/b
》a\b
》a^3
》a.*b
》a./b
》a.\b
》a.^3
2.已知矩阵
求A&BA==B
实验步骤:
》A=[0234;1350];B=[1053;1505];A&B
》A=[0234;1350];B=[1053;1505];A==B
实验二M-file文件的编写
实验目的:
说明M脚本文件的编写技术,以及如何使用前面所讲述的MATLAB语言的条件判断与循环语句。
由此可见使用MATLAB语言进行程序设计简单而又快速。
实验内容:
编写一个M文件绘制函数
在区间中[03]的图形。
实验步骤:
在MATLAB命令行下输入edit命令以打开M文件编辑器,输入以下程序:
x=-6:
0.1:
6;%设定自变量x的取值范围
leng=length(x);%计算向量x的长度
form=1:
leng%计算函数值
ifx(m)<=0%判断x取值所在范围
y(m)=sin(x(m));%计算分段函数值
elseifx(m)<=3
y(m)=x(m);%计算分段函数值
else
y(m)=-x(m)+6;%计算分段函数值
end
end
plot(x,y,'*'),grid;%绘制函数曲线
将其存盘为demomfile1.m
然后在MATLAB命令行下输入:
>>demomfile1
>>t=0:
.1:
2*pi;y=sin(t);plot(t,y)
回车则生成该函数曲线:
实验三控制系统的稳定性分析
实验内容:
1、已知某系统的模型:
要求判断系统的稳定性及系统是否为最小相位系统;求系统的阶跃响应和冲激响应。
实验步骤:
在matlab命令提示符下键入:
〉〉A=[12-1-2;2630;47-8-5;7216];B=[-1;0;0;1];
〉〉C=[-2561];D=[7]
〉〉[ZPK]=ss2zp(A,B,C,D)
如果闭环极点全部在S平面左半平面,则系统是稳定的。
如果全部零极点都位于S左半平面;则系统是最小相位系统。
然后键入如下命令,即可得到系统的阶跃响应和冲激响应曲线
〉〉step(A,B,C,D)
〉〉[y,x,t]=step(A,B,C,D)
〉〉impulse(A,B,C,D,iu)
〉〉[y,x,t]=impulse(A,B,C,D)
2、nyquist曲线的绘制
figure('pos',[30100300300],'color','w');
axes('pos',[0.150.2,0.7,0.7]);
gg=zpk([5],[-1-2-3-4],-25);
gg1=zpk([-5],[-1-2-3-4],25);
nyquist(gg);
holdon;
nyquist(gg1);
实验四自动控制系统PID控制仿真
实验内容:
被控对象为一电机模型的传递函数G(s)=1/(Js2+Bs),连续系统的数字PID控制仿真。
J=0.0067,B=0.10,采用M函数形式,利用ODE45的方法求解连续对象方程,输入信号rin(k)=0.50sin(2πt),采用PID控制方法设计控制器,Kp=20,Kd=0.5,并根据阶跃响应特性优化PID参数;
实验目的:
通过编写自动控制系统PID控制的仿真程序,掌握Euler算法、Runge-Kutta算法对常微分方程计算精度的影响。
实验步骤:
1打开matlab应用程序,在matlab的命令窗口选择file/new/M-file,在新窗口键入如下程序:
ts=0.001;%Samplingtime
xk=zeros(2,1);
e_1=0;
u_1=0;
fork=1:
1:
2000
time(k)=k*ts;
rin(k)=0.50*sin(1*2*pi*k*ts);
para=u_1;
tSpan=[0ts];
[tt,xx]=ode45('chap1_2f',tSpan,xk,[],para);
xk=xx(length(xx),:
);
yout(k)=xk
(1);
e(k)=rin(k)-yout(k);
de(k)=(e(k)-e_1)/ts;
u(k)=20.0*e(k)+0.50*de(k);
%Controllimit
ifu(k)>10.0
u(k)=10.0;
end
ifu(k)<-10.0
u(k)=-10.0;
end
u_1=u(k);
e_1=e(k);
end
figure
(1);
plot(time,rin,'r',time,yout,'b');
xlabel('time(s)'),ylabel('rin,yout');
figure
(2);
plot(time,rin-yout,'r');
xlabel('time(s)'),ylabel('error');
%连续对象子程序
functiondy=PlantModel(t,y,flag,para)
u=para;
J=0.0067;B=0.1;
dy=zeros(2,1);
dy
(1)=y
(2);
dy
(2)=-(B/J)*y
(2)+(1/J)*u;
2打开file/save,将文件保存为conPID.m
3在命令工具栏中选择debug/simulation或在matlab命令提示行键入conPID.m,执行该程序。
仿真控制参数通过simulation/simulationparameters菜单项选择,仿真时间15S,仿真算法分别选择ode45/ode23,其他参数为默认参数。
4程序执行结果即为连续系统的数字PID控制阶跃响应曲线。
第三章SIMULINK窗口环境
一、启用Simulink
由于Simulink是基于MATLAB环境之上的高性能的系统级仿真设计平台,因此启动Simulink之前必须首先运行MATLAB,然后才能启动Simulink并建立系统模型。
启动Simulink有两种方式:
(1)用命令行方式启动Simulink。
即在MATLAB的命令窗口中直接键入如下命令:
>>simulink
(2)使用工具栏按钮启动Simulink。
即用鼠标单击MATLAB工具栏中的Simulink按钮。
二、二、Simulink模块库简介
为便于用户能够快速构建自己所需的动态系统,Simulink提供了大量以图形方式给出的内置系统模块,使用这些内置模块可以快速方便地设计出特定的动态系统。
SIMILINK模块库按功能进行分类,包括以下8类子库:
Continuous(连续模块)
Discrete(离散模块)
Function&Tables(函数和平台模块)
Math(数学模块)
Nonlinear(非线性模块)
Signals&Systems(信号和系统模块)
Sinks(接收器模块)
Sources(输入源模块)
1、连续模块(Continuous)continuous.mdl
Integrator:
输入信号积分
Derivative:
输入信号微分
State-Space:
线性状态空间系统模型
Transfer-Fcn:
线性传递函数模型
Zero-Pole:
以零极点表示的传递函数模型
Memory:
存储上一时刻的状态值
TransportDelay:
输入信号延时一个固定时间再输出
VariableTransportDelay:
输入信号延时一个可变时间再输出
2、离散模块(Discrete)discrete.mdl
Discrete-timeIntegrator:
离散时间积分器
DiscreteFilter:
IIR与FIR滤波器
DiscreteState-Space:
离散状态空间系统模型
DiscreteTransfer-Fcn:
离散传递函数模型
DiscreteZero-Pole:
以零极点表示的离散传递函数模型
First-OrderHold:
一阶采样和保持器
Zero-OrderHold:
零阶采样和保持器
UnitDelay:
一个采样周期的延时
3、Function&Tables(函数和平台模块)function.mdl
Fcn:
用自定义的函数(表达式)进行运算
MATLABFcn:
利用matlab的现有函数进行运算
S-Function:
调用自编的S函数的程序进行运算
Look-UpTable:
建立输入信号的查询表(线性峰值匹配)
Look-UpTable(2-D):
建立两个输入信号的查询表(线性峰值匹配)
4、Math(数学模块)math.mdl
Sum:
加减运算
Product:
乘运算
DotProduct:
点乘运算
Gain:
比例运算
MathFunction:
包括指数函数、对数函数、求平方、开根号等常用数学函数
TrigonometricFunction:
三角函数,包括正弦、余弦、正切等
MinMax:
最值运算
Abs:
取绝对值
Sign:
符号函数
LogicalOperator:
逻辑运算
RelationalOperator:
关系运算
ComplextoMagnitude-Angle:
由复数输入转为幅值和相角输出
Magnitude-AngletoComplex:
由幅值和相角输入合成复数输出
ComplextoReal-Imag:
由复数输入转为实部和虚部输出
Real-ImagtoComplex:
由实部和虚部输入合成复数输出
5、Nonlinear(非线性模块)nonlinear.mdl
Saturation:
饱和输出,让输出超过某一值时能够饱和。
Relay:
滞环比较器,限制输出值在某一范围内变化。
Switch:
开关选择,当第二个输入端大于临界值时,输出由第一个输入端而来,否则输出由第三个输入端而来。
ManualSwitch:
手动选择开关
6、Signal&Systems(信号和系统模块)sigsys.mdl
In1:
输入端。
Out1:
输出端。
Mux:
将多个单一输入转化为一个复合输出。
Demux:
将一个复合输入转化为多个单一输出。
Ground:
连接到没有连接到的输入端。
Terminator:
连接到没有连接到的输出端。
SubSystem:
建立新的封装(Mask)功能模块
7、Sinks(接收器模块)sinks.mdl
Scope:
示波器。
XYGraph:
显示二维图形。
ToWorkspace:
将输出写入MATLAB的工作空间。
ToFile(.mat):
将输出写入数据文件。
8、Sources(输入源模块)sources.mdl
Constant:
常数信号。
Clock:
时钟信号。
FromWorkspace:
来自MATLAB的工作空间。
FromFile(.mat):
来自数据文件。
PulseGenerator:
脉冲发生器。
RepeatingSequence:
重复信号。
SignalGenerator:
信号发生器,可以产生正弦、方波、锯齿波及随意波。
SineWave:
正弦波信号。
Step:
阶跃波信号。
实验五计算机数值仿真的常用算法
实验内容:
通过编写二阶系统x(s)=(s+100)/(s2+100s+0.9999)simulink模型,比较使用不同算法对系统的影响。
实验目的:
熟练使用matlab仿真软件,掌握连续系统的数值积分仿真方法及算法的稳定性与步长的选取。
实验步骤:
1打开matlab命令窗口,输入命令simulink,将进入simulink库模块浏览界面,打开工具栏中file/new/model,simulink会打开名为untitled的模型窗口。
2双击simulink库模块浏览器窗口中的原图标,将输出显示模块库Sinks中的scope和toworkspace,连续模块库continuse中的integrator,mathoperation中的gain和sum拖曳到模型窗口。
3将鼠标指针放到积分模块的输出口处,鼠标指针变为十字叉型,拖曳鼠标从输出口到下一积分模块的输入口,连线完成。
其他模块的连接与此相同。
4仿真之前设置速度积分的initialcondition为0,位移积分的initialcondition为1,设置simulation/parameter对话框的solve页中的starttime为0,stoptime为500,选中workspaceI/O页中的savetoworkspace中的time,不选states和Output。
5首先使用ODE15S进行仿真,双击示波器模块,打开scope窗口。
选择模型窗口菜单中的simulation/state,仿真将执行,可见仿真只需几秒。
结果在示波器中显示。
输出量tout,xout向量被送到matlab工作间中,每个向量大约包括100个元素。
在matlab命令窗口中使用plot命令可以绘制图形。
6使用ODE45进行仿真,仿真会用很长时间。
输出量tout,xout大约15000个元素。
在matlab命令窗口中使用plot命令绘制第14000个点到14100点的过程变化曲线。
>>t=tout(14000:
14100);
>>x=xout(14001:
14101)-x(14000:
14100);
>>plot(t,x)
输出轨迹在以一个高频的量变化。
大约在-6次方的量级。
实验六直流调速系统的simulink仿真
实验内容:
对直流电机拖动系统进行simulink建模和仿真分析,并分析不同控制器参数对系统性能的影响。
优化控制器参数。
实验目的:
通过该实验掌握simulink下的建模与仿真,及其在自动控制系统中的应用。
实验步骤:
1如图所示,构造直流电机拖动系统的simulink模型,输入端采用两个信号叠加的形式,其中之一是实际输入的阶跃信号,另一个是系统的输入端子,控制系统的阶跃输入模块的跳跃时间为0,修改其它参数可直接双击其图标,在得出的对话框中填入适当的参数即可。
2选择simulation/start菜单项。
可得出仿真结果,该结果自动返回MATLAB的工作空间,其中时间变量为tout,输出信号的变量为yout.使用命令plot(tout,yout)可绘制出系统的阶跃响应曲线。
3若曲线不理想,将PI控制器参数调整,分子分别选择为0.17s+1,0.5s+1,s+1,1.5s+1可见分子参数为1.5s+1时能得到较满意的效果。
4若想优化PI控制器参数,在系统输出口上附加一个NCDOutport模块,在MATLAB命令提示行上键入PI控制器的比例、积分系数的初值。
>>Kp=10;Ki=1;双击NCD模块,得到界面,通过拖动水平或垂直滚动杆,可选择系统的阶跃响应各个指标。
也可通过Optimization/Parameters菜单项设置参数,按Done按钮关闭该对话框,启动Start,就可以寻优并动态显示曲线结果。
实验七离散系统的仿真分析
实验内容:
人口变化模型如下,设某一年的人口数目为p(n),其中n表示年份,它与上一年的人口p(n-1)、人口繁殖速率r以及新增资源所能满足的个体数目k之间的动力学方程由如下的差分方程所描述:
设人口初始值100000、人口繁殖速率1.05、新增资源所能满足的个体数目1000000,要求建立此人口动态变化系统的系统模型,并分析人口数目在0至100年之间的变化趋势。
实验步骤:
实验步骤:
1建立人口变化系统的模型
图1人口变化系统模型
2系统模块参数设置
系统模型建立之后,首先需要按照系统的要求设置各个模块的参数,如下所述:
(1)增益模块Gain表示人口繁殖速率,故取值为1.05。
(2)模块Gain1表示新增资源所能满足的个体数目,故取值为1000000。
(3)UnitDelay模块参数设置。
初始条件相当于人口初值p(0)=100000,采样时间设为1。
3系统仿真参数设置及仿真分析
使用Simulation菜单中的SimulationParameters设置系统仿真参数:
(1)仿真时间设置:
按照系统仿真的要求,设置系统仿真时间范围为0~100。
(2)离散求解器与仿真步长设置:
对离散系统进行仿真需要使用离散求解器。
对于离散系统的仿真,无论是采用定步长求解器还是采用变步长求解器,都可以对离散系统进行精确的求解。
这里选择定步长求解器对此系统进行仿真分析。
4对系统中各模块参数以及系统仿真参数进行正确设置之后,运行系统仿真,对人口数目在指定的时间范围之内的变化趋势进行分析。
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 仿真 试验 指导书