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