您好,欢迎访问三七文档
当前位置:首页 > 商业/管理/HR > 经营企划 > matlab的M-文件-S-函数的标准模板
function[sys,x0,str,ts]=sfuntmpl(t,x,u,flag)%SFUNTMPL是M-文件S函数模板%通过剪裁,用户可以生成自己的S函数,不过一定要重新命名%利用S函数可以生成连续、离散混合系统等,实现任何模块的功能%%M-文件S函数的语法为:%[SYS,X0,STR,TS]=SFUNC(T,X,U,FLAG,P1,...,Pn)%%参数含义:%t是当前时间%x是S函数相应的状态向量%u是模块的输入%flag是所要执行的任务%%FLAG结果功能%-------------------------------------------------------%0[SIZES,X0,STR,TS]模块初始化%1DX计算模块导数%2DS更新模块离散状态%3Y计算模块输出%4TNEXT计算下一个采样时间点%9[]结束仿真%%%用户切勿改动输出参数的顺序、名称和数目%输入参数的数目不能小于1,这四个参数的名称和排列顺序不能改动%用户可以根据自己的要求添加额外的参数,位置依次为第5,6,7,8,9等。%S函数的flag参数是一个标记变量,具有6个不同值,分别为0,1,2,3,4,9%flag的6个值分别指向6个不同的子函数%flag所指向的子函数也成为回调方法(CallbackMethods)switchflag,%初始化,调用“模块初始化”子程序%case0,[sys,x0,str,ts]=mdlInitializeSizes;%连续状态变量计算,调用“计算模块导数”子函数%case1,sys=mdlDerivatives(t,x,u);%更新,调用“更新模块离散状态”子函数%case2,sys=mdlUpdate(t,x,u);%输出,调用“计算模块输出”子函数%case3,sys=mdlOutputs(t,x,u);%计算下一时刻采样点,调用“计算下一个采样时刻点”子函数%case4,sys=mdlGetTimeOfNextVarHit(t,x,u);%结束,调用“结束仿真”子函数%case9,sys=mdlTerminate(t,x,u);%其他的flag%otherwiseDAStudio.error('Simulink:blocks:unhandledFlag',num2str(flag));end%endsfuntmpl%=============================================================================%“模块初始化”子函数%返回大小、初始条件和样本function[sys,x0,str,ts]=mdlInitializeSizes%调用simsizes函数,返回规范格式的sizes构架%这条指令不要修改sizes=simsizes;%模块的连续状态个数,0是默认值%用户可以根据自己的要求进行修改sizes.NumContStates=0;%模块的离散状态个数,0是默认值%用户可以根据自己的要求进行修改sizes.NumDiscStates=0;%模块的输出个数,0是默认值%用户可以根据自己的要求进行修改sizes.NumOutputs=0;%模块的输入个数,0是默认值%用户可以根据自己的要求进行修改sizes.NumInputs=0;%模块中包含的直通前向馈路个数,1是默认值%用户可以根据自己的要求进行修改sizes.DirFeedthrough=1;%模块中采样时间的个数,1是默认值,至少需要一个样本时间%用户可以根据自己的要求进行修改sizes.NumSampleTimes=1;%初始化后的构架sizes经simsizes函数处理后向sys赋值%这条指令不要修改sys=simsizes(sizes);%给模块初始值变量赋值,[]是默认值%用户可以根据自己的要求进行修改x0=[];%系统保留变量%切勿改动,保持为空str=[];%“二元对”描述采样时间及偏移量。[00]是默认值%[00]适用于连续系统%[-10]则表示该模块采样时间继承其前的模块采样时间设置ts=[00];%endmdlInitializeSizes%=============================================================================%计算导数向量functionsys=mdlDerivatives(t,x,u)%此处填写计算导数向量的指令%[]是模块的默认值%用户必须把算得的离散状态的导数向量赋给syssys=[];%endmdlDerivatives%=============================================================================%计算离散状态向量functionsys=mdlUpdate(t,x,u)%此处填写计算离散状态向量的指令%[]是模块的默认值%用户必须把算得的离散状态向量赋给syssys=[];%endmdlUpdate%=============================================================================%计算模块输出向量functionsys=mdlOutputs(t,x,u)%此处填写计算模块输出向量的指令%[]是模块的默认值%用户必须把算得的模块输出向量赋给syssys=[];%endmdlOutputs%=============================================================================%计算下一采样时刻functionsys=mdlGetTimeOfNextVarHit(t,x,u)%该子函数仅在“采样时间”情况下使用%sampleTime=1是模块默认设置,表示在当前时间1秒后再调用本模块%用户可以根据自己的要求修改sampleTime=1;%将计算得到的下一采样时刻赋给sys%切勿改动sys=t+sampleTime;%endmdlGetTimeOfNextVarHit%=============================================================================functionsys=mdlTerminate(t,x,u)%模板默认设置,一般情况不要改动sys=[];%endmdlTerminate
本文标题:matlab的M-文件-S-函数的标准模板
链接地址:https://www.777doc.com/doc-4369337 .html