simulink建模仿真_资料解读.ppt

  1. 1、本文档共131页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
  为了在Simulink中测试这个S-函数,可双击模型中的S-Function模块,打开模块参数对话框,在S-function name参数框内输入timestwo。由于这个模型是不含有参数和状态的,因此可对S-function parameters参数不做修改,如图12-8(a)所示。运行仿真,在示波器中显示的波形如图12-8(b)所示。 (a) (b) 图12-8   例12-2 含参数的可变增益系统。   如果需要用户输入系统的参数,则这些参数必须在S-函数中第一行的输入参数中列出。主函数应当做适当的修改,以便将用户参数传递到子函数中;子函数的定义也应该进行相应的修改,以便通过输入参数接收用户的参数。   现在,图12-9中的模型可实现一个可变增益系统,它的增益值作为S-Function模块中的参数由用户输入。 图12-9   对S-函数模块进行的修改包括:最顶部的函数做了改动,函数中增加了新的参数,并采用新的函数名。   function [sys, x0, str, ts] = sfun_vargain(t, x, u, flag, gain)   由于增益参数只是用来计算输出值的,因此对mdlOutputs的调用可修改为:   case 3,    sys = mdlOutputs(t, x, u, gain);   对mdlOutputs子函数的定义也做了相应的修改,将增益作为参数输入:   function sys = mdlOutputs(t, x, u, g)   sys = g*u;   在编写S-函数时,应该区分哪些参数会影响一个子函数的执行,然后针对这些参数做相应的改动。   注意,输出通过增益和输入的乘积得到,并通过sys返回。   在S-Function对话框内设置参数,S-function name的参数名为sfun_vargain,设置S-function parameters参数值为10,如图12-10(a)所示。运行仿真,得到的结果如图12-10(b)所示。 (a) 图12-10 (b) 图12-10 12.5.2 连续状态S-函数   在实现一个连续系统时,mdlInitializeSizes子函数应做适当的修改,包括确定连续状态的个数、状态初始值和设置采样时间ts为0,表明系统为连续采样。   例12-3 积分器S-函数。   这里建立一个简单的积分器,它的状态初始值作为用户输入,系统模型如图12-11所示。 图12-11   由于状态初始值作为输入参数,因此S-函数中的第一行定义输入的初始状态参数为initial_state:   function [sys, x0, str, ts] = sfun_int(t, x, u, flag, initial_state)   然后将初始状态initial_state传递给初始化函数mdlInitializeSizes。   模型导数函数   对于一个积分器,状态方程为:   因此还需要编写mdlDerivatives子函数,将状态的导数向量通过sys变量返回:   function sys = mdlDerivatives(t, x, u)   sys = [u];   如果系统包含多于一个状态,则可以通过索引x(1),x(2),…得到各个状态。自然地,对于多个状态,就会有多个导数与之对应,在这种情况下,sys为一个向量,其中包含了所有连续状态的导数。与通常一样,修改后的mdlOutputs中应包含输出方程。   在S-Function对话框内设置参数,S-function name的参数名为sfun_int,设置S-function parameters参数值为5,如图12-12(a)所示。运行仿真,得到的结果如图12-12(b)所示。 (a) (b) 图12-12   例12-4 蹦极S-函数。   在这里利用S-函数实现第6章中的蹦极跳系统,方程为:   其中,h为距地面的距离;方程中的常值为,弹力系数k=5,a1=1,a2=1,g=10。用户可以在S-函数中输入长度、质量和离地面的距离。系统模型如图12-13所示。   其中,h为距地面的距离;方程中的常值为,弹力系数k=5,a1=1,a2=1,g=10。用户可以在S-函数中输入长度、质量和离地面的距离。系统模型如图12-13所示。   修改主函数中的函数名称为sfun_bungee,系统没有输入,使用一个if-else结构实现b(x)判断选择。在S-Function模块对话框内输入参数值,按照S-函数中的顺序输入S-function parameters参数值,如图12-14(a)。设置仿真时间为100个时间单位,运行仿真

文档评论(0)

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

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

1亿VIP精品文档

相关文档