1、 例2-1 已知一种系统微分方程为: 其中,状态变量初始条件,输入u为阶跃函数,规定运用SIMULINK对系统建立仿真模型,并绘制时域响应曲线。在运用SIMULINK创立模型之前,先把微分方程进行拉普拉斯变换,得到每个微分方程传递函数,即用传递函数形式表达系统。连接信号之后系统模型图 exam2_1系统时域响应曲线 例7-9 一种控制系统由5个子系统构成,构成构造如下图各子系统传递函数分别为:,试在MATLAB中分别用仿真模块建模和仿真命令编程两种办法进行仿真,并绘制系统阶跃响应曲线图。一方面在Simulink环境下将所需要仿真模块连接起来,并将各模块参数设立好。系统仿真模型图 exam7_9
2、系统阶跃响应MATLAB程序如下:%control system simulationclear all;clc;num1=1 5 1;den1=2 15 6;G1=tf(num1,den1);z=-6;p=-2;-20;k=4;G2=zpk(z,p,k);G3=tf(10,1 10);num4=1 1;den4=1 3 6;G4=tf(num4,den4);H=0.1;Gf=(G1*G2+G3)*G4;G=feedback(Gf,H);GG=tf(G);step(G);%axis(0 10 0 0.35)grid on程序运营后得到阶跃响应曲线如图所示。系统阶跃响应程序运营成果为:Zero/
3、pole/gain: 12 (s+0.3845) (s+1) (s+2.199) (s+7.054) (s+18.45)-(s+19.99) (s+9.88) (s+7.077) (s+1.993) (s+0.4234) (s2 + 3.137s + 6.217)Transfer function: 12 s5 + 349 s4 + 2699 s3 + 6654 s2 + 5612 s + 1320-s7 + 42.5 s6 + 628.7 s5 + 4227 s4 + 1.441e004 s3 + 2.788e004 s2 + 2.684e004 s + 7332从成果可以看出,采用仿真模块
4、建模实现仿真办法与采用仿真命令实现仿真办法得到仿真成果是完全相似。采用哪一种办法进行仿真,可以依照实际状况而定。普通说来,采用仿真模块建模实现仿真办法更简朴、以便,但采用仿真命令实现仿真办法更灵活。2.4.1 运用输出模块分析运用SIMULINK输出模块进行仿真成果分析输出有如下几种办法:观测输出轨迹;以文献形式输出;直接显示数据输出;用表盘和量计显示输出;进行数字信号解决、分析输出。1观测输出轨迹信号输入到Scope模块或XY Graph(相轨迹示波器)模块观测输出轨迹。图 exam2_21将输出信号写入返回变量,并运用MATLAB命令绘图在仿真结束后,在MATLAB工作空间自动生成两个变量
5、tout和yout,分别返回时间矢量和各个输出端子仿真成果。执行plot(tout,yout)得图示成果。图 exam2_23使用ToWorkspace模块把输出写入到MATLAB工作空间,然后通过MATLAB绘图命令绘制输出轨迹。图 exam2_252. 以文献形式输出仿真成果运用输出模块中To file模块可以将仿真成果以Mat文献格式直接保存到数据文献中。3. 直接显示数据输出4. 表盘和量计显示输出Dials & Gauges5. 信号解决、分析输出DSP模块、SIMULINK Extra模块图 exam2_292.5 子系统随着研究系统越来越大,越来越复杂,直接使用基本SIMULIN
6、K模块创立系统模型会十分庞大,并且信号传播方向也会变得十分不明显。为了简化模型以及增长它可读性,可以将某些独立功能模块化提成一组,构成子系统。2.5.1 子系统创立 使用子系统不但可以使仿真模型中显示模块数量减少,便于读图,并且还建立了层次化仿真模型框图,子系统模块在一种层次,构成各个子系统模块在此外一种层次。创立子系统办法有两种:一种是运用模型中已经存在模块创立子系统;另一种是通过向子系统模块加入新模块创立子系统。1. 通过已有模块创立子系统图 exam2_33通过比例、微分、积分模块创立PID控制器子系统详细环节:选中构成PID控制器所有模块;执行Edit/Create subsystem
7、命令,则会把已经选中模块装入一种名为subsystem模块中。2. 通过子系统模块创立子系统SimulinkCommon Used BlocksSubsystem复制一种Subsystem模块到仿真模型窗口,然后双击该模块,产生一种模型窗口,最后运用创立SIMULINK仿真模型办法把子系统包括所有模块复制到其中,对其进行信号连接。创立PID控制器子系统详细过程:2.5.2 子系统封装运用前面简介办法创立子系统,到达了简化模型、提高模型可读性目。但是这样建立子系统要从MATLAB工作空间直接获取变量,与SIMULINK模块库中基本模块尚有很大差别,存在着不少缺陷。因而,需要对所创立子系统进行封装
8、,进一步完善子系统。所谓子系统封装技术就是将相应子系统内部构造隐藏起来。这样在访问此子系统模块时就只浮现一种参数设立对话框,只要将所需要变量参数输入到对话框中即可。事实上,SIMULINK基本模块也是子系统封装后得到,因此子系统封装之后与基本模块是一致。子系统封装过程如下:选中已创立子系统,在仿真模型窗口菜单栏执行Edit/Mask subsystem命令,将会打开Mask Editor对话框。运用封装编辑器可以实现子系统对话框设计。需要设计内容重要涉及子系统图形标示、变量参数以及模块描述和协助信息。关闭封装编辑器,则得到了新建封装之后子系统模块。1. 封装编辑器Icon选项卡Mask typ
9、e文本框:可以任意填写,它接受中、英文输入。Drawing commands(图形标示命令)文本框:对封装后子系统进行图形标记。可以使用plot命令绘制图形,可以使用disp命令在子系统图标上写入字符串名称,可以使用image函数进行图像显示。Icon frame(标记边框):设立模块图标与否有边框,Visible or Invisible。Icon transparency(标记透明):Opaque or Transparent。默认值Opaque:图标上图形会将子系统模块端口信息覆盖。Icon rotation:Fixed or Rotates. 默认值Fixed,表达在旋转或反转子系统模
10、块时,图标不会随之旋转或翻转。Rotates,则表达在旋转或反转子系统模块时,图标会随之旋转或翻转。Drawing coordinates(units):Autoscal Pixels e Normalized. 默认格式AutoscaleInitialization选项卡在进行子系统模块封装时,最重要一步就是设计子系统模块变量参数设立对话框,这需要在Initialization选项卡中完毕,可以对封装子系统模块参数设立对话框进行变量参数提示与设立设计。Initialization commands,用于定义生成封装子系统模块过程中所需要变量。例如,封装系统模块过程中如果使用MATLABplo
11、t绘制模块图标,在此可以定义所需要变量。Documentation选项卡Documentation选项卡提供应顾客编写封装子系统模块性质阐明和协助信息。Mask typeBlock descriptionBlock help2. 封装实例:PID控制器子系统模块封装模块显示“PID Controller”:在Drawing commands中输入disp(PID Controller) 。在Parameters(此前版本在Initialization中)选项卡中设计封装后子系统参数设立对话框,PID控制器需要传递变量参数有3个,单击Add按钮3次,即生成3个需要传递变量位置。在Document
12、ation选项卡中,为PID控制器子系统模块添加文字阐明。2.5.3 条件执行子系统在simulink模块库中,Enable模块和Trigger模块是比较特殊模块,如果把这样模块放到某个子系统中,该子系统会在给定控制信号控制下执行,这样子系统称为条件执行子系统(conditionally executed subsystem)。1. Enabled subsystemEnabled subsystem只有控制信号为正时,才执行子系统,否则禁止执行。事实上,它就是数字电路中电平触发。当它处在禁止状态时,为了保持系统输出持续性,它也有信号输出。顾客可以选取继续保持禁止前信号输出,也可以将子系统强制
13、复位再指定输出值。SimulinkPorts & SubsystemsEnabled Subsystem 设立Enable模块参数办法:一方面双击Enable模块,然后进行设立held or reset。通过选通show output port复选框以设立与否容许系统输出使能控制信号。Enabled subsystem Out1模块,设立Enabled subsystem在禁止状态下输出信号。在Output when disabled中,如果选取held,则在禁止状态下输出将保持禁止前状态值;如果选取reset,则子系统被强制复位,并且此时输出需要在Initial Output中设立。使用En
14、able subsystem 模块实现半波整流系统仿真。半波整流系统在输入信号为正时,输出原信号,否则输出为零。图 exam2_452. Triggered subsystemTriggered subsystem是在触发信号发生瞬间执行子系统,然后保持子系统输出状态,直到下一种触发信号到来。SimulinkPorts & SubsystemsTriggered Subsystem 顾客可以对触发信号进行如下设立:上升沿触发: 下降沿触发:边沿触发:当输入信号发生变化时,即浮现上升沿或下降沿时,均执行Triggered subsystem。此外,尚有一种使Triggered subsystem
15、执行状况,就是函数调用触发,此时Triggered subsystem执行取决于S函数内部逻辑,而与触发信号无关。仿真系统仿真模型如图所示,这里使用下降沿触发。图 exam2_483. Enable and Triggered subsystem 2.5.4 定义自己模块库如果顾客建立了诸多封装子系统模块,经常需要建立自己模块库,用于分门别类地存储这些模块。此外,在进行仿真建模时,为了减少打开模块库次数和以便系统仿真建模,顾客普通也需要将实现某种功能一组惯用模块统一放置在同一模块库中。创立模块库办法:在Simulink Library Browser窗口菜单栏中执行File/New/Library命令,将需要存储在同一种模块库中模块复制到模块库窗口即可。