Сгенерируйте код и исполняемые файлы для отдельных подсистем

Можно сгенерировать код и создать исполняемый файл для подсистемы в модели. Процесс генерации и сборки кода использует генерацию кода и параметры сборки корневой модели.

  1. В диалоговом окне Параметров конфигурации настройте генерацию кода и параметры сборки, подобно настройке генерации кода для модели.

  2. Щелкните правой кнопкой мыши блок Subsystem. В контекстном меню выберите C/C++ Code > Build This Subsystem из контекстного меню.

    Кроме того, в текущей модели щелкните подсистему, а затем на вкладке C Code, нажмите Build.

    Примечание

    Когда вы выбираете Build This Subsystem, если модель работает во режиме external mode, процесс сборки автоматически отключает режим external mode на время сборки. Генератор кода восстанавливает режим external mode после завершения процесса сборки.

  3. В Build code for Subsystem окне отображается список параметров подсистемы. На верхней панели отображаются имя, класс и класс памяти каждой переменной (или объекта данных), которая упоминается как параметры блоков в подсистеме. Когда вы выбираете параметр на верхней панели, на нижней панели показаны блоки, которые ссылаются на параметр и родительскую систему каждого блока.

    Столбец Storage Class содержит меню для каждой строки. Опции меню устанавливают класс памяти или встраивают параметр в строку. Чтобы объявить параметр настраиваемым, установите для Storage Class значение, отличное от Inlined.

    Для получения дополнительной информации о настраиваемых и встроенных параметрах и классах хранения смотрите, Создают Настраиваемый Параметр Калибровки в Сгенерированном Коде.

  4. После выбора настраиваемых параметров нажмите Build, чтобы инициировать генерацию кода и процесс сборки.

  5. Процесс сборки отображает сообщения о состоянии в MATLAB® Командное окно. Когда сборка завершена, сгенерированный исполняемый файл находится в рабочей папке. Имя сгенерированного исполняемого файла subsystem.exe (на платформах ПК) или subsystem (в открытой группе UNIX® платформы). subsystem - имя блока исходной подсистемы.

    Сгенерированный код находится в подпапке сборки с именем subsystem_ target_rtw. subsystem - имя блока исходной подсистемы и target - имя целевого строения.

Когда вы генерируете код для подсистемы, можно сгенерировать S-функцию, щелкнув правой кнопкой мыши блок Subsystem и выбрав C/C++ Code > Build This Subsystem из контекстного меню. Для получения дополнительной информации о S-функциях см. «Генерация S-функции из подсистемы».

Ограничения на сборку подсистем

Следующие ограничения применяются к созданиям:

  • Построение подсистемы не поддерживает подсистему, которая имеет триггерный вход вызова функции или выход вызова функции.

  • Когда вы щелкаете правой кнопкой мыши блок Subsystem и выбираете C/C++ Code > Build This Subsystem из контекстного меню, чтобы создать подсистему, которая включает в себя блок Outport, для которого параметр Data type задает объект шины, необходимо устранить ошибки, возникающие в результате установки меток сигнала. Чтобы сконфигурировать программное обеспечение для отображения этих ошибок, в диалоговом окне Параметров конфигурации для родительской модели, на панели Diagnostics > Connectivity, задайте значение параметра Signal label mismatch error.

  • Когда подсистема находится в срабатывающей подсистеме или подсистеме вызова функций, процесс сборки при щелчке правой кнопкой мыши может оказаться неудачным, если код подсистемы не является независимым от шага расчета. Чтобы выяснить, является ли подсистема независимой от шага расчета:

    1. Скопируйте все блоки подсистемы в пустую модель.

    2. В диалоговом окне Параметров конфигурации на панели Solver установите:

      1. Type с Fixed-step.

      2. Periodic sample time constraint с Ensure sample time independent.

      3. Нажмите Apply.

    3. Обновите модель. Если модель зависит от шага расчета, Simulink® генерирует ошибку в процессе обновления схемы.

  • Когда вы используете процесс сборки правой кнопкой мыши для подсистемы, генератор кода пытается использовать имя подсистемы для файлов сгенерированного кода. В некоторых случаях может возникнуть конфликт с именем, которое вы задаете, когда задаете, например, File name options Use function name или Function name options к Use subsystem name. Вы видите ошибку:

    The subsystem 'model/subsys' 
    is trying to generate code to an reserved file (subsys) for 
    the model 'subsys'...

    Чтобы устранить ошибку, измените одно из конфликтующих имен файлов так, чтобы они были уникальными.

  • В предупреждении о сборке подсистемы созданная гиперссылка пути блока подсистемы ссылается на временный путь блока модели вместо фактического пути блока модели. В Diagnostic Viewer нажатие гиперссылки подсистемы не приводит вас к блоку. В Командном окне вы увидите сообщение:

    ...
    No system or file called 'subsystemName' found.
    ...