exponenta event banner

Преобразовать подсистему в ссылочную модель и создать код

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

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

  • В редакторе Simulink ® выберите блок «Подсистема». На вкладке «Блок подсистемы» панели инструментов Simulink выберите «Преобразовать» > «Блок модели».

  • В окне команд MATLAB ® используйте Simulink.SubSystem.convertToModelReference функции с помощью 'UseConversionAdvisor' аргумент имеет значение true.

Перед преобразованием подсистемы в ссылочную модель:

  1. Сконфигурируйте блок подсистемы как атомарную подсистему. В разделе «Параметры блока подсистемы» выберите свойство «Обработать как атомарную единицу».

    Атомарная подсистема выполняется как единица измерения относительно родительской модели. Выполнение подсистемы не перемежается с выполнением родительского блока. Это свойство позволяет извлекать подсистемы для использования в качестве автономных моделей и функций в сгенерированном коде.

  2. Установите параметр конфигурации модели Signal resolution в значение Explicit only или None.

Класс хранения можно сопоставить с категорией элементов данных модели или с отдельным элементом с помощью редактора сопоставлений кода или API сопоставлений кода (coder.mapping.api.CodeMapping). Затем используйте инспектор свойств или API, чтобы указать параметры конфигурации кода, специфичные для данного класса хранения, такие как заголовочные файлы, файлы определений и разделы памяти. Если модель содержит сопоставления кода, можно перенести сопоставления кода при преобразовании подсистемы в ссылочную модель. Дополнительные сведения см. в разделе Редактор сопоставлений кодов.

Настройка сопоставлений кода

  1. Открыть пример модели rtwdemo_roll.

    rtwdemo_roll

  2. На панели инструментов Simulink на вкладке «Приложения» выберите приложение Embedded Coder или Simulink Coder.

  3. На вкладке Код C щелкните Интерфейс кода > Сопоставления кодов по умолчанию. Этот параметр связывает редактор «Сопоставления кодов» и панель «Инспектор свойств».

  4. Сопоставьте класс хранения с категорией элемента данных модели. В редакторе сопоставлений кодов перейдите на вкладку «Значения по умолчанию». Для категории Inports укажите класс хранения как ExportedGlobal.

Либо для настройки сопоставления по умолчанию для Inports в окне команд MATLAB введите:

roll_mapping = coder.mapping.api.get('rtwdemo_roll');
setDataDefault(roll_mapping,'Inports','StorageClass','ExportedGlobal');

Преобразовать подсистему в ссылочную модель

  1. Чтобы преобразовать подсистему в ссылочную модель, откройте помощник по преобразованию привязок модели. Выберите подсистему HeadingMode. На вкладке «Блок подсистемы» выберите «Преобразовать» > «Блок модели».

    Помощник по преобразованию привязок модели (Model Reference Conversion Advisor) позволяет в интерактивном режиме задавать параметры преобразования и устранять проблемы, обнаруженные консультантом.

    Model Reference Conversion Advisor window is open. New model name is autopopulated as HeadingMode.

  2. Просмотрите автозаполненное имя модели. При необходимости можно обновить это имя.

  3. Чтобы ускорить процесс преобразования, выберите опцию Исправить ошибки автоматически (по возможности). Этот параметр устраняет некоторые проблемы преобразования. Вы не управляете исправлениями.

  4. Чтобы скопировать сопоставления кода, указанные для модели, выберите опцию Копировать сопоставления кода (Copy code mappings). Эта опция переносит сопоставления кода из родительской модели в новую преобразованную ссылочную модель. По умолчанию этот параметр снят.

  5. Щелкните Преобразовать (Convert).

    Помощник по преобразованию привязок модели выполняет каждую проверку. Устраните все проблемы, о которых сообщает консультант. После успешного завершения преобразования помощником по преобразованию привязок модели он заменяет блок подсистемы блоком модели, который ссылается на новую модель.

Либо для преобразования подсистемы в ссылочную модель в окне команд MATLAB введите:

Simulink.SubSystem.convertToModelReference(...
   'rtwdemo_roll/HeadingMode', ...
   'HeadingMode', ...
   'AutoFix',true,...
   'ReplaceSubsystem',true,...
   'CopyCodeMappings',true);

Копирование сопоставлений кода после преобразования подсистемы

Если требуется скопировать сопоставления кода из родительской модели в ссылочную модель и ранее не была выбрана опция Копировать сопоставления кода (Copy code mappings) в помощнике по преобразованию ссылок на модель (Model Reference Conversion Advisor), в окне команды MATLAB введите:

roll_mapping = coder.mapping.api.get('rtwdemo_roll');
roll_sc = getDataDefault(roll_mapping,'Inports','StorageClass');

mode_mapping = coder.mapping.api.get('HeadingMode');
setDataDefault(mode_mapping,'Inports','StorageClass',roll_sc);

Просмотреть созданный код

Для rtwdemo_roll, модель, которая содержит ссылочную модель HeadingModeоткройте вкладку C Code. Чтобы создать код для иерархии ссылок на модель, щелкните Построить (Build).

Процесс сборки Simulink Coder™ генерирует и компилирует код. Текущая папка теперь содержит новые файлы и новую папку.

Папка или файлЦель
rtwdemo_roll_grt_rtwПапка построения, содержащая созданный код для модели верхнего уровня.
slprj > grt > Heading ModeПапка построения, содержащая созданный код для ссылочной модели.
rtwdemo_roll.exeИсполняемый файл, созданный процессом построения.
rtwdemo_roll.slxcФайл кэша Simulink для модели верхнего уровня.
HeadingMode.slxcФайл кэша Simulink для ссылочной модели.

Связанные темы