我使用命令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秒。
我已经搜索了很多,但仍然找不到任何理由。你可以帮帮我吗?提前谢谢。