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

В этом примере показано, как использовать Модель - ссылку. Это обходит вас посредством симуляции и генерации кода модели что ссылки другая модель многократно.

Требования в качестве примера

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

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

Если вы планируете изменить модели в качестве примера:

1. Сохраните пример в его исходном состоянии путем копирования следующих файлов с директории установки MATLAB®, не меняя их имена, к различной директории:

toolbox/simulink/simdemos/simfeatures/modelreference/sldemo_mdlref_basic.slx
toolbox/simulink/simdemos/simfeatures/modelreference/sldemo_mdlref_counter.slx

2. Измените свою текущую рабочую директорию в директорию, в которую вы скопировали файлы

3. Продолжите пример

О модели - ссылке

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

Режим симуляции

Блок Model имеет параметр под названием SimulationMode, который управляет, как модель, на которую ссылаются, симулирована. Если параметр устанавливается на Accelerator, модель, на которую ссылаются, симулирована через генерацию кода. Если параметр устанавливается на Normal, модель, на которую ссылаются, симулирована в интерпретированном режиме. В этой модели, блоки Model CounterA и ссылка CounterB sldemo_mdlref_counter в Режиме normal mode, который обозначается полыми углами на значке блока Model. Другие экземпляры, CounterC, ссылки sldemo_mdlref_counter в Режиме Accelerator, который обозначается заполненными углами на значке блока Model. Чтобы узнать больше о взаимодействии с моделями, на которые ссылаются несколько раз в Режиме normal mode, смотрите пример sldemo_mdlref_depgraph.

Рисунок 1: топ-модель, sldemo_mdlref_basic

Рисунок 2: модель, на которую ссылаются, sldemo_mdlref_counter

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

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

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

  • Многоуровневые модели могут сослаться на одну модель.

  • Модель, на которую ссылаются, не загружается, пока она не необходима, функция под названием Инкрементная Загрузка. Инкрементная загрузка ускоряет время загрузки модели.

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

  • Генерация кода для модели с блоками Model также обманывает инкрементную генерацию кода.

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

Симуляция модели, которая ссылается на другие модели в Режиме Accelerator, требует генерации кода, и двоичный файл вызвал Цель Симуляции для каждой уникальной модели, на которую ссылаются. Этот процесс не требует Simulink Coder. В данном примере цель симуляции создается для sldemo_mdlref_counter модель. Можно создать Цель Симуляции любым из следующих действий:

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

  • Симуляция sldemo_mdlref_basic

  • Выдача команды:

slbuild('sldemo_mdlref_counter','ModelReferenceSimTarget')

Комментарии:

  • Если на модель ссылаются в Режиме normal mode, цель симуляции не создается для той модели, на которую ссылаются.

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

  • Включите цвета шага расчета для sldemo_mdlref_basic. Обратите внимание на то, что блоки Model наследовали различные шаги расчета. Блоки Model наследовали свои шаги расчета, если модель, на которую ссылаются, явным образом не задает шаг расчета.

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

При создании независимого исполняемого файла для sldemo_mdlref_basic, код и двоичные файлы для целей sldemo_mdlref_counter сначала сгенерированы. Необходимые цели создаются, если они не актуальны. Можно создать цель для sldemo_mdlref_counter и независимый исполняемый файл для sldemo_mdlref_basic любым из следующих действий:

  • Создание независимого исполняемого файла для sldemo_mdlref_basic.

  • Создание Цели модели-ссылки sldemo_mdlref_counter, сопровождаемый путем создания независимого исполняемого файла для sldemo_mdlref_basic.

Комментарии:

  • Однажды цель кодера модели - ссылки sldemo_mdlref_counter создается, последующие сборки sldemo_mdlref_basic не инициируйте восстанавливание sldemo_mdlref_counter если sldemo_mdlref_counter изменения (Инкрементная Генерация кода).

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

  • Отчет HTML сгенерированного кода для sldemo_mdlref_basic имеет ссылку на отчет HTML сгенерированного кода для sldemo_mdlref_counter в разделе Referenced Model.

Создайте Автономную Цель и просмотрите отчет HTML сгенерированного кода

Экспортируйте данные моделирования

Можно регистрировать время, выходные параметры, состояния и данные о конечных состояниях симуляции. Логгирование сконфигурировано, чтобы использовать формат Набора данных.

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

Закройте sldemo_mdlref_counter и sldemo_mdlref_basic и затем вновь откройте sldemo_mdlref_basic. В посдказке MATLAB дают команду:

find_system('type','block_diagram')

Модель, на которую ссылаются, не перечислена, потому что она не загружается. Дважды щелкните по любому блоку Model. В посдказке MATLAB дайте команду:

find_system('type','block_diagram')

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