我使用命令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秒的固定模拟时间步长 .
我已经搜索了很多,但仍然找不到任何理由 . 你可以帮帮我吗?先感谢您 .