如何从 Simulink 中的两个相同总线信号 select?

How to select from two identical bus signals in Simulink?

我在 Simulink 中有两个相同的总线结构,但具有不同的值。一个是真实车辆的 (CAN) 总线,另一个是 Simulink 中的相同仿真 (CAN) 总线。我想用这些组成一个混合的、相同的输出总线,其中一些信号来自第一条总线,其他信号来自第二条总线,如图所示。

我想切换到第三条相同的总线,每个信号都包含一个值,用于确定将信号切换到总线 1 或总线 2 的输出。从示意图上看,它看起来像灰色部分:

如您所见,第一个信号 (Rpm, 3) 来自车辆总线,第二个信号 (Spd, 6) 来自模拟总线。关于结构,输出总线与两个输入总线相同。原理图中的原理是可以的,但是我有500多个信号,所以这种方法已经不适用了。

如何在无需手动路由 500 个信号的情况下执行此操作?
我正在考虑 MATLAB 函数块,但欢迎提出建议。

我找到了解决这个问题的方法。这不是最优雅的方式,但它确实有效。

由于总线在 MATLAB 功能块中作为结构处理,我 for-looped 通过所有字段和元素 select 输出总线中每个元素的所需源,如下所示:

subbus = fieldnames(SLCT);
for i=1:+1:11
    signal = fieldnames(SLCT.(subbus{i}))
    for j=1:+1:5
        switch SLCT.(subbus{i}).(signal{j})
            case 0
                TRGT.(subbus{i}).(signal{j}) = SRCA.(subbus{i}).(signal{j});
            case 1
                TRGT.(subbus{i}).(signal{j}) = SRCB.(subbus{i}).(signal{j});
            otherwise
                TRGT.(subbus{i}).(signal{j}) = SRCC.(subbus{i}).(signal{j});
        end
    end
end

我敢肯定肯定有更好、更快的方法,但这很有效,而且对我的应用程序来说足够快了。