网站大量收购独家精品文档,联系QQ:2885784924

第二讲 子系统封装技术与S function基础.ppt

  1. 1、本文档共69页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
第二讲 子系统封装技术与S function基础

绝大多数的程序设计语言都有使用子程序的功能。在FORTRAN里有subroutine子程序和function子程序;C语言中的子程序被称为“函数”;Matlab的子程序称为函数式M文件。Sinlulilnk也提供了类似的功能——子系统。 随着模型越来越大、越来越复杂,人们很难轻易的读懂它们。在这种情况下,子系统通过把大的模型分割成几个小的模型系统以使得整个系统模型更简捷、可读性更高,而且这种操作并不复杂。 创建Simulink子系统共有两种方法: 封装的理解 在这里要分清楚封装子系统和建立子系统是两个不同的概念,分别介绍如下: 建立子系统是将一组完成相关功能的模块包含到一个子系统当中,用一个模块来表示,主要是为了简化Simulink模型,增强Simulink模型的可读性,便于我们仿真和分析。 在仿真前,需要打开子系统模型窗口,对其中的每个模块分别进行参数设置。虽然增加了Simulink模型的可读性,但并没有简化模型的参数设置。当模型中用到多个这样的子系统,但是每个子系统中模块的参数设置都不相同时,这就显得很不方便。而且容易出错。 为了解决简单建立子系统的不足,我们可以对子系统进行封装。将完成特定功能的相关模块集合到一起,对其中经常要设置的参数设置为变量,然后封装,使得其中变量可以在封装系统的参数设置对话框中统一进行设置,这就大大简化了参数的设置,而且不容易出错,这非常有利于进行复杂的大系统仿真。 封装后的子系统可以作为用户的自定义模块,作为普通模块一样添加到Simulink模型中应用,也可以添加到模块库中以供调用。 封装后的子系统可以定义自己的图标、参数和帮助文档,完全与Simulink其他普通模块一样。双击封装子系统模块,弹出对话框,可进行参数设置,如果有任何问题,可以单击help按钮,不过这些帮助是创建者自己进行编写的。 封装后的子系统防止随意修改。 也可以添加到simulink浏览器中 创建库文件,建立路径,设置set path,修改slbocks.m 模板 找一个slblocks.m,如目录C:\Program Files\MATLAB\R2009a\toolbox\fuzzy\fuzzy 如: blkStruct.Name = sprintf(‘%s\n%s’,‘my god’);显示名 blkStruct.OpenFcn = ‘mylib1’;mdl库文件名 (工作目录为库文件目录) Sfunction对比 2.5 S-Function 的工作原理 要创建 S-function,你必须了解S-function 是如何工作的。要了解S-function 如何工作,则需要了解Simulink 是如何进行模型仿真的,那么又需要了解块的数学公式。因此,本节首先从一个块的输入、状态和输出之间的数学关系开始介绍。 Simulink 块的数学关系 Simulink 块包含一组输入、一组状态和一组输出。其中,输出是采样时间、输入和块状态的函数。 下面的方程式表述了输入、输出和状态之间的数学关系: 仿真过程 Simulink 模型的执行分几个阶段进行。 首先进行的是初始化阶段,在此阶段,Simulink 将库块合并到模型中来,确定传送宽度、数据类型和采样时间,计算块参数,确定块的执行顺序,以及分配内存。 然后,Simulink 进入到“仿真循环”,每次循环可认为是一个“仿真步”。在每个仿真步期间,Simulink 按照初始化阶段确定的块执行顺序依次执行模型中的每个块。对于每个块而言,Simulink 调用函数来计算块在当前采样时间下的状态,导数和输出。如此反复,一直持续到仿真结束。 Simulink 执行仿真的步骤 对于离散状态,会更新当前时刻的离散状态并进行输出;对于连续状态则处理起来比较复杂,会计算两次输出,这两次输出会在求解器当中进行一致性检查,不超过求解器设置的容限时,求解器会以一个更小的步长进行计算输出,而且在连续时间状态下存在一个过零检测的问题,仿真循环当中如果检测到过零点,simulink会自动在此过零点周围进行插值。 直接馈入 y = k×u,其中,u 是输入,k 是增益,y 是输出 非直接馈入: 输出:y = x,导数:dx/dt = u (3)设置采样时间和偏移量 S-function 在指定S-function 何时执行上都具有高度的灵活性。Simulink对于采样时间提供了下列选项: 连续采样时间——用于具有连续状态和/或非过零采样的S-function。对于这种类型的S-function,其输出在每个微步上变化。 连续但微步长固定采样时间——用于需要在每一个主仿真步上执行,但在微步长内值不发生变化的S-function。 离散采样时间——如果S-function 块的行为是离散时间间隔的函数,那

文档评论(0)

dajuhyy + 关注
实名认证
内容提供者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档