《Simulink子模块封装.ppt》由会员分享,可在线阅读,更多相关《Simulink子模块封装.ppt(20页珍藏版)》请在三一办公上搜索。
1、Simulink动态系统仿真,几个常用的输入输出模块的使用,To WorkspaceTo FileFrom FileFrom Workspace,Structure Array结构数组(P25),student=struct(name,Tom,score,80 86 97)student(2).name=Jack;student(2).score=60 70 100student(3)=struct(name,Mary,score,59 81 91),参考:MatlabGetting StartedProgrammingOther data structures,Cell Array单元数组,
2、例:A(1,1)=1:4;3,5 7 8;A(1,2)=lesson 2;A2,1=ones(2,3);A2,2=logspace(1,3,3);celldisp(A),:数组的内容():数组元素,五、子模块及模块封装技术,退出,主菜单,对于很大的Simulink模型,通过自定义功能模块可以简化图形,减少功能模块的个数,有利于模型的分层构建。,subsystem,5.1 子系统的创建,退出,主菜单,通过子系统模块Subsystem建立通过压缩已有模块建立在模型窗口中建立所定义功能模块的子模块。用鼠标将这些需要组合的功能模块框住,然后选择Edit菜单下的Create Subsystem即可。,5
3、.2 模块的封装,选中Subsystem功能模块,再打开Edit菜单中的Mask Subsystem进入mask的编辑窗口,5.2 模块的封装,Icon:设定功能模块的外观。Parameters:设定输入数据窗口Initialization:初始化Documentation:设计模块的文字说明,练习1:,试编写一个实现y=kx+b功能的子模块。In:xOut:y参数:k,b,练习2:,试编写一个实现y=k1x1+k2x2功能的子模块。In1:x1In2:x2Out:y参数:k1,k2,5.3 封装模块的查看,Look Under Mask,For Example:sltank,六、S函数的设计
4、(自选,不作要求),6.1 s函数的功能,对模块库进行扩展,自定义功能模块:通过基本模块进行扩展,S函数:通过语言文件的编写进行扩展,6.2 s函数的特点,s-function可以用m文件编写,也可以用c或fortune等语言文件编写。s函数的编写方法:按照s函数的格式编写:sfuntmpl(t,x,u,flag)这样的构造只能用于基于Simulink的仿真,并不能强其转换成独立于Matlab的程序。,建立m文件s-function,sys,x0,str,ts=fname(t,x,u,flag,p1,p2,.)t:the current timeflag:标志位x:the current st
5、ate vectoru:the current input vector,sfuntmpl.m,limintm.m,如何编写S函数,switch flag,case 0,sys,x0,str,ts=mdlInitializeSizes;case 1,sys=mdlDerivatives(t,x,u);case 2,sys=mdlUpdate(t,x,u);case 3,sys=mdlOutputs(t,x,u);case 4,sys=mdlGetTimeOfNextVarHit(t,x,u);case 9,sys=mdlTerminate(t,x,u);,连续/离散状态变量的个数,输入输出变量
6、的个数,是否直通?,状态变量是连续方程形式,状态变量是离散方程形式,输出表达式,参数的初始设定,sys,x0,str,ts=mdlInitializeSizes的具体写法;首先通过sizes=simsizes语句获得系统默认的系统参数变量sizes。sizes实际上是一个结构变量;按照要求设置好的结构体通过sys=simsizes(sizes)语句赋给sys参数。设置状态变量初始值x0;设置字符串变量str,通常为;设置采样周期ts,ts应为双列矩阵t1,t2,t1为采样周期,t2为偏移量,一般为0t1=-1则继承输入信号的采样周期。行数与sizes.NumSampleTimes一致.,siz
7、es.NumContStates 表示S函数中连续状态的个数sizes.NumDiscStates 表示S函数中离散状态的个数sizes.NumOutputs 表示S函数中输出的个数sizes.NumInputs 表示S函数中输入的个数sizes.DirFeedthrough 输入信号是否直接在输出端出现的标识,取值为0,1sizes.NumSampleTimes 模块采样周期的个数,S函数支持多采样周期的系统。,TS=An m-by-2 matrix containing the sample time(period,offset)information.Where m=number of
8、sample times.The ordering of the sample times must be:TS=0 0,:Continuous sample time.0 1,:Continuous,but fixed in minor stepsample time.PERIOD OFFSET,:Discrete sample time where PERIOD 0:Variable step discrete sample timewhere FLAG=4 is used to get time of next hit.,S function的书写例子,连续系统离散系统混合系统,S-Function Example 2,Limintm.mS-function Parameters mask S-Function,