SIMULINK高级技术

上传人:san****019 文档编号:20721998 上传时间:2021-04-16 格式:PPT 页数:47 大小:879.50KB
收藏 版权申诉 举报 下载
SIMULINK高级技术_第1页
第1页 / 共47页
SIMULINK高级技术_第2页
第2页 / 共47页
SIMULINK高级技术_第3页
第3页 / 共47页
资源描述:

《SIMULINK高级技术》由会员分享,可在线阅读,更多相关《SIMULINK高级技术(47页珍藏版)》请在装配图网上搜索。

1、技术凝聚实力 专业创新出版 第 23章 SIMULINK高级技术 在第 22章中,对 SIMULINK使用的一些基础知识、动态系统建模方法 及仿真的方法做了详细的介绍。在 22章的介绍中读者可以看到, SIMULINK环境中可运行的工具包很多,已经涵盖了航空、航天、控 制、通信、 DSP、电力等诸多领域,所涉及的内容专业性极强。为 此,本章将向读者介绍一些 SIMLINK的高级技术,以求给读者一个 更加深刻的印象。 本章主要介绍 SIMULINK的高级仿真技术,主要包括:数据显示、高 级积分器 、过零以及系统代数环形成与处理、 SIMULINK条件执行 子系统、 SIMULINK调试技术、模块

2、库的扩展及函数的创建与使用 等。 技术凝聚实力 专业创新出版 23.1 数据显示 在工程设计中,对于大多数工程设计人员来说,查看和分析结果曲 线对于了解模型的内部结构,以及判断结果的准确性具有重要意义。 SIMULINK仿真模型后,绘制模型输出轨迹的方法有以下几种: 将信号输出到 Scope模块或 XY Graph模块; 使用悬浮 Scope模块或 Display模块; 将输出数据写入到返回变量,并用 MATLAB的绘图命令绘制曲线; 将输出数据用 To Workspace模块写入到工作区,并用 MATLAB的绘图 命令绘制结果曲线。 技术凝聚实力 专业创新出版 23.1.1 使用 Scope

3、模块 Scope模块是示波器模块,它与实验室中使用的示波器功能类似,在模型 仿真运行结束后,用户可以再通过双击打开 Scope模块,观察输出轨迹。 Scope模块显示对应于仿真时间的输入信号,该模块可以在一个坐标系中, 以不同的颜色同时显示出多个输入信号,用户可以调整需要显示的时间范 围和输入值范围。当用户运行模型仿真时,虽然 SIMULINK会把结果数据写 入到相应的 Scope中,但它并不打开 Scope窗口,用户在仿真结束运行后双 击 Scope模块打开示波器窗口,此时示波器窗口会显示 Scope模块的输入信 号。如果信号是连续的, Scope会生成有点构成的连续曲线;如果信号是 离散的

4、, Scope会生成阶梯状曲线。此外,用户还可以在仿真运行期间移 动 Scope窗口或改变窗口的大小,或 Scope窗口的参数值。使用 Scope模块 提供的工具栏按钮,可以缩放被显示的数据,保存此次仿真的坐标轴设置, 限制被显示的数据量,把数据存储到工作区等。 技术凝聚实力 专业创新出版 23.1.2 使用 XY Graph模块 XY Graph模块是 SIMULINK中 Sinks模块库中的模 块,该模块利用 MATLAB的图形窗口绘制信号的 X Y曲线,这个模块有两个标量输入,它把第一 个输入作为 X轴数据,第二个输入作为 Y轴数据, X轴和 Y轴的坐标范围可以在模块的参数对话框 内设置

5、,如图 23.5所示,超出指定范围的数据 在图形窗口中不显示。此外,如果模型中有多 个 XY Graph模块, SIMULINK仿真的起始时刻会 为每个 XY Graph模块打开一个图形显示窗口。 技术凝聚实力 专业创新出版 23.1.3 使用悬浮 Scope模块 悬浮 Scope模块也是一个可以显示一个或多个信号的示波器模块,用户启用悬浮 Scope模块的方式有: 从 SIMULINK的 Sinks库中把 Scope复制到模型中并按下“悬浮示波器”按钮,将 Scope模块设置为悬浮示波器; 直接从 Sinks库中把 Floating Scope模块复制到模型窗口中。 悬浮示波器是不带输入端口

