具有相同功能但端口名称不同的多个可运行实体

Multiple runnables with equal functionality but different port names

我有一个关于具有多个可运行程序的 autosar 的基本问题,这些可运行程序除了不同的 output/input 名称外基本相同。

目前 Simulink 模型是为一个坦克模块设计的。 此单个模块具有名为 *_Md0 的输入和输出。例如 Filling_level_Md0、outflow/inflow_rate_Md0、valve_open_Md0 ... 尽管也有一些 inputs/outputs/constants 不是特定于模块的。例如:油箱容积、实时时钟、...

目标是添加 "arbitrary" 辆坦克。

          -------                   -------               -------
Inputs ->|Module1|-> Outputs     ->|Module2|->   ...   ->|ModuleN|->
          -------                   -------               -------

显然,将每个坦克模块相乘并重命名每个模块单独需要的 inputs/outputs 是非常乏味的。因为需要复制每个runnable,修复libraryies和arxml文件,...

所以问题是,如果有多个或多或少相同的可运行实体,是否有更好的解决方案? Simulink 中是否提供某种 for 循环?

你有两个选择。

  1. 一个单实例软件组件,其端口包含数组作为端口元素,然后是下面的相应数据。坦克的数量将是例如。用作所有数组长度的系统常量。这样做的好处是您可以获得更高效的代码,例如由于编译器中的矢量化。此外,拥有阵列可能会使通信、诊断和测量接口变得更容易或更高效。
  2. 一个多实例软件组件,具有“正常”端口和您现在拥有的模型。正如您所写,每个水箱都有不同的参数,您将需要每个实例的校准参数。然后,您周围的软件组合将尽可能频繁地实例化多实例坦克组件。这里的好处是它更容易测试,并且您的实施完全独立于坦克的数量。您也可以更好地分配 cpu 负载以减少峰值 CPU 负载。