加载模型会将模型导入到内存中,但不在 Simulink 编辑器中打开模型进行编辑。加载模型之后,可以通过编程方式来处理模型,使用load_system进行加载。
load_system('modelname')
打开模型时通过编程方式加载变量,如 loadvar.m 中为模型 modelname.slx 所需变量,通过以下方式可加载变量:
set_param('modelname','PreloadFcn','loadvar')
通过编程的方式注释掉模块:
% 要查看模块的注释状态,请执行以下命令:
get_param(gcb,'commented');
% 要注释掉模块,请执行以下命令:
set_param(gcb,'commented','on');
% 要注释直通模块,请执行以下命令:
set_param(gcb,'commented','through');
% 要取消对模块的注释,请执行以下命令:
set_param(gcb,'commented','off');
更多模块设置参考官网:编程建模基础知识
(1)sim函数:当仿真过程中不需要与模型进行交互时,可选择使用sim函数
(2)set_param函数:可以在仿真过程中与模型进行交互,如获取仿真状态,启动或停止仿真等
(1)set_param函数:set_param
a. 通过set_param函数进行仿真操作的常用命令:
% 开始仿真
set_param(mdl, 'SimulationCommand', 'start')
% 停止仿真
set_param(mdl, 'SimulationCommand', 'stop')
% 暂停仿真
set_param(mdl, 'SimulationCommand', 'pause')
% 继续仿真
set_param(mdl, 'SimulationCommand', 'continue')
% 更新图
set_param(mdl, 'SimulationCommand', 'update')
% 将数据记录变量写入工作区
set_param(mdl, 'SimulationCommand', 'writedatalogs')
b. 设置模块参数
假设要设置slexAircraftExample 模型中名为 Alpha-sensor Low-pass Filter 的 Transfer Function 模块的传递函数系数
path = 'slexAircraftExample/Controller/Alpha-sensor Low-pass Filter';
% 设置低通滤波器的分子和分母
set_param(path,'Numerator','1.2','Denominator','[0.8*Tal,1]');
c. 设置模型仿真时间
set_param(mdl, 'StopTime', '10')
(2)get_param函数:get_param
a.获取模块参数名称
假设要获取 slexAircraftExample
模型中名为 Alpha-sensor Low-pass Filter
的 Transfer Function 模块的传递函数系数。为此,必须获取存储传递函数系数的参数的名称。
% 获取模块句柄和加载模型
path = 'slexAircraftExample/Controller/Alpha-sensor Low-pass Filter';
h = getSimulinkBlockHandle(path,true);
% 获取模块的所有参数名称
get_param(h,'DialogParameters')
% 获取参数值
num = get_param(h,'Numerator');
b.获取仿真状态
%获取仿真状态
get_param(mdl, 'SimulationStatus')