1、 控制系统仿真与工具 实验指导书 目 录 实验一 熟悉MATLAB语言工作环境和特点 1 实验二 图形绘制与修饰 4 实验三 系统的时间响应分析 8 实验四 系统的时间响应分析 12 实验五 SIMULINK仿真基础 14 实验一 熟悉MATLAB语言工作环境和特点 一、实验目的 通过实验使学生熟悉MATLAB语言的工作环境,并了解MATLAB语言的特点,掌握其基本语法。 二、实验设备 PC机
2、MATLAB应用软件 三、实验内容 本实验从入门开始,使学生熟悉MATLAB的工作环境,包括命令窗、图形窗和文字编辑器、工作空间的使用等。 1、命令窗 (1)数据的输入 打开MATLAB后进入的是MATLAB的命令窗,命令窗是用户与MATLAB做人机对话的主要环境。其操作提示符为“》”。在此提示下可输入各种命令并显示出相应的结果,如键入:x1=sqrt(5),x2=1.35,y=3/x2 显示结果为: x1=2.2361 x2=1.3500 y=2.2222 上命令行中两式之间用逗号表示显示结果,若用分号,则只运行而不用显示运行结果。如键入A=[1,2,3;4,5,6;7,
3、8,9],则显示为 说明: l 直接输入矩阵时,矩阵元素用空格或逗号分隔,矩阵行用分号相隔,整个矩阵放在方括号中。注意:标点符号一定要在英文状态下输入。 l 在MATLAB中,不必事先对矩阵维数做任何说明,存储时自动配置。 l 指令执行后,A被保存在工作空间中,以备后用。除非用户用clear指令清除它,或对它重新赋值。 l MATLAB对大小写敏感。 (2)数据的显示 在MATLAB工作空间中显示数值结果时,遵循一定的规则,在缺省的情况下,当结果是整数,MATLAB将它作为整数显示;当结果是实数,MATLAB以小数点后4位的精度近似显示。如果结果中的有效数字超出了这一范围,M
4、ATLAB以类似于计算器的计算方法来显示结果。也可通过键入适当的MATLAB命令来选择数值格式来取代缺省格式。 如键入format bank命令(数据格式显示命令,数据小数部分以两个十进制小数表示),若在前面键入的三个表达式前键入上述格式命令,则显示结果为: x1=2.24 x2=1.35 y=2.22 前面显示的结果为默认显示结果,它的小数部分为四位数,还有format compact 它以紧凑格式显示结果,默认显示方式为稀疏格式。其它数据格式显示命令分别为: format short 缺省格式 format long 16位 format short e 5位加指数 fo
5、rmat long e 16为加指数 format hex 十六进制 format rat 有理数近似 format + 正、负或零 (3)参数命令调用 若在命令窗口输入help,则在屏幕上显示系统中已装入的函数库的名称,显示结果为: 若输入help+子目录名(如elfun),则显示其对应子目录的各函数名; 若输入help+函数名,则得到具体函数的意义和用法。 部分命令调用如下: who: 显示当前工作空间所有变量的一个简单列表 whos: 列出变量的大小,数据格式等详细信息 clear: 清除工作空间中所有的变量 clear+ 变量名:清除指定的变量 exis
6、t: 查询当前工作空间的变量 i=exist(‘A’) 返回的值i表示A存在的形式 i=1 表示在当前工作空间中存在一个变量名为A的矩阵; i=2 表示存在一个名为A.m文件; i=3 表示在MATLAB工作路径下存在一个名为A.mex的文件; i=4 表示存在一个编译好的名为A.mdl的SIMULINK文件; i=5 表示存在一个内部的MATLAB函数A( ); i=0 表示不存在和A相关的变量和文件。 2 图形窗 一般情况下,只要执行了任一种命令(如plot命令),就会自动产生图形窗,以后绘出的图形都在
7、此图形窗中进行。如 t=0:0.5:4*pi; y=exp(-0.1*t).*sin(t); y1=exp(-0.1*t).*sin(t+1) ; plot(t,y) plot(t,y1) 如想再建一个或几个图形窗,则可输入figure,MATLAB会建一个图形窗,并启动给它依次排序,若要认为规定新图3,则可键入figure(3);若要调看已经存在的图形窗n,也应键入figure(n)。 在命令窗输入figure,得出空白图形窗;如键入logo,则可生成MATLAB的标志图形。 3 文本编辑 单击MATLAB中命令窗中新建按钮,即可打开文本编辑器的窗口。该窗口特别之
8、处: (1) 它用不同颜色显示MATLAB规定的保留字(蓝)、非法字符(鲜红)、注释字符(绿)和引用字符(深红)等。 (2) 能对程序自动缩进排版,便于阅读和调试。 (3) 它自带程序调试及运行功能,使用方便。 在文本编辑器中输入脚本文件,进行调试及运行。 四 思考题 熟悉MATLAB工作环境之后,可自行编制简单的程序并生成图形。 1 编写程序,计算的值(用input语句输入n值)。 2 编写分段函数的函数文件,存放于文件ff.m中,计算出的值。 实验二 图形绘制与修饰 一、实验目的 通过实验使学生掌握图形绘制的方法及图形中轴的设置,文字标志,网络控制和图例标注等相关内容
9、 二、实验设备 PC机 MATLAB应用软件 三、实验内容 三维曲线的绘制,图形坐标轴的调整,文字标注,网格控制,图例标注等。 1 二维曲线的绘制——使用plot命令 plot命令调用格式: plot(x1,y1,’参数1’,x2,y2,’参数2’...) (1)x,y数据值 x,y可以是向量或矩阵 l 当x,y均为微量时,要求向量x,y的长度一致,则plot(x,y)可绘制出以x为横坐标,y为纵坐标的二维图形。 l 当x为向量,y为矩阵时,plot(x,y)用不同的颜色的图线绘制出y行或y列对应于x的图形,y矩阵的行或列的选择取决于x,y的维数。若y为方阵或y矩阵的
10、列向量长度与x向量的长度一致,则绘制出y矩阵的各个列向量相对于x一组二维图形;若y矩阵的行向量长度与x向量长度一致,则绘制出y矩阵的各个行向量相对于x的一组二维图形。 l 若x为矩阵,y为向量,按类似于上一规则执行 l 若x,y为同维的矩阵,则plot(x,y)绘制出y列向量相对于x列向量之间的一组二维图形。 l 若x为向量,则plot(x)绘制出一个x元素和x元素排列序号之间关系的线性坐标图。 l 若x为矩阵,则plot(x)绘制出x的列向量相对于行号的二维图形。 (2)参数 参数选项为一个字符串,决定了二维图形的颜色,线型以及数据点的图标。如plot(x,y,’r:o’)命令,
11、字符串’r:o’,”r”表示曲线颜色为红色,第二个字符“:”表示曲线线型采用点连线,“o”表示曲线上每一个数据点用圆圈标出。当参数只指定数据点标记时,只按照标记符画出孤立的数据点,不将数据点连接成线。 如键入命令 t=0:0.5:7; x=sin(t); plot(t,x,’k:o’) 则生成以下图形 2 坐标轴的调整 MATLAB用axis命令对绘制的图形的坐标轴进行调整。axis命令的功能非常丰富,可用它控制轴的比例和特性。 (1)坐标轴比例控制 命令axis([xmin xmax ymin ymax])将图形的x轴限定在[xmin,xmax]之间,y轴的范围限定在[
12、ymin,ymax]之间,matlab绘制图形时,按照给定的数据值确定坐标参数范围。对坐标轴范围参数的修改,也就相对于对图形进行放大或缩小处理。如在绘出上图之后,加一条命令:axis([0 3*pi -2 2])则上图变为 (2)坐标轴特性控制 命令axis(控制字符串),它根据控制字符串的含义控制图形,常用的控制字符串有auto(默认值)、square、equal和normal等等。 (3)坐标刻度标示 命令set(gac,’xtick’,标志向量) Set(gca,’ytick’,标志向量) 按照标示向量设置x,y轴的刻度标示。如输入命令 t=0:0.5:7; x=si
13、n(t); plot(t,x,’k:o’) set(gca,’xtick’,[0 1.4 3.14 6.28]) 3 文字标示 有关图形的标题,轴线标注等指令有 title(‘字符串’)—图形标题 xlabel(‘字符串’)—x轴标注 ylabel(‘字符串’)—y轴标注 text(x,y,‘字符串’)—在坐标(x,y)处标注说明文字 gtext(‘字符串’)用鼠标在特定处标注说明文字 注:当输入特定的文字需要用反斜杠(\)开头 4 网格控制 设置或取消网格需要使用网格控制命令,网格是在坐标刻度标示上画出的格线,画出风格,便于对曲线进行观察和分析 命令grid o
14、n——在所画的图形中添加网格线 grid off——在所画的图形中去掉格线 也可以只输入命令grid添加网格线,再一次输入命令grid,取消网格线。下图为加网格后的图形。 5 图例注解 当在一个坐标系上面画多幅图形时,为区分各个图形,MATLAB提供了图例的注解说明命令,其格式如下: legend(字符串1,字符串2,…,参数) 此命令在图形中开启一个注解视窗,依据绘图的先后顺序,依次输出字符串对各个图形进行注解说明。如字符串1标示第一个出现的线条,字符串2标示第二条出现的线条,参数字符串确定注解视窗在图形中的位置,如字符串为“0”时,表示尽量不与数据冲突,自动放置在最佳位置,
15、1”表示字符串放置在图形的右上角(默认)。 四 思考题 1 如何在一副图形中绘制不同的图形? 2 如何区分不同的图形?有哪些方法? 3 选择合适的步距绘制出下面的图形 (1)sin(1/t), 其中 (2)其中 实验三 系统的时间响应分析 一、实验目的 通过实验使学生掌握利用MATLAB进行控制系统的时间响应分析 二、实验设备 PC机 MATLAB应用软件 三、实验内容 1、时域分析法是根据系统的微分方程(或传递函数),利用拉普拉斯变换直接解出动态方程,并根据过程曲线及表达式分析系统的性能,时域响应指标如图1所示
16、图1 典型的系统时域响应指标表示 延迟时间td,指响应曲线第一次达到其终值一半所需要的时间。 上升时间tr,指响应曲线从终值10%上升到终值90%所需要的时间;对于有振荡的系统,也可定义为响应从零第一次上升到终值所需要的时间。上升时间是系统响应速度的一种度量。 峰值时间tp,指响应超过终值达到第一个峰值所需要的时间。 调节时间ts,指响应达到并保持在终值±5%(或±2%)内所需要的时间。 超调量σ%,指响应的最大偏离量h(tp)与终值h(∞)之差的百分比,即: 稳态误差,描述系统稳态性能的一种性能指标。 2、二阶系统不同阻尼比时的阶跃响应 二阶系统的传递函数为,其阶跃响应
17、可用下程序做出其单位阶跃和冲击响应的曲线(为简单起见,令)。 close hold on num=[1]; t=0:0.01:12 for zeta=[0.1 0.2 0.4 0.7 1.0]; den=[1 2*zeta 1]; printsys(num,den,'s'); [y,x]=step(num,den,t); plot(t,y); end figure; for num=[0.1 0.2 0.4 0.7 1.0]; den=[1 2*zeta 1]; printsys(num,den,'s'); [y,x]=impu
18、lse(num,den,t); plot(t,y);hold on end 3、三种控制方式的时间响应比较 用MATLAB分析这三个系统的阶跃响应。 三种控制方式下的单位阶跃响应可如下获取: num=5;den=[5 1 0]; printsys(num,den,'s'); 运行结果:num/den = 5 ---------- 5 s^2 + s sign=-1; [num1,den1]=cloop(num,den,sign); printsys(num1,den1,'s') 运行结果:num/den =
19、 5 -------------- 5 s^2 + s + 5 subplot(2,1,1) step(num1,den1); hold on num=[4 5];den=[5 1 0]; sign=-1; [num2,den2]=cloop(num,den,sign); step(num2,den2) num=[0 5];den=[5 1 0]; numf=[0.8 1];denf=[0 1];sign=-1; [num3,den3]=feedback(num,den,numf,denf,sign); step(num3,de
20、n3); axis([0 10 0 1.8]); subplot(2,1,2); hold on impulse(num1,den1); impulse(num2,den2); impulse(num3,den3); axis([0 10 -1 2]); hold off 四、思考题 1 求下列微分方程描述的阶跃响应 (1) (2) 2、已知二阶系统 (1) 编写程序求解系统的阶跃响应;计算系统的闭环根、阻尼比、无阻尼振荡频率;修改参数,实现和的阶跃响应;修改参数,实现和的阶跃响应() (2) 试做出以下系统的阶跃响应,并比较与原系统响应曲线的差别与特点,作出
21、相应的实验分析结果。 ;; 要求:分析系统的阻尼比和无阻尼振荡频率对系统阶跃响应的影响; 分析响应曲线的零初值、非零初值与系统模型的关系; 分析响应曲线的稳态值与系统模型的关系; 分析系统零点对阶跃响应的影响; 实验四 PID控制器的设计 一、实验目的 通过实验使学生掌握利用MATLAB进行PID控制器的设计 二、实验设备 PC机 MATLAB应用软件 三、实验内容 1.模拟PID控制器 典型的PID控制结构如图2所示。 比 例 积 分 微 分 对象模型 PID控
22、制器 r(t) y(t) u(t) e(t) ` 图2 典型PID控制结构 PID调节器的数学描述为 2 数字PID控制器 在计算机PID控制中,连续PID控制算法不能直接使用,需要采用离散化方法,通常使用数字PID控制器。以一系列采样时刻点kT(T为采样周期)代表连续时间t,以矩形法数值积分近似代替积分,以一阶后向差分近似代替微分,即: 离散PID表达式: 四 实验内容 1.以二阶线性传递函数为被控对象,选择合适的参数进行模拟PID控制, 输入信号,A
23、1.0,f=0.2Hz。 2. 已知被控对象为一电机模型,传递函数为,输入信号为 ,采用PID控制方法设计控制器,其中Kp=20,KpTd=0.50,利用MATLAB进行仿真,绘制PID正弦跟踪曲线。 实验五 SIMULINK仿真基础 一、实验目的 通过实验使学生掌握利用MATLAB进行SIMULINK仿真分析 二、实验设备 PC机 MATLAB应用软件 三、实验内容 1 模型库 SIMULINK是MATLAB软件的扩展,它是实现动态系统建模和仿真的一个软
24、件包,它与MATLAB语言的主要区别在于,其与用户交互接口是基于Windows的模型化图形输入,其结果是使得用户可以把更多的精力投入到系统模型的构建,而非语言的编程上。 所谓模型化图形输入是指SIMULINK提供了一些按功能分类的基本的系统模块,用户只需要知道这些模块的输入输出及模块的功能,而不必考察模块内部是如何实现的,通过对这些基本模块的调用,再将它们连接起来就可以构成所需要的系统模型(以.mdl文件进行存取),进而进行仿真与分析。 在MATLAB命令窗口中输simulink结果是在桌面上出现一个称为Simulink Library Browser的窗口,在这个窗口中列出了按功能分类的
25、各种模块的名称。也可以通过MATLAB主窗口的快捷按钮来打开Simulink Library Browser窗口。 2 建立或打开仿真结构图 建立simulink仿真结构图的方式有: (1)直接从MATLAB指令窗口中File选择New子菜单中的model,MATLAB会打开一个新框图,或在SIMULINK模块库窗口下,从file菜单中选择New命令下的model,创建新仿真图。 (2)如果仿真方块图已经存在,则在MATLAB指令窗口下,直接键入模型文件名,打开模型的仿真图,可对它进行编辑、修改和仿真,也可在SIMULINK窗口下利用open命令打开它。 3 模块的处理 功能模块的
26、基本操作,包括模块的移动、复制、删除、转向、改变大小、模块命名、颜色设定、参数设定、属性设定、模块输入输出信号等。 (1)模块库中的模块可以直接用鼠标进行拖曳(选中模块,按住鼠标左键不放)而放到模型窗口中进行处理。 (2)在模型窗口中,选中模块,则其4个角会出现黑色标记。此时可以对模块进行以下的基本操作。 (3)移动:选中模块,按住鼠标左键将其拖曳到所需的位置即可。若要脱离线而移动,可按住shift键,再进行拖曳。 (4)复制:选中模块,然后按住鼠标右键进行拖曳即可复制同样的一个功能模块。 (5)删除:选中模块,按Delete键即可。若要删除多个模块,可以同时按住Shift键,再用鼠
27、标选中多个模块,按Delete键即可。也可以用鼠标选取某区域,再按Delete键就可以把该区域中的所有模块和线等全部删除。 (6)转向:为了能够顺序连接功能模块的输入和输出端,功能模块有时需要转向。在菜单Format中选择Flip Block旋转180度,选择Rotate Block顺时针旋转90度。或者直接按Ctrl+F键执行Flip Block,按Ctrl+R键执行Rotate Block。 (7)改变大小:选中模块,对模块出现的4个黑色标记进行拖曳即可。 (8)模块命名:先用鼠标在需要更改的名称上单击一下,然后直接更改即可。名称在功能模块上的位置也可以变换180度,可以用Forma
28、t菜单中的Flip Name来实现,也可以直接通过鼠标进行拖曳。Hide Name可以隐藏模块名称。 (9)颜色设定: Format菜单中的Foreground Color可以改变模块的前景颜色,Background Color可以改变模块的背景颜色;而模型窗口的颜色可以通过Screen Color来改变。 (10)线的处理 改变粗细:线所以有粗细是因为线引出的信号可以是标量信号或向量信号,当选中Format菜单下的Wide Vector Lines时,线的粗细会根据线所引出的信号是标量还是向量而改变,如果信号为标量则为细线,若为向量则为粗线。选中Vector Line Widths则可
29、以显示出向量引出线的宽度,即向量信号由多少个单一信号合成。 设定标签:只要在线上双击鼠标,即可输入该线的说明标签。也可以通过选中线,然后打开Edit菜单下的Signal Properties进行设定,其中signal name属性的作用是标明信号的名称,设置这个名称反映在模型上的直接效果就是与该信号有关的端口相连的所有直线附近都会出现写有信号名称的标签。 线的折弯:按住Shift键,再用鼠标在要折弯的线处单击一下,就会出现圆圈,表示折点,利用折点就可以改变线的形状。 线的分支:按住鼠标右键,在需要分支的地方拉出即可以。或者按住Ctrl键,并在要建立分支的地方用鼠标拉出即可。 (11)模
30、块的连接 将鼠标置于某模块的输出端口上,立即呈现一个十字形光标,拖动光标至另一个模块的输入端口,在两模块之间生成一条带有箭头的连线,模块连接完成。 分支线的生成方法:单击信号线,按住鼠标右键对准信号后显示的十字形光标,拖动后生成信号线的一条分支线。 4 仿真方法与仿真参数的选择 (1)仿真方法 为求解不同的模型,SIMULINK提供了几种微分方程数值求解的算法,在给定的时间和初始 仿真积分算法 算法说明 Discrete 离散系统,差分方程仿真 Ode45 采用4阶runge_kutta进行数值积分,应用最广 Ode23 采用2阶runge_kutta进行数值
31、积分,速度快,误差大 Ode113 采用adams_bashforth_moulton方法的变阶解法,比ode45有效,精度高 Ode15s Gear法,用于解刚性方程的数值积分问题,当采用ode45,ode113无法解决时,可尝试采用此方法 Ode23s 采用修正的rosenbrock二阶解法,解决部分ode15s无法解决的刚性方程问题,ode23s比ode15s有效,但误差大 (2)仿真参数选择、 仿真参数在仿真前设定,设置参数时首先选定仿真的方块图,选择Simulation菜单下的Parameters命令,就会弹出一个仿真参数对话框,它主要用三个页面来管理仿真的参数。
32、l Solver页,它允许用户设置仿真的开始和结束时间,选择解法器,说明解法器参数及选择一些输出选项。 此页可以进行的设置有:选择仿真开始和结束的时间;选择解法器,并设定它的参数;选择输出项。 仿真时间:注意这里的时间概念与真实的时间并不一样,只是计算机仿真中对时间的一种表示,比如10秒的仿真时间,如果采样步长定为0.1,则需要执行100步,若把步长减小,则采样点数增加,那么实际的执行时间就会增加。一般仿真开始时间设为0,而结束时间视不同的因素而选择。总的说来,执行一次仿真要耗费的时间依赖于很多因素,包括模型的复杂程度、解法器及其步长的选择、计算机时钟的速度等等。 仿真步长模式:用户在T
33、ype后面的第一个下拉选项框中指定仿真的步长选取方式,可供选择的有Variable-step(变步长)和Fixed-step(固定步长)方式。变步长模式可以在仿真的过程中改变步长,提供误差控制和过零检测。固定步长模式在仿真过程中提供固定的步长,不提供误差控制和过零检测。用户还可以在第二个下拉选项框中选择对应模式下仿真所采用的算法。 步长参数:对于变步长模式,用户可以设置最大的和推荐的初始步长参数,缺省情况下,步长自动地确定,它由值auto表示。 Maximum step size(最大步长参数):它决定了解法器能够使用的最大时间步长,它的缺省值为“仿真时间/50”,即整个仿真过程中至少取5
34、0个取样点,但这样的取法对于仿真时间较长的系统则可能带来取样点过于稀疏,而使仿真结果失真。一般建议对于仿真时间不超过15s的采用默认值即可,对于超过15s的每秒至少保证5个采样点,对于超过100s的,每秒至少保证3个采样点。 Initial step size(初始步长参数):一般建议使用“auto”默认值即可。 仿真精度的定义(对于变步长模式) Relative tolerance(相对误差):它是指误差相对于状态的值,是一个百分比,缺省值为1e-3,表示状态的计算值要精确到0.1%。 Absolute tolerance(绝对误差):表示误差值的门限,或者是说在状态值为零的情况下,
35、可以接受的误差。如果它被设成了auto,那么simulink为每一个状态设置初始绝对误差为1e-6。 l Workspace I/O页,作用是管理模型从MATLAB工作空间的输入和对它的输出。 l Diagnostics页,允许用户选择Simulink在仿真中显示的警告信息的等级。 5 完成下列结构图的绘制 6 已知系统结构图如下: 其中,,输入信号信号为阶跃信号,,试对系统在有饱和非线性和吴饱和非线性情况下进行仿真,分析饱和非线性对系统的影响。 7 建立model文件,对Ⅰ型三阶系统的动静态性能指标进行分析,系统的开环传递函数为 ,试对斜坡函数的响应与稳态误差进行分析。 四 思考题 如何选择仿真算法? 17






