exponenta event banner

Создание кода для ссылочной иерархии модели

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

Одну модель можно включить в другую с помощью блока «Модель». Каждый экземпляр блока модели является ссылкой на модель. Для моделирования и создания кода блоки в ссылочной модели выполняются вместе как единица измерения. Модель, содержащая ссылочную модель, является родительской моделью. Коллекция родительских и ссылочных моделей составляет иерархию моделей.

Эталонная технология модели

При создании кода для иерархии ссылочной модели генератор кода создает автономный исполняемый файл для модели верхнего уровня и библиотечный модуль, называемый целевым объектом ссылки на модель для каждой ссылочной модели. При выполнении кода исполняемый файл верхней модели вызывает целевые объекты ссылки на модель для вычисления вывода ссылочной модели. Эталонные цели модели иногда называют целями Simulink ® Coder™.

Не путайте цель привязки модели (цель Simulink Coder) с другими типами целей:

  • Оконечное оборудование - платформа, для которой программное обеспечение Simulink Coder генерирует код.

  • Системный целевой файл - файл, который инструктирует программное обеспечение Simulink Coder о том, как создавать код для конкретной цели.

  • Rapid Simulation target (RSim) - системный целевой файл, являющийся частью продукта Simulink Coder.

  • Цель моделирования - файл MEX, реализующий ссылочную модель, которая выполняется с помощью программного обеспечения Simulink Accelerator™.

Генератор кода помещает код для верхней модели в иерархию в папке создания кода и помещает код для ссылочных моделей в slprj папка. Вложенные папки в slprj являются отдельными местами для различных типов файлов. Сведения о папках см. в разделе Управление папками процесса построения.

По умолчанию кодер Simulink использует инкрементную генерацию кода. При создании кода программное обеспечение сравнивает структурные контрольные суммы файлов ссылочной модели с созданными файлами кода, чтобы определить, следует ли регенерировать целевые объекты ссылочной модели. Для управления процессом перестроения используйте параметр конфигурации «Ссылка на модель» > «Перестроить». Дополнительные сведения см. в разделе Перестроение.

Программное обеспечение Simulink Coder также использует инкрементную загрузку. Код ссылочной модели не загружается в память до тех пор, пока код родительской модели не будет выполнен и не потребует вывода ссылочной модели. Затем Simulink Coder загружает целевой объект ссылочной модели и выполняет код. После загрузки целевой объект остается в памяти до тех пор, пока он больше не будет использоваться.

При использовании Embedded Coder ® пользовательские целевые объекты должны объявляться совместимыми со ссылкой на модель, если они поддерживают блоки модели. Дополнительные сведения см. в разделе Ссылка на модель поддержки.

Создание кода для ссылочной иерархии модели

В этом примере показано, как создать ссылку на существующую модель и создать код для иерархии ссылок на модель.

Создание ссылочной иерархии модели

1. Откройте существующую модель, например ex_model_arg_ref модель. Эта модель представляет многократно используемый алгоритм. Это модель GRT. При наличии встроенного кодера измените параметр конфигурации модели System target file на ert.tlc.

open_system('ex_model_arg_ref');

2. Ссылочная модель должна указывать, что она доступна для ссылки и может ли она использоваться только один или несколько раз. Укажите параметр конфигурации модели Общее количество экземпляров, разрешенных для модели верхнего уровня, как One или Multiple. По умолчанию для параметра Общее число экземпляров, разрешенных для модели верхнего уровня, задано значение Multiple.

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

4. При необходимости добавьте порты ввода и вывода в модель верхнего уровня. Для добавления ссылочной модели используйте блок «Модель».

5. Новый блок первоначально не разрешен, так как в нем не указана ссылочная модель. Чтобы открыть диалоговое окно параметров блока, дважды щелкните блок «Модель» или используйте контекстное меню блока «Модель».

6. Введите имя ссылочной модели в поле Имя модели (Model name). Это имя должно содержать менее 60 символов, исключая .slx суффикс.

7. Нажмите кнопку OK. Если ссылочная модель содержит входы или выходы корневого уровня, в блоке Model отображаются соответствующие порты ввода и вывода.

