同学们,早上好!第六讲基于Simulink的动态系统仿真入门在工程实际中,控制系统的结构往往很复杂,如果不借助专用的系统建模软件,则很难准确地把一个控制系统的复杂模型输入计算机,对其进行进一步的分析与仿真。SIMULINK的出现,给控制系统分析与设计带来了福音。顾名思义,该软件的名称表明了该系统的两个主要功能:Simu(仿真)和Link(连接),即该软件可以利用鼠标在模型窗口上绘制出所需要的控制系统模型,然后利用SIMULINK提供的功能来对系统进行仿真和分析。第一节SIMULINK简介SIMULINK是基于MATLAB的图形化仿真设计环境,是MATLAB提供的进行动态系统建模、仿真和综合分析的集成软件包。它使用图形化的系统模块对动态系统进行描述,并在此基础上采用MATLAB的计算引擎对动态系统在时域内进行求解。所谓模型化图形输入是指SIMULINK提供了一些按功能分类的基本的系统模块,用户只需要知道这些模块的输入输出及模块的功能,而不必考察模块内部是如何实现的,通过对这些基本模块的调用,再将它们连接起来就可以构成所需要的系统模型(以.mdl文件进行存取),进而进行仿真与分析。MATLAB计算引擎主要对系统微分方程和差分方程求解。SIMULINK和MATLAB是高度集中在一起的,它们之间可以进行灵活的交互操作。SIMULINK可以处理的系统包括:线性、非线性系统;离散、连续及混合系统;单任务、多任务离散时间系统等。直接在SIMULINK环境中运作的工具箱和模块包很多,已覆盖航空、航天、通信、控制、信号处理、电力系统、机电系统等诸多领域,涉及的内容专业性极强。一、什么是SIMULINK二、SIMULINK的启动1、在MATLAB命令窗口中输入simulink结果是在桌面上出现一个称为SimulinkLibraryBrowser的窗口,在这个窗口中列出了按功能分类的各种模块的名称。当然用户也可以通过MATLAB主窗口的快捷按钮来打开SimulinkLibraryBrowser窗口。两种模块库窗口界面只是不同的显示形式,用户可以根据各人喜好进行选用,一般说来第二种窗口直观、形象,易于初学者,但使用时会打开太多的子窗口。2、在MATLAB命令窗口中输入simulink3结果是在桌面上出现一个用图标形式显示的Library:simulink3的Simulink模块库窗口。启动1的库浏览器窗口启动2的库浏览器窗口公共模型库专业模型库系统模块模块描述三、SIMULINK的模型库介绍Continuous(连续系统模型库)Discontinuities(不连续环节模型库)Discrete(离散系统模型库)Look-UpTables(查表库)MathOperations(数学运算库)ModelVerification(模型验证库)Model-WideUtilities(实用模型库)Ports&Subsystems(信号口与子系统库)SignalAttributes(信号特性库)SignalRouting(信号路由库)Sinks(输出方式或接收器库)Sources(输入源库)User-DefinedFunctions(用户自定义函数库)SIMILINK的公共模型库按功能进行分类,包括以下十几个类子库:Derivative:输入信号微分Integrator:输入信号积分State-Space:线性状态空间系统模型Transfer-Fcn:线性传递函数模型TransportDelay:对输入信号进行固定时间延迟VariableTransportDelay:对输入信号进行可变时间延迟Zero-Pole:以零极点表示的传递函数模型1、连续系统模型库(Continuous)2、不连续环节模型库(Discontinuities)Backlash间隙特性Coulomb&ViscousFriction库伦黏滞特性DeadZone死区特性HitCrossing交叉模块Quantizer量化器(数字转换器)RateLimiter速率限制环节Relay继电器特性Saturation饱和特性DiscreteTransfer-Fcn:离散传递函数模型DiscreteZero-Pole:以零极点表示的离散传递函数模型DiscreteFilter:IIR与FIR离散系统滤波器DiscreteState-Space:离散状态空间系统模型Discrete-timeIntegrator:离散时间积分器First-OrderHold:一阶采样和保持器Memory:存储上一时刻的状态值UnitDelay:一个采样周期的延时Zero-OrderHold:零阶采样和保持器3、离散模块(Discrete)4、查表库(Look-UpTables)表数据选择器对输入信号进行内插运算输入信号的一维线性内插输入信号的二维线性内插输入信号的n维线性内插查找输入信号所在位置取绝对值代数约束对信号进行分配按位逻辑运算逻辑真值查找复数至幅值和相位转化复数至实部和虚部转化点乘运算信号增益逻辑运算幅值和相位转化为复数特定的数学函数矩阵串联器矩阵增益5、数学运算库(MathOperation)5、数学运算库(MathOperation)续求取最大最小值计算多项式的值乘法或除法器输入信号的实部和虚部转化为复数关系运算信号维数转换器求整运算器符号函数滑动增益求和运算三角与双曲函数6.模型验证库(ModelVerification)声明输入信号非零检测离散信号的梯度检测动态间隙检测动态范围检测静态间隙检测静态范围检测动态下限检测动态上限检测输入信号分辨率检测静态下限检测静态上限7.实用模型库(Model-WideUtilities)模型文本编辑器模块控制信息编辑给定时间进行模型线性化触发后进行模型线性化8.信号口与子系统库(Ports&Subsystems)可配置子系统原子子系统使能信号设置使能子系统使能触发子系统for循环子系统8.信号口与子系统库(Ports&Subsystems)续函数调用发生器函数调用子系统If条件子系统条件执行子系统子系统输入端口子系统输出端口通用子系统子系统举例SwitchCase子系统SwitchCase执行子系统触发信号设置触发子系统While循环子系统9.信号特性库(SignalAttributes)数据类型转换模块信号初值设置信号探测器多速率系统数据转换机制信号线属性修改输入信号宽度10.信号路由库(Signalroution)由输入信号产生总线信号总线信号选择器用户定义的数据存储区从数据存储区读取数据向数据存储区写数据信号分解器从Goto模块获得信号向Goto模块传递信号Goto模块标记控制器10.信号路由库(Signalroution)续手动选择器合并输入信号为一个输出多端口输出选择器信号组合器选择或重组信号两端口输出选择器11.输出方式库(Sinks)以数值形式显示浮点信号显示器子系统或模型输出口信号显示器输入非零时停止仿真中断输出信号将仿真数据写入.mat文件将仿真数据输出到Matlab工作空间使用Matlab图形显示数据12.输入源库(Sinks)有限带宽白噪声输出频率随时间线性变化的正玄信号输出当前仿真时间常数输入以固定速率输出当前仿真时间从Matlab工作空间中输入数据从.mat文件中输入数据接地信号子系统或模块的输入端口产生脉冲信号12.输入源库(Sinks)续产生斜坡信号产生服从高斯分布的随机信号产生周期信号信号发生器信号构造器正玄信号阶跃信号均一的服从高斯分布的随机信号13.用户自定义函数库(User-DefinedFunctions)求取输入信号的数学函数值M函数S-函数模块S-函数生成器Simulink的专业模型库航空航天模型库(AerospaceBlockset)控制系统模型库(ControlSystemToolbox)数字信号处理模型库(DSPBlockset)Simulink附加模型库(SemolinaExtras)S-函数示例模型库(S-functiondemos)实时工作空间、实时工作空间嵌入式编码器及实时目标模型库(Real-TimeWorkshop,Real-TimeWorkshopEmbeddedCoder和Real-TimeWindowsTarget)状态流模型库(Stateflow)通信模型库(CommunicationBlockset)图形仪表模型库(GaugesBlockset)神经网络模型库(NeuralNetworkBlockset)模糊控制模型库(FuzzyLogicToolbox)虚拟现实工具箱(VirtualRealityToolbox)xPC模型库第二节Simulink模型的构建使用鼠标左键单击模型库,则在Simulink库浏览器右边的一栏中显示该库中的所有模块;使用鼠标左键单击系统模块,则会在模块描述栏中显示该模块的功能描述;使用鼠标右键单击系统模块,可以得到该模块的帮助信息,将模块拖进系统模型中可以查看模块的参数设置。对Simulink库浏览器的基本操作主要包括:一.模块的基本操作1.模块的选择将正玄信号通过信号显示器显示。需要两个模块:由输入模型库Sources中的SineWave正玄信号模块产生正玄信号,用系统输出模型库Sinks中的Scope模块显示结果。启动Simulink并新建一个系统模型文件。选择上面提到的两个模块将其拷贝(拖)到新建的系统模型中。2.模块的连接选择好构建系统所需的模块后,需要按照系统的信号流程将各个模块正确连接。将光标指向起始块的输出端口,此时光标变成“+”。单击鼠标左键并拖动到目标模块的输入端口,在接近到一定程度时光标变成双“+”,此时松开鼠标间即可。完成后在连接点处出现一个箭头,表示系统中信号的流向。++3.模块的复制如果需要几个相同的模块,可以使用3种方法进行复制:使用鼠标右键点击并拖动该模块;选中所需模块后,使用Edit菜单上的Copy和Paste;使用热键Ctrl+C和Ctrl+V。4.模块的移动选中需要移动的模块,按下鼠标左键将模块拖至合适的位置即可。需要说明的是,模块拖动时,与之相连的连线也随之移动;在不同模型窗之间移动模块时,需要同时按下Shift键。5.模块的删除选中需要删除的模块后,按下Delete键或采用剪切的方法可完成对模块的删除。6.模块的旋转有两种方法可以旋转的模块:使用Ctrl+R热键;使用Format菜单下的FlipBlock可将模块旋转1800,Format菜单下的RotateBlock可将模块旋转900。7.模块名的操作修改模块名。模块名字体设置。改变模块名的位置。隐藏模块名。模块名字体设置改变模块名的位置隐藏模块名8.模块的阴影效果9.模块颜色的改变10.模块的插入二.信号的操作模块之间的连线称为信号线1.信号线的分支对信号线进行分支的操作有下列方式:使用鼠标右键单击需要分支的信号连线拖至目标模块;按下Ctrl键的同时,使用鼠标左键单击需要分支的信号连线拖至目标模块。Exp6_1.mdl2.信号线的曲折对信号线的路径改变方式有:使用鼠标左键并单击并拖动;按下Shift键的同时,使用鼠标左键单击并拖动,可以改变连线路径。Exp6_2.mdl3.信号线宽度的设置使用Format菜单中的Port/SignalDisplay-WidenonscaleLines和SignalDimensions完成这项功能。Exp6_3.mdl4.信号线的彩色显示为了清楚的显示不同采样频率的模块及信号线,选中Format菜单下的Port/SignalDispay-SampleTimeColors可以用不同的颜色显示采样频率不同的模块和信号线。默认红色表示最高采样频率,黑色表示连续信号流经的模块和信号线。Exp6_4.mdl5.信号的组合与分解完成信号组合与分解功能的模块是SignalRoutes模型库中的Mux模块和Demux模块。使用Mux可以将多个标量信号组合成一个向量信号,使用Demux