您好,欢迎访问三七文档
当前位置:首页 > 商业/管理/HR > 公司方案 > 仿真SIMULINK子系统及封装
6.2模块化与封装(建立子系统)一、模块化当模型很大很复杂时,可将一些模块组合成一个子系统,可简化仿真模型,便于系统的设计与分析。建立子系统可有两种形式:①组合已经存在的模块:用鼠标选中需组合的模块,EditCreateSubsystems;②把Ports&Subsystems中的Subsystems模块加入到模型中,双击打开子系统编辑窗口,添加模块。这时,经模块化后,双击子系统仍可看到内部模块。要修改参数,需要逐个打开各模块来设置,比较麻烦。如要有一个子系统的参数设置对话框代替多个对话框,就要采用封装技术。目录前页后页组合已经存在的模块把Subsystems模块加入到模型中,再添加模块二、封装先看SimulinkExtra中的PID模块,内部也是多个模块组成的子系统,但不需要逐个打开各模块来修改参数,而有一个子系统的参数设置对话框(自己创建)代替多个对话框,设置一些关键参数。优点:用户与模块内部的复杂性隔绝;提供一个描述性的、友好的用户接口;保护模块的内容免受无意识的干扰。利用Simulink的封装功能,就可以子定义做出一个模块的对话框和图标。目录前页后页sKsKKsTKsTKKsTsTKsUdIpdpippdip11)11()(封装过程:①用以上两种方式模块化方法创建子系统,需在各模块上给封装后需赋值的参数指定变量名(字母);②选中子系统,然后选择EditMaskSubsystems;③使用封装编辑器设计图标、对话框、文本。有四个标签页:Icon模块名字和外观Parameters输入参数Initialization参数初始化Documentation模块文字说明完成封装后,再双击模块,就出现新的封装对话框,而非子系统内部模块。若要解除封装,在EditMask中用Unmask即可。mypid1.mdl目录前页后页PID调节器标签页(1)Icon模块名字和外观目录前页后页标签页(2)Parameters输入参数目录前页后页标签页(3)Initialization参数初始化目录前页后页标签页(4)Documentation模块文字说明目录前页后页一、仿真模型的参数化在Simulink环境下,仿真模型的参数可以是实际数值,也可以是字母表示的变量名。字母表示的仿真模型参数可以在Workspace工作空间中赋值,也可在M文件中赋值,然后进行模型的运行。目录前页后页6.3复杂系统的综合仿真例如某系统结构固定,参数较多,根据不同实际情况有多套参数。二、从命令行运行Simulink仿真模型前面都是在Simulink环境下,用菜单命令运行仿真模型,从命令行运行模型的方式可使用户在M文件中运行仿真,可允许用户改变仿真模型的参数,也可在M文件中控制模型的运行。[t,x,y]=sim(model,timespan,options,ut)t——返回仿真的时间向量x——返回仿真的状态矩阵y——返回仿真的输出矩阵目录前页后页[t,x,y]=sim(model,timespan,options,ut)model——仿真模型名称timespan——仿真的起始和终止时间两种:1、tFinal终止时间,起始时间为02、[tStarttFinal]起始和结束时间options——指定可选的仿真参数,由simset建立ut——可选的对顶层输入端口模块的外部输入其中,只有model是必需的参数。目录前页后页simset指定仿真参数必须用于sim命令中,主要包括:AbsTol:默认值为1e-6,设定绝对误差范围。Decimation:默认值为1,决定隔多少个点返回状态和输出值。Solver:解法器的选择。MaxRows:默认0,表示不限制。若为大于零的值,表示限制输出和状态的规模,使其最大行数等于该数值。InitialState:一个向量值,用于设定初始状态。FixedStep:正数表示步长的大小,仅用于固定步长。MaxStep:默认auto,变步长模式中最大的步阶大小。Simget(‘模型文件名’)得到该模型的仿真参数:get_param获取仿真模型或仿真模块的参数set_param设置仿真模型或仿真模块的参数目录前页后页三、与M函数的组合仿真如果仿真模型中用到的复杂环节具有特殊结构和特殊运算,在Simulink提供的现成的模块库中找不到,用户可以自行编制M函数,再连接到Simulink搭建的仿真模型中。在Simulink模块库User-DefinedFunctions中选择MATLABFcn加入搭建的仿真模型中,双击模块打开M函数对话框,键入要连接的M函数文件名,模型运行时就会调用该M函数文件。例题:将实验四函数文件中的非线性饱和函数加入simulink的模型中。四、条件子系统前面的子系统,对于一定的输入,子系统必定产生输出。但有些情况下,只有满足一定的条件子系统才执行。即:子系统的执行依赖于一个控制信号,由子系统单独的控制端口输入。由此,条件子系统执行时,不仅依赖于子系统本身的输入信号,还受到控制信号的约束。目录前页后页1、使能子系统(EnableSubsystem)使能子系统除原有的输入、输出外,还有一个控制系统的激活端口,只有当控制信号为正,子系统被激活,使能子系统才执行。控制信号可为标量或向量,标量的信号值大于0是子系统被激活;向量的任一个元素大于0,就能激活。使能子系统模块位于Ports&Subsystems使能子系统模块中,打开Enable模块对话框,可以设置其状态时保持还是重置、是否输出激活控制信号等。使能子系统Enable模块目录前页后页Enable模块对话框Stateswhenenabling:held表示使能子系统开始执行时,系统中的状态保持不变。Stateswhenenabling:reset表示使能子系统开始执行时,系统中的状态重新被设置为初始参数值。Showoutputport选择是否输出激活控制信号例:利用使能子系统将幅值为4的正弦交流信号转换为同幅值的直流信号目录前页后页2、触发子系统(TriggeredSubsystem)触发子系统除原有的输入、输出外,也有一个控制系统的激活端口,根据触发模块的四种触发事件进行选择,使触发子系统执行。触发子系统模块位于Ports&Subsystems触发子系统模块中,打开Trigger模块对话框,可以选择触发事件。1)rising上升沿触发控制信号出现上升沿时开始执行2)Falling下降沿触发控制信号出现下降沿时开始执行3)either边沿触发控制信号出现任何过零时开始执行4)Function-call函数调用触发由S-function内部逻辑控制
本文标题:仿真SIMULINK子系统及封装
链接地址:https://www.777doc.com/doc-1396690 .html