在 simulink 期间访问 CPU 时间?
Access to CPU time during simulink?
我需要运行 simulink 并设置超时和超时惩罚。因此,我需要一个块来给我 CPU 时间(真实世界时间)。
时钟块给出仿真时间:
CAN 超时检测是离散的,它不适用于我的连续求解器。
Matlab 函数块使仿真变得如此缓慢。
还有其他选择吗?
通常在(加速)模拟中使用真实世界时钟不是一个好主意。
这是一个使用 m 脚本设置超时的简单示例。它主要基于 this documentation page
model='untitled';
timeout=10;
set_param(model,'SimulationCommand','start')
tic;
while(true)
if not(strcmpi(get_param(model,'SimulationStatus'),'running'))
disp('simulation exited')
break;
end
if toc>=timeout
disp('timout reached')
set_param(model,'SimulationCommand','stop')
break;
end
pause(1);
end
如果您不喜欢轮询,也可以使用 callbacks 来实现,但这需要在您的模型中插入回调。
我需要运行 simulink 并设置超时和超时惩罚。因此,我需要一个块来给我 CPU 时间(真实世界时间)。
时钟块给出仿真时间:
CAN 超时检测是离散的,它不适用于我的连续求解器。
Matlab 函数块使仿真变得如此缓慢。
还有其他选择吗?
通常在(加速)模拟中使用真实世界时钟不是一个好主意。 这是一个使用 m 脚本设置超时的简单示例。它主要基于 this documentation page
model='untitled';
timeout=10;
set_param(model,'SimulationCommand','start')
tic;
while(true)
if not(strcmpi(get_param(model,'SimulationStatus'),'running'))
disp('simulation exited')
break;
end
if toc>=timeout
disp('timout reached')
set_param(model,'SimulationCommand','stop')
break;
end
pause(1);
end
如果您不喜欢轮询,也可以使用 callbacks 来实现,但这需要在您的模型中插入回调。