simulink与python联合仿真(一):以编程方式运行仿真

1.加载模型

加载模型会将模型导入到内存中,但不在 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');

更多模块设置参考官网:编程建模基础知识

2.运行仿真方式

(1)sim函数:当仿真过程中不需要与模型进行交互时,可选择使用sim函数

(2)set_param函数:可以在仿真过程中与模型进行交互,如获取仿真状态,启动或停止仿真等

3.运行仿真

(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')

simulink与python联合仿真(一):以编程方式运行仿真_第1张图片

你可能感兴趣的:(python,开发语言,matlab)