首页 文章

在Simulink运行时阻止matlab脚本

提问于
浏览
2

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

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

使用 set_param(sys, 'SimulationCommand', 'start') 启动模拟,但不会阻止脚本 . 该脚本继续并返回错误,因为它本应该让我自己走得那么远 .

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

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

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

2 回答

  • 1

    您可以尝试检查正在运行的模型的 SimulationStatus ,并循环直到它显示 stopped ,尽管您有机会进入无限循环 .

    就像是

    set_param(sys,'SimulationCommand','start');
    while ~strcmp(get_param(sys,'SimulationStatus'),'stopped')
        drawnow
    end
    

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

  • 0

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

相关问题