Этот пример показывает, как использовать Модель - ссылку. Это обходит вас посредством моделирования и генерации кода модели что ссылки другая модель многократно.
Во время этого примера 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
. Эта модель содержит три Блока модели: CounterA, CounterB и CounterC. Эти блоки ссылаются на ту же модель, sldemo_mdlref_counter
, который является отдельной моделью и не подсистемой sldemo_mdlref_basic
.
Блок модели имеет параметр под названием SimulationMode, который управляет, как модель, на которую ссылаются, моделируется. Если параметр устанавливается на Accelerator
, модель, на которую ссылаются, моделируется через генерацию кода. Если параметр устанавливается на Normal
, модель, на которую ссылаются, моделируется в интерпретированном режиме. В этой модели, Блоки модели CounterA и ссылка CounterB sldemo_mdlref_counter
в Режиме normal mode, который обозначается полыми углами на значке Блока модели. Другие экземпляры, CounterC, ссылки sldemo_mdlref_counter
в Режиме Accelerator, который обозначается заполненными углами на значке Блока модели. Чтобы узнать больше о взаимодействии с моделями, на которые ссылаются несколько раз в Режиме normal mode, смотрите пример sldemo_mdlref_depgraph
.
Рисунок 1: топ-модель, sldemo_mdlref_basic
Рисунок 2: модель, на которую ссылаются, sldemo_mdlref_counter
Модель - ссылка имеет несколько преимуществ перед подсистемами:
Можно разработать модель, на которую ссылаются, независимо из моделей, в которых она используется.
Можно сослаться на модель многократно в другой модели, не имея необходимость сокращать копии.
Многоуровневые модели могут сослаться на единственную модель.
Модель, на которую ссылаются, не загружается, пока она не необходима, функция под названием Инкрементная Загрузка. Инкрементная загрузка ускоряет образцовое время загрузки.
Если на модель ссылаются в Режиме Accelerator, Simulink создает специальные двоичные файлы, которые будут использоваться в моделированиях. Если двоичные файлы актуальны, потому что модель, на которую ссылаются, не изменилась, поскольку двоичные файлы были созданы, никакая генерация кода не происходит, когда модели, которые используют эти двоичные файлы, моделируются или компилируются. Это называется Инкрементной Генерацией кода. Использование двоичных файлов увеличивает скорость симуляции и модульный принцип в генерации кода.
Генерация кода для модели с Блоками модели также обманывает инкрементную генерацию кода.
Моделирование модели, которая ссылается на другие модели в Режиме Accelerator, требует генерации кода, и двоичный файл вызвал Цель Моделирования для каждой уникальной модели, на которую ссылаются. Этот процесс не требует Simulink Coder. Для этого примера цель моделирования создается для модели sldemo_mdlref_counter
. Можно создать Цель Моделирования любым из следующих действий:
Обновление sldemo_mdlref_basic
Моделирование sldemo_mdlref_basic
Выдача команды:
slbuild('sldemo_mdlref_counter','ModelReferenceSimTarget')
Комментарии:
Если на модель ссылаются в Режиме normal mode, цель моделирования не создается для той модели, на которую ссылаются.
Если цель моделирования создается, впоследствии моделирование или обновление модели не инициировали восстанавливание цели моделирования ссылаемой модели, если модель, на которую ссылаются, не изменилась.
Включите цвета частоты дискретизации для sldemo_mdlref_basic
. Обратите внимание на то, что Блоки модели наследовали различные частоты дискретизации. Блоки модели наследовали свои частоты дискретизации, если модель, на которую ссылаются, явным образом не задает частоту дискретизации.
При создании автономного исполняемого файла для 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')
Модель, на которую ссылаются, не перечислена, потому что она не загружается. Щелкните правой кнопкой мыши по любому Блоку модели и выберите Open. В посдказке MATLAB дайте команду:
find_system('type','block_diagram')
Модель, на которую ссылаются, теперь перечислена, иллюстрируя, как инкрементная загрузка работает.