6、的模块,它可以在仿真过程中显示任何一个被选择的信 号,悬浮示波器通过示波器窗口中的蓝框来辨别,下面,将结合如图 23.9所示的模 型,演示浮动示波器的使用。 技术凝聚实力 专业创新出版 23.1.4 使用命令绘制输出曲线 关于使用命令绘制输出曲线,这里将通过一个建模的例子向读者说 明。 【 例 23.1】 求解微分方程。其中是单位阶跃函数,初始值为 0。 要求解这样一个问题,关键是建立能够表征例中微分方程的模型, 故其模型实现步骤如下。 ( 1)改写微分方程为:。 ( 2)选择模块、构建模型。在微分问题中,往往是通过积分来解 决微分问题,基本思路是:经过积分得到,再经过积分得到,而可 由( 1

7、)中的代数运算得到。 技术凝聚实力 专业创新出版 23.2 过零检测 在运行动态系统仿真时, SIMULINK利用过零检 测来检查每个时间步上系统状态变量的不连续 性,如果 SIMULINK在当前工作时刻检测到不连 续性,它会确定不连续性状态出现的准确时刻, 并在该时刻的前后选取另外的时间步来求取仿 真结果。 技术凝聚实力 专业创新出版 23.2.1 过零检测的工作方式 在动态系统中,状态变量的不连续性往往表征 了系统的重要事件。以篮球撞击地面系统为例, 在篮球撞击地面的时刻,撞击的位置是不连续 的,在仿真中,如果篮球是在两次时间步之间 撞击了地面,那么仿真的结果可能是篮球在半 空中就已经翻转

8、方向,这与我们实际情况是不 相符的,因此,对不连续点的精确仿真是非常 重要的。 技术凝聚实力 专业创新出版 23.2.2 执行过零检测 过零检测可以使 SIMULINK精确的仿真不连续点,而不必过多的选用小步长。事实上, SIMULINK中的许多模块都支持过零检测。在实际仿真中,如果用户对所有的系统, 包括含有不连续状态的系统,利用过零检测进行仿真,不仅可以加快仿真速度,也 可以提高仿真精度。 对于 SIMULINK中不同模块来说,产生过零的类型是不同的,如 Abs模块是在输入信 号符号发生变化时产生过零,而积分模块进入饱和区段时产生过零。后一种模块我 们称为饱和( Saturation)模块

9、,当过零检测功能检测到饱和模块发生如下事件时 产生过零: 输入信号达到上限; 输入信号离开上限; 输入信号到达下限; 输入信号离开下限。 技术凝聚实力 专业创新出版 23.3 代数环的概念及解决方案 在 SIMULINK仿真中,读者可能看到如下的代码信息: Found algebraic loop containing: li14/k2 li14/Sum (algebraic variable) 这说明在模型中存在代数环( Algebraic Loops), SIMULINK中代 数环与数学上的代数循环的概念是一样的。通常,在代数环中包含 的某些模块都具有这样的特性:当前时刻模块的输出依赖于当

10、前时 刻模块的输入。这种输入输出关系在时间上“无延时”模块被称为 直接馈通模块( Direct feedthrough)。在 SMULINK中具有这种 “无延时”特性模块有: 技术凝聚实力 专业创新出版 23.3.1 代数环的表征 一般来说,代数环在模型图表现为含有直接馈 通模块的闭合回路。如下图 23.19所示。模型中 红色显示的部分就是一个闭合的含有直接馈通 模块的代数环,读者可以在运行模型后在 MATLAB命令窗口中验证。 技术凝聚实力 专业创新出版 23.3.2 代数环问题的解决 计算机在处理代数环计算时,采用的是一种迭代算法,也就是说每个时间 步里,计算机都将进行这样的计算,这会使得

11、计算机的计算时间增长。同 时,由于这种代数环包含的模块的“无延时”特性,要求环上所有模块的 输出在同一时刻计算,这与系统顺序仿真的要求不符。 要解决代数环问题,可以采取以下方式: 方式一:设计模型时尽量不采用代数环设计; 方式二:在计算速度可以忍受的范围内,可以不必介意代数环问难; 方式三:对代数环采取代数约束; 方式四:切断模型中的代数环。 技术凝聚实力 专业创新出版 23.4 高级积分器 在 SIMULINK的 Continues库中有一个非常重要的模块就是积分模块 Integrator,其功能是对输入信号进行积分,并输出当前时间步上的积分 值。这里用一个等式来说明:,其中, y时模块的输

