Можно сгенерировать повторно используемый код для подсистем, которые содержат модели, на которые ссылаются, при помощи тех же процедур и опций, описанных в Генерации Управления Функций для Подсистем (Embedded Coder). Для подсистем, которые содержат модели, на которые ссылаются, рассмотрите эти ограничения:
Топ-модель, которая использует однозадачный режим и включает модель, на которую ссылаются, которая использует многозадачный режим, выполняется для блоков с различными уровнями, которые не соединяются. Вы получаете ошибку, если блоки с различными уровнями соединяются блоком Rate Transition, или вставленным вручную или Simulink.
Когда вы генерируете S-функции с Embedded Coder® путем щелчка правой кнопкой по подсистеме и выбора C/C++ Code> Generate S-function, генератор кода не делает подсистем поддержки, которые содержат время непрерывной выборки.
Системный конечный файл S-функции rtwsfcn.tlc
не поддержан.
Генератор кода игнорирует настройки настраиваемых параметров, которые вы конфигурируете от Сгенерировать S-функции для диалогового окна Subsystem. Чтобы сконфигурировать параметры, столь же настраиваемые, задайте их как объекты параметра Simulink в базовом рабочем пространстве.
Генератор кода встраивает параметры, которые не являются настраиваемыми в сгенерированном коде и S-функции.
Допускающая повторное использование функция подсистемы с вводом или выводом, соединенным с корневым блоком Inport или Outport модели, на которую ссылаются, может повлиять на повторное использование кода. Это может препятствовать тому, чтобы вы снова использовали атомарные подсистемы в контексте эталонной модели таким же образом, вы можете снова использовать подсистемы в автономной модели.
Например, рассмотрите эту подсистему:
Предположим, что вы вносите следующие изменения в параметры блоков подсистемы:
Выберите Treat as atomic unit (Simulink).
На вкладке Code Generation, набор Function packaging (Simulink) к Reusable function
.
Затем вы создаете эту модель, которая включает три экземпляра предыдущей подсистемы.
С параметром конфигурации модели набор Default parameter behavior к Inlined
, генератор кода оптимизирует код путем генерации одной копии функции для снова использованной подсистемы.
void reuse_subsys1_Subsystem(real_T rtu_In1, B_Subsystem_reuse_subsys1_T *localB) { localB->Gain = 3.0 * rtu_In1; }
Если вы перемещаете эти три подсистемы в блок Model, необходимо изменить настройку модели и модели.
Добавьте блок Signal Conversion или блок Bias между Подсистемой 3 и блок Outport. Если подсистема имеет блок Merge с начальными условиями, не добавляйте блок Signal Conversion. Вместо этого добавьте блок Bias, чтобы получить допускающую повторное использование функцию.
Выберите параметр конфигурации модели Pass fixed-size scalar root inputs by value for code generation (Simulink).
Результатом является одна допускающая повторное использование функция:
void reuse_subsys1_Subsystem(real_T rtu_In1, B_Subsystem_reuse_subsys1_T *localB) { localB->Gain = 3.0 * rtu_In1; }