Чтобы достигнуть инкрементной загрузки моделей, инкрементной генерации кода, модульной разработки моделей, на которые ссылаются и повторного использования кода, можно сгенерировать код для иерархии модели - ссылки.
Можно включать одну модель в другой модели при помощи блока Model. Каждым экземпляром блока Model является model reference. Для симуляции и генерации кода, блоки в referenced model выполняются вместе как модуль. Моделью, которая содержит модель, на которую ссылаются, является parent model. Набор родительских и моделей, на которые ссылаются, составляет model hierarchy.
Когда вы генерируете код для иерархии модели, на которую ссылаются, генератор кода производит независимый исполняемый файл для топ-модели, и модуль библиотеки вызвал model reference target для каждой модели, на которую ссылаются. Когда код выполняется, исполняемый файл топ-модели вызывает цели модели-ссылки, чтобы вычислить выход модели, на который ссылаются. Цели модели-ссылки иногда называются Simulink® Цели Coder™.
Не путайте цель модели-ссылки (цель Simulink Coder) с этими другими типами целей:
Целевой компьютер — платформа, для которой программное обеспечение Simulink Coder генерирует код.
Системный конечный файл — файл, который сообщает программному обеспечению Simulink Coder, как сгенерировать код для конкретной цели.
Быстрая цель Симуляции (RSim) — Системный конечный файл, который является частью продукта Simulink Coder.
Цель симуляции — файл MEX, который реализует модель, на которую ссылаются, которая выполняется при помощи программного обеспечения Simulink Accelerator™.
Генератор кода помещает код для топ-модели в иерархии в папке генерации кода и помещает код для моделей, на которые ссылаются, в slprj
папка. Подпапки в slprj
отдельные места для различных типов файлов. Дополнительные сведения см. в Управляют Папками Процесса сборки.
По умолчанию Simulink Coder использует инкрементную генерацию кода. При генерации кода программное обеспечение сравнивает структурные контрольные суммы файлов модели, на которые ссылаются, к файлам сгенерированного кода, чтобы определить, регенерировать ли цели модели-ссылки. Чтобы управлять, когда восстанавливает, происходят, используют параметр конфигурации Model Referencing> Rebuild. Для получения дополнительной информации смотрите, Восстанавливают.
Программное обеспечение Simulink Coder также использует инкрементную загрузку. Код для модели, на которую ссылаются, не загружается в память, пока код для его родительской модели не выполняет и требует выходных параметров модели, на которую ссылаются. Simulink Coder затем загружает цель модели, на которую ссылаются, и выполняет код. После того, как загруженный, цель остается в памяти, пока это больше не используется.
Если у вас есть Embedded Coder®, пользовательские цели должны объявить себя как совместимых с моделью - ссылкой, если они поддерживают блоки Model. Для получения дополнительной информации смотрите, что Модель поддержки Ссылается.
В этом примере показано, как сослаться на существующую модель и сгенерировать код для иерархии модели - ссылки.
Создайте иерархию модели - ссылки
1. Откройте существующую модель, например, ex_model_arg_ref
модель. Эта модель представляет допускающий повторное использование алгоритм. Это - модель GRT. Если вы имеете Embedded Coder, изменяете Системный конечный файл параметра конфигурации модели в ert.tlc
.
open_system('ex_model_arg_ref');
2. Модель, на которую ссылаются, должна указать, что это доступно, чтобы быть сосланным и можно ли на это сослаться только однажды или многократно. Задайте Общее количество параметра конфигурации модели экземпляров, позволенных на топ-модель как One
или Multiple
. По умолчанию Общий номер экземпляров, позволенных на топ-модель, определяется к Multiple
.
3. Создайте новую модель, которую вы хотите как топ-модель в иерархии модели - ссылки. Топ-модель называет другие модели моделями, на которые ссылаются, или несколькими экземплярами модели, на которую ссылаются.
4. Добавьте Inports и Выходные порты топ-модели как требуется. Чтобы добавить модель, на которую ссылаются, используйте блок Model.
5. Новый блок первоначально не разрешен, потому что он не задает модель, на которую ссылаются. Чтобы открыть диалоговое окно параметров блоков, дважды кликните блок Model или используйте контекстное меню блока Model.
6. Введите имя модели, на которую ссылаются, в поле Имени модели. Это имя должно содержать меньше чем 60 символов, исключительных из .slx
суффикс.
7. Нажать ОК. Если модель, на которую ссылаются, содержит вводы или выводы корневого уровня, блок Model отображает соответствующие порты ввода и вывода.
8. Создайте другой экземпляр блока Model так, чтобы топ-модель была похожа на модель:
open_system('ex_model_arg');
9. Назовите модель ex_model_arg
и сохраните модель.
Можно также преобразовать подсистему в модель, на которую ссылаются. Для получения дополнительной информации смотрите, Преобразуют Подсистемы в Модели, на которые Ссылаются.
Сгенерируйте код для иерархии модели - ссылки
1. Проверьте, что Тип выбора Решателя параметра конфигурации модели установлен в Fixed-step
для топ-модели и модели, на которую ссылаются. Чтобы открыть соответствующие диалоговые окна Configuration Parameters, на вкладке Modeling, выбирают Model Settings для соответствующих моделей.
Для иерархии модели - ссылки, которая имеет несколько моделей, на которые ссылаются, можно получить доступ к Настройкам Модели модели, на которую ссылаются, которая открыта и топ-модель через это меню. Чтобы получить доступ к Настройкам Модели другой модели, на которую ссылаются, в иерархии модели, откройте модель, на которую ссылаются, чтобы получить доступ к этому меню.
2. Для топ-модели откройте вкладку C Code путем выбора приложения Simulink Coder или приложения Embedded Coder. Чтобы сгенерировать код для иерархии модели - ссылки, нажмите кнопку Build.
Процесс сборки 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 Code, выбирают Open Report. Отчет генерации кода содержит гиперссылки на все файлы, сгенерированные для иерархии модели - ссылки.
Чтобы открыть сгенерированный код для модели, на которую ссылаются, кликните по гиперссылке модели, на которую ссылаются, под разделом Referenced Models по левой панели.
Чтобы перейти назад топ-модели, кликните по Движению Обратная кнопка вверху слева угол окна отчета генерации кода.
Код модели - ссылки сгенерирован в вашей папке генерации кода. Целевой код симуляции сгенерирован в вашей папке кэша симуляции. Из-за этих двух других папок, существуют ограничения на:
Когда и где вы создаете цели модели-ссылки.
Как вы получаете доступ к целям модели-ссылки.
Можно сохранить модели, на которые ссылаются блоки Model где угодно на MATLAB® path. Топ-модель может включать модели, сохраненные в различных файловых системах или в других папках. Цели симуляции и сгенерированный код, выведенный из этих моделей, не могут храниться в различных файловых системах или в других папках. Чтобы позволить повторное использование кода, необходимо настроить модели, на которые ссылается топ-модель, чтобы симулировать и сгенерировать код цели модели-ссылки в одной папке генерации кода.
Если вы ссылаетесь на ту же модель от нескольких топ-моделей, каждый сохраненный в другой папке, необходимо выбрать один из этих подходов:
Работа с той же папкой генерации кода и быть уверенным, что модели находятся на вашем пути.
Позвольте отдельным папкам генерации кода, целям симуляции и целям Simulink Coder быть сгенерированными в каждой папке, в которой вы работаете.
Второй подход требует обслуживания нескольких экземпляров кода модели - ссылки. Для сгенерированного кода возможно стать избыточным, например, когда вы вносите изменения в модель, на которую ссылаются. Чтобы минимизировать регенерацию кода моделей, на которые ссылаются, выберите определенную папку генерации кода для всех сеансов.
Генератор кода производит цель модели-ссылки непосредственно из модели Simulink. Генератор кода генерирует или регенерирует цели модели-ссылки, например, когда они требуют обновления.
Когда вы выполняетесь slbuild
команда при помощи аргументов в командном окне MATLAB, Simulink и Simulink Coder может сгенерировать цель симуляции для режима Accelerator модель, на которую ссылаются, и цель модели-ссылки для модели, на которую ссылаются.
Генератор кода производит только одну цель модели-ссылки для нескольких экземпляров модели, на которую ссылаются. Для получения дополнительной информации смотрите, Генерируют Повторно используемый Код от Подсистем.
Можно уменьшать время, когда Simulink и Simulink Coder тратят проверку, должны ли цели модели-ссылки быть восстановлены путем устанавливания значений параметра конфигурации:
В топ-модели считайте установку параметра конфигурации модели Model Referencing> Rebuild к If any changes in known dependencies detected
.
В моделях, на которые ссылаются, в иерархии, набор параметр конфигурации Diagnostics> Data Validity> Signal resolution к Explicit only
или None
.
Эти значения параметров существуют в наборе конфигурации модели, на который ссылаются, не в отдельном блоке Model. Устанавливание любого значения для экземпляра модели, на которую ссылаются, устанавливает его для экземпляров той модели.