- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
12.1 S-函数12.1.1 S-函数的定义 S-函数是系统函数(System Function)的简称,是指采用非图形化的方式描述一个模块。S-函数使用特定的调用语法,这种语法可以与Simulink中的方程求解器相互作用,S-函数中的程序从求解器中接收信息,并对求解器发出的命令做出适当的响应。这种作用方式与求解器和内嵌的Simulink模块之间的作用很相似。S-函数的格式是通用的,它们可以用在连续系统、离散系统和混合系统中。 完整的S-函数结构体系包含了描述一个动态系统所需的全部能力,所有其他的使用情况(比如用于显示目的)都是这个默认体系结构的特例。S-函数允许用户向Simulink模型中添加用户自己的模块,它作为与其他语言相结合的接口程序,可以用MATLAB、C、C++、Fortran或Ada语言创建自己的模块,并使用这些语言提供的强大功能,用户只需要遵守一些简单的规则即可。例如,M语言编写的S-函数可以调用工具箱和图形函数;C语言编写的S-函数可以实现对操作系统的访问。 用户还可以在S-函数中实现用户算法,编写完S-函数之后,用户可以把S-函数的名称放在S-Function模块中,并利用Simulink中的封装功能自定义模块的用户接口。 12.1.2 S-函数的工作方式 若要创建S-函数,则用户必须知道S-函数的工作方式,若要理解S-函数的工作方式,也就要求理解Simulink仿真模型的过程,因此也就需要理解模块的数学含义。 1.Simulink模块的数学含义 Simulink中模块的输入、状态和输出之间都存在数学关系,模块输出是采样时间、输入和模块状态的函数。图12-1描述了模块中输入和输出的流程关系。 2.Simulink仿真过程 Simulink模型的仿真执行过程包括两个阶段。第一个阶段是初始化阶段,在这个过程中,模块的所有参数都被传递给MATLAB进行求值,因此所有的参数都被确定下来,并且模型的层次被展开,但是原子子系统仍被作为单独的模块进行对待。另外,Simulink把库模块结合到模型中,并传递信号宽度、数据类型和采样时间,确定模块的执行顺序,并分配内存,最后确定状态的初值和采样时间。然后Simulink进入第二个阶段,仿真开始,也就是仿真循环过程。仿真是由求解器控制的,它计算模块的输出,更新模块的离散状态,计算连续状态,在采用变步长求解器时,求解器还需要确定时间步长。求解器计算连续状态时包含下面几个步骤: (1) 每个模块按照预先确定的顺序计算输出,求解器为待更新的系统提供当前状态、时间和输出值,反过来,求解器又需要状态导数的值。 (2) 求解器对状态的导数进行积分,计算新的状态的值。 (3) 状态计算完成后,模块的输出更新再进行一次。这里,一些模块可能会发出过零警告,促使求解器探测出发生过零的准确时间。 在每个仿真时间步期间,模型中的每个模块都会重复这个循环过程,Simulink会按照初始化过程所确定的模块执行顺序来执行模型中的模块。而对于每个模块,Simulink都会调用函数,以计算当前采样时间中的模块状态、微分和模块输出。这个过程会一直继续下去,直到仿真结束。 这里把系统和求解器在仿真过程之间所起的作用总结一下。求解器的作用是传递模块的输出,对状态导数进行积分,并确定采样时间,求解器传递给系统的信息包括时间、输入和当前状态。系统的作用是计算模块的输出,对状态进行更新,计算状态的导数和生成过零事件,并把这些信息提供给求解器。在S-函数中,求解器和系统之间的对话是通过不同的标志来控制的。求解器在给系统发送标志的同时也发送数据,系统使用这个标志来确定所要执行的操作,并确定所要返回的变量的值。求解器和系统之间的这种关系可以用图12-2描述。 3.S-函数的控制流 S-函数的调用顺序是通过flag标志来控制的。在仿真初始化阶段,通过设置flag标志为0来调用S-函数,并请求提供数量(包括连续状态、离散状态和输入、输出的个数)、初始状态和采样时间等信息。然后,仿真开始,设置flag标志为4,请求S-函数计算下一个采样时间,并提供采样时间。接下来设置flag标志为3,请求S-函数计算模块的输出。然后设置flag标志为2,更新离散状态。当用户还需要计算状态导数时,可设置flag标志为1,由求解器使用积分算法计算状态的值。计算出状态导数和更新离散状态之后,通过设置flag标志为3来计算模块的输出,这样就结束了一个时间步的仿真。当到达结束时间时,设置flag标志为9,结束仿真。这个过程如图12-3所示。 4.S-函数回调方法 S-函数是由一组S-函数回调方法组成的,这些回调方法在每个仿真阶段执行不同的任务。在模型
您可能关注的文档
最近下载
- 黑龙江农业工程职业学院单招数学模拟试题(附答案).docx VIP
- 2025读书心得:屏幕时代如何重塑孩子的自控力.docx VIP
- 中国艰难梭菌感染诊断、治疗与预防指南(2024)详细解读PPT课件.pptx VIP
- 第14课《我们都是中国人》第2课时 这是我国的标志 教案设计 2025道德与法治二年级上册.docx
- 湘少版四年级上册、下册的英语单词默写表.pdf VIP
- GBT 危险货物运输应急救援指南 第1部分:一般指南.pdf VIP
- 煤炭掺配合同范本.docx VIP
- 汽车整体认识(汽车发展史)-精.ppt VIP
- 生产安全事故现场处置方案.docx VIP
- 小学数学二年级下册应用题练习.docx VIP
文档评论(0)