matlab第十讲_第1页
matlab第十讲_第2页
matlab第十讲_第3页
matlab第十讲_第4页
matlab第十讲_第5页
已阅读5页,还剩62页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

第十章Simulink仿真环境 目录 10 1初识Simulink10 2仿真模型的建立10 3系统的仿真与分析10 4子系统与封装10 5S函数的设计与应用 本章学习目标熟悉Simulink的操作环境掌握绘制系统模型的方法 掌握子系统模块的建立与封装技术 了解S函数的功能与设计方法 10 1初识Simulink 一个简单的仿真实例 在MATLAB的命令窗口输入simulink 或单击MATLAB主窗口工具栏上的 Simulink 命令按钮即可启动Simulink Simulink启动后会显示如图所示的Simulink模块库浏览器 SimulinkLibraryBrowser 窗口 1 模型元素一个典型的Simulink模块包括以下3种元素 信号源 Source 信号源可以式常量 Constant 时间 Clock 正弦波 SineWave 锯齿 Step 波等 被模拟的系统模块 例如 MathOperations 数学运算 模块 Continuous 连续 系统模块 Discrete 离散 系统模块等 信号输出 Sink 信号可以在示波器 Scope 图形 Graph 记录仪上显示 可以存储到文件 ToFile 导出到工作空间 ToWorkspace 2 仿真步骤利用Simulink进行系统仿真的步骤如下 1 建立系统仿真模型 包括添加模块 设置模块参数 进行模块连接等操作 2 设置仿真参数 3 启动仿真并分析仿真结果 3 仿真实例下面通过一个简单实例 说明利用Simulink建立仿真模型并进行系统仿真的方法 例10 1利用Simulink仿真曲线y t sint sin 9t 1 在MATLAB主菜单中 选择 File 菜单中 New 菜单项的 Model 命令 打开一个名为untitled的模型编辑窗口 或启动Simulink模块库浏览器后再单击其工具栏中的Newmodel命令按钮 也会弹出模型编辑窗口 2 将所需模块添加到模型中 3 用连线将各个模块连接起来组成系统仿真模型 如图所示 4 设置模块参数并连接各个模块组成仿真模型 先双击各个正弦源 打开 SourceBlockParameters 对话框 如图所示 模型建立好后 从模型编辑窗口的 File 菜单中选择 Save 或 Saveas 命令将模型以模型文件的格式存盘 5 设置系统仿真参数 单击模型编辑窗口 Simulink 菜单中的 ConfingurationParameters 命令 打开仿真参数设置对话框 即可设置 6 仿真操作 双击示波器图标 打开示波器窗口 在模型编辑器窗口中选择 Simulink 菜单中的 Start 命令 就可在示波器窗口中看到仿真结果的变换曲线 单击示波器窗口工具栏上的 Autoscale 按钮 可以自动调整坐标来使波形刚好完整显示 这时的波形如图所示 5 设置系统仿真参数 单击模型编辑窗口 Simulink 菜单中的 ConfingurationParameters 命令 打开仿真参数设置对话框 即可设置 6 仿真操作 双击示波器图标 打开示波器窗口 在模型编辑器窗口中选择 Simulink 菜单中的 Start 命令 就可在示波器窗口中看到仿真结果的变换曲线 单击示波器窗口工具栏上的 Autoscale 按钮 可以自动调整坐标来使波形刚好完整显示 这时的波形如图所示 10 2仿真模型的建立 10 2 1Simulink的基本模块模块是构成系统仿真模型的基本单元 用适当的方式把各种模块连接在一起就能够建立动态系统的仿真模型 所以构建系统仿真模型主要涉及Simulink模块的操作 Simulink的模块库提供了大量模块 大体分为两类 基本模块库和专业模块库 在模块库浏览器左侧的Simulink选项上单击鼠标右键 在弹出的快捷菜单中选择 OpenSimulinkLibrary 命令 将打开Simulink基本模块库窗口 如图所示 双击其中的子模块库图标 打开子模块库图标 打开子模块库 找到仿真所需的模块 以连续系统模块库 Continuous 为例 在Simulink基本模块库窗口 双击Continuous模块库的图标即可打开该模块库窗口 如下图所示 10 2 2模块操作1 添加与删除模块要把一个模块添加到模块中 首先要在Simulink模块库中找到该模块 然后将这个模块拖曳到模型窗口即可 删除模块的方法是 选定模块 按Delete键或选择 Edit 菜单中的 Cut 或 Clear 命令 或者在模块上单击鼠标右键 在弹出的快捷菜单中选择 Cut 或 Clear 命令 Cut 命令将删除的模块送到剪切板 Clear 命令将彻底删除模块 2 选取模块要在模型编辑窗口中选择单个模块 只要用鼠标在模块上单击即可 这时模块的角上出现黑色的小方块 托动这些小方块可以改变模块的大小 3 复制模块在同一模型编辑窗口中复制模块的方法在不同的模型编辑窗口之间复制模块的方法复制操作还可以选择模型窗口 Edit 菜单中的额 Copy 和 Paste 命令或单击工具栏上的 Copy 和 Paste 命令按钮来完成 4 模型外形的调整改变单个模块的大小改变整个模型中所有模块的大小调整模块的方向改变模块的颜色给模块加阴影 5 模块名的处理要隐藏模块名 首先选定模块 然后选择 Format 菜单中的 HideName 命令 模块名就会被隐藏 同时菜单项 HideName 变成 ShowName 选择 ShowName 命令就会使模块隐藏的名字显示出来 要修改模块名 用鼠标左键单击模块名的区域 这时会在此处出现编辑状态的光标 在这种状态下能够对模块名随意修改 10 2 3模块的连接当设置好了各个模块后 还需要把它们按照一定的顺序连接起来才能组成一个完整的系统模型 1 连接两个模块方法是先移动鼠标指针到输出端 当鼠标指针变成十字形光标时按住鼠标左键 移动鼠标指针到另一个模块的输入端 当十字光标出现重影时 释放鼠标左键就完成了两个模块的连接 2 模块间连线的调整调整模块间连线位置可采用鼠标托放操作来实现 先将鼠标指针移动到需要移动的线段的位置 按住鼠标左键 移动鼠标到目标位置 释放鼠标左键 3 连线的分支操作方法是 在先连好一条线后 把鼠标指针移到分支点的位置 先按下Ctrl键 然后按住鼠标拖曳到目标模块的输入端 释放鼠标和Ctrl键 4 标准连线操作方法是 双击要做标记的连线 将出现一个小文本编辑框 在其中输入标注文本 这样就建立了一个信号标记 10 4模块的参数和属性设置1 模块的参数设置Simulink中几乎所有模块的参数都允许用户进行设置 只要双击要设置的模块就会弹出模块参数对话框 该对话框分为两部分 上面以部分是模块功能说明 下面一部分用来进行模块参数设置 2 模块属性设置选定要设置属性的模块 然后在模型编辑窗口的 Edit 菜单中选择 BlockProperties 命令 将打开模块属性对话框 该对话框包括General BlockAnnotation和Callbacks3个可以相互切换的选项卡 其中General选项卡中可以设置3个基本属性 1 Descripyion 对该模板中的用法进行说明 2 Priority 规定该模块在模块中相对于其他模块执行的优先顺序 3 用户为模块添加的文本格式的标记 BlockAnnotation 选项卡中指定在该模块的图标下显示模块的哪个参数 Callbacks 选项卡中指定当对该模块实施某种操作时需要执行的MATLAB命令或程序 10 3系统的仿真与分析 10 3 1设置仿真参数其方法是 打开系统仿真模型 从模型编辑窗口的 Simulation 菜单中选择 ConfigurationParameters 命令 打开一个仿真参数对话框 在其中可以设置仿真参数 Slover类 用于设置仿真起始和停止时间 选择微分方程求解算法并为其规定参数 以及选择某些输出选项 DataImport Export类 用于管理工作空间数据的导入和导出 Optimization类 用于设置仿真优化模式 Diagnostics类 用于设置在仿真过程中出现各类错误时发出警告的等级 HardwareImplementation类 用于设置实现仿真的硬件 ModelReferencing类 用于设置参考模型 SimulationTarget类 用于设置仿真模型目标 HDLColor类 用于设置通过自动代码生成技术将设计算法生成HDL代码的方法 包括设置第三方综合工具 仿真工具以及实现的FPGA型号等 1 Solver类设置在对话框左边的树型结构中单击 Solevr 类 在右边的窗口中会列出所有Solver选项 如图所示 1 设置仿真起始和停止时间 Simulinktime 2 仿真算法的选择 Solveroption 在 Type 编辑框中设定算法类别 固定步长和变步长算法 在 Solver 编辑器中选择集体算法 在采用变步长算法时 首先应该指定允许的误差限 在采用变步长算法时还要设置最大步长 在默认值的情况下 系统所给定的最大步长为最大步长 终止时间 起始时间 50在采用固定步长算法时 要先设置固定步长 还多了一个模型类型 Taskingmodeforperiodicsampletimes 的选项 该选项包括 多任务 MultiTasking 单任务 SingleTasking 和默认值 Auto 变步长和固定步长分别对应许多不同的具体算法 如图所示 2 DataImport Export类设置DataImport Export类包含的选项如图所示 1 从工作空间中载入数据 Loadfromworkspace 在仿真过程中 如果模型中有输入端口 可从工作空间直接把数据载入到输入端口 即选中 Input 复选框 然后在后面的编辑框内输入数据的变量名 变量名的输入有以下几种形式 矩阵形式 包含时间数据的结构形式 综合形式 2 保存到工作空间 Savetoworkspace 同载入数据的形式一样 保存数据也有矩阵 结构和包含时间数据的结构形式 矩阵形式 包含时间数据的结构形式 3 保存选项 Saveoptions 在保存选项栏中的 Format 下拉列表中有矩阵 结构和包含时间的结构3种选择 在保存选项栏中的输出选项 Outputoptions 下拉表中有3种选择 Refineoutput Produceadditionaloutput和Producespecifiedoutputonly Refineoutput 细化输出 细化输出的目的是使输出的数据曲线更加平滑 Produceadditionaloutput 产生附加输出 由用户指定产生输出的附加时刻 Producespecifiedoutputonly 仅在指定的时刻产生输出 仅仅提供在指定的时间点上的输出值 10 3 2仿真结果分析为了观察仿真结果的变化轨迹可以采用3种方法 1 把输出结果送给Scope模块或者XYGraph模块 Scope模块显示系统输出量对于仿真时间的变化曲线 XYGraph模块显示送到该模块上的两个信号中的一个对另一个的变化关系 2 把仿真结果送到输出端口并作为返回变量 然后使用MATLAB命令画出该变量的变化曲线 3 把输出结果送到ToWorkspace模块 从而将结果直接存入工作空间 然后用MATLAB命令画出该变量的变化曲线 仿真输出结果还有其他一些输出方式 例如使用Display模块可以显示输出数值 看下面的例子 例10 2利用Simulink仿真求 10 3 3系统仿真实例下面的应用实例将分别采用不同建模方法为系统建模并仿真 例10 3有初始状态为0的二阶微分方程 其中u t 是单位阶跃函数 试建立系统模型并仿真 方法1 用微分 积分器直接构造求解微分方程的模型 把原微分方程改写为u经微分作用得 经积分作用得 再经积分模块作用就的y 而经代数运算又产生 据此可以建立系统模型并仿真 步骤如下 1 利用Simulink模块库中的基本模块建立系统模型如图所示 模型中各个模块说明如下 u t 输入模块 Gu和Gu1增益模块 求和模块 积分模块 G和G1增益模块 2 设置系统仿真参数 3 仿真操作 仿真结果的变化曲线 如下图 方法2 利用传递函数模块建模 对方程两边取Laplace变换 得经整理得传递函数 在Continuous模块库中有标准的传递函数模块可供调用 于是 就可以构建求解微分方程的模型并仿真 工具系统传递函数构建如图所示的仿真模型 模型中各个模块说明如下 1 U s 模块 2 G s 模块 双击TransferFcn模块 引出其参数设置对话框 在分子 分母栏中填写所需的系数 如图所示 以后的操作与方法1相同 利用3 利用状态方程模块建模 若令那么微分方程可写成写成状态方程为 式中在Continuous模块中有标准状态方程模块可供调用 于是 就可构建求解微分方程的模型并仿真 根据系统状态方程构建的仿真模型如下 模型中个个模块说明如下 u t 输入模块 它的steptime被设置为0 state space模块 各栏依次填入 01 10 1 5 0 1 102 和0 后面的操作与方法1相同 10 4子系统与封装 当模型的规模较大或者较复杂时 用户可以把几个模块组合成一个新的模块 这样的模块称为子系统 10 4 1子系统的建立建立子系统有两种方法 通过Subsystem模块建立子系统和通过已有的模块建立子系统 1 通过Subsystem模块建立子系统新建一个仿真模型 打开Simulink模块库中的Port Subsystems模块库 将Subsystem模块添加到模型编辑窗口 双击Subsystem模块打开一个Subsystem窗口 窗口中已经自动添加了一个输入模块和输出模块 将要组合的模块插入到输入模块和输出模块中间 一个子系统就建好了 2 通过已有的模块建立子系统先选择要建立子系统的模块 不包括输入端端口和输出端口 选择模型编辑窗口Edit菜单中的CreatSubsystem命令 这样 子系统就建好了 原来的模块变为子系统的图标 例10 4PID控制器是在自动控制中经常使用的模块 它由比例单元 P 积分单元 I 微分单元 D 组成 PID控制的传递函数为建立PID控制器的模型并建立子系统 先建立PID控制器的模型 如图所示 选中模型中所有模块 使用模型编辑窗口Edit菜单中的 CreateSubsystem命令建立子系统 模型将被一个Subsystem模块取代 如图所示 10 4 2子系统的条件执行条件执行子系统分为 使能子系统 触发子系统和使能加触发子系统 1 使能子系统使能子系统表示子系统在由控制信号控制时 控制信号由负变正时子系统开始执行 直到控制信号再次变为负时结束 2 触发子系统触发子系统是指当触发事件发生时开始执行子系统 3 使能加触发子系统所谓使能加触发子系统就是把Enable和Tirgger模块都加到子系统中 使能控制信号和触发控制信号共同作用子系统的 执行 也就是前两种子系统的综合 10 4 3子系统的封装所谓子系统的封装 Masking 就是为子系统定制对话框和图标 使子系统本身有一个独立的操作界面 把子系统中的各模块的参数对话框合成一个参数设置对话框 在使用时不必打开每个模块进行参数设置 这样使子系统的使用更加方便 子系统的封装过程很简单 先选中所要封装的子系统 再选择模型编辑窗口 Edit 菜单中的 MaskSubsystem 命令 这时将出现封装编辑器 MaskEditor 对话框 10 5S函数 10 5 1概念10 5 2功能10 5 3工作流程10 5 4书写规范10 5 5应用示例 10 5 1概念 S函数是一种描述动态系统的计算机语言 可以用MATLAB C C Ada或Fortran语言书写 S函数采用一种特殊的调用语法使得S函数可以和Simulink解法器进行交互 S函数可以用来描述连续 离散和混杂系统 10 5 2功能 S函数可以实现以下操作 可以通过它用多种语言来创建新的通用性的Simulink模块 编写好的S函数 可以在User DefinedFunctions模块库的S function模块中通过名称来调用 并可以进行封装 可以通过S函数将一个系统描述成一个数学方程 便于图形化仿真 可以创建代表硬件驱动的模块 10 5 3工作流程 1 模块输入 状态和输出间的数学关系2 Simulink仿真流程3 S函数的回调函数 1 模块输入 状态和输出间的数学关系 描述一个Simulink模块需要3个基本元素 输入向量 u 状态向量 x 输出向量 y 输出是输入向量 状态向量和采样时间的函数 在计算中 往往需要利用如

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论