《Simulink子模块封装.ppt》由会员分享,可在线阅读,更多相关《Simulink子模块封装.ppt(20页珍藏版)》请在taowenge.com淘文阁网|工程机械CAD图纸|机械工程制图|CAD装配图下载|SolidWorks_CaTia_CAD_UG_PROE_设计图分享下载上搜索。
1、Simulink动态系统仿真,几个常用的输入输出模块的使用,To Workspace To File From File From Workspace,Structure Array结构数组(P25),student = struct(name,Tom,score,80 86 97) student(2).name=Jack; student(2).score=60 70 100 student(3)=struct(name,Mary,score,59 81 91),参考:MatlabGetting StartedProgramming Other data structures,Cell A
2、rray单元数组,例: 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建立 通过压缩已有模块建立 在模型窗口中建立所定义功能模块的子模块。 用鼠标将这些需要组合的功能模块框住,然后选择Edi
3、t菜单下的Create Subsystem即可。,5.2 模块的封装,选中Subsystem功能模块,再打开Edit菜单中的Mask Subsystem进入mask的编辑窗口,5.2 模块的封装,Icon:设定功能模块的外观。 Parameters:设定输入数据窗口 Initialization:初始化 Documentation:设计模块的文字说明,练习1:,试编写一个实现y=kx+b功能的子模块。 In:x Out:y 参数:k, b,练习2:,试编写一个实现y=k1x1+k2x2功能的子模块。 In1:x1 In2:x2 Out:y 参数:k1, k2,5.3 封装模块的查看,Look
4、Under Mask,For Example: sltank,六、S函数的设计(自选,不作要求),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,.)
5、 t: the current time flag: 标志位 x: the current state vector u: 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=mdlGetTimeOfNextVarHi
6、t(t,x,u); case 9, sys=mdlTerminate(t,x,u);,连续/离散状态变量的个数, 输入输出变量的个数, 是否直通?,状态变量是连续方程形式,状态变量是离散方程形式,输出表达式,参数的初始设定,sys,x0,str,ts=mdlInitializeSizes的具体写法; 首先通过sizes=simsizes语句获得系统默认的系统参数变量sizes。sizes实际上是一个结构变量; 按照要求设置好的结构体通过sys=simsizes(sizes)语句赋给sys参数。 设置状态变量初始值x0; 设置字符串变量str, 通常为; 设置采样周期ts, ts应为双列矩阵t1
7、,t2,t1为采样周期,t2为偏移量,一般为0 t1=-1则继承输入信号的采样周期。 行数与sizes.NumSampleTimes一致.,sizes.NumContStates 表示S函数中连续状态的个数 sizes.NumDiscStates 表示S函数中离散状态的个数 sizes.NumOutputs 表示S函数中输出的个数 sizes.NumInputs 表示S函数中输入的个数 sizes.DirFeedthrough 输入信号是否直接在输出端出现的标识,取值为0,1 sizes.NumSampleTimes 模块采样周期的个数,S函数支持多采样周期的系统。,TS = An m-by-
8、2 matrix containing the sample time (period, offset) information. Where m = number of sample times. The ordering of the sample times must be: TS = 0 0, : Continuous sample time. 0 1, : Continuous, but fixed in minor step sample time. PERIOD OFFSET, : Discrete sample time where PERIOD 0 : Variable step discrete sample time where FLAG=4 is used to get time of next hit.,S function的书写例子,连续系统 离散系统 混合系统,S-Function Example 2,Limintm.m S-function Parameters mask S-Function,