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