今天,我想分享一个简单的技巧,我最近推荐给一个正在努力从模拟中检索错误消息的用户。
这个问题
该用户描述的是,当使用播放按钮模拟模型时,如果模型出错,诊断查看器中会显示一条清晰的错误消息:
下面是模拟模型的简化版代码:
mdl =“ex_modeling_simple_system”;
in = 金宝appSimulink.SimulationInput(mdl);
in = in. setpostsimfcn (@myPostSim);
Out = sim(in,“ShowSimulationManager”,“上”);
错误信息不是很有用:
同样的错误信息也显示在模拟管理器中:
的解释
如果在后模拟函数中设置断点,您将看到“点索引”错误发生,因为模拟错误退出,而我的代码试图访问的“logsout”字段不存在。
解决方案
为了避免这种情况,我建议查看SimulationOutput对象的ErrorMessage字段,只有在没有错误的情况下才访问日志数据:
这样,模拟管理器将显示原始错误:
如果您在并行工作人员上模拟模型,则此技术特别有用
parsim
,因为不可能像我在这里那样交互式地调试在并行worker上运行的代码。
现在轮到你了
我很好奇听到你的回答:我们是否应该围绕后模拟函数实现这样的错误处理,以便在模拟错误出现时自动返回实际的模拟错误,而不是后模拟错误?
请在下面的评论中告诉我们。
评论
如欲留言,请点击在这里登录您的MathWorks帐户或创建一个新帐户。