




已阅读5页,还剩77页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1 Simulink仿真基础 2基本操作 3基本模块 4建模方法 5系统仿真举例 1Simulink的概述 2 下页 上页 Simulink已经成为动态系统建模和仿真领域中应用最为广泛的软件之一 Simulink可以很方便地创建和维护一个完整的模块 评估不同的算法和结构 并验证系统的性能 由于Simulink是采用模块组合方式来建模 从而可以使得用户能够快速 准确地创建动态系统的计算机仿真模型 特别是对复杂的不确定非线性系统 更为方便 Simulink模型可以用来模拟线性和非线性 连续和离散或者两者的混合系统 也就是说它可以用来模拟几乎所有可能遇到的动态系统 另外Simulink还提供一套图形动画的处理方法 使用户可以方便的观察到仿真的整个过程 Simulink没有单独的语言 但是它提供了S函数规则 所谓的S函数可以是一个M函数文件 FORTRAN程序 C或C 语言程序等 通过特殊的语法规则使之能够被Simulink模型或模块调用 S函数使Simulink更加充实 完备 具有更强的处理能力 3 1Simulink的概述 3 下页 上页 同Matlab一样 Simulink也不是封闭的 他允许用户可以很方便的定制自己的模块和模块库 同时Simulink也同样有比较完整的帮助系统 使用户可以随时找到对应模块的说明 便于应用 目前 随着软件的升级换代 在软硬件的接口方面有了很大的改进 使用Simulink可以很方便地进行实时的信号控制和处理 信息通信以及DSP的处理 世界上许多知名的大公司已经使用Simulink作为他们产品设计和开发的强有力工具 综上所述 Simulink就是一种开放性的 用来模拟线性或非线性的以及连续或离散的或者两者混合的动态系统的强有力的系统级仿真工具 4 下页 上页 Simulink的特点 1 丰富的可扩充的预定义模块库 2 交互式的图形编辑器来组合和管理直观的模块图 3 以设计功能的层次性来分割模型 实现对复杂设计的管理 4 通过ModelExplorer导航 创建 配置 搜索模型中的任意信号 参数 属性 生成模型代码 5 提供API ApplicationProgrammingInterface 应用程序编程接口 用于与其他仿真程序的连接或与手写代码集成 6 使用EmbeddedMATLAB 模块在Simulink和嵌入式系统执行中调用MATLAB算法 7 使用定步长或变步长运行仿真 根据仿真模式 Normal Accelerator RapidAccelerator 来决定以解释性的方式运行或以编译C代码的形式来运行模型 8 图形化的调试器和剖析器来检查仿真结果 诊断设计的性能和异常行为 9 可访问MATLAB从而对结果进行分析与可视化 定制建模环境 定义信号参数和测试数据 10 模型分析和诊断工具来保证模型的一致性 确定模型中的错误 5 下页 上页 2 在MATLAB6 5的命令窗口中输入simulink3结果是在桌面上出现一个用图标形式显示的Library simulink3的Simulink模块库窗口 Simulink的启动 1 在MATLAB6 5的命令窗口中输入simulink结果是在桌面上出现一个称为SimulinkLibraryBrowser的窗口 在这个窗口中列出了按功能分类的各种模块的名称 当然用户也可以通过MATLAB主窗口的快捷按钮来打开SimulinkLibraryBrowser窗口 两种模块库窗口界面只是不同的显示形式 用户可以根据各人喜好进行选用 一般说来第二种窗口直观 形象 易于初学者 但使用时会打开太多的子窗口 在MATLAB6 5的主桌面中的工具栏中点击图标即可 与第 1 种所打开的窗口一样 6 下页 上页 3 2基本操作 一个典型的Simulink模型包括如下三种类型的元素 信号源模块 被模拟的系统模块 输出显示模块 3 2 1模型基本结构 图3 1 1Simulink模型元素关联图 如图3 1 1所示说明了这三种元素之间的典型关系 系统模块作为中心模块 是Simulink仿真建模所要解决的主要部分 信号源模块为系统的输入 它包括常数信号源或函数信号发生器 如正弦和阶跃函数波等 和用户自己在Matlab中创建的自定义信号 显示模块主要是接收系统的输出 输出显示的形式包括图形显示 示波器显示和输出到文件或MATLAB工作空间中三种 输出模块主要在Sinks库中 7 下页 上页 Simulink模型并不一定要包含全部的三种元素 在实际应用中通常可以缺少其中的一个或两个 例如 若要模拟一个系统偏离平衡位置后的恢复行为 就可以建立一个没有输入而只有系统模块加一个显示模块的模型 在某种情况下 也可以建立一个只有源模块和显示模块的系统 若需要一个由几个函数复合的特殊信号 则可以使用源模块生成信号并将其送入Matlab工作间或文件中 3 2 2 仿真运行原理Simulink仿真包括两个阶段 初始化阶段和模型执行阶段 1 模块初始化在初始化阶段主要完成以下工作 模型参数传给Matlab进行估值 得到的数值结果将作为模型的实际参数 展开模型的各个层次 每一个非条件执行的子系统被它所包含的模块所代替 8 下页 上页 模型中的模块按更新的次序进行排序 排序算法产生一个列表以确保具有代数环的模块在产生它的驱动输入的模块被更新后才更新 当然 这一步要先检测出模型中存在的代数环 决定模型中有无显示设定的信号属性 例如名称 数据类型 数值类型以及大小等 并且检查每个模块是否能够接受连接到它输入端的信号 Simulink使用属性传递的过程来确定未被设定的属性 这个过程将源信号的属性传递到它所驱动的模块的输入信号 决定所有无显示设定采样时间的模块的采样时间 分配和初始化用于存储每个模块的状态和输入当前值的存储空间 完成这些工作后就可以进行仿真了 2 模型执行一般模型是使用数值积分来进行仿真的 所运用的仿真解法器 仿真算法 依赖于模型提供它的连续状态微分能力 计算微分可以分两步进行 9 下页 上页 首先 按照排序所决定的次序计算每个模块的输出 然后 根据当前时刻的输入和状态来决定状态的微分 得到微分向量后再把它返回给解法器 后者用来计算下一个采样点的状态向量 一旦新的状态向量计算完毕 被采样的数据源模块和接受模块才被更新 在仿真开始时模型设定待仿真系统的初始状态和输出 在每一时间中 Simulink计算系统的输入 状态和输出 并更新模型来反映计算出的值 在仿真结束时 模型得出系统的输入 状态和输出 在每个时间步中 Simulink所采取的动作依次为 按排列好的次序更新模型中模块的输出 Simulink通过调用模块的输出函数计算模块的输出 Simulink只把当前值 模块的输入以及状态量传给这些函数计算模块的输出 对于离散系统 Simulink只有在当前时间是模块采样时间的整数倍时 才会更新模块的输出 10 下页 上页 按排列好的次序更新模型中模块的状态 Simulink计算一个模块的离散状态的方法时调用模块的离散状态更新函数 而对于连续状态 则对连续状态的微分 在模块可调用的函数里 有一个用于计算连续微分的函数 进行数值积分来获得当前的连续状态 检查模块连续状态的不连续点 Simulink使用过零检测来检测连续状态的不连续点 计算下一个仿真时间步的时间 这是通过调用模块获得下一个采样时间函数来完成的 3 确定模块更新次序 在仿真中 Simulink更新状态和输出都要根据事先确定的模块更新次序 而更新次序对结果的有效性来说非常关键 特别当模块的输出是当前输入值的函数时 这个模块必须在驱动它的模块被更新之后才能被更新 否则 模块的输出将没有意义 11 下页 上页 注意 Simulink在模块初始化时已将模块排好正确的次序 为了建立有效的更新次序 Simulink根据输入和输出的关系将模块分类 其中 当前输出依赖于当前输入的模块称为直接馈入模块 所有其他的模块都称为非虚拟模块 直接馈入模块有Gain Product和Sum模块 非直接馈入模块有Integrator模块 它的输出只依赖于它的状态 Constant模块 没有输入 和Memory模块 它的输出只依赖于前一个模块的输入 基于上述分类 Simulink使用下面两个基本规则对模块进行排序 每个模块必须在它驱动的所有模块更新之前被更新 这条规则确保了模块被更新时输入有效 若非直接馈入模块在直接馈入模块之前更新 则它们的更新次序可以是任意的 这条规则允许Simulink在排序过程中忽略非虚拟模块 一个约束模块更新次序的因素是用户给模块设定优先级 Simulink在低优先级模块之前更新高优先级模块 12 下页 上页 3 3基本模块 由于大多数物理系统都可以用微分方程组和代数方程组来描述 Simulink也采用的是面向结构图的数字仿真原理 Simulink3所具有的功能模块库如下 13 下页 上页 信号源模块库 Sources sources mdl 14 下页 上页 接收器 输出显示 模块库 Sinks sinks mdl 15 下页 上页 连续模块库 Continuous continuous mdl 16 下页 上页 离散模块库 Discrete discrete mdl 17 下页 上页 数学模块库 Math math mdl 18 下页 上页 数学模块库 Math math mdl 19 下页 上页 数学模块库 Math math mdl 20 下页 上页 数学模块库 Math math mdl 21 下页 上页 通用函数及平台模块库 Functions Tables function mdl 22 下页 上页 非线性模块库 Nonlinear nonlinear mdl 23 下页 上页 信号处理及系统类模块库 Signal Systems sigsys mdl 24 下页 上页 信号处理及系统类模块库 Signal Systems 25 下页 上页 信号处理及系统类模块库 Signal Systems 26 下页 上页 子系统模块库 Subsystems 27 下页 上页 子系统模块库 Subsystems 28 下页 上页 模型检测模块库 Modelverification 29 下页 上页 模型检测模块库 Modelverification 30 下页 上页 模块集及工具箱 blocksets toolbox 31 下页 上页 航空航天模块库 AerospaceBlockset 提供了一系列用于航空器 航天器 导弹和推进运载系统及其子系统建模 集成和仿真的模块 32 下页 上页 码分多址技术参数模块库 CDMA Code DivisionMultipleAccess ReferenceBlockset 专门针对CDMAIS 95A标准的无线通信系统的创建和仿真提供了大量的Simulink模块 33 下页 上页 通信模块库 CommBlockset 即CommunicationsBlockset 提供了面向通信专业的丰富的模块库 扩展了Simulink的功能 34 下页 上页 控制工具箱模块库 ControlsToolbox 即LTI Lineartimeinvariable线性时不变系统 模块 可用线性控制系统的分析 设计和调节 用户可以指定系统的线性模型 通过绘制系统的时域频域响应来了解系统的行为 使用自动及交互方式调节控制器的参数 验证诸如上升时间 幅值 相角裕度等性能指标要求 基于工作流的图形用户界面可以帮助用户完成从系统分析到设计的每一个步骤 控制系统工具箱提供下述指令 1 进行线性模型操作的算法 2 通过简单模型的串联 并联及反馈连接创建复杂的模块框图 3 对连续时间模型进行离散化处理 4 对高阶模型进行低阶的近似计算 35 下页 上页 3 4建模方法 利用Simulink建立物理系统和数学系统的仿真模型 关键是对Simulink提供的功能模块进行操作 即用适当的方式将各种模块连接在一起 本小节将介绍模块的基本操作 在介绍具体的操作之前应先注意如下两点 在建模之前 应对模块和信号线有一个整体 清晰和仔细的安排 以便能减少建模时间 及时对模块和信号线命名 及时对模型加标注 以增强模型的可读性 本小节将详细介绍创建Simulink仿真模型的过程 包括模块操作 编辑信号线及标注模型等 36 下页 上页 3 4 1Simulink简单模型的建立 简单模型的建立 1 建立模型窗口 在matlab主界面点击 file New Model 即可 2 将功能模块由模块库窗口复制到模型窗口 3 对模块进行连接 从而构成需要的系统模型 模型窗口如下图所示 37 模型的特点在Simulink里提供了许多如Scope的接收器模块 这使得用Simulink进行仿真具有像做实验一般的图形化显示效果 Simulink的模型具有层次性 通过底层子系统可以构建上层母系统 Simulink提供了对子系统进行封装的功能 用户可以自定义子系统的图标和设置参数对话框 38 下页 上页 3 4 2Simulink功能模块的处理 模块库中的模块可以直接用鼠标进行拖曳 选中模块 按住鼠标左键不放 而放到模型窗口中进行处理 在模型窗口中 选中模块 则其4个角会出现黑色标记 此时可以对模块进行以下的基本操作 移动 选中模块 按住鼠标左键将其拖曳到所需的位置即可 若要脱离线而移动 可按住shift键 再进行拖曳 复制 选中模块 然后按住鼠标右键进行拖曳即可复制同样的一个功能模块 删除 选中模块 按Delete键即可 若要删除多个模块 可以同时按住Shift键 再用鼠标选中多个模块 按Delete键即可 也可以用鼠标选取某区域 再按Delete键就可以把该区域中的所有模块和线等全部删除 功能模块的基本操作 包括模块的移动 复制 删除 转向 改变大小 模块命名 颜色设定 参数设定 属性设定 模块输入输出信号等 39 下页 上页 转向 为了能够顺序连接功能模块的输入和输出端 功能模块有时需要转向 在模型窗口的菜单Format中选择FlipBlock旋转180度 选择RotateBlock顺时针旋转90度 改变大小 选中模块 对模块出现的4个黑色标记进行拖曳即可 模块命名 a 模块名的显示与隐藏 选取菜单Format下的HideName 模块名就会被隐藏 同时HideName改为ShowName 选取ShowName就会使模块隐藏的名字显示出来 b 修改模块名 先用鼠标在需要更改的名称上单击一下 然后直接更改即可 模块名和模块图标中的字体都可以更改 方法是选定模块 在菜单Format下选取Font 这时会弹出SetFont的对话框 在对话框中选取想要的字体 c 改变模块名的位置 模块名的位置有一定的规律 当模块的 40 7 颜色设定 在模型窗口的Format菜单中的ForegroundColor可以改变模块的前景颜色 BackgroundColor可以改变模块的背景颜色 而模型窗口的颜色可以通过ScreenColor来改变 接口在左右两侧时 模块名只能位于模块的上下两侧 当模块的接口在上下两侧时 模块名只能位于模块的左右两侧 因此模块名只能从原位置移到相对的位置 可以直接用鼠标拖动模块名到其相对的位置 也可以选定模块 用菜单Format下的FlipName实现相同的移动 注意 模块名称不能被删除只能被隐藏 参数设定 用鼠标双击模块 就可以进入模块的参数设定窗口 从而对模块进行参数设定 参数设定窗口包含了该模块的基本功能帮助 可以点击其上的help按钮获得更详尽的帮助 通过对模块的参数设定 就可以获得需要的功能模块 41 下页 上页 属性设定 选中模块 打开Edit菜单的BlockProperties可以对模块进行属性设定 包括Description属性 Priority优先级属性 Tag属性 Openfunction属性 Attributesformatstring属性 其中Openfunction属性是一个很有用的属性 通过它指定一个函数名 则当该模块被双击之后 Simulink就会调用该函数执行 这种函数在MATLAB中称为回调函数 模块的输入输出信号 模块处理的信号包括标量信号和向量信号 标量信号是一种单一信号 而向量信号为一种复合信号 是多个信号的集合 它对应着系统中几条连线的合成 缺省情况下 大多数模块的输出都为标量信号 对于输入信号 模块都具有一种 智能 的识别功能 能自动进行匹配 某些模块通过对参数的设定 可以使模块输出向量信号 42 下页 上页 3 4 3Simulink线的处理 改变粗细 Simulink根据线引出的信号是标量信号还是向量信号 来确定细线还是粗线 如果信号为标量则为细线 若信号为向量则为粗线 当选中模型窗口的Format菜单的下拉菜单WideVectorLines时 线的粗细会根据线所引出的信号是标量还是向量而改变 选中VectorLineWidths时 则可以显示出向量引出线的宽度 即向量信号由多少个单一信号合成 Simulink模型的构建是通过用线将各种功能模块进行连接而构成的 用鼠标可以在功能模块的输入与输出端之间直接连线 所画的线可以改变粗细 设定标签 也可以把线折弯 分支 求和 模块的向量运算 43 设定标签 只要在线上双击鼠标 即可输入该线的说明标签 也可以通过选中线 然后打开Edit菜单下的SignalProperties进行设定 其中signalname属性的作用是标明信号的名称 设置这个名称反映在模型上的直接效果就是与该信号有关的端口相连的所有直线附近都会出现写有信号名称的标签 模块的连接 一般都是从一个模块的输出端连到另一个模块的输入端 方法是鼠标置于一模块的输出端 当鼠标的箭头变成十字形光标时按住鼠标左键 移动鼠标到另一个模块的输入端 且当十字光标出现 重影 时 释放鼠标左键就完成了连接 如图所示 调整模块间连线位置的情况采用鼠标简单拖动的办法实现 即先把鼠标移到需要移动的线段的位置 按住鼠标左键 移动鼠标到目标位置 释放鼠标左键 如图所示 44 线的折弯 先按住Shift键 再用鼠标在要折弯的线处单击一下 就会出现圆圈 表示折点 利用折点就可以改变线的形状 出线的分支 在需要分支的地方按住鼠标右键拉出即可以 或者按住Ctrl键 并在要建立分支的地方用鼠标拉出即可 如图所示 45 下页 上页 3 4 4Simulink自定义功能模块 一种方法是采用Signal Systems模块库中的Subsystem功能模块 利用其编辑区设计组合新的功能模块 步骤如下 将Signal Systems模块库中的Subsystem功能模块复制到打开的模型窗口中 先建立子系统模块 再在子系统模块中添加功能模块 方法是双击子系统Subsystem功能模块 此时 进入到了自定义功能模块窗口 从而在此窗口中可以利用该基本功能模块设计出新的功能模块 另一种方法是即先创建仿真模块 再建立子系统 其步骤如下 1 在模型窗口中先选择要建立子系统的模块 注意不包括输入端口和输出端口 因为Subsystem这个子系统模块本身有输入和输出 2 用鼠标将这些需要组合的功能模块框住 然后选择Edit菜单下的CreateSubsystem即可 这样子系统就建好了 对于很大的SIMULINK模型 这个方法可以简化图形 减少功能模块的个数 有利于模型的分层构建 46 下页 上页 Icon 设定功能模块的外观 Initialization 设定输入数据窗口 PromptList Documentation 设计该功能模块的文字说明 所谓自定义功能模块的封装就是子系统的封装 Masking 就是为子系统定制对话框和图标 使子系统本身有一个独立的操作界面 把子系统中的各模块的参数对话框合成一个参数设置对话框 在使用时不必打开每个模块进行参数设置 这样使子系统的使用更加方便 子系统的封装过程很简单 先选中所要封装的子系统 再选择模型编辑窗口Edit菜单中的Masksubsystem命令 这时将出现右图所示的封装编辑器对话框 MaskEditor MaskEditor对话框中共包括以下几个选项卡 3 4 5自定义功能模块的封装 子系统的封装主要就是对这些参数进行设置 47 下页 上页 Icon标签页此页最重要的部分是DrawingCommands 在该区域内可以用disp指令设定功能模块的文字名称 用plot指令画线 用dpoly指令画传递函数 注意 尽管这些命令在名字上和以前讲的MATLAB函数相同 但它们在功能上却不完全相同 因此不能随便套用以前所讲的格式 disp text 可以在功能模块上显示设定的文字内容 disp text1 ntext2 分行显示文字text1和text2plot x1x2 xn y1y2 yn 指令会在功能模块上画出由 x1y1 经 x2y2 经 x3y3 直到 xn yn 为止的直线 功能模块的左下角会根据目前的坐标刻度被正规化为 0 0 右上角则会依据目前的坐标刻度被正规化为 1 1 dpoly num den 按s次数的降幂排序 在功能模块上显示连续的传递函数 dpoly num den z 按z次数的降幂排序 在功能模块上显示离散的传递函数 48 下页 上页 用户还可以设置一些参数来控制图标的属性 这些属性在Icon页右下端的下拉式列表中进行选择 Iconframe Visible显示外框线 Invisible 隐藏外框线 IconTransparency Opaque隐藏输入输出的标签 Transparent 显示输入输出的标签 IconRotation 旋转模块 Drawingcoordinate 画图时的坐标系 49 下页 上页 Initialization标签页此页主要用来设计输入提示 prompt 以及对应的变量名称 variable 在prompt栏上输入变量的含义 其内容会显示在输入提示中 而variable是仿真要用到的变量 该变量的值一直存于maskworkspace中 因此可以与其他程序相互传递 如果配合在initializationcommands内编辑程序 可以发挥功能模块的功能来执行特定的操作 在prompt编辑框中输入文字 这些文字就会出现在prompt列表中 在variable列表中输入变量名称 则prompt中的文字对应变量的说明 如果要增加新的项目 可以点击边上的Add键 Up和Down按钮用于执行项目间的位置调整 Controltype列表给用户提供选择设计的编辑区 选择Edit会出现供输入的空白区域 所输入的值代表对应的variable Popup则为用户提供可选择的列表框 所选的值代表variable 此时在下面会出现Popupstrings输入框 用来设计选择的内容 各值之间用逻辑或符号 隔开 如选择Checkbox则用于on与off的选择设定 50 下页 上页 Assignment属性用于配合Controltype的不同选择来提供不同的变量值 变量值有Evaluate和Literal两种 其含义如下 51 Documentation标签页此页主要用来针对完成的功能模块来编写相应的说明文字和Help 1 在Blockdescription中输入的文字 会出现在参数窗口的说明部分 2 在Blockhelp中输入的文字则会显示在单击参数窗口中的help按钮后浏览器所加载的HTML文件中 3 Masktype 在此处输入的文字作为封装模块的标注性说明 在模型窗口下 将鼠标指向模块 则会显示该文字 当然必须先在View菜单中选择BlockDataTips ShowBlockDataTips 下页 上页 52 3 4 6Simulink仿真的运行 一 设置仿真参数和选择解法器设置仿真参数和选择解法器 在模型窗口主菜单中选择Simulation菜单下的SimulationParameters命令 就会弹出一个仿真参数对话框 它主要用三个页面来管理仿真的参数 1 Solver页 它允许用户设置仿真的开始和结束时间 选择解法器 说明解法器参数及选择一些输出选项 2 WorkspaceI O页 作用是管理模型从MATLAB工作空间的输入和对它的输出 3 Diagnostics页 允许用户选择Simulink在仿真中显示的警告信息的等级 构建好一个系统的模型之后 接下来就是如何运行模型 得出仿真结果 运行一个仿真的完整过程分成三个步骤 设置仿真参数 启动仿真和仿真结果分析 下页 上页 53 1 Solver页 此页可以进行的设置有 选择仿真开始和结束的时间 选择解法器 并设定它的参数 输出选择项 如图所示 以Simulink3 0为例 1 仿真时间 注意这里的时间概念与真实的时间并不一样 只是计算机仿真中对时间的一种表示 比如10秒的仿真时间 如果采样步长定为0 1 则需要执行100步 若把步长减小 则采样点数增加 那么实际的执行时间就会增加 一般仿真开始时间设为0 而结束时间视不同的因素而选择 总的说来 执行一次仿真要耗费的时间依赖于很多因素 包括模型的复杂程度 解法器及其步长的选择 计算机时钟的速度等等 下页 上页 54 2 仿真步长模式 Type选项 指定仿真的步长选取方式 可供选择的方式有Variable step 变步长 和Fixed step 固定步长 两种 其中 变步长模式可以在仿真的过程中改变步长 提供误差控制和过零检测 固定步长模式在仿真过程中提供固定的步长 不提供误差控制和过零检测 用户还可以在第二个下拉选项框中选择对应模式下仿真所采用的算法 如下图所示 下页 上页 仿真步长模式选项 解法器选项 步长参数选项 仿真精度的定义 对于变步长模式 55 变步长模式解法器有 ode45 ode23 ode113 ode15s ode23s ode23t ode23tb和discrete 其中 字母ODE OrdinaryDifferentialEquation 常微分方程 ode45 缺省值 四 五阶龙格 库塔法 适用于大多数连续或离散系统 但不适用于刚性 stiff 系统 它是单步解法器 也就是 在计算y tn 时 它仅需要最近处理时刻的结果y tn 1 一般来说 面对一个仿真问题最好是首先试试ode45 ode23 二 三阶龙格 库塔法 它在误差限要求不高和求解的问题不太难的情况下 可能会比ode45更有效 也是一个单步解法器 ode113 是一种阶数可变的解法器 它在误差容许要求严格的情况下通常比ode45有效 ode113是一种多步解法器 也就是在计算当前时刻输出时 它需要以前多个时刻的解 ode15s 是一种基于数字微分公式的解法器 NDFs 也是一种多步解法器 适用于刚性系统 当用户估计要解决的问题是比较困难的 或者不能使用ode45 或者即使使用 效果也不好 就可以用ode15s 下页 上页 56 ode23s 它是一种单步解法器 专门应用于刚性系统 在弱误差允许下的效果好于ode15s 它能解决某些ode15s所不能有效解决的刚性 stiff 问题 ode23t 是梯形规则的一种自由插值实现 这种解法器适用于求解适度stiff的问题而用户又需要一个无数字振荡的解法器的情况 ode23tb 是TR BDF2的一种实现 TR BDF2是具有两个阶段的隐式龙格 库塔公式 discrtet 当Simulink检查到模型没有连续状态时使用它 下页 上页 57 下页 上页 58 固定步长模式解法器有 ode5 ode4 ode3 ode2 ode1和discrete ode5 缺省值 是ode45的固定步长版本 适用于大多数连续或离散系统 不适用于刚性系统 ode4 四阶龙格 库塔法 具有一定的计算精度 ode3 固定步长的二 三阶龙格 库塔法 ode2 改进的欧拉法 ode1 欧拉法 discrete 是一个实现积分的固定步长解法器 它适合于离散无连续状态的系统 下页 上页 59 步长参数 对于变步长模式 用户可以设置最大的和推荐的初始步长参数 缺省情况下 步长自动地确定 它由值auto表示 Maximumstepsize 最大步长参数 它决定了解法器能够使用的最大时间步长 它的缺省值为 仿真时间 50 即整个仿真过程中至少取50个取样点 但这样的取法对于仿真时间较长的系统则可能带来取样点过于稀疏 而使仿真结果失真 一般建议对于仿真时间不超过15s的采用默认值即可 对于超过15s的每秒至少保证5个采样点 对于超过100s的 每秒至少保证3个采样点 Initialstepsize 初始步长参数 一般建议使用 auto 默认值即可 仿真精度的定义 对于变步长模式 Relativetolerance 相对误差 它是指误差相对于状态的值 是一个百分比 缺省值为1e 3 表示状态的计算值要精确到0 1 Absolutetolerance 绝对误差 表示误差值的门限 或者是说在状态值为零的情况下 可以接受的误差 如果它被设成了auto 那么simulink为每一个状态设置初始绝对误差为1e 6 下页 上页 60 Mode 固定步长模式选择 Multitasking 选择这种模式时 当simulink检测到模块间非法的采样速率转换 它会给出错误提示 所谓的非法采样速率转换指两个工作在不同采样速率的模块之间的直接连接 在实时多任务系统中 如果任务之间存在非法采样速率转换 那么就有可能出现一个模块的输出在另一个模块需要时却无法利用的情况 通过检查这种转换 Multitasking将有助于用户建立一个符合现实的多任务系统的有效模型 使用速率转换模块可以减少模型中的非法速率转换 Simulink提供了两个这样的模块 单位延时 unitdelay 模块和零阶采样保持器 zero orderhold 模块 对于从慢速率到快速率的非法转换 可以在慢输出端口和快输入端口插入一个单位延时 unitdelay 模块 而对于快速率到慢速率的转换 则可以插入一个零阶采样保持器 zero orderhold 下页 上页 慢速率到快速率转换为什么用单位延时模块来连接 可以如下理解 假设一个慢速率的输出是10 s 快速率输出是20 s 一个延时周期是1s 如果某一项工作需要20个数据点 才能完成一次有效的计算 如滤波等 那么在一个慢速率后面要跟一个快速率的系统工作时 如果直接接在慢速率系统的后面 每秒过来只能有10个点 而后面系统每秒需要20个点 那么怎么也不能保证得到正确的计算 61 b Singletasking 这种模式不检查模块间的速率转换 它在建立单任务系统模型时非常有用 在这种系统就不存在任务同步问题 c Auto 这种模式 simulink会根据模型中模块的采样速率是否一致 自动决定切换到multitasking和singletasking 换句话说 后面的系统快 就要等前面的系统输出达到自己需要的数据个数 才能计算 于是后面的系统要延迟一个周期 等到前面的系统输出达到20个点 后面的系统才能进行一次正确的处理 62 输出选项左边框中有以下三个选项 Refineoutput 这个选项可以理解成精细输出 其意义是在仿真输出太稀松时 simulink会产生额外的精细输出 这一点就像插值处理一样 用户可以在refinefactor设置仿真时间步之间插入的输出点数 产生更光滑的输出曲线 改变精细因子比减小仿真步长更有效 注意 精细输出只能在变步长模式中才能使用 并且在解法器为ode45时效果最好 Produceadditionaloutput 它允许用户直接指定产生输出的时间点 一旦选择了该项 则在它的右边出现一个outputtimes编辑框 在这里用户指定额外的仿真输出点 它既可以是一个时间向量 也可以是表达式 与精细因子相比 这个选项会改变仿真的步长 Producespecifiedoutputonly 一旦选择了该项 则在它的右边同样出现一个outputtimes编辑框 它是让simulink只在指定的时间点上产生输出 为此 解法器要调整仿真步长以使之和指定的时间点重合 这个选项在比较不同的仿真时可以确保它们在相同的时间输出 下页 上页 63 2 WorkspaceI O页 此页主要用来设置Simulink与MATLAB工作空间交换数值的有关选项 如右图所示 1 Loadfromworkspace选项 选中Input的复选框即可从MATLAB工作空间获取时间和输入变量 一般时间变量定义为t 输入变量定义为u 选中Initialstate的复选项用来定义从MATLAB工作空间获得的状态初始值的变量名 2 Savetoworkspace选项 用来设置存往MATLAB工作空间的变量类型和变量名 有如下选项 Time 输出时间变量的向量 States 状态变量向量 Output 输出变量 Finalstate 用来定义将系统稳态值存往工作空间所使用的变量名 下页 上页 64 下页 上页 3 Saveoption选项 用来设置存往工作空间的有关选项 其中 Limitrowstolast选项 用来设定SIMULINK仿真结果最终可存往MATLAB工作空间的变量的规模 对于向量而言即其维数 对于矩阵而言即其秩 Decimation选项 设定了一个亚采样因子 它的缺省值为1 也就是对每一个仿真时间点产生值都保存 而若为2 则是每隔一个仿真时刻才保存一个值 Format选项 用来说明返回数据的格式 有三个选项 矩阵matrix 结构struct及带时间的结构structwithtime 65 下页 上页 3 Diagnostics页 此页分成两个部分 SimulinkOptions 仿真选项 和ConfigurationOptions 配置选项 SimulinkOptions 仿真选项 主要包括是否进行一致性检验 是否禁用过零检测 是否禁止复用缓存 是否进行不同版本的SIMULINK的检验等几项 ConfigurationOptions 配置选项 其内列表框内容主要列举了一些常见的事件类型 以及当Simulink检查到这些事件时给予的处理 如图所示 66 二 启动仿真设置仿真参数和选择解法器之后 就可以启动仿真而运行 选择Simulink菜单下
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 课件正确使用方式
- 护理新员工培训
- 美术制作陀螺课件
- 培训美术老师
- 培训机构月中总结
- 课件概述文字稿本
- 燃煤电厂节能培训
- 基础写作小说课件
- 消失的松果:一场生态调查
- 冷链考试题及答案
- 职业病防护设施与个体防护用品的使用和维护
- 统编版语文四年级上册第三单元 连续细致观察 准确生动表达单元任务群整体公开课一等奖创新教学设计
- 【部编版】新人教小学语文五年级上册-中华成语千字文(打印稿)
- 小区物业服务投标方案(技术标)
- 电力营销考试题库
- (正式版)HGT 6313-2024 化工园区智慧化评价导则
- 智鼎在线测评题库答案2024
- 高等数学绪论课件
- 《生产部月报模板》课件
- 二十四节气与养生
- 怎样引导初中生克服数学学习的心理障碍
评论
0/150
提交评论