Чтобы добиться инкрементальной загрузки моделей, инкрементальной генерации кода, модульной разработки ссылочных моделей и повторного использования кода, можно сгенерировать код для иерархии модели-ссылки.
Можно включать одну модель в другую модель при помощи блока Model. Каждый образец блока Model является model reference. Для симуляции и генерации кода блоки в referenced model выполняются вместе как модуль. Модель, которая содержит ссылочную модель, является parent model. Набор родительских и ссылочных моделей составляет model hierarchy.
Когда вы генерируете код для иерархии модели-ссылки, генератор кода производит независимый исполняемый файл для модели верхняя часть и библиотечный модуль, называемый model reference target для каждой модели-ссылки. Когда код выполняется, исполняемый файл верхней модели вызывает цели модели-ссылки, чтобы вычислить выходы модели-ссылки. Цели модели-ссылки иногда называются Simulink® Coder™ цели.
Не путайте цели модели-ссылки (цель Simulink Coder) с этими другими типами целей:
Целевой компьютер - платформа, для которой программное обеспечение Simulink Coder генерирует код.
Системный целевой файл - Файл, который инструктирует программное обеспечение Simulink Coder, как сгенерировать код для конкретной цели.
Rapid Simulation target (RSim) - системный целевой файл, являющийся частью продукта Simulink Coder.
Цель симуляции - файл MEX, который реализует ссылку на модель, которая выполняется с помощью программного обеспечения Simulink Accelerator™.
Генератор кода помещает код для верхней части в иерархию в папке генерации кода и помещает код для моделей-ссылок в slprj
папка. Подпапки в slprj
являются отдельными местами для различных типов файлов. Сведения о папке см. в разделе Управление папками процесса сборки.
По умолчанию Simulink Coder использует инкрементальную генерацию кода. При генерации кода программное обеспечение сравнивает структурные контрольные суммы ссылочных файлов модели с файлами сгенерированного кода, чтобы определить, регенерировать ли цели модели-ссылки. Чтобы управлять, когда происходят перестроения, используйте параметр конфигурации Model Referencing > Rebuild. Для получения дополнительной информации смотрите 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. При необходимости добавьте входные и выходные порты к верхней модели. Чтобы добавить ссылку на модель, используйте блок Model.
5. Новый блок первоначально не разрешен, поскольку он не задает ссылку на модель. Чтобы открыть диалоговое окно параметров блоков, дважды кликните блок Model или используйте контекстное меню блока Model.
6. Введите имя модели-ссылки в поле Имя модели. Это имя должно содержать менее 60 символов, исключая .slx
суффикс.
7. Нажмите OK. Если модель-ссылка содержит входы или выходные параметры корневого уровня, блок Model отображает соответствующие входные и выходные порты.
8. Создайте другой образец блока Model, чтобы верхняя модель выглядела как модель:
open_system('ex_model_arg');
9. Назовите модель ex_model_arg
и сохраните модель.
Можно также преобразовать подсистему в ссылочную модель. Для получения дополнительной информации см. «Преобразование подсистем в модели-ссылки».
Сгенерируйте код для иерархии Модели-ссылки
1. Проверьте, что для параметра конфигурации модели Solver Selection Type задано значение Fixed-step
для верхней части и модели-ссылки. Чтобы открыть соответствующие диалоговые окна Параметры конфигурации (Configuration Parameters), на вкладке Моделирование (Modeling), выберите Настройки модели (Model Settings) для соответствующих моделей.
Для иерархии модели-ссылки, которая имеет несколько моделей-ссылок, можно получить доступ к Настройкам Модели открытой модели-ссылки и верхней части модели через это меню. Чтобы получить доступ к Настройкам модели другой модели-ссылки в иерархии модели, откройте модель-ссылку, чтобы получить доступ к этому меню.
2. Для модели верхней части откройте вкладку Кода С, выбрав приложение 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 для модели-ссылки.
Для получения дополнительной информации о требованиях к параметрам конфигурации смотрите Задать параметры конфигурации для Генерации кода иерархий модели.
Просмотр сгенерированного кода в отчете генерации кода
Чтобы просмотреть сгенерированный код, на вкладке Код С, выберите Open Report. Отчет о генерации кода содержит гиперссылки на все файлы, сгенерированные для иерархии модели-ссылки.
Чтобы открыть сгенерированный код для ссылок на модель, щелкните гиперссылку модели-ссылки в разделе Ссылка на Модели на левой панели.
Чтобы вернуться к верхней модели, нажмите кнопку Перейти назад в левом верхнем углу окна отчета генерации кода.
Модель-ссылка код генерируется в папке генерации кода. Целевой код симуляции генерируется в папке кэша симуляции. Из-за двух разных папок существуют ограничения на:
Когда и где вы создаете цели модели-ссылки.
Как вы получаете доступ к целям модели-ссылки.
Можно хранить модели, на которые ссылаются блоки Model, где угодно в MATLAB® путь. Модель верхней части может включать модели, хранящиеся в разных файлах системах или в разных папках. Цели симуляции и сгенерированный код, выведенный из этих моделей, не могут храниться в разных файловых системах или в разных папках. Чтобы разрешить повторное использование кода, вы должны настроить модели, на которые ссылается модель верхней части, чтобы симулировать и сгенерировать цель модели-ссылки код в одной папке генерации кода.
Если вы ссылаетесь на одну и ту же модель из нескольких топовых моделей, каждая из которых хранится в другой папке, необходимо выбрать один из следующих подходов:
Работайте с той же папкой генерации кода и убедитесь, что модели на вашем пути.
Разрешите сгенерировать отдельные папки генерации кода, цели симуляции и цели Simulink Coder в каждой папке, в которой вы работаете.
Второй подход требует поддержания нескольких образцов кода модели-ссылки. Возможно, сгенерированный код станет избыточным, для примера, когда вы вносите изменения в ссылку на модель. Чтобы минимизировать регенерацию кода ссылочных моделей, выберите определенную папку генерации кода для всех сеансов.
Генератор кода производит цель модели-ссылки непосредственно из модели Simulink. Генератор кода генерирует или регенерирует цели модели-ссылки, для примера, когда они требуют обновления.
Когда вы выполняете slbuild
команда при помощи аргументов в Командном Окне MATLAB, Simulink и Simulink Coder могут сгенерировать цель симуляции для модели, на которую ссылается режим Accelerator, и цель модели-ссылки для модели-ссылки.
Генератор кода производит только одну цель модели-ссылки для нескольких образцов ссылочной модели. Для получения дополнительной информации смотрите Сгенерировать повторный код из подсистем.
Можно уменьшить время, которое Simulink и Simulink Coder тратят, проверяя, нужно ли перестраивать цели модели-ссылки, задавая значения параметров конфигурации:
В верхней модели рассмотрите установку параметра конфигурации модели Model Referencing > Rebuild равной If any changes in known dependencies detected
.
В моделях, на которые ссылаются, всюду по иерархии, набор параметр конфигурации <reservedrangesplaceholder3>> Data Validity> Signal resolution к Explicit only
или None
.
Эти значения параметров существуют в наборе конфигурации модели-ссылки, а не в отдельном блоке Model. Установка любого значения для образца модели-ссылки устанавливает его для образцов этой модели.