Simulink仿真入门到精通(八) M语言对Simulink模型的自动化操作及配置

血红的双手。 提交于 2020-02-01 14:51:18

8.1 M语言控制模型的仿真

M语言与Simulink结合的方式:

  • 在Simulink模型或模块中使用回调函数
  • 在M语言中调用与模型相关的命令,控制模型的建立,设置模块的属性,增删信号线,以及运行模型仿真等

为了调用和操作Simulink模型,M语言中最常用的函数有sim、set_param、get_param。

8.1.1 sim控制模型仿真及参数配置

(1)simOut=sim('model','ParameterName1',value1,'ParameterName2',value2,...);

对名为model的模型进行仿真,仿真时将其参数通过[参数名,参数值]的方式进行配置。

simOut是一个Simulink.SimulationOutput对象,包含了仿真的输出:仿真采样时间、状态值和信号值。

sim_out=sim('mymodel','SimulationMode','Normal','stoptime','30');

(2)simOut=sim('model',ParameterStruct);

仿真时通过结构体变量配置参数。

param_struct=struct('SimulationMode','Normal','stoptime','30');
sim_out=sim('mymodel',param_struct);

(3)simOut=sim('model',ConfigSet);

仿真时通过配置集合来配置参数。

getActiveConfigSet()        %获取模型的配置集合变量
attachConfigSet()           %绑定参数配置集合到模型
setActiveConfigSet()        %激活模型的某个参数配置

对ConfigSet对象进行参数获取/设定也使用set_param()/get_param()。

(4)sim('model');

当不需要该表模型的参数配置,也不关心模型仿真的输出时,可以直接sim。

使用上述命令运行仿真时,并不修改模型的配置,而是通过sim函数暂时设置某个参数应用于此次仿真,仿真后模型的配置参数仍然保持之前的设定不受影响。

当希望观察模型参数配置不同对仿真结果有何影响时,直接使用多个sim语句带上不同的参数配置作为M脚本运行即可。

示例:

 

 

Data Export选Array。

param_struct1.SaveState      = 'on';
param_struct1.StateSaveName  = 'xout1';
param_struct1.SaveOutput     = 'on';
param_struct1.OutputSaveName = 'yout1';
param_struct1.SolverType     = 'Fixed-step';
param_struct1.Solver         = 'FixedStepDiscrete';
param_struct1.FixedStep      = '0.01';
sim_out1 = sim('mymodel',param_struct1);
param_struct2 = param_struct1;
param_struct2.FixedStep      = '2';
param_struct2.OutputSaveName ='yout2';
sim_out2 = sim('mymodel',param_struct2);
t1 = get(sim_out1, 'tout');
t2 = get(sim_out2, 'tout');
y1 = get(sim_out1, 'yout1');
y2 = get(sim_out2, 'yout2');
figure;
title('Sim a model with different config parameters');
subplot(211);
plot(t1,y1);
xlabel('time(s)');
ylabel('yout1');
subplot(212);
plot(t2,y2);
xlabel('time(s)');
ylabel('yout2');

 

 

8.1.2 set_param控制模型仿真过程

set_param(object,param1,value1,param2,value2,...);
  • object:模型或模块对象,既可以使用路径表示,也可以使用句柄表示;
  • paramX:模型或模块的参数名;
  • valueX:对应于paramX的参数值。

获取参数则使用get_param(object,param),每次只能获取一个参数的值。

有一个参数名为SimulationCommand,可由set_param设置不同的值来控制模型仿真的过程。

功能说明
start 启动模型仿真
pause 暂停模型仿真
step 单步执行仿真
continue 继续模型放着
stop 停止模型仿真

例:

 

标签
易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!