系统仿真与MATLAB语言
实验指导书
韶关学院2012级自动化专业系统仿真与MATLAB语言实验
说 明
1、 所有同学必须参加实验课,按照排定顺序上机。
2、 每次上机请登记在实验室记录本上,固定机位,一人一机。 3、 本课程7次上机实验 (其中前6次实验要提交纸质实验报告,
第7次实验提交电子版实验报告)。
4、 在机房内务必保持安静,不得大声喧哗,不得从事与实验无关事项,如打游戏、看电影等。 5、写好预习报告:
针对实验内容要求用自己的语言简要的写明实验目的、实验原理,并针对实验内容预先做好程序的编写。所有实验项目必须提前编写程序!!!不写预习报告不得参加实验!!! 6、数据记录
记录实验的原始数据,实验期间当场提交。拒绝抄袭。实验过程中要能回答我的提问。 7、实验内容
总结所做实验的内容 回答有关思考题
2014、9
实验一 MATLAB语言工作环境和基本操作
一、实验目的:熟悉MATLAB的工作环境,学会使用MATLAB进行一些简单的运算。 二、实验内容:MATLAB的启动和退出,熟悉MATLAB的桌面(Desktop),包括菜单
(Menu)、工具条 (Toolbar)、命令窗口(Command Window)、历史命令窗口、工作
空间(Workspace)等;完成一些基本的矩阵操作;学习使用在线帮助系统。
三、实验步骤:
1、启动MATLAB,熟悉MATLAB的桌面。
2、在命令窗口执行命令完成以下运算,观察workspace的变化,记录运算结果。 (1)(365-522-70)3 (2)area=pi*2.5^2
(3)已知x=3,y=4,在MATLAB中求z:
x2y3 z2xy(4)输入 C=1:2:20,则 C(i)表示什么?其中 i=1,2,3,…,10; (5)掌握MATLAB常用命令
>> who %列出工作空间中变量
>> whos %列出工作空间中变量,同时包括变量详细信息 >>save test %将工作空间中变量存储到test.mat文件中 >>load test %从test.mat文件中读取变量到工作空间中 >>clear %清除工作空间中变量
>>help 函数名 %对所选函数的功能、调用格式及相关函数给出说明 >>lookfor %查找具有某种功能的函数但却不知道该函数的准确名称 如: lookfor Lyapunov 可列出与Lyapunov有关的所有函数。
(6)将下面的矩阵赋值给变量m1,用whos命令察看m1在内存中占用的字节数,写出下
面各指令的运行结果并上机验证。
162313511108 m1=97612414151执行以下命令 >>m1( 2 , 3 ) >>m1( 7 ) >>m1( : , 3 )
>>m1( 2 : 3 , 1 : 3 )
>>m1( 1 ,4 ) + m1( 2 ,3 ) + m1( 3 ,2 ) + m1( 4 ,1) (7)执行命令>>help abs
查看函数abs的用法及用途,计算abs( 3 + 4i ) (8)执行命令
>>x=0:0.1:6*pi;
>>y=5*sin(x); >>plot(x,y)
(9)运行MATLAB的演示程序,>>demo,以便对MATLAB有一个总体了解。 (10) 设计M文件计算:
100x=0:0.1:10 2sumxi2xi
i0
当sum>1000时停止运算,并显示求和结果及计算次数。
(11)求[100,999]之间能被21整除的数的个数(提示利用函数rem)。 (12)建立一个字符串向量,删除其中的大写字母(使用find函数)。
四、思考题
1、以下变量名是否合法?为什么? (1)x2 (2)3col (3)_row (4)for
2、求以下变量的值,并在MATLAB中验证。 (1)a = 1 : 2 : 5 ;
(2)b = [ a' a' a' ] ; (3)c = a + b ( 2 , : )
实验2 MATLAB程序设计
一、实验目的和要求:
1、熟练掌握MATLAB的程序流程控制结构 2、熟练掌握M文件的结构
3、熟练掌握函数的调用和参数传递
4、掌握MATLAB程序编辑、运行及调试方法
二、实验内容:
MATLAB的语法规则简洁,编程效率高,作为一个完整的程序语言,MATLAB也有其各种程序流程控制、文件格式和函数调用的规则,通过函数的调用就能够组成庞大的程序,完成复杂的功能。
三、实验步骤:
启动MATLAB后,点击File|New|M-File,启动MATLAB的程序编辑及调试器(Editor/Debugger),编辑以下程序,点击File|Save保存程序,注意文件名最好用英文字符。点击Debug|Run运行程序,在命令窗口查看运行结果,程序如有错误则改正。 1、使用程序流程控制
Fibonacci数列的各元素为:1,1,2,3,5,8,...,满足以下关系: F1=1 F2=1
Fn=Fn-1+Fn-2
用M函数文件实现,数列的元素个数为输入变量。 (1)用while循环实现程序功能 (2)用for循环实现程序功能
(3)实现当某个元素大于50时,退出循环结构。(提示:使用break)
2、数论中一个有趣的题目:任意一个正整数,若为偶数,则用2除之,若为奇数,则与3相乘再加上1。重复此过程,最终得到的结果为1。如: 21
3105168421 63105168421
编写程序,并运行程序验证程序是否正确。
3、编写一个函数,计算下面函数的值,给出标量x的值,调用该函数后,返回y的值。 function [y]=myfun1(x)
选择一些数据测试你编写的函数。
sinx,y(x)x,x6,x00x3x3实验3 MATLAB绘图
一、实验目的和要求:
1、熟练掌握MATLAB二维曲线的绘制 2、熟练掌握图形的修饰 3、知道三维图形的绘制
4、熟练掌握各种特殊图形的绘制
二、实验内容:
MATLAB的图形功能非常强大,可以对二维、三维数据用图形表现,并可以对图形的线型、曲面、视角、色彩、光线等进行处理。与其他软件一样,MATLAB也可以实现GUI设计,是人机交互界面更加美观、方便。
三、实验步骤:
1、在同一坐标系下绘制下面三个函数在t[0,4]的图象,三条曲线分别采用不同的线形、颜色来绘制(此题采用两种不同的绘制方法实现在同一坐标系绘制三条曲线)。
y1ty2ty34e0.1tsin(t)
2、x=[-2π,2π],y1=sinx、y2=cosx、y3=sin2x、y4=cos 2x
(1)用MATLAB语言分四个区域分别绘制的曲线,并且对图形标题及横纵坐标轴进
行标注(如下图所示)。
图1 四分区绘制曲线
(2)另建一个窗口,不分区,用不同颜色、线型绘出四条曲线,并标注图例注解。
图2 同一窗口绘制多条曲线
3、三维空间曲线绘制
z=0:0.1:4*pi; x=cos(z); y=sin(z); plot3(x,y,z)
4、用mesh或surf函数,绘制下面方程所表示的三维空间曲面,x和y的取值范围设为[-3,3]。
x2y2z
10105、特殊图形
MATLAB还提供了一些特殊的曲线以满足特殊的要求。 对函数y=sinx,分别绘制: (1)绘制条形图(bar) (2)绘制实心图(fill) (3)绘制阶梯图(stairs) (3)绘制火柴杆图(stem)
实验4 MATLAB数值及符号计算
一、实验目的和要求:
1、熟练掌握MATLAB变量的使用
2、熟练掌握MATLAB矩阵和数组的运算 3、熟悉MATLAB多项式的运用
4、熟练掌握MATLAB符号表达式的创建 5、熟练掌握符号表达式的代数运算 6、熟练掌握符号微积分 7、掌握符号积分变换
8、熟悉符号方程的求解
二、实验内容和步骤:
14711232410 d852
c1、a b1354562360下列运算是否合法,为什么?如合法,结果是多少? (1) result1 = a' (2) result2 = a * b (3) result3 = a + b (4) result4 = b * d
(5) result5 = [b ; c' ] * d (6) result6 = a . * b (7) result7 = a . / b (8) result8 = a . * c (9) result9 = a . \\ b (10) result10 = a . ^2 (11) result11 = a ^2 (12) result12 = 2 . ^ a
2、用MATLAB求下面的的方程组。
212x14791532x72 (1)22115x3113213x40xyz1x2yzw8(2)
2xy3w33x3y5z6w5212791532 3、已知A2211513213(1)求矩阵A的秩(rank)
(2)求矩阵A的行列式(determinant) (3)求矩阵A的逆(inverse)
(4)求矩阵A的特征值及特征向量(eigenvalue and eigenvector) 4、关系运算与逻辑运算
已知a=20,b=-2,c=0,d=1,计算下列变量的值,并上机验证。 (1) r1 = a > b
(2) r2 = a > b & c > d (3) r3 = a == b* (-10)
(4) r4 = ~b | c
5、创建符号表达式和符号表达式的操作 对符号表达式fsinx,
gye2t进行操作。
(1)创建符号变量,分别使用sym和syms命令 (2)求反函数和复合函数。
①用finverse函数求f和g的反函数 ②用compose函数求f,g的复合函数 (3)符号微积分和极限。 ①对f和g用diff求微分 ②对f和g用int求积分 6、符号矩阵的操作
A[(1)创建符号矩阵]2xcos(2t)
xx2(2)符号矩阵的代数运算。符号矩阵的大多数运算都与矩阵相同 计算 A .' 以及det(A)
(3)对符号矩阵A进行求特征值、对角阵等运算 (4)对符号矩阵A求极限和积分 7、符号方程的求解。 (1)代数方程求解。
2x13x22x48x5x2xx212343x1x2x3x474xx22x32x412对方程组进行1求解。
(2)符号微分方程求解
dydxzcosxdzy1解方程组dx
实验5 动态仿真集成环境——Simulink
一、实验目的
1、学习SIMULINK 软件工具的使用方法; 2、用SIMULINK 仿真线性系统;
二、实验内容及步骤
1.SIMULINK简介
SIMULINK是MATLAB软件的扩展,它是实现动态系统建模和仿真的一个软件包,它与MATLAB语言的主要区别在于,其与用户交互接口是基于Windows的模型化图形输入,其结果是使得用户可以把更多的精力投入到系统模型的构建,而非语言的编程上。
所谓模型化图形输入是指SIMULINK提供了一些按功能分类的基本的系统模块,用户只需要知道这些模块的输入输出及模块的功能,而不必考察模块内部是如何实现的,通过对这些基本模块的调用,再将它们连接起来就可以构成所需要的系统模型(以.mdl文件进行存取),进而进行仿真与分析。 2. SIMULINK的启动
进入SIMULINK界面,只要你在MATLAB命令窗口提示符下键入‘SIMULINK’,按回车键即可启动SIMULINK软件。在启动S IMULINK软件之后,SIMULINK的主要方块图库将显示在一个新的Windows中。 如图5-1所示:
► 在MATLAB命令窗口中输入simulink :
结果是在桌面上出现一个称为Simulink Library Browser的窗口,在这个窗口中列出了按功能分类的各种模块的名称。
图5-1 SIMULINK的主要方块图库
3.SIMULINK的模块库介绍
►SIMILINK模块库按功能进行分为以下8类子库: Continuous(连续模块) Discrete(离散模块)
Function&Tables(函数和平台模块) Math(数学模块) Nonlinear(非线性模块)
Signals&Systems(信号和系统模块) Sinks(接收器模块) Sources(输入源模块) 4.SIMULINK简单模型的建立 (1)建立模型窗口
(2)将功能模块由模块库窗口复制到模型窗口 (3)对模块进行连接,从而构成需要的系统模型 5.SIMULINK功能模块的处理
(1)模块库中的模块可以直接用鼠标进行拖曳(选中模块,按住鼠标左键不放)而放到模型窗口中进行处理。
(2)在模型窗口中,选中模块,则其4个角会出现黑色标记。此时可以对模块进行以下的基本操作:
Ⅰ) 移动:选中模块,按住鼠标左键将其拖曳到所需的位置即可。若要脱离线而移动,可按住shift键,再进行拖曳;
Ⅱ) 复制:选中模块,然后按住鼠标右键进行拖曳即可复制同样的一个功能模块; Ⅲ) 删除:选中模块,按Delete键即可。若要删除多个模块,可以同时按住Shift键,再用鼠标选中多个模块,按Delete键即可。也可以用鼠标选取某区域,再按Delete键就可以把该区域中的所有模块和线等全部删除;
Ⅳ) 转向:为了能够顺序连接功能模块的输入和输出端,功能模块有时需要转向。在菜单Format中选择Flip Block旋转180度,选择Rotate Block顺时针旋转90度。或者直接按Ctrl+F键执行Flip Block,按Ctrl+R键执行Rotate Block。 Ⅴ) 改变大小:选中模块,对模块出现的4个黑色标记进行拖曳即可。
Ⅵ) 模块命名:先用鼠标在需要更改的名称上单击一下,然后直接更改即可。名称在功能模块上的位置也可以变换180度,可以用Format菜单中的Flip Name来实现,也可以直接通过鼠标进行拖曳。Hide Name可以隐藏模块名称。
Ⅶ) 颜色设定: Format菜单中的Foreground Color可以改变模块的前景颜色,Background Color可以改变模块的背景颜色;而模型窗口的颜色可以通过Screen Color来改变。
Ⅷ) 参数设定:用鼠标双击模块,就可以进入模块的参数设定窗口,从而对模块进行参数设定。参数设定窗口包含了该模块的基本功能帮助,为获得更详尽的帮助,可以点击其上的help按钮。通过对模块的参数设定,就可以获得需要的功能模块。
Ⅸ) 属性设定:选中模块,打开Edit菜单的Block Properties可以对模块进行属性设定。包括Description属性、 Priority优先级属性、Tag属性、Open function属性、Attributes format string属性。其中Open function属性是一个很有用的属性,通过它指定一个函数名,则当该模块被双击之后,Simulink就会调用该函数执行,这种函数在MATLAB中称为回调函数。
Ⅹ) 模块的输入输出信号:模块处理的信号包括标量信号和向量信号;标量信号是一种单一信号,而向量信号为一种复合信号,是多个信号的集合,它对应着系统中几条连线的合成。缺省情况下,大多数模块的输出都为标量信号,对于输入信号,模块都具有一种“智能”的识别功能,能自动进行匹配。某些模块通过对参数的设定,可以使模块输出向量信号。 6.SIMULINK应用举例
以具有双积分环节的系统G(S)为例,该系统的开环是不稳定的,为了使系统稳定,使用超前校正环节K(S)进行串联校正,见图6-2。
GS1S2K(S)KS10S1S5+ — G(S) 图5-2 系统结构框图
在建模之前,你需要创建一个工作区域。创建一个工作区域的方法为,选择File 项,然后再选择New ,这将开始一个新的窗口,其窗口名为“Untiledl”,可以在该窗口内构造系统模型,并称这个窗口为工作窗口。
为了得到这个系统的阶跃响应,可以由两个传递函数、一个求和点、一个输入源及两个输出观测点等6个部分组成这个系统。
输入源的元件位于Sources 库;传递函数与综合点方块都位于线性部分(Linear)库中。用同样方法,可将该库中的Transfer Fcn与Sum图形拖曳到工作空间,然后关闭Linear库;
如何得到其仿真的输出结果。在Sinks库中有三个功能方块可用于显示或存储输出结
果。Scope 功能块可以像一台示波器,实时地显示任何信号的仿真结果。To Workspace功能块可以把输出值以矢量的形式存储在MATLAB工作空间中,这样可以在MATLAB环境下分析与绘制其输出结果。To File功能块可以把数据存储到一个给定名字的文件中。用同样方法,将Scope拖曳到工作空间,并关闭Sinks库窗口。
打开Sum功能块,在List of Signs处输入“+”、“—”符号。如果综合点超过了两个输入点,只要简单地输入其正、负号,即可自动地增加其相应地输入点。
打开StepFcn功能块,有三个空白框可以填入参数。Steptime是阶跃响应的初始时间。此项可填0,即零时刻开始阶跃响应。另外两项为初始值(Initial value)和终值(Final value)。这两项可分别输入0和1。
打开工作空间功能块。输入y作为变量名(Variable name)。
最后,要将这些方块连接起来。除Sources与Sinks功能块外,所有其他方块中至少有一个输出点,即在方块旁有一个符号﹥指向外面,也至少有一个输入点,即在方块旁有一个符号﹥指向里面,Sources功能块没有输入点,只有输出点,而Sinks功能块没有输出点,因此它仅有一个输入点。系统的仿真方块图见图6-3。
图5-3 系统的仿真方块图
7.SIMULINK仿真的运行
构建好一个系统的模型之后,接下来的事情就是运行模型,得出仿真结果。运行一个仿真的完整过程分成三个步骤:设置仿真参数、启动仿真和仿真结果分析。 (1)设置仿真参数和选择解法器
设置仿真参数和选择解法器,选择Simulation菜单下的Parameters命令,就会弹出一个
仿真参数对话框,它主要用三个页面来管理仿真的参数。
I.. Solver页,它允许用户设置仿真的开始和结束时间,选择解法器,说明解法器参数及选择一些输出选项。
★ 仿真时间:注意这里的时间概念与真实的时间并不一样,只是计算机仿真中对时间的一种表示,比如10秒的仿真时间,如果采样步长定为0.1,则需要执行100步,若把步长减小,则采样点数增加,那么实际的执行时间就会增加。一般仿真开始时间设为0,而结束时间视不同的因素而选择。总的说来,执行一次仿真要耗费的时间依赖于很多因素,包括模型的复杂程度、解法器及其步长的选择、计算机时钟的速度等等。
★ 仿真步长模式:用户在Type后面的第一个下拉选项框中指定仿真的步长选取方式,可供选择的有Variable-step(变步长)和Fixed-step(固定步长)方式。变步长模式可以在仿真的过程中改变步长,提供误差控制和过零检测。固定步长模式在仿真过程中提供固定的步长,不提供误差控制和过零检测。用户还可以在第二个下拉选项框中选择对应模式下仿真所采用
II.。 Workspace I/O页,作用是管理模型从MATLAB工作空间的输入和对它的输出。 III..Diagnostics页,允许用户选择Simulink在仿真中显示的警告信息的等级。 (2)、启动仿真
I.设置仿真参数和选择解法器之后,就可以启动仿真而运行。
选择Simulink菜单下的start选项来启动仿真,如果模型中有些参数没有定义,则会出现错误信息提示框。如果一切设置无误,则开始仿真运行,结束时系统会发出一鸣叫声。
II.除了直接在SIMULINK环境下启动仿真外,还可以在MATLAB命令窗口中通过函数进行,格式如下:
[t,x,y]=sim(‘模型文件名’,[to tf],simset(‘参数1’,参数值1,‘参数2’,参数值2, …)) 其中to为仿真起始时间,tf为仿真终止时间。[t,x,y]为返回值,t为返回的时间向量值,x为返回的状态值,y为返回的输出向量值。simset定义了仿真参数,包括以下一些主要参数:
AbsTol:默认值为1e-6设定绝对误差范围。
Decimation:默认值为1,决定隔多少个点返回状态和输出值。 Solver:解法器的选择。
最后一步是仿真(Simulation),可以通过选择仿真菜单(Simulation Menu)执行仿真命令。有两个可以供选择的项:Start(开始执行)与Parameters(参数选择)。在参数选择中,可以
有几种积分算法供选择。对于线性系统,可以选择Linsim算法。对应项分别输入如下参数:
Start Time 0 (开始时间) Stop Time 9.9 (停止时间)
Rilative Error 0.001 (积分一步的相对误差) Minimum Step Size 0.1 (最小步长) Maximum Step Size 0.1 (最大步长)
在Return Variable方框中,还可以输入要返回的变量参数。如在此方框中填入t, 在仿真之后可以在MATLAB工作空间中得到两个变量, 即t与y。参数选择完毕后,关闭该窗口。 此时,你可以选择Start启动仿真程序,在仿真结束时,计算机会用声音给予提示。 阶跃响应图如图5-4所示。
图5-4 阶跃响应图
练习5-1 在SIMULINK环境下,作T1、T2、T3系统的阶跃响应;
T1
2s22s2T24s2s22s2T312s33s23s1将T1、T2、T3系统的阶跃响应图在同一Scope中显示。
练习5-2典型二阶欠阻尼系统的传递函数为:
2n2(a2)G(S)2222s2nsns2s(a2) 极点位置:
Sja式中:
n;an12;cos()在SIMULINK环境下,作该系统在以下参数时的仿真: ①设ωa=1, σ=0.5,1,5 ,求阶跃响应,(用同一Scope显示); ②设σ=1 , ωa=0.5,1,5 ,求阶跃响应在(用同一Scope显示); ③设:
12,n22,2,52求阶跃响应(用同一Scope显示); ④设
n2300450600求阶跃响应,(用同一Scope显示);
阶跃响应的时间:0≤t≤10,阶跃信号幅值为+2V。分析参数变化(增加、减少与不变)对阶跃响应的影响。
练习5-3 直流电动机双闭环调速系统如图所示。
(1)以给出的方式建立系统的SIMULINK的模型,并进行仿真,用示波器观察系统的阶跃响应曲线;
(2)调整转速调节器(as+1)/0.085s的a参数,选择a=0.5,观察其系统的阶跃响应曲线并进行比较。
实验6 控制系统的计算机辅助分析
一、实验目的和要求:
1、熟练掌握线性系统的模型描述
2、掌握线性系统稳定性分析 3、熟练掌握线性系统的时域分析 4、熟练掌握线性系统的频域分析 5、掌握根轨迹分析
二、实验内容:
1、参考下面的程序,编写程序计算传递函数为
GS2S22S2的阶跃响应特参数:⑴超调量σ%;⑵上升时间Tr; ⑶峰值时间Tp; ⑷过渡过程时间Ts; —-———————————————————————————
附录:计算超调量σ%、上升时间Tr、峰值时间Tp、过渡过程时间Ts的函数文件;
% MATLAB PROGRAM EG2-4 function [pos,tr,ts2,tp]=stepchar(t,y); %finding Pos and Tp
[mp,ind]=max(y);dimt=length(t); yss=y(dimt); pos=100*(mp-yss)/yss; tp=t(ind); i=1;j=1;k=1;q=1; while y(i)<0.1; i=i+1; end; t1=t(i); while y(j)<0.9; j=j+1; end;
t2=t(j);tr=t2-t1;
%Finding settling time (two percent)Ts i=dimt+1;n=0; while n==0; i=i-1; if i==1; n=1; elseif y(i)>=1.02; n=1; end;
end;
t1=t(i);i=dimt+1;n=0; while n==0; i=i-1; if y(i)<=0.98; n=1; end; t2=t(i); if t1>t2; ts2=t1; else ts2=t2; end;
end; %程序中,pos为超调量σ%。
2、 求多项式的根
如果P是包含多项式系数的行向量,由roots(p)命令得到一个列向量,其元素为多项式的根。 求多项式:
s69s3125s6125s6775s1475s15的根;543213、由多项式的根求多项式
如果r是包含多项式根的一个行/列向量,用poly (r)命令得到一个行向量,其元素为多项式的系数;
1)已知多项式的根为-1,-2,-3±j4,求多项式方程。 2)求下列矩阵的特征方程的根
110A611661153)求下列函数的零、极点和增益。
S311S230SH(S)4S9S345S287S50
4、部分分式展开:
函数[r,p,k]=residue(b,a),对两个多项式的比进行部分分式展开,如:
P(s)bmsmbm1sm1....b1sb0Q(s)ansnan1sn1....a1sa0向量b、 a是以s的降幂顺序排列多项式的系数,部分分式展开后余数送入列向量r,极点送入列向量p,常数项送入k 。 对F(s)进行部分分式展开:
2s39s1F(s)3ss24s45、传递函数的常用命令:
最常用的对传递函数进行变换的命令为传递函数的乘、加与反馈连接命令。对于简单的框图分析可以使用series、 parallel、 feedback与cloop 命令,采用传递函数的形式进行分析与处理。 ①传递函数串联:
Gs(s)G1(s)G2(s)命令格式:[nums, dens]=series(num1, den1, num2, den2)
②传递函数并联:
Gp(s)G1(s)G2(s)命令格式:
[nump, denp]= parallel (num1, den1, num2, den2)
③反馈系统:
Gf(s)G(s)1G1(s)G2(s)
命令格式:[numf, denf]=feedback(num1, den1, num2, den2)
④单位反馈系统:
Gc(s)G(s)1G(s)命令格式:[numc,denc]=clooop(num, den, sign)
sign是可选参数,sign=-1为负反馈,而sign=1对应为正反馈。缺省值为负反馈。
1)已知两个传递函数分别为:
G1(x)12,G2(x)23s13ss
①在MATLAB中分别用传递函数、零极点、和状态空间法表示; ②在MATLAB中分别求出通过反馈、串联、并联后得到的系统模型。 按下图方式反馈连接,求闭环系统的传递函数。
+ 输入 — 系统 2 系统1 输出 6、求连续系统的单位阶跃响应有关命令的用法: 命令格式:
[y,x,t]=step(num, den) [y,x,t]=step(num, den, t) [y,x,t]=step(A,B,C,D) [y,x,t]=step(A,B,C,D,iu) [y,x,t]=step(A,B,C,D,iu,t) 典型二阶欠阻尼系统的传递函数为:
2n2(a2)G(S)2222s2nsns2s(a2)极点位置:
Sja式中:
n;an12;cos()①设ωa=1, σ=0.5,1,5 ,求阶跃响应;
②设σ=1 , ωa=0.5,1,5 ,求阶跃响应; ③设:
,n222求阶跃响应;
1,2,52④设
n2300450600求阶跃响应;
⑤阶跃响应对应的时间:t=0至 t=10 ,分析参数变化(增加、减少与不变)对阶跃响应的影响。
(提示:程序中可使用“INPUT”命令,用键盘输入不同的参数。) 7、Bode图 命令格式:[mag,phase,w]=bode(a,b,c,d) [mag,phase,w]=bode(a,b,c,d,iu) [mag,phase,w]=bode(a,b,c,d,iu,w)
[mag,phase,w]=bode(num,den) [mag,phase,w]=bode(num,den,w) 求幅值裕度和相位裕度:
[gm,pm,wcp,wcg]=margin(mag,phase,w) [gm,pm,wcg,wcp]=margin(num,den) [gm,pm,wcg,wcp]=margin(a,b,c,d) 1)有一线性系统的传递函数为:
y(s)u(s)25 2s4s25求该系统的Bode 图和gm ,pm ,wcg ,wcp ,并在图中加标题及横坐标、纵坐标。 2)给定系统的传递函数为:G(s)K,分别判定当开环放大倍数K=5和
S(s1)(0.1s1)K=20时,闭环系统的稳定性,并求系统的幅值裕度(db)和相位裕度(°)。 8、Nyquist 图的用法:
命令格式:
[re,im,w]=nyquist(a,b,c,d) [re,im,w]=nyquist(a,b,c,d,,iu) [re,im,w]=nyquist(a,b,c,d,,iu,,w) [re,im,w]=nyquist(num,den) [re,im,w]=nyquist(num,den,,w)
已知某单位反馈系统开环传递函数为:G(s)K K1=1300,K2=5200
s352s2100s①、画该系统在K=K1和K=K2时的Bode图;
②、画该系统的Nyquist图;将K=K1和K=K2时的Nyquist图分别绘在屏幕的左右窗口。
9、根轨迹的绘制:
命令格式: 绘制系统根轨迹图 [r,k]=rlocus(num,den) [r,k]=rlocus(num,den,k) [r,k]=rlocus(a,b,c,d) [r,k]=rlocus(a,b,c,d,,k)
1) 绘制给定系统的根轨迹图:
G(S)KS(S1)(S2),K1.5
2)给定单位负反馈系统的开环传递函数为:
K(S2)G(S)2S2S3
①绘制给定系统的Bode 图, 并求系统的幅值裕度(db)和相位裕度。 ②用根轨迹分析法,讨论增益K的变化对系统性能的影响; ③作出K=0.25、0.42、1.5、2、4、6、8时,系统的阶跃响应图。
实验7 SIMULINK对经典控制系统的设计仿真
一 实验目的:
学习用Simulink软件工具对经典控制系统进行仿真设计的基本方法。
二 实验内容
用Simulink工具对下列题目进行仿真设计。
练习7-1 带有右零点或时间迟延环节的系统称为非最小相位系统。本题是研究非最
G(S)S2n(S)0.5S1.5小相位零点的作用。已知系统的传递函数为,编写程序并仿真:
①、设 n(s)=1.5,求该二阶系统阶跃响应及超调量、峰值时间、过渡过程时间; ②、设n(s)=(-s+a)/a ,a={1,3,6},求该二阶系统阶跃响应; ③、设n(s)=(s+a)/a ,a={1,3,6},求该二阶系统阶跃响应;
④、分别绘制②③两项的阶跃响应图,并列表表示所得结果。②③两项的阶跃响应图中应附有①项的阶跃响应曲线,以作比较;
⑤、基于所得的数据,试叙述在阶跃响应中左平面零点与右平面零点各自的作用是什么?
练习7-2 分析滞后与超前补偿器在不稳定系统中的补偿作用。
1以双积分器为例: G(S)2S
其补偿器有如下三种: Ⅰ、比例补偿器:K(S)=KC
Ⅱ、超前补偿器:K(S)=KC(S+1)/(S+5) Ⅲ、滞后补偿器:K(S)=KC(S+5)/(S+1)
讨论: ①、在第一种情况下,系统能稳定吗?增加KC的作用是什么?
②、在第二种情况下,系统能稳定吗?增加KC的作用是什么? ③、在第三种情况下,系统能稳定吗?增加KC的作用是什么?
④、设KC={0.1,0.5,1},对以上每一种情况进行仿真,求其阶跃响应,要求将
这三种情况的闭环阶跃响应绘制在同一张图中。在每种情况中,仿真时间为{10,50,5}。 练习7-3 对典型的PID控制系统模型进行Simulink仿真,记录仿真结果。并将阶跃输出结果和时间变量写到MATLAB的工作空间变量t和y中,用plot(t ,y)将仿真结果打印出来。比较两种仿真结果。取Kp=10, Ki=3, Kd=2
PID控制系统模型框图和Simulink仿真图见图7-1,图7-2; + KKpiKdSSS37S224S24S410S335S250S24_ 图7-1 PID控制系统模型框图
图7-2 PID控制系统仿真模型
附录 MATLAB常用函数
1、常用矩阵函数
命令 d=eig(A) [v,d]=eig(A) det(A) inv(A) poly(A) trace(A) orth(A) 说明 矩阵特征值 矩阵特征值和特征向量 行列式计算 求逆 特征多项式 对角元素之和 正交化
2、常用特殊矩阵
命令 A=[ ] A=eye( n ) A=ones(n,m) A=zeros(n,m) A=rand(n,m) A=randn(n,m) 空矩阵 N维单位矩阵 全部元素都为1的矩阵 全部元素都为0的矩阵 元素为0到1之间均匀分布的随机矩阵 元素为零均值单位方差正态分布的随机矩阵 说明
3、图形绘制和修饰
(1)坐标轴调整
axis([xmin xmax ymin ymax]) 图形的x轴范围限定在[xmin xmax]
y轴范围限定在[ymin ymax]
axis(‘控制字符串’) 根据字符串控制图形
set(gca,‘xtick’,标示向量) 按照向量设置X坐标的刻度标示 set(gca,’ytick’,标示向量) 按照向量设置Y坐标的刻度标示
set(gca,‘xticklabel’,‘字符串|字符串„') 按字符串设置X坐标的刻度标示 set(gca,'yticklabel’,‘字符串|字符串„') 按字符串设置Y坐标的刻度标示 (2)文字标示
title(‘字符串’) 图形标题 xlabel(‘字符串’) x轴标注
ylabel(‘字符串’) y轴标注 text(x,y,‘字符串’) 在坐标处标注说明文字 gtext(‘字符串’) 用鼠标在特定处标注说明文字 (3)网格控制
grid on 在所画的图形中添加网格线 grid off 在所画的图形中去掉网格线 (4)图例注解
legend(‘字符串1’,‘字符串2’,„,参数)
为区分各条曲线以字符串进行注解说明,参数确定注解在图形中的位置。
(5)图形的保持
hold on 保持当前图形及轴系的所有特性 hold off 解除命令
(6)图形窗口的分割 可把一个绘图窗口分割成几个区域,分别绘图。 subplot(m,n,p) 将当前绘图窗口分割成m行n列区域,指定第p个编号区域
为当前绘图区。 区域编号原则:“先上后下,先左后右”。
4、线性系统分析设计
(1)模型描述
状态空间:写为A、B、C、D四个矩阵的形式;也可用SYS = SS(A,B,C,D) 传递函数:用分子、分母的多项式表示;可用SYS = TF(NUM,DEN)建立tf模型
num(1)snn1num(2)snn2...num(nn1)snum(nn) G(s)den(1)snd1den(2)snd2...den(nd1)sden(nd)零极点:用增益k、分子零点向量z、分母极点向量p表示,
G(s)ki[sz(1)][sz(2)][sz(m)]
[sp(1)][sp(2)][sp(n)]同样可用 SYS = ZPK(Z,P,K)建立zpk模型 部分分式:
G(s)num(s)r(1)r(2)r(n)....k(s)
den(s)sp(1)sp(2)sp(n)传递函数没有相同极点时,可与部分分式相互转换:
[r,p,k]=residue(num,den) 传递函数变换为部分分式形式 [num,den]=residue(r,p,k) 部分分式变换为传递函数形式 闭环系统
feedback 反馈连接 SYS = feedback(SYS1,SYS2,sign)
[A,B,C,D]=feedback(A1,B1,C1,D1,A2,B2,C2,D2,sign)
[num,den]=feedback(num1,den1,num2,den2,sign)
sign=+(-)1反馈极性,缺省-1为负反馈
series系统串联
类似地,有 parallel系统并联
(2)模型转换ss—状态空间、tf—传递函数、zp—零极点 [num,den]=ss2tf(a,b,c,d,iu) 状态空间到传递函数 [z,p,k]=ss2zp(a,b,c,d,iu) 状态空间到零极点
[a,b,c,d]=tf2ss(num,den) 传递函数到状态空间 [z,p,k]=tf2zp(num,den) 传递函数到零极点
[a,b,c,d]=zp2ss(z,p,k) 零极点到状态空间
[num,den]=zp2tf(z,p,k) 零极点到传递函数 [r,p,k]=residue(num,den) 传递函数到部分分式 [num,den]=(r,p,k) 部分分式到传递函数
(3)系统分析 (以下模型描述也可以用状态空间表达式的A、B、C、D)
step(num,den) 直接画出单位阶跃响应曲线,时间是自动给定
[y,x] =step(num,den,T) 求系统在T时间向量下的单位阶跃响应输出,y是列
向量,并返回状态x的变化。
Impulse,lism 用法类似step bode(num,den,w) 直接绘出bode图。
[m,p]= bode(num,den,w) 求出幅值和相角,可再用半对数坐标画图 Nyquist(num,den,{wmin,wmax})
直接绘Nyquist曲线,{wmin,wmax}频率范围
[real,imag,ww]= Nyquist(num,den,{wmin,wmax})
得到实部、虚部,可再绘图。
rlocus(num,den) 直接绘出根轨迹
[r,k]= rlocus(num,den) 返回增益和对应的复极点 [r]= rlocus(num,den,k) 返回给定增益对应的复极点 (4)状态反馈设计
M=ctrb(A,B) 系统的能控矩阵 M=[B AB A2B … An-1B]
N=obsv(A,C) 求取系统的能观矩阵 N=[C CA CA2 … CAn-1]
k=acker(A,B,p) (单输入)对于期望极点p,求出系统的状态反馈增益阵k
因篇幅问题不能全部显示,请点此查看更多更全内容