我使用命令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循环无法正确运行 . 当我手动暂停并继续Simulink模型时,我只能观察变量“time”的变化 . 我正在使用0.1秒的固定模拟时间步长 .

我已经搜索了很多,但仍然找不到任何理由 . 你可以帮帮我吗?先感谢您 .