12、出, u时输入,是初始 时刻, t是当前时刻,是初始状态。 SIMULINK可以用许多中不同的数值积分方法来计算积分模块的输出,每种 方法在特定的环境下都有各自的优缺点, SIMULINK将积分模块看作一个具 有状态和输出的动态系统,他的输入时状态的时间导数。如下式所示:, 用户可以在 Simulation Parameters对话框中选择合适的求解器算法,所 选择的求解器会用当前时刻的输入值和前一时刻时间步的状态值来计算当 前时间步上积分模块的输出值。为了支持这种计算模式,积分模块必须保 存当前时间步的输出值以备计算下一时间步的输入值,同时,模块也提供 给求解器一个初始条件,用来在仿真开始执

13、行时计算模块的初始状态,默 认情况下值为 0。模块参数对话框也允许用户为初始条件指定其他值,或 者在模块中创建一个初始值输入端口。 技术凝聚实力 专业创新出版 23.4.1 定义初始条件 双击积分模块,打开积分模块参数属性对话框, 如图所示。 在该对话框中,用户可以将初始条件定义为参 数,或选择从外部信号输入初始条件。 技术凝聚实力 专业创新出版 23.4.2 限制积分 为了防止输出超出指定的范围,用户可以勾选 Limit output复选框,在下 面的参数文本框中输入适当的限制范围值,如图 23.26所示。 当输出达到限制值时, SIMULINK将关闭积分动作,在积分过程中,用户可 以改变这

14、个积分限制,但模块的输出将遵循以下规则: 当积分小于或等于 Lower saturation limit参数值,而且输入是负值时, 输出被限制在 Lower saturation limit值; 当积分在 Lower saturation limit和 Upper saturation limit之间时,输 出是积分值; 当积分大于或等于 Upper saturation limit参数值,而且输入是正值时, 输出被限制在 Upper saturation limit值。 技术凝聚实力 专业创新出版 23.4.3 重新设置状态 积分模块可以根据外部信号重新把状态设置为指定的初始条件。当 用户选

15、择积分模块参数对话框中 External reset列表下的任意选项 时,模块输入端口的下方将出现一个触发端口,同时标注所选项的 触发类型,如图 23.30所示。 External reset列表下各项功能说明如下: rising:当重置信号有上升沿时触发状态重置; falling:当重置信号有下降沿时触发状态重置; either:当重置信号有上升沿或者下降沿发生时,触发重置; level;当重置信号为非零时,触发重置,并保持输出为初始条件 值。 技术凝聚实力 专业创新出版 23.4.4 状态端口 勾选积分模块参数对话框中 Show state port复选框,积分模块将 在其顶部出现一个附加

16、的输出端口,即状态端口。如果模块在当前 时间步上重置,那么状态端口的输出值是模块还没有被重置时标准 输出端口的值;除此以外,状态端口和模块的标准输出端口一样。 由于状态端口比积分模块标准输出端口早一个时间步,因此,状态 端口的使用可以使用户在创建下列模型时 避免代数环的出现: 自重置积分器; 在两个使能子系统间传递状态。 技术凝聚实力 专业创新出版 23.4.5 创建自重置积分器 有时候,用户可能需要创建一个根据积分器输出值来重新设置积分器初始值的模型, 那么这时,往往产生一个代数环;为了避免这个问题,用户最好使用积分模块状态 端口这个功能来避免代数环的产生。在如图所示的模型中,创建了一个自重

17、置积分 器,其将输出减去 1后反馈回积分器的重置端口。 但是,当运行这个模型时,将弹出如图所示的仿真错误诊断器,显示仿真中出现代 数环,并在 2.449489742783214时刻停止仿真,而 SIMULINK无法判断积分器的输出 值,因为计算积分器的输出需要知道模块的重置信号。 技术凝聚实力 专业创新出版 23.5 简单子系统 对于工程问题,建立的模型往往非常复杂,此时,可以 通过把多个模块组合在子系统中来简化模型。创建子系 统有如下优点: 减少了模型窗口中显示模块的数目; 使得模块之间的函数关系清晰化; 建立层次模型,子系统作为一个层,组成子系统的其他 模块构成另一个层; 子系统可以反复调

