第9章simulink的扩展工具s函数.pptVIP

  1. 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
  2. 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  3. 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
  4. 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
  5. 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们
  6. 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
  7. 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
第9章simulink的扩展工具s函数

* 6.含外部输入参数系统的S-函数描述 Simulink除了传递t,x,u和flag参数外,还可以传递用户自定义的外部参数,这些参数需要在S-函数的输入参数中列出。当需要外部参数输入时,首先在编写S-函数时,要注意主函数应做适当的修改,以便将用户自定义的参数传递到子函数中,同时某些子函数的定义也应当进行相应的修改,以便通过输入参数接收用户的参数。另外,当利用Function Tables模块库中的S-function模块来调用该S-函数时,不要忘记在S-function模块的参数值列表框中输入外部参数值,多个参数值之间用逗号隔开,它们必须与用户建立的S-函数源文件的参数列表完全一致(包括参数的顺序)。 * 例9-7 用m文件编写一个限幅积分器的S-函数,并借助通用S-函数模块(S- function)调用此m文件。限幅积分器的数学模型为 其中 x为状态,u是输入,lb和ub分别表示积分的上限和下限. 解 (1)根据数学模型,编写limintm.m文件如下 limintm.m * (2)在MATLAB指令方式下直接运行以下命令。 lb=-0.5;ub=0.5;xi=0; [sys,x0]=limintm([ ],[ ],[ ],0,lb,ub,xi) 结果显示: sys= 1 0 1 1 0 0 1 x0= 0 * (3)利用S-函数模块调用m文件 ①创建如图9-7所示的Simulink窗口,其中正弦信号模块(Sine Wave)复制于信号源模块库(Sources),并且利用其默认值; S-函数模块(S-function)复制于函数与表模块库(Functions Tables); * 图9-7 * ②用鼠标双击新复制的S-函数模块图标,打开如图9-8所示的对话框。 图9-8 * 在对话框的子系统函数名(Subsystem function name)栏中填入S-函数文件名limintm,在函数参数(Function parameters)栏中填入要传送的三个变量名lb,ub,xi (假若,S-函数文件除了t,u,x和flag输入变量外没有其他的输入变量,那么最后一栏不用填写),然后按[OK],这样处理后,原通用S-函数模块图标符就自动改写为limintm,该模块也就成了有限积分模块,这样经过S-函数对话框定义后的m文件就可以像其他标准模块一样直接在框图窗口中参与运作; * ③双击示波器图标,打开示波器,然后运行Simulation|Start命令,就开始仿真了,这时就可以从示波器上看到一个如图9-9中所示的经限幅积分后的截顶正弦波。 同样利用"封装"命令,可以把上面定义的限幅积分模块limintm封装成一个真正的Simulink模块(参PID模块的封装)。 * 图9-9 * 9.2.2 用C语言创建S-函数 尽管m文件S-函数非常容易编写和理解,但是由于它在每个仿真步都要激活MATLAB解释器,使得仿真的速度变慢。另外,当需要利用RTW从Simulink框图生成实时代码时,框图中不能包含m文件S-函数。而C MEX S-函数不仅执行速度快,而且可以用来生成独立的仿真程序。另外,对一些用C语言编写好的程序还可以方便地通过包装程序结合到C MEX S-函数中。这样的S-函数由于结合了C语言的优势,可以实现对操作系统和硬件的访问,这种特性可以用来实现与串口或网络的通讯,以及编写设备的驱动等。 * 1.C MEX S-函数的模板 用C语言也可创建S-函数(MEX文件),在MATLAB6p1/simulink/src目录下保存有大量的用C语言编写的S-函数。与利用m文件编写S-函数一样,Simulink同样也为用C语言编写S-函数提供了模板文件。对于一般的应用,通常使用模板文件sfuntmpl_basic.c,因该文件只包含了几个常用的子程序,但它已提供了用C语言编写S-函数的基本框架结构。模板文件sfuntmpl_doc.c,则包含了所有的子程序,并有详细的注释。在MATLAB窗口中输入以下命令可打开模板文件sfuntmpl_basic.c。 edit sfuntmpl_basic.c * 每个用C语言编写的S-函数的开头都应包含下列语句: #define S_FUNCTION_NAME your_sfunction_name #define S_FUNCTION_LEVEL 2 #include simstruc.h 其中your_sfunction_name是用户要编写的S-函数的名字,也就是在S-function模块中

文档评论(0)

peili2018 + 关注
实名认证
文档贡献者

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

1亿VIP精品文档

相关文档