Можно сгенерировать повторно используемый код для подсистем, которые содержат модели, на которые ссылаются, при помощи тех же процедур и опций, описанных в Генерации Управления Функций для Подсистем. Однако рассмотрите эти ограничения:
Топ-модель, которая использует однозадачный режим и включает модель, на которую ссылаются, которая использует многозадачный режим, выполняется для блоков с различными уровнями, которые не соединяются. однако, вы получаете ошибку, если блоки с различными уровнями соединяются блоком Rate Transition (вставленный вручную или Simulink).
S-функции, которые вы генерируете с Embedded Coder® Code> пункт меню C/C++ Code> Generate S-function, не делают подсистем поддержки, которые содержат время непрерывной выборки.
Системный конечный файл S-функции не поддержан.
Генератор кода игнорирует настройки настраиваемых параметров, которые вы конфигурируете от диалогового окна Model Parameter Configuration. Чтобы сконфигурировать параметры, чтобы быть настраиваемыми, задайте их как объекты параметра Simulink в базовом рабочем пространстве.
Генератор кода встраивает параметры, которые не являются настраиваемыми в сгенерированном коде и S-функции.
Если вы выбираете системный конечный файл S-функции, пункты меню C/C++ Code> Build This System и Code> C/C++ Code> Build Selected Subsystem блока подсистемы ведут себя как Code> C/C++ Code> Generate S-Function (см., Генерируют S-функцию от Подсистемы).
Допускающая повторное использование функция подсистемы с вводом или выводом, соединенным с корневым блоком Inport или Outport модели, на которую ссылаются, может повлиять на повторное использование кода. Это может препятствовать тому, чтобы вы снова использовали атомарные подсистемы в контексте эталонной модели тем же путем, вы можете снова использовать подсистемы в автономной модели.
Например, рассмотрите эту подсистему:
Предположим, что вы вносите следующие изменения в параметры блоков подсистемы:
Выберите Treat как атомарный модуль (Simulink).
На вкладке Code Generation, функция множества, упаковочная (Simulink) к Reusable function
.
Затем предположите, что вы создаете эту модель, которая включает три экземпляра предыдущей подсистемы.
С поведением параметра Значения по умолчанию параметра конфигурации модели (Simulink Coder) устанавливает на 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 между Subsystem3 и блок Outport. Если подсистема имеет блок Merge с начальными условиями, не добавляйте блок Signal Conversion. Вместо этого добавьте блок Bias, чтобы получить допускающую повторное использование функцию.
Выберите образцовые скалярные корневые входные параметры фиксированного размера Передачи параметра конфигурации значением для генерации кода (Simulink).
Результатом является одна допускающая повторное использование функция:
void reuse_subsys1_Subsystem(real_T rtu_In1, B_Subsystem_reuse_subsys1_T *localB) { localB->Gain = 3.0 * rtu_In1; }