Simulink:使用多级总线信号执行数学运算

Simulink: Perform math operations with multilevel bus signals

我正在寻找一种对多级总线信号求和的方法
在其层次结构中的最低级别
不丢失总线信号结构。

MWE

例如,在下面的MWE中,
总线信号自动叠加到最低电平,
但是,总线信号在通过 Add 块后丢失。

改为生成矢量信号。

我更喜欢一种产生的方法:

red + blue = purple

或更具体地说:

red.[a b c].[1 2] + blue.[a b c].[1 2] --> purple.[a b c].[1 2]

哪里

purple.b.3 = red.b.3 + blue.b.3

等等。

据我所知,对总线信号进行数学运算的唯一可能是使用 MATLAB Function 块。请注意潜在的不良表现!

要使用 MATLAB Function 模块,首先要生成一个匹配的总线对象,并确保两个总线创建器 mergin a / b / c 都被分配来输出这个总线对象。这样做你会收到一个错误,因为 1 和 2 不是有效的字段名称,我将它们更改为 x1 和 x2。

下一步创建一个 MATLAB 函数块。 Set the two inputs and one output to your previous defined bus object。粘贴以下代码:

function y = fcn(u, v)
%#codegen

y.a=innerplus(u.a,v.a);
y.b=innerplus(u.b,v.b);
y.c=innerplus(u.c,v.c);
end

function y=innerplus(u,v)
y.x1=u.x1+v.x1;
y.x2=u.x2+v.x1;
end