exponenta event banner

Моделирование на основе компонентов с привязкой к модели

В этом примере рассматривается моделирование и создание кода модели, которая ссылается на другую модель несколько раз. В этом примере Simulink ® генерирует код для ускоренного моделирования, а Simulink ® Coder™ - код, который может быть развернут в автономных приложениях.

Поведение привязки модели

Модель Reference имеет несколько преимуществ по сравнению с подсистемами:

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

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

  • Несколько моделей могут ссылаться на одну модель.

  • Ссылочная модель не загружается, пока не потребуется. Эта инкрементная загрузка увеличивает время загрузки модели.

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

  • Создание кода для модели с блоками модели также использует преимущества инкрементного создания кода.

Инкрементная загрузка

Откройте пример модели.

open_system('sldemo_mdlref_basic')

Эта модель содержит три блока модели: CounterA, CounterB и CounterC. Эти блоки ссылаются на одну и ту же модель. sldemo_mdlref_counter, которая является отдельной моделью, а не подсистемой sldemo_mdlref_basic.

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

get_param(Simulink.allBlockDiagrams,'Name')
ans =

    'sldemo_mdlref_basic'

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

Откройте ссылочную модель, дважды щелкнув любой блок модели или введя следующую команду:

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).

Блоки модели наследуют разное время выборки, поскольку ссылочная модель sldemo_mdlref_counter явно не указывает время выборки.

Моделирование посредством создания кода (не требует симуляционного кодера)

Блоки модели имеют параметр режима моделирования, который управляет моделированием ссылочной модели. Если параметр имеет значение Normalссылочная модель моделируется в интерпретируемом режиме. Если параметр имеет значение Acceleratorссылочная модель моделируется посредством генерации кода. Этот процесс использует двоичный файл, называемый целью моделирования, для каждой уникальной модели, на которую ссылается режим ускорения. Для создания цели моделирования не требуется лицензия Simulink Coder.

В этой модели ссылка CounterA и CounterB sldemo_mdlref_counter в обычном режиме, который обозначается полыми углами на значках блоков модели. Другой экземпляр, CounterC, ссылки sldemo_mdlref_counter в режиме ускорителя, который обозначается закрашенными углами на значке блока модели.

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

  • Обновление sldemo_mdlref_basic

  • Моделирование sldemo_mdlref_basic

Для программного построения цели моделирования используйте следующую команду:

slbuild('sldemo_mdlref_counter','ModelReferenceSimTarget')

После построения цели моделирования, последующего моделирования или обновления sldemo_mdlref_basic не запускает перестроение цели моделирования, если sldemo_mdlref_counter изменился.

Если бы все три экземпляра ссылочной модели были настроены на моделирование в обычном режиме, цель моделирования не была бы построена.

Создание кода для автономных приложений (требуется 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).

См. также

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