S—函数的建模与应用教程.doc

  1. 1、本文档共10页,可阅读全部内容。
  2. 2、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
S-Function是system-function的缩写。当Matlab所提供的simulink模型不能完全满足用户需要时,就可以通过S-函数提供用户自己编写程序啦满足自己要求模型的接口。S-函数可以用Matlab、C、C++、Ada和Fortran语言编写,但是后四种语言编写的S-函数需要编译成MEX文件。在同名的M文件和MEX文件的S-函数情况下,Matlab和simulink优先调用MEX。 S-函数主要用来实现下面几个方面的功能: (1)向simulink模块中增加一个通用目标的模型 (2)使用S-函数的模块来充当硬件的驱动 (3)在仿真中嵌入已经存在的C代码 (4)将系统表示成一系列的数学方程 (5)在simulink中使用动画 使用S-函数的一个优点是,你可以建立一个通用目标的模块,在一个模型中可以多次调用,每一个模块可以有不同的参数。 本教程的目录如下 2# S-函数工作原理 ? ?2.1 模型的数学描述 ? ?2.2 S-函数仿真过程 ? ?2.3 S-函数回调方法 3# M文件S-函数的编写和模板 4# M文件S-函数实例 ? ?4.1简单单摆仿真实验 ? ?4.2混合系统M文件S-函数一、S-函数工作原理 模型的数学描述 simulink模块一般由若干输入、状态和输出组成,其中输出是时间、状态和输入的函数 2009-3-25 20:50 上传 下载附件 (6.06 KB) 可以通过下面的几个数学表达式来描述上面的过程,具体如下: 输出:y=f(x,u,t) 状态:x=g(x,u,t) S-函数仿真过程 simulink模型的处理主要有两个过程: 1第一个阶段是初始化 这时侯的所有参数都将被确定,主要完成以下几个过程: (1)传递参数表达式给Matlab进行求解 (2)得到的数值作为实际的参数使用 (3)展开模型的层次,每个子系统被它们所包含的模块替代 (4)检查好相邻模块间的连接 (5)确定状态初值和采样时间 2第二阶段是模型仿真运行 仿真开始运行,仿真过程是求解器和simulink引擎交互控制的。求解器的作用是传递模块的输出,对状态导数进行积分,并确定采样时间,周而复始,直到仿真结束。 仿真运行阶段的工作可以概括为: (1)计算模型输出 (2)更新模型离散状态 (3)计算模型连续状态,连续状态的计算过程 (4)计算模型输出,过零可能被激活(过零点,就是输出y从正变到负或从负变到正) S-函数回调方法(具体看后面的实例) 一个S-函数有对应的回调函数,这些回调函数(也叫方法)在模型仿真时,告诉simulink如何操作和计算。S-函数回调方法主要完成以下几个方面: (1)初始化模型(mdlInitializeSizes) 在仿真之前,simulink在这个阶段初始化S-函数,主要有以下几个过程: 注意:如果下面字段代表的向量宽度(也就是**的个数)为动态可变,则必须将它们赋值为-1 ①初始化结构体SimStruct,它包含了S-函数的所有信息 ②设置输入(NumOutputs)输出(NumInputs)端口数,也就是输入变量的个数 ③设置状态变量个数(NumStates),注意有连续和离散之分 ④设置是否有直接馈通(DirFeedthrough),简单的理解就是输入能否控制输入出,如果有则为1,否则为0,在以下两种情况需要直接馈通: a、某一时刻的系统输出y中包含某一时刻的系统输入u b、系统是一个变采样时间系统(variable sample time system)且采样时间计算与输入u相关 ⑤设置采样时间个数(NumSampleTimes),也就是ts变量的行数,与用户对ts的定义有关 (2)计算下一个采样时间(mdlGetTimeOfNextVarHit) 在创建一个变时间样本时,这个步骤计算下一个样本的时间点,即计算下一步的仿真步长 (3)计算下一个时间步的输出(mdlOutputs) 当这一步完成后,此模块的所有端口对于当前时间按步都是合法的 (4)更新模块状态(mdlUpdate) 此过程在每一步长处都要执行一次,可以在这个过程中添加每一个仿真都需要更新的内容,此过程离散状态的更新 (5)对状态变量进行积分(mdlDerivatives) 用于连续状态的求解和非采样过零点,如果S-函数存在连续状态,simulink就在minor step time内调用mdlDrivatives和mdlOutput两个函数。如果存在非采样过零点,则调用mdlOutput和mdlZeroCrossing函数 二、M文件S-函数的编写和模板 Matlab中提供了直接的S-函数的模板,不需要我们直接编写原始文件,只需要根据我们的需要修改其中的一部分就可以了

文档评论(0)

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

没有什么可以说的了

版权声明书
用户编号:5042300334000003

1亿VIP精品文档

相关文档