Компонентно-ориентированное моделирование с моделью - ссылкой

Этот пример обходит вас посредством симуляции и генерации кода модели что ссылки другая модель многократно. В этом примере 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, на которую ссылаются, явным образом не задает шаг расчета.

Симуляция через генерацию кода (не требует Simulink Coder),

Блоки Model имеют параметр режима Simulation, который управляет, как модель, на которую ссылаются, симулирована. Если параметр устанавливается на 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, цель симуляции не была бы создана.

Генерация кода для автономных приложений (требует Simulink Coder),

При создании независимого исполняемого файла для 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 в разделе Referenced Models.

Смотрите также

Похожие темы