使用set_param和get_param进行Matlab和Simulink仿真

时间:2018-01-03 10:01:35

标签: matlab simulation simulink

我使用命令set_param和get_param来控制一个非常简单的simulink模型,它只包含一个时钟块和一个范围。我想要的是让simulink模型运行,从Simulink到Matlab获得时钟块的实时输出,并在时钟值大于5时停止模拟。以下是我的Matlab脚本:

Simulink_Model='co_simulation_sl';                      
load_system(Simulink_Model);

open(Simulink_Model);
time=0;

while time<5

if strcmp (get_param(Simulink_Model,'SimulationStatus'), 'stopped')
      set_param(Simulink_Model,'SimulationCommand','start')
   elseif strcmp (get_param(Simulink_Model,'SimulationStatus'), 'paused')
      set_param(Simulink_Model,'SimulationCommand','continue')
   end
   set_param(Simulink_Model,'SimulationCommand','pause')
   block = 'co_simulation_sl/Clock';
   rto = get_param(block, 'RuntimeObject');
   time = rto.OutputPort(1).Data;
end
set_param(Simulink_Model,'SimulationCommand','stop')

输入图片说明为here

然而,while循环无法正确运行。我只能观察变量的变化&#34;时间&#34;当我手动暂停并继续Simulink模型时。我使用的固定模拟时间步长为0.1秒。

我已经搜索了很多,但仍然找不到任何理由。你可以帮帮我吗?提前谢谢。

0 个答案:

没有答案