资源描述:
《Simulink子模块封装》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库。
1、Simulink动态系统仿真2几个常用的输入输出模块的使用ToWorkspaceToFileFromFileFromWorkspace10.5子模块及模块封装技术退出主菜单><对于很大的Simulink模型,通过自定义功能模块可以简化图形,减少功能模块的个数,有利于模型的分层构建。subsystem10.5.1子系统的创建退出主菜单><通过子系统模块Subsystem建立通过压缩已有模块建立在模型窗口中建立所定义功能模块的子模块。用鼠标将这些需要组合的功能模块框住,然后选择Edit菜单下的CreateSubsystem即可。子系统创建举例建立如下PID控制器的模型并建立子系统。10.5
2、.2其他子系统使能子系统:EnabledSubsystem.控制信号:标量:>0时开始执行。向量:任何一个元素大于0即执行。详见例10.6触发子系统(不做要求)TriggeredSubsystem参见例10.710.5.3模块的封装选中Subsystem功能模块,再打开Edit菜单中的MaskSubsystem进入mask的编辑窗口10.5.3模块的封装Icon:设定功能模块的外观。Parameters:设定输入数据窗口Initialization:初始化Documentation:设计模块的文字说明练习1:试编写一个实现y=kx+b功能的子模块。In:xOut:y参数:k,b练习2:
3、试编写一个实现y=k1x1+k2x2功能的子模块。In1:x1In2:x2Out:y参数:k1,k210.5.3封装模块的查看LookUnderMaskForExample:sltank六、S函数的设计(自选,不作要求)6.1s函数的功能对模块库进行扩展自定义功能模块:通过基本模块进行扩展S函数:通过语言文件的编写进行扩展6.2s函数的特点s-function可以用m文件编写,也可以用c或fortune等语言文件编写。s函数的编写方法:按照s函数的格式编写:sfuntmpl(t,x,u,flag)这样的构造只能用于基于Simulink的仿真,并不能强其转换成独立于Matlab的程序。建
4、立m文件s-function[sys,x0,str,ts]=fname(t,x,u,flag,p1,p2,...)t:thecurrenttimeflag:标志位x:thecurrentstatevectoru:thecurrentinputvectorsfuntmpl.mlimintm.m如何编写S函数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);case
5、4,sys=mdlGetTimeOfNextVarHit(t,x,u);case9,sys=mdlTerminate(t,x,u);连续/离散状态变量的个数,输入输出变量的个数,是否直通?状态变量是连续方程形式状态变量是离散方程形式输出表达式数值功能调用函数名返回参数0初始化mdlInitializeSizessys为初始化参数,x0,str,ts如其定义1连续状态计算mdlDerivativessys返回连续状态2离散状态计算mdlUpdatesys返回离散状态3输出信号计算mdlOutputssys返回系统输出4下一步仿真时刻mdlGetTimeOfNextVarHitsys返回下
6、一步仿真的时间9终止仿真设定mdlTerminate无参数的初始设定[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一致.sizes.Nu
7、mContStates表示S函数中连续状态的个数sizes.NumDiscStates表示S函数中离散状态的个数sizes.NumOutputs表示S函数中输出的个数sizes.NumInputs表示S函数中输入的个数sizes.DirFeedthrough输入信号是否直接在输出端出现的标识,取值为0,1sizes.NumSampleTimes模块采样周期的个数,S函数支持多采样周期的系统。TS=Anm-by-2matrixcontaining