18、用。 技术凝聚实力 专业创新出版 23.5.1 系统的基本操作和子系统创建的方法 在用户使用 SIMULINK子系统建立系统模型之前,简单介绍一下子系统的基 本操作。 1子系统命名:命名方法与模块命名类似。为增强系统模型的可读性, 应使用有代表意义的文字给子系统进行命名。 2子系统编辑:用鼠标左键双击子系统模块图标,打开子系统属性对话 框对其进行编辑。 3子系统的输入:使用 Sources模块库中的 Inport输入模块(即 In1模块) 作为子系统的输入端口。 4子系统的输出:使用 Sinks模块库中的 Outport输出模块(即 Out1模块) 作为子系统的输出端口。 技术凝聚实力 专业创

19、新出版 23.5.2 组合已有模块创建子系统 这是一种比较简单的方法,也易于用户操作。 下面通过一个实例来说明通过组合已有模块来 创建子系统的具体方法。 技术凝聚实力 专业创新出版 23.5.3 添加 Subsystem模块创建子系统 添加子系统模块创建子系统的方法就是首先将系统模型模块化,即将模型 中实现不同功能的模块组看成一个子系统,用一个空的子系统模块来表征, 勾画出整个系统的方框图,再在空的子系统模块中添加相应的模块来实现 该子系统的预定功能。 下面的例子将演示这种创建方法。 技术凝聚实力 专业创新出版 23.6 条件执行子系统 条件执行子系统的执行受到控制信号的控制,也就是说,系统的

20、输出受输 入信号之外的另一个信号控制。这个控制信号是从子系统的一个单独端口 输入的。根据控制信号对条件子系统执行的控制方式的不同,可以将条件 执行子系统划分为如下的几种基本类型。 使能子系统( Enable Subsystem):当子系统为正时,子系统将被执行。 触发子系统( Triggered Subsystem):当控制信号的符号发生变化时, 即当信号过零时,自系统将被执行。其触发方式有三种,控制信号上升沿 时触发,控制信号下降沿时触发,控制信号上升或下降沿时触发。 使能触发子系统( Enable and Triggered Subsystem):在使能状态下被 触发时执行子系统。即在控制

21、信号为正的同时出现触发信号,子系统才被 执行。 技术凝聚实力 专业创新出版 23.6.1 使能子系统( Enable Subsystem) 使能子系统( Enable Subsystem)在控制信号为正值时的时间步上开始执行,一个使能子系统 有单个的控制输入,该输入信号可以是标量也可以是向量。 如果控制信号是标量,那么当输入信号大于零时子系统开始执行。 如果控制信号是向量,那么当向量中的一个分量大于零时子系统开始执行。 下面将通过事例来说明使能子系统的使用。 技术凝聚实力 专业创新出版 23.6.2 触发子系统( Triggered Subsystem) 触发子系统指的是只有在控制信号的符号发

22、生改变的情况下(也就是控制信号出现 过零事件时),子系统才开始执行。按照控制信号符号变化方式的不同,触发子系 统可分为如下三类: 上升沿触发子系统。系统在控制信号出现上升沿时开始执行; 下降沿触发子系统。系统在控制信号出现下降沿时开始执行; 双边沿(上升沿或下降沿)触发子系统。系统在控制信号出现任何过零时开始执行。 技术凝聚实力 专业创新出版 23.6.3 触发使能子系统 对于某些条件执行子系统而言,其控制信号可能不止一个。在很多情况下,条件执 行子系统同时具有触发控制信号与使能控制信号,这样的条件执行子系统一般称之 为触发使能子系统。顾名思义,触发使能子系统指的是子系统的执行受到触发信号 和

23、使能信号的共同控制,也就是说,只有当触发条件与使能条件均满足的情况下, 子系统才开始执行。触发使能子系统的工作原理如图所示。 技术凝聚实力 专业创新出版 23.7 子系统封装 封装就是创建子系统的自定义用户接口,也就是把具有一定功能的 子系统封装成一个模块。它可以隐藏原子系统中的内容,使其作为 一个模块显示在用户模型中,而且该模块与 SIMULINK中的固有模块 一样有自己的图标和参数对话框,当用户双击这个模块时可以打开 属性对话框,并设置参数值。 SIMULINK中的 Mask Editor(封装编辑器)提供了封装子系统时编 辑模块的所有操作设置值,它可以对任何子系统进行封装。若要打 开封装

24、编辑器,可选择子系统模块,然后从包含子系统的模型窗口 中的菜单 【 Edit/Edit Mask】 选项,或者在子系统模块上单击鼠标 右键,在弹出的菜单中选择 Edit Mask选项,打开 Mask editor对话 框,其共有四个标签页: Icon、 Parameters、 Initialization和 Documentation。 技术凝聚实力 专业创新出版 23.7.1 Icon标签页 Icon标签页,如图所示,它可以创建包含文本说明、状 态方程、图像和图形的图标。默认状态下封装子系统是 不使用图标的。 Icon标签页包括图标选项栏 Icon option、绘图命令栏 Drawing

25、commands以及绘图命令举 例栏 Examples of drawing commands。 技术凝聚实力 专业创新出版 23.7.2 Parameters标签页 子系统封装的目的之一就是提供一个友好的参 数设置界面。用户无须了解子系统内部结构, 只需输入参数就可以对系统进行设计和仿真。 子系统封装编辑器界面 Parameters标签页如图 所示。 技术凝聚实力 专业创新出版 23.7.3 Initialization标签页 初始化设置标签页如图所示。其中的对话变量表 (Dialog variables)是在 用户设置了参数标签页( Parameters)中变量( Variable)之后自

26、动生成 的。初始化命令( Initialization commands)一般是 MATLAB命令,可以 通过 MATLAB命令定义封装后子系统空间中的各种变量,以便这些变量在被 封子系统模块图标绘制指令或其他初始化指令中使用。 技术凝聚实力 专业创新出版 23.7.4 Documentation标签页 Documentation标签页 ,可以帮助用户建立全面的帮助文档,通过该标签页 可以定义或更改被封装模块的类型、说明和帮助文本,它有三个选项区: Mask type、 Mask description和 Mask help。 Mask type栏。在 Mask type栏中输入封装子系统的标

27、注性说明。在选择模 型窗口菜单 【 View/Block Data Tips/Show Block Data Tips】 子项之后, 当鼠标停留在模块上时模块将会显示该标注。 Mask description栏。封装说明区域中的文本内容将显示在参数设置窗口 的说明部分,它可以对模块的作用和参数的设置方式进行简要的说明。 Mask help栏。该区域中输入的帮助信息将在单击参数设置窗口的“ Help” 按钮后在浏览器加载的网页中出现。 技术凝聚实力 专业创新出版 23.7.5 子系统封装举例 【 例 23.12】 封装如图所示的模型,其中 Constant模块表示自变量 x, Display模块

28、显示 输出 y。模型实现直线方程,本例演示将实现功 能的模块封装,并使其中斜率 k和截距 b的变量 化。 技术凝聚实力 专业创新出版 23.8 SIMULINLK调试器 SIMULINK调试器是一个定位和诊断模型中错误 的工具它允许用户利用仿真方法来仿真模型, 并在每个方法结束后暂停仿真,查看该方法执 行后的仿真结果。通过 SIMULINK调试工具,用 户可以采用多种方式对模型进行调试,发现其 中可能存在的问题并加以修改,从而使得用户 的模型设计、仿真、更加快捷。 技术凝聚实力 专业创新出版 23.8.1 启动 SIMULINK图形调试器 SIMULINK调试器有两种模式,即 GUI模式和命令

29、行模式,这里主要介绍 GUI 模式。 SIMULINK图形调试界面的启动方式有两种: 单击要调试模型窗口工具栏按钮 ,打开图形调试窗口; 打开要调试模型的窗口,选择菜单栏 【 Tools/Debugger】 子项,打开图形 调试窗口,如图所示。 技术凝聚实力 专业创新出版 23.8.2 SIMULINK调试窗口工具栏 SIMULINK调试器窗口包括工具栏和左右两个面 板。左侧面板包括 Break Points标签页和 Simulation Loop标签页;右侧面板包括 Outputs、 Sorted List和 Status标签页。 SIMULINK调试器工具栏如图所示。 技术凝聚实力 专业创

30、新出版 23.8.3 断点显示及条件断点设置 SIMULINK调试器允许用户设置仿真执行过程中的断点,一般来说,用户可以在模块 前设置断点,用户若要在模块上设置断点,则先选中该模块,然后单击调试器工具 栏上的设置断点按钮 ,调试器将在 Breakpoint标签页下的 Break/Display points 中显示被选中模块的名称。除此之外,还可以在特定条件下设置断点, SIMULINK调 试器提供了五种条件断点设置,条件断点设置( Break on conditions): Zero crossings复选框:遇到过零点检测时,产生断点; Step size limited by state

31、复选框:在步长受状态限制时,产生断点; Solver Error复选框:解法器算法出错时,产生断点; NaN values复选框:在系统中出现无限大或超出机器数值表示范围时,产生断点; Break at time:在指定的某个时刻设置断点。 技术凝聚实力 专业创新出版 23.8.4 仿真回路标签页( Simulation Loop) 单击仿真回路标签页,可以打开如图 23.72中左侧面板所示的仿真回路标 签页。可以看出,仿真回路标签页包括:方法( Method)、断点 和断点 标识( ID)。 方法列( Method)。方法列给出系统执行到当前所调用的各种方法,以树 状结构进行显示,用户可以单

32、击列表中方法前的 +/-号来展开 /关闭树状结 构,排列中的每个节点表示一个方法,展开这个节点就显示出它所调用的 其他方法,树状结构中的模块方法名称是超链接的,单击模块方法名称会 在模型中高亮显示相应的模块。 断点列。断点列是一系列复选框组成,勾选复选框意味着在该方法中设置 一个断点。 标识列( ID)。标识是方法在仿真过程中第一次执行时, SIMULINK给其制 定的一个整数标号。有些 SIMULINK指令用方法标识来指代方法。 技术凝聚实力 专业创新出版 23.8.5 信息显示标签页 在调试器刚打开的时候,下列标签页并不显示 任何信息,一旦调试开始,将在相应的标签页 显示有关仿真的信息。

33、1调试器输出标签页( Outputs) 2调试器类型标签页( Sorted List) 3调试器状态标签页( Status) 技术凝聚实力 专业创新出版 23.8.6 设置无条件断点 如果用户知道自己系统执行到某些点或者满足一定条件就会出错,那么设 置断点就将显得很有用。简单来说,断点就是仿真执行到该处时会暂停仿 真,这时用户可以通过 Continue指令跳过这一断点继续执行到下一断点。 SIMULINK调试器允许用户设置的断点有两类:无条件中断和有条件中断。 无条件中断是指在任何条件下,系统执行到该模块或执行到设定的时间步 都将停止仿真。设置无条件断点的方式有: 通过调试器工具栏设置断点;

34、通过调试器仿真回路标签页设置断点; 通过 MATLAB命令窗口设置断点。 技术凝聚实力 专业创新出版 23.8.7 设置有条件断点 设置有条件中断,可以用调试器的“ Break on conditions” ,也可以用以下的指 令。 tbreak中断,在特定时间步内设置中断。这种设置用来指定当仿真执行到指定的时 间时,仿真进程中断,这个指定的时间是仿真时间,而不是时间步个数,但其真实 终止时刻是在大于指定时间且与指定时间最接近的时间步内。 nanbreak中断,在仿真出现无限大值时中断。这种设置是在仿真计算中出现无穷大 或者计算数据限制,即上溢或下溢时,系统将结束仿真进程。如果在计算中出现了

35、计算错误,可以利用该指令的中断功能来查找。 xbreak中断,在仿真要选择可采用的时间步长时中断。如果模型中采用了可变步长 解法器,那么当解法器遇到对其采用步长受限的情况时,系统将中断仿真进程。 zcbreak中断,出现过零时发生中断。这种中断设置是指,当系统检测到可能产生 过零现象的模块时,暂停仿真进程,并在命令窗口中显示中断的位置、时间。 技术凝聚实力 专业创新出版 23.9 编写 S-函数 S-函数是系统函数 (System Function)的简称,是指采用非图形化 的方式(即计算机语言,区别于 SIMULINK的系统模块)描述的一个 功能模块。用户可以采用 MATLAB代码, C,

36、C+, FORTRAM或 Ada等语 言编写 S-函数。 S-函数由一种特定的语法构成,用来描述并实现连 续系统、离散系统以及复合系统等动态系统; S-函数能够接收来自 SIMULINK解法器的相关信息,并对解法器发出的命令做出适当的响 应,这种交互作用非常类似于 SIMULINK系统模块与解法器的交互作 用。 S-函数作为与其他语言相结合的接口,可以使用这个语言所提供的 强大功能。例如, MATLAB语言编写的 S-函数可以方便地调用各种工 具箱函数和图形函数;使用 C语言编写的 S-函数则可以实现对操作 系统的访问等。 技术凝聚实力 专业创新出版 23.9.1 S-函数的工作原理 要创建一

37、个 S-函数,用户必须了解 S-函数的工 作原理。因为 S-函数是一个系统函数,也就要 理解 SIMULINK仿真的过程,首先就需要理解模 块的数学含义。 1 SIMULINK模块的数学含义 2 SIMULINK仿真过程 3 S-函数的回调 技术凝聚实力 专业创新出版 23.9.2 S-函数的使用 用户可以利用 SIMULINK中 User Defined Function模型库中的 S-Function模块,在 模型中创建 S-函数。创建包含 S-函数 SIMULINK模型的步骤如下。 ( 1)打开 SIMULINK库浏览器,将 User Defined Function模型库中 S-Fun

38、ction模块 复制到用户模型中。 ( 2)双击 S-Function模块,打开其参数设置对话框,设置 S-函数参数。在 S-函数 文件名区域要填写 S-函数不带扩展名的文件名,并且此栏不能为空。在 S-函数参数 去填入 S-函数所需要的参数。参数并列给出,参数间以逗号分隔开即可。 ( 3)创建 S-函数源代码。 S-函数源代码的创建方式有很多种,一般来说,在 SIMULINK的 S-function Example模型库中,为用户提供了针对不同语言的 S-函数模 版和例子。用户通过修改 S-函数的模版和例子来实现 S-函数源文件编写工作。 ( 4)在 SIMULINK仿真模型中,连接模块,实

39、现预定的功能。 技术凝聚实力 专业创新出版 23.9.3 S-函数的概念 S-函数有一些非常关键的概念,如:直接馈通( Direct feedthrough)、动态输入( Dynamically sized inputs)、设置采样时间和延迟( Setting smaple times and offsets)。理解这概念对于正确创建 S-函 数是非常重要的。 1直接馈通( Direct feedthrough) 2动态输入( Dynamically sized inputs) 3设置采样时间与延迟( Setting sample times and offsets) 技术凝聚实力 专业创新出

40、版 23.9.4 M文件 S-函数的模板 编写 M文件 S-函数时,推荐使用 S-函数模板文件, 即 sfuntmpl.m,这个文件存储在 MATLAB的根目 录 toolboxsimulinkblocks子目录中。模板文 件包含了完整的 S-函数,并能够对 flag标志进 行跟踪。模板文件由一个主函数和一组子函数 组成,每个子函数对应一个特定的 flag值,主 函数由开关结构( switch-case结构)根据标志 将 SIMULINK转移到相应的子函数中,这个子函 数称为 S-函数调用方法。 技术凝聚实力 专业创新出版 23.9.5 S-函数举例 在本小节中,将通过修改标准模板的实例,向 读者介绍 S-函数源代码的编写方法。 技术凝聚实力 专业创新出版 23.10 小结 本章更加深入地介绍了 SIMULINK高级技术,主要包括: SIMULINK的数据显示; 过零检测; 代数环的概念及解决方案; 高级积分器; 简单子系统; 条件执行子系统; 子系统封装; SIMULINK调试器; 编写 S-函数。

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

copyright@ 2023-2025  zhuangpeitu.com 装配图网版权所有   联系电话:18123376007

备案号:ICP2024067431-1 川公网安备51140202000466号


本站为文档C2C交易模式,即用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。装配图网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知装配图网,我们立即给予删除!