【发布时间】:2018-12-13 16:58:57
【问题描述】:
我在 Simulink 中有两个相同的总线结构,但具有不同的值。一个是来自真实车辆的 (CAN) 总线,另一个是 Simulink 中相同的模拟 (CAN) 总线。我想用这些组成一个混合的、相同的输出总线,其中一些信号来自第一条总线,而另一些来自第二条总线,如图所示。
我想用第三条相同的总线进行切换,每个信号都包含一个值,用于确定将信号切换到总线 1 或总线 2 的输出。从示意图上看,它看起来像灰色部分:
如您所见,第一个信号 (Rpm, 3) 取自车辆总线,第二个信号 (Spd, 6) 取自模拟总线。关于结构,输出总线与两条输入总线相同。原理图中的原理有效,但我有超过 500 个信号,所以这种方法不再适用。
如何在无需手动路由 500 个信号的情况下做到这一点?
我正在考虑一个 MATLAB 功能块,但欢迎提出建议。
【问题讨论】:
-
我相信
MATLAB Function块是最简单的做法。 -
@PhilGoddard 这就是我的想法,但我真的不知道如何解决这个问题。总线信号被解释为功能块中的结构,因此通过所有元素的 for 循环可能是一种解决方案,但我不知道如何,而且我认为它不会有效。
-
看起来您应该能够使用
logical indexing来完成作业,而不是循环。但无论哪种方式,请注意带有MATLAB Function块的代码正在转换为 C 并编译,它没有在解释器中运行,因此速度应该不是问题。
标签: matlab data-structures struct simulink bus