Несколько runnables с одинаковой функциональностью, но разными именами портов
У меня есть основной вопрос, касающийся автосар с несколькими запускаемыми объектами, которые в основном одинаковы, за исключением разных имен вывода / ввода.
В настоящее время модель Simulink рассчитана на один бак-модуль. Этот единственный модуль имеет входы и выходы с именем *_Md0. Например, Filling_level_Md0, outflow/inflow_rate_Md0, valve_open_Md0 ... Хотя также некоторые входы / выходы / константы не зависят от модуля. Например: объем бака, часы реального времени, ...
Цель состоит в том, чтобы добавить "произвольное" количество танков.
------- ------- -------
Inputs ->|Module1|-> Outputs ->|Module2|-> ... ->|ModuleN|->
------- ------- -------
Очевидно, что очень утомительно просто умножить каждый бак-модуль и переименовать входы / выходы, которые необходимы индивидуально для каждого модуля. Поскольку необходимо скопировать каждый работающий файл, исправить библиотеки и файл arxml, ...
Таким образом, вопрос заключается в том, есть ли лучшее решение, чтобы несколько исполняемых файлов были более или менее одинаковыми? Есть ли в Simulink какой-то цикл for?
1 ответ
У вас есть два варианта.
- Программный компонент с одним экземпляром, имеющий порты, содержащие массивы в качестве элементов порта, а затем соответствующие данные ниже. Количество резервуаров может быть, например, системной константой, используемой в качестве длины всех массивов. Хорошо, что вы можете получить более эффективный код, например, благодаря векторизации в компиляторе. Кроме того, наличие массивов может упростить или повысить эффективность интерфейсов связи, диагностики и измерений.
- Программный компонент с несколькими экземплярами, имеющий «обычные» порты и модель, как у вас сейчас. Поскольку вы написали, что у вас разные параметры для каждого резервуара, вам понадобятся параметры калибровки для каждого экземпляра. В этом случае ваша программная композиция будет создавать экземпляр компонента резервуара с несколькими экземплярами так часто, как у вас есть резервуары. Преимущество здесь в том, что его легче тестировать, а ваша реализация полностью независима от количества резервуаров. Также вы можете лучше распределить нагрузку на процессор, чтобы уменьшить пиковую нагрузку на процессор.