Несколько runnables с одинаковой функциональностью, но разными именами портов

У меня есть основной вопрос, касающийся автосар с несколькими запускаемыми объектами, которые в основном одинаковы, за исключением разных имен вывода / ввода.

В настоящее время модель Simulink рассчитана на один бак-модуль. Этот единственный модуль имеет входы и выходы с именем *_Md0. Например, Filling_level_Md0, outflow/inflow_rate_Md0, valve_open_Md0 ... Хотя также некоторые входы / выходы / константы не зависят от модуля. Например: объем бака, часы реального времени, ...

Цель состоит в том, чтобы добавить "произвольное" количество танков.

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

Очевидно, что очень утомительно просто умножить каждый бак-модуль и переименовать входы / выходы, которые необходимы индивидуально для каждого модуля. Поскольку необходимо скопировать каждый работающий файл, исправить библиотеки и файл arxml, ...

Таким образом, вопрос заключается в том, есть ли лучшее решение, чтобы несколько исполняемых файлов были более или менее одинаковыми? Есть ли в Simulink какой-то цикл for?

1 ответ

У вас есть два варианта.

  1. Программный компонент с одним экземпляром, имеющий порты, содержащие массивы в качестве элементов порта, а затем соответствующие данные ниже. Количество резервуаров может быть, например, системной константой, используемой в качестве длины всех массивов. Хорошо, что вы можете получить более эффективный код, например, благодаря векторизации в компиляторе. Кроме того, наличие массивов может упростить или повысить эффективность интерфейсов связи, диагностики и измерений.
  2. Программный компонент с несколькими экземплярами, имеющий «обычные» порты и модель, как у вас сейчас. Поскольку вы написали, что у вас разные параметры для каждого резервуара, вам понадобятся параметры калибровки для каждого экземпляра. В этом случае ваша программная композиция будет создавать экземпляр компонента резервуара с несколькими экземплярами так часто, как у вас есть резервуары. Преимущество здесь в том, что его легче тестировать, а ваша реализация полностью независима от количества резервуаров. Также вы можете лучше распределить нагрузку на процессор, чтобы уменьшить пиковую нагрузку на процессор.
Другие вопросы по тегам