人在仿真软件金宝app

金宝appSimulink &基于模型的设计

更好的总线建模(如何消除总线/Mux混淆)

本周早些时候,的家伙我在讨论mux和总线信号有时会出现的奇怪行为。有时人们在他们的模型中发现一个Mux块,它似乎输出一个总线信号。在这篇文章中,我将解释这种行为的潜在原因,并给你一个简短的Simulink历史课程。金宝app

不要让你的眼睛欺骗了你!

大多数人都有Mux块作为矢量创造者的正确思维模式。当你看到一个Mux块,期望它输出一个宽信号(矢量)。这是一个非常简单的模型如此行事。

输出总线信号的多路复用模块。

这实际上是一种误导。Mux块是虚拟的,所以它们在模拟过程中实际上不做任何事情。虚拟总线信号类似于Mux块。终结者也是虚拟的(它不更新,不计算输出等等)当你考虑这些观察时,剩下的就是端口和增益块。

有时Mux块可以输出总线信号。嗯?但是,我以为Mux块创造了一个矢量!

Mux用于创建总线信号

很久以前,在较早版本的Simulink中,引入了总线选择器,允许用户根据名称从信号束中选择信金宝app号。Mux块创建了这个信号“束”金宝appSimulink只金宝app支持向量(不支持矩阵),所以虚拟muxed信号和虚拟bus信号之间的区别非常小。

在引入总线选择器后不久,开发人员就添加了总线创建器,以减少对Mux块混合含义的混淆。当时,总线创建者的行为仍然很像Mux块,实际上与Mux块共享代码。出于兼容性的原因,Mux块必须继续支持总线信号的创建。金宝app

随着时间的推移,Sim金宝appulink的语义发生了变化,总线信号和向量之间的差异变得更加显著。在R14 Si金宝appmulink(大约2004年)中,存在多路复用器和总线混合导致问题的边缘情况。金宝appSimulink开发人员想要迁移到一个干净的总线建模行为,但是它做到了打破依赖Mux块创建总线信号的遗留模型。如果不给建模人员一个选择加入的方法,就切换到新的和改进的行为,这是一个太戏剧性的变化。他们是怎么做到的?

解决方案:错误检查

连接诊断->Mux块用于创建总线信号是为了控制这种行为。当Mux块创建总线时,Simulink现在用三种方式之一来处理它金宝app。

连接性诊断,Mux块用于创建总线信号。

该诊断可以设置为没有一个警告,或错误

没有一个-这是Mux块的历史行为,在需要时创建矢量信号和总线信号。完全向后兼容性,加上我之前谈到的边缘情况。

警告-这是Mux块的历史行为,加上一个后编译检查,以找到Mux块可能被用作公共汽车创造者。金宝appSimulink报告说它发现了一个。

错误这是开发人员实现的干净的总线建模行为。如果一个Mux块被用来创建一个像总线一样被处理的信号,一个错误会停止更新图进程。

因为这个诊断断言使用Mux块作为总线创建器是错误的,所以Simulink假定只有总线创建器才能产生总线信号。金宝app这个假设解决了边缘情况,并使干净的总线建模行为成为可能。因为这是一个诊断,默认是警告在美国,当人们升级时,传统模式仍然有效。通过将诊断改为错误,一些问题实际上得到了解决。

如何修复警告/错误

警告和错误消息为如何解决问题提供了一些方向。您甚至可以调用命令来帮助修复模型。这是一个关于混合多路复用器和总线的警告模型的例子。

一个模型,产生关于Mux块用作公共汽车创造者的警告。

警告:框图“muxORbusWarning”不当使用1个Mux块作为总线创建者。这可能会导致建模错误(更多信息请参阅Mux块文档)。要避免这种错误,可以用总线创建器块替换Mux块,并启用严格的总线建模(请参阅slreplace_mux命令)。要启用严格的总线建模,请在配置参数对话框的诊断页的连通性窗格中将“用于创建总线信号的Mux块”选项设置为“错误”。

不要停止!

出于类似的原因,您还应该设置总线信号作为矢量处理错误。

修正原始模型

当原始模型采用严格总线模式时,信号绘制为矢量信号而不是总线。

Mux只在严格总线模式下阻塞输出bux信号。

现在轮到你了

这篇文章的要点是,你应该将这些诊断设置为错误,以获得最佳mux/总线行为。你的模型是严格的公共汽车模式吗?跟我说说,留个这里的评论

|

评论

要留下评论,请点击在这里登录到您的MathWorks帐户或创建一个新帐户。