8. Создайте другой экземпляр блока «Модель», чтобы верхняя модель выглядела как модель:

open_system('ex_model_arg');

9. Назовите модель ex_model_arg и сохраните модель.

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

Создание кода для ссылочной иерархии модели

1. Убедитесь, что для параметра конфигурации модели «Тип выбора решателя» установлено значение Fixed-step для модели верхнего уровня и ссылочной модели. Чтобы открыть соответствующие диалоговые окна Параметры конфигурации (Configuration Parameters), на вкладке Моделирование (Modeling) выберите Параметры модели (Model Settings) для соответствующих моделей.

Для иерархии привязок модели, имеющей несколько ссылочных моделей, можно получить доступ к Настройкам модели (Model Settings) открытой ссылочной модели и верхней модели из этого меню. Чтобы получить доступ к настройкам модели другой ссылочной модели в иерархии моделей, откройте ссылочную модель, чтобы получить доступ к этому меню.

2. Для верхней модели откройте вкладку «Код C», выбрав приложение Simulink Coder или приложение Embedded Coder. Чтобы создать код для иерархии ссылок на модель, нажмите кнопку «Построить».

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

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

  • slprj > grt > ex_model_arg_ref - папка, содержащая созданный код для ссылочной модели.

  • ex_model_arg.exe - исполняемый файл, созданный процессом построения.

  • ex_model_arg.slxc - файл кэша Simulink для модели верхнего уровня.

  • ex_model_arg_ref.slxc - файл кэша Simulink для ссылочной модели.

Дополнительные сведения о требованиях к параметрам конфигурации см. в разделе Установка параметров конфигурации для генерации кода иерархий модели.

Просмотр сгенерированного кода в отчете о создании кода

Для просмотра созданного кода на вкладке Код C выберите Открыть отчет. Отчет о создании кода содержит гиперссылки на все файлы, созданные для ссылочной иерархии модели.

Чтобы открыть созданный код для ссылочной модели, щелкните гиперссылку ссылочной модели в разделе Ссылочные модели (Referenced Models) на левой панели.

Для возврата к модели верхнего уровня нажмите кнопку «Назад» в левом верхнем углу окна отчета о создании кода.

Работа с папками создания кода

Ссылочный код модели создается в папке создания кода. Целевой код моделирования создается в папке кэша моделирования. Из-за двух разных папок существуют ограничения на:

  • Когда и где создаются цели привязки модели.

  • Способ доступа к целям привязки модели.

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

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

  • Работайте с той же папкой генерации кода и убедитесь, что модели находятся на вашем пути.

  • Разрешить создавать отдельные папки создания кода, цели моделирования и цели Simulink Coder в каждой папке, в которой вы работаете.

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

Цели ссылки на модель построения

Генератор кода создает целевой объект привязки модели непосредственно из модели Simulink. Генератор кода генерирует или регенерирует цели привязки модели, например, когда они требуют обновления.

При выполнении slbuild используя аргументы в окне команд MATLAB, Simulink и Simulink Coder могут генерировать цель моделирования для модели, на которую ссылается режим ускорителя, и цель привязки модели для ссылочной модели.

Генератор кода создает только один целевой объект привязки модели для нескольких экземпляров ссылочной модели. Дополнительные сведения см. в разделе Создание кода повторного ввода из подсистем.

Сокращение времени проверки изменений

Можно сократить время, затрачиваемое Simulink и Simulink Coder на проверку того, нужно ли перестраивать цели привязки модели, задав значения параметров конфигурации.

  • В верхней модели рассмотрите возможность установки параметра конфигурации модели «Ссылка на модель» > «Перестроить» на If any changes in known dependencies detected.

  • В ссылочных моделях по всей иерархии задайте для параметра конфигурации Диагностика > Валидность данных > Разрешение сигнала значение Explicit only или None.

Эти значения параметров существуют в наборе конфигурации ссылочной модели, а не в отдельном блоке модели. Установка любого значения для экземпляра ссылочной модели задает его для экземпляров этой модели.

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