您好,欢迎访问三七文档
当前位置:首页 > 电子/通信 > 综合/其它 > 第四章simulink的基础应用
1第四章之simulink的基础应用2•simulink是Mathworks公司开发的另一个著名的动态仿真系统,它是Matlab的一个附加组件,为用户提供了一个建模与仿真的工作平台。•由于它的许多功能是基于Matlab软件平台的,而且必须是在Matlab环境下运行,有人也将simulink称之为Matlab的一个工具箱。•它能够实现动态系统建模与仿真的环境集成,且可以根据设计及使用的要求,对系统进行修改与优化,以提高系统工作的性能,实现高效开发系统的目的概述3§4-1simulink的特色•simulink是Matlab软件的扩展与特色体现,它是实现动态系统建模和仿真的一个软件包;•simulink可以模拟线性与非线性系统,连续与非连续系统,或它们的混合系统,它是强大的系统仿真工具;•simulink的另外一个重要特点就是它的开放性,它允许用户定制自己的功能模块和模块库。4§4-2simulink的重要操作方法•运行simulink有三种方式:–方式(1)在Matlab的命令窗口直接键入simulink;–方式(2)点击Matlab的工具条上的simulink的快捷键图标;–方式(3)在Matlab的菜单中,选择FileNewModel,会弹出新建立的模型窗口,名为untitled。5simulink模块库浏览器6打开方法示意图7新建的模型窗口8认识simulink的重要模块库•Continuous(连续模块)•Discrete(离散模块)•Look-UpTables(查询表模块库)•MathOperations(数学运算模块库)•Modelverification(模型验证模块库)•Model-WideUtilities(模块实用模块库)•Ports&Subsystems(端口和子系统模块库)•SignalAtributies(信号属性模块库)•SignalRouting(信号路由模块库)•Sinks(接收器模块库)•Sources(输入源模块库)•User-DefinedFunctions(用户定义模块库)•Discontinuities(非线性模块库)9Continuous(连续模块)10Discrete(离散模块)11Look-UpTables(查询表模块库)12MathOperations(数学运算模块库)13Modelverification(模型验证模块库)14Model-WideUtilities(模块实用模块库)15Ports&Subsystems(端口和子系统模块库)16SignalAtributies(信号属性模块库)17SignalRouting(信号路由模块库)18Sinks(接收器模块库)19Sources(输入源模块库)20User-DefinedFunctions(用户定义模块库)21Discontinuities(非线性模块库)22§4-3仿真模型的搭建方法与步骤•如何正确且快速使用simulink,对于初学者来说,这是最为关心的事情。•已知某直流比较仪的输出特性曲线的表达式为:I1=k×I2+I0•式中I1和I2分别为一次电流和二次电流,I0为比较仪的偏置系数,k为比较仪的灵敏度,且已知k=114和I0=110mA,试用simulink绘制该比较仪的输出特性曲线。231、调用功能模块24•(1)Ramp模块,用来产生I2信号,也来自输入源Sources模块库;•(2)Constant模块,用来产生常数I0,来自simulink模块库中的输入源Sources模块库;•(3)Gain模块,将输入信号乘上k,来自MathOperations模块库;•(4)sum模块,把两个量I0和kI2加起来,也来自MathOperations模块库;•(5)scope模块,显示比较仪输出特性曲线的结果,来自Sink接收器模块库252、创建并保存;3、连接模块并设置其参数模型文件26Constant模块属性参数对话框27Ramp模块属性参数对话框28Gain模块属性参数对话框29Sum模块属性参数对话框30Scope模块属性参数对话框31仿真参数的设定对话框32仿真结果33§4-3-2导出仿真数据的操作技巧•点击Scope模块属性参数对话框中的“Datahistory”按钮,弹出有关Scope模块数据显示属性参数设置对话框,勾掉“Savedatatoworkspace”,同时将“Datahistory”对话框中的“Format”项的参数设置为Array,接着给输出数据取名;•返回到Matlab的界面窗口,便可以看到outputcurve变量名被显示在workspace窗口中;34outputcurve变量在workspace窗口中显示出来35命令语句•在MATALB的命令窗口中执行以下命令语句:•saveoutputcurve.txtoutputcurve-ascii•还可以在MATALB的命令窗口中执行以下命令语句:•x=outputcurve(:,1);y=outputcurve(:,2)•plot(x,y)•title('直流比较仪输出特性曲线');xlabel('二次电流I2/mA');ylabel('一次电流I1/A')36执行结果37§4-3-3创建与封装子系统的基本方法•建立子系统有以下几个优点:•(1)可以减少显示在模型窗口的模块数,这样用户的模型窗口就会很整齐,而且条理清晰、层次分明,也方便用户连线;•(2)可以将功能相关的模块放在一起,用户可以用建立子系统创建自己的模块库;•(3)可以生成层次化的模型图表,即子系统在一层,组成子系统的模块在另一层。这样用户在设计模型时,既可采用自上而下的设计方法,也可以采用自下而上的设计方法。38创建与封装子系统的途径•(1)采用Ports&Subsystems端口和子系统模块库的Subsystem功能模块:增加一个子系统模块到你的模型中,并在打开的模型的编辑区设计组合新的功能模块,以建立子系统;•(2)将现有的多个功能模块连接好,再组合起来,然后再把这些模块组合成新的功能模块,以建立子系统。39从Ports&Subsystems模块库中复制Subsystem功能模块40举例:三相电压波形的子系统)250sin(220tVa)120250sin(220tVb)240250sin(220tVc41三相电压波形的子系统42所需要模块•(1)SineWave模块,用来产生正弦波形,所处模块库为Sources输入源模块库;•(2)TransportDelay模块,用来产生波形延迟,同样来自Sources输入源模块库;•(3)Mux模块,将三个输入信号组合为总线输出信号,来自SignalRouting模块库;•(4)scope模块,显示比较仪输出特性曲线的结果,来自Sink接收器模块库。43SineWave模块参数对话框44TransportDelay模块参数对话框45三相电压波形仿真结果46由功能模块组合成子系统47所需要功能模块•Step模块(在Simulink模块库中的Sources模块库中调用)、Gain模块(在Simulink模块库中的MathOperations模块库中调用)、Integrator模块(在Simulink模块库中的Continuous模块库中调用)、Derivative模块(在Simulink模块库中的Continuous模块库中调用)、Sum模块(在Simulink模块库中的MathOperations模块库中调用,本例选择“rectangular”(矩形),将Listofsigns栏置为+++,)和Scope模块(在Simulink模块库中的Sinks模块库中调用)48设置Step模块参数49选中要自定义功能模块的那些功能模块50封装完毕的子系统51给创建完毕的子系统重新命名52被重新命名的子系统53对子系统进行封装54修改子系统的图标为波音747的图标55设置子系统的新图标56“直线”图标57“学习”图标58§4-4S-function的设计方法•simulink为用户提供了许多内置的基本模块库,通过这些功能模块进行连接而构成系统模型。对于那些经常使用的模块进行组合并封装可以构建出重复使用的新模块,但它依然是基于simulink原来提供的内置模块。•simulink中的函数也称之为系统函数,简称S函数。它是为用户提供的一种simulink功能的强大编程机制。通过编写S函数,用户可以向S函数中添加自己的算法,该算法可以用Matlab编写,也可以用C语言等其它编程语言进行编写。并且simulink中S-function是一种功能强大的能够对模块库进行扩展的新工具。59S-function的基本含义•S-function是一个动态系统的计算机语言描述,在Matlab里,用户可以选择用M文件编写,也可以用S或MEX文件编写,在这里只介绍如何用M文件编辑器编写S-function。S-function提供了扩展simulink模块库的有力工具,它采用一种特定的调用语法,使函数和Simulink解算器进行交互联系。•S函数模块存放在Simulink模块库中的User-DefinedFunctions用户定义模块库中,通过此模块可以创建包含S函数simulink模型。S函数文件名区域要填写S函数的文件名60simulink模块的图标与参数61S-function所默认的是4个输入参数输入参数描述t代表当前仿真时间,这个输入参数通常用于决定下一个采样时刻,或者在多采样速率系统中,用来区分不同的采样时刻点,并据此进行不同的处理x表示状态向量,这个参数是必须的,甚至在系统中不存在状态向量时也是如此。它具有很灵活的运用,可为空u表示输入向量flag是一个控制在每一个仿真阶段调用哪一个子函数的参数,由Simulink在调用时自动取值,即flag充当S函数的行为标示62S-function所默认的4个返回参数返回参数描述sys是一个通用的返回参数,它所返回值的意义取决于flag的值x0是初始状态值(没有状态向量时是一个空矩阵[]),这个返回参数只在flag值为0时才有效,其它时候都会被忽略str这个参数没有什么意义,是MathWorks公司为将来的应用保留的,M文件S-function必须把它设为空矩阵[]ts是一个m×2的矩阵,它的两列分别表示采样时间间隔和偏移63M文件中的S-function常用子函数子函数描述mdlInitializeSizes定义S-function模块的基本特性,包括采样时间、连续或者离散状态的初始条件和sizes数组mdlDerivatives计算连续状态变量的微分方程mdlUpdate更新离散状态、采样时间和主时间步的要求mdlOutputs计算S-function的输出mdlGetTimeOfNextVarHit计算下一个采样点的绝对时间,这个方法仅仅是在用户在mdlInitializeSizes里说明了一个可变的离散采样时间mdlTerminate实现仿真任务必须的结束64Sizes数组内部字段意义字段描述NumContStates连续状态的个数(状态向量连续部分的宽度)NumDiscStates离散状态的个数(状态向量离散部分的宽度)NumOutputs输出变量的个数(输出向量的宽度)NumInputs输入变量的个数(输入向量的宽度)DirFeedthrough有无直接馈入NumSampleTimes采样时间的个数65标示器flag的含义模拟阶段M文件标示阶段调用S-function子函数初始化0mdlInitializeSizes连续状态微分1mdlDerivatives离散状态更新2mdlUpdate计算输出矢量3mdlOutputs计算下一个采样时间4mdlGetTimeOfNextVarHit仿真结束9mdlTerminate66§4-6典型功能模块应用方法举例•本例熟悉使用非线性模块库Discontinuities(如图4-15所示)
本文标题:第四章simulink的基础应用
链接地址:https://www.777doc.com/doc-3613825 .html