在Simulink运行时阻止matlab脚本

时间:2014-05-28 17:34:35

标签: matlab simulink

我正在使用Simulink从drop测试中实时收集数据。 Simulink工作得很好,但我的愿景是让一个Matlab(v.7.10)脚本运行模拟进行多次试验,而不必在滴之间运行到计算机。这也允许我在保存之前预处理数据。这两个程序都可以单独运行,但我不能让Simulink在脚本中正常运行。使用sim()将返回错误消息:

    Cannot perform command line simulation of 'acc_DAC' in external mode.

使用set_param(sys, 'SimulationCommand', 'start')启动模拟,但不会阻止脚本。脚本继续并返回错误,因为它应该存在的输出尚不存在。值得注意的是,我在其他地方读过,暂停Matlab也会暂停任何模拟,尽管我自己也无法做到这一点。

Simulink运行直到测量到冲击,然后停止并将加速计数据输出到工作区。我要问的是:

A)有没有办法sim()运行外部实时模拟?

B)是否有一种很好的方法可以让Matlab等待Simulink完成,或者变量存在,而不会暂停Simulink?

2 个答案:

答案 0 :(得分:1)

你可以尝试检查正在运行的模型的SimulationStatus,然后循环直到它显示stopped,尽管你需要小心一点,因为它有机会进入无限循环。

这样的东西
set_param(sys,'SimulationCommand','start');
while ~strcmp(get_param(sys,'SimulationStatus'),'stopped')
    drawnow
end

以上内容不适用于任何模拟模式,但可以在外部模式下工作。

答案 1 :(得分:0)

经过一周摆弄定时器和事件回调后,我发现如果可行的话,那是非常困难的。最终我创建了两个函数,一个用于启动模拟,另一个用于处理第一个的数据输出。我必须手动运行它们,但对我来说这不是什么大不了的事。希望这会对某人有所帮助!