В этом примере вы проходите симуляцию и генерацию кода модели, которая несколько раз ссылается на другую модель. В этом примере Simulink ® генерирует код для ускоренного симуляции, а Simulink ® Coder™ генерирует код, который может быть развернут в автономных приложениях.
Модель-ссылка имеет несколько преимуществ перед подсистемами:
Можно разрабатывать модель-ссылку независимо от моделей, в которых она используется.
Можно ссылаться на модель несколько раз в другой модели, не создавая избыточных копий.
Несколько моделей могут ссылаться на одну модель.
Ссылка на модель не загружается до тех пор, пока она не потребуется. Эта инкрементальная загрузка ускоряет время загрузки модели.
Если модель упоминается в режиме Accelerator, Simulink создает специальные двоичные файлы, которые будут использоваться в симуляциях. Если модель-ссылка не изменилась с момента создания двоичных файлов, и, следовательно, двоичные файлы обновлены, генерация кода не происходит, когда модели, которые используют эти двоичные файлы, моделируются или компилируются. Этот процесс называется инкрементальной генерацией кода. Использование двоичных файлов делает обновление и симуляцию модели быстрее и увеличивает модульность в генерации кода.
Генерация кода для модели с блоками Model также использует преимущества инкрементной генерации кода.
Откройте пример модели.
open_system('sldemo_mdlref_basic')
Эта модель содержит три блока Model: CounterA, CounterB и CounterC. Эти блоки ссылаются на ту же модель, sldemo_mdlref_counter
, которая является отдельной моделью, а не подсистемой sldemo_mdlref_basic
.
Чтобы определить, какие модели загружаются в память после открытия верхней модели в иерархии модели, введите эту команду:
get_param(Simulink.allBlockDiagrams,'Name')
ans = 'sldemo_mdlref_basic'
Ссылка на модель не указана, поскольку она не загружена.
Откройте ссылку на модель двойным кликом мыши на любом блоке Model или путем ввода этой команды:
open_system('sldemo_mdlref_counter')
Еще раз запросите модели, загруженные в память.
get_param(Simulink.allBlockDiagrams,'Name')
ans = 2x1 cell array {'sldemo_mdlref_counter'} {'sldemo_mdlref_basic' }
Модель-ссылка теперь перечислена, что демонстрирует, что модели загружаются постепенно по мере необходимости.
Вернитесь к родительской модели sldemo_mdlref_basic
.
sldemo_mdlref_basic
настроен на отображение шага расчета цветов при компиляции. На вкладке Debug нажмите Update Model.
Блоки Model наследуют различные шаги расчета, потому что ссылочная модель sldemo_mdlref_counter
не задает явно шаг расчета.
Блоки Model имеют параметр Simulation mode, который управляет моделированием модели-ссылки. Если для параметра задано значение Normal
ссылка на модель моделируется в интерпретированном режиме. Если для параметра задано значение Accelerator
, ссылка на модель моделируется посредством генерации кода. Этот процесс использует двоичный файл, называемый целью симуляции для каждой уникальной модели, на которую ссылаются в режиме Accelerator. Для генерации объекта симуляции не требуется лицензия Simulink Coder.
В этой модели CounterA и CounterB ссылаются на sldemo_mdlref_counter
в режим normal mode, который обозначается пустыми углами на значках блоков Model. Другой образец, CounterC, ссылается sldemo_mdlref_counter
в режиме Accelerator, который обозначается заполненными углами на значке Блока Model.
Можно создать цель симуляции для sldemo_mdlref_counter
модели путем выполнения любого из следующих действий:
Обновление sldemo_mdlref_basic
Симуляция sldemo_mdlref_basic
Чтобы создать цель симуляции программно, используйте эту команду:
slbuild('sldemo_mdlref_counter','ModelReferenceSimTarget')
Когда цель симуляции будет построена, последующая симуляция или обновление sldemo_mdlref_basic
не запускает перестройку цели симуляции, если sldemo_mdlref_counter
изменился.
Если бы весь три образцов ссылочных моделей были настроены на симуляцию в режиме normal mode, цель симуляции не была бы построена.
При создании независимого исполняемого файла для sldemo_mdlref_basic
сборка сначала генерирует код и двоичные файлы для модели-ссылки объекта кодера sldemo_mdlref_counter
. Для генерации целевого объекта эталонного кодера модели требуется лицензия Simulink Coder.
Можно создать модель-ссылку цель кодера для sldemo_mdlref_counter
и независимый исполняемый файл для sldemo_mdlref_basic
путем выполнения любого из следующих действий:
Построение независимого исполняемого файла для sldemo_mdlref_basic
.
Построение модели-ссылки цели кодера sldemo_mdlref_counter
, затем построение независимого исполняемого файла для sldemo_mdlref_basic
.
Чтобы создать независимый исполняемый файл программно, используйте эту команду:
slbuild('sldemo_mdlref_basic','StandaloneCoderTarget')
Когда цель модели-ссылки кодера построена, впоследствии создается sldemo_mdlref_basic
не запускает перестройку целевого устройства кодирования модели-ссылки, если sldemo_mdlref_counter
изменился. Код, сгенерированный для ссылочной модели sldemo_mdlref_counter
используется повторно.
Отчет генерации кода для sldemo_mdlref_basic
ссылки на отчет для sldemo_mdlref_counter
в разделе «Ссылка на Модели».