Simulin金宝appk上的Guy

金宝appSimulink &基于模型的设计

处理后模拟回调中的错误

今天,我想分享一个简单的技巧,我最近推荐给一个正在努力从模拟中检索错误消息的用户。

这个问题

该用户描述的是,当使用播放按钮模拟模型时,如果模型出错,诊断查看器中会显示一条清晰的错误消息:
但是,在模拟模型时使用 sim卡 命令和 post-simulation函数 ,这个错误就不那么有用了。
下面是模拟模型的简化版代码:
mdl =“ex_modeling_simple_system”
in = 金宝appSimulink.SimulationInput(mdl);
in = in. setpostsimfcn (@myPostSim);
Out = sim(in,“ShowSimulationManager”“上”);
后模拟功能添加到哪里 SimulationOutput 对象附加的后处理信息:
错误信息不是很有用:
同样的错误信息也显示在模拟管理器中:

的解释

如果在后模拟函数中设置断点,您将看到“点索引”错误发生,因为模拟错误退出,而我的代码试图访问的“logsout”字段不存在。

解决方案

为了避免这种情况,我建议查看SimulationOutput对象的ErrorMessage字段,只有在没有错误的情况下才访问日志数据:
这样,模拟管理器将显示原始错误:
如果您在并行工作人员上模拟模型,则此技术特别有用 parsim ,因为不可能像我在这里那样交互式地调试在并行worker上运行的代码。

现在轮到你了

我很好奇听到你的回答:我们是否应该围绕后模拟函数实现这样的错误处理,以便在模拟错误出现时自动返回实际的模拟错误,而不是后模拟错误?
请在下面的评论中告诉我们。
|
  • 打印
  • 发送电子邮件

评论

如欲留言,请点击在这里登录您的MathWorks帐户或创建一个新帐户。