第二章_simulink_仿真技术解说.ppt

  1. 1、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
  2. 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  3. 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
2、定义s-function的初始信息 为了让Simulink识别出一个m文件s-function,用户必须在s-函数里提供有关s-函数的说明信息,包括采样时间、连续或者离散状态个数等初始条件。这一部分主要是在mdlInitializeSizes子函数里完成。 Sizes数组是s-function函数信息的载体,它内部的字段意义为: NumContStates:连续状态的个数(状态向量连续部分的宽度) NumDiscStates:离散状态的个数(状态向量离散部分的宽度) NumOutputs: 输出变量的个数(输出向量的宽度) NumInputs:输入变量的个数(输入向量的宽度) DirFeedthrough:有无直接馈入 NumSampleTimes:采样时间的个数 如果字段代表的向量宽度为动态可变,则可以将它们赋值为-1。 注意DirFeedthrough是一个布尔变量,它的取值只有0和1两种,0表示没有直接馈入,此时用户在编写mdlOutputs子函数时就要确保子函数的代码里不出现输入变量u;1表示有直接馈入。 NumSampleTimes表示采样时间的个数,也就是ts变量的行数,与用户对ts的定义有关。 需要指出的是,由于s-function会忽略端口,所以当有多个输入变量或多个输出变量时,必须用mux模块或demux模块将多个单一输入合成一个复合输入向量或将一个复合输出向量分解为多个单一输出。 3、输入和输出参量说明 S-function默认的4个输入参数为t、x、u和flag,它们的次序不能变动,代表的意义分别为: t:代表当前的仿真时间,这个输入参数通常用于决定下一个采样时刻,或者在多采样速率系统中,用来区分不同的采样时刻点,并据此进行不同的处理。 x: 表示状态向量,这个参数是必须的,甚至在系统中不存在状态时也是如此。它具有很灵活的运用。 u:表示输入向量。 flag:是一个控制在每一个仿真阶段调用哪一个子函数的参数,由Simulink在调用时自动取值。 S-function默认的4个返回参数为sys、x0、str和ts,它们的次序不能变动,代表的意义分别为: sys:是一个通用的返回参数,它所返回值的意义取决于flag的值。 x0: 是初始的状态值(没有状态时是一个空矩阵[]),这个返回参数只在flag值为0时才有效,其他时候都会被忽略。 str:这个参数没有什么意义,是MathWorks公司为将来的应用保留的,m文件s-function必须把它设为空矩阵。 ts:是一个m×2的矩阵,它的两列分别表示采样时间间隔和偏移。 S-函数的模板程序位于toolbox/simulink/blocks目录下,文件名为sfuntmpl.m。 在运用S-函数进行仿真前,应当自行编制S-函数程序,因此必须知道系统在不同时刻所需要的信息: (1)在系统开始进行仿真时,应先知道系统有多少状态变量,其中哪些是连续变量,哪些是离散变量,以及这些变量的初始条件等信息。这些信息可通过S-函数中设置flag=0获取。 (2)若系统是严格连续的,则在每一步仿真时所需要的信息为:通过flag=1获得系统状态导数;通过flag=3获得系统输出。 (3)若系统是严格离散的,则通过flag=2获得系统下一个离散状态;通过flag=3获得系统离散状态的输出。 如例题如示:(a)用S函数模块为图2-41所示单摆构造系统动力学模型;(b)利用simulink研究该单摆摆角的运动曲线;(c)用S函数动画模块表现单摆的运动。 图2-41单摆示意图 (a)写出该单摆的动力学方程 式中 实施加在单摆上的等效外力; 是等效摩擦系数; 是等效重力系数。 (b)把上述二阶方程写成状态方程组 令 于是上述方程可写为 (c)根据状态方程对模板文件进行“裁剪”得到simpendzzy.m 从MATLAB的toolbox\simulink\blocks子目录下,复制sfintempl.m,并把它改名为simpendzzy.m,再根据状态方程对文件进行修改,最后形成文件。 (d)构成名为simpendzzy的S-函数模块 从simulink的“user-defined Function ”子库中复制S-Function框架模块到空白模型窗,如图2-42所示。 2-42复制得到的S-函数框架模块 双击S-Function框架模块,弹出图2-43所示对话窗;在“S-Function name ”栏中填写函数名simpendzzy;在“S-Function parameters”栏中填写函数simpendzzy.m的第4、5、6、个输入

文档评论(0)

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

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

1亿VIP精品文档

相关文档