Явным образом запланируйте выполнение компонентов модели

Можно управлять выполнением компонентов модели (Подсистема и Блоки модели) при помощи моделей экспорта функций или основанных на уровне моделей. Преимущества планирования компонентов:

  • Полный контроль над планированием компонентов модели вместо того, чтобы позволить Simulink® неявно запланировать компоненты.

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

Эта тема описывает, как создать основанную на уровне модель с явным образом запланированными подсистемами, сослаться на модель в экспериментальной модели, и затем добавить периодические порты события к экспериментальной модели для моделирования. Для получения информации об использовании моделей экспорта функций смотрите Модели Экспорта функций.

Создайте основанную на уровне модель

Рассмотрите модель с двумя подсистемами. Subsystem1 умножает свой входной параметр на 2, в то время как Subsystem2 умножает свой входной параметр на 4.

Примечание

Используя Непрерывные блоки времени, такие как Интегратор не позволены блоки. Вместо этого используйте дискретное время эквивалентные блоки

  1. Откройте диалоговое окно Inport 1. На вкладке Signal Attributes, набор Частота дискретизации к 0.2.

  2. Откройте диалоговое окно Inport 2. На вкладке Signal Attributes, набор Частота дискретизации к 0.4.

  3. Если основанная на уровне модель имеет несколько уровней, единственное управление задачами не позволено. Установите флажок Configuration Parameter для Обработки каждый дискретный уровень как отдельная задача.

Создайте экспериментальную модель, которая ссылается на основанную на уровне модель

Тестирование основанной на уровне модели включает ссылку на модель от Блока модели в экспериментальной модели, добавление периодических портов события к Блоку модели и затем соединения вызовов функции к портам.

  1. Создайте новую модель Simulink.

  2. Добавьте Блок модели и откройте блочное диалоговое окно параметров.

  3. В поле Имени модели введите имя файла для основанной на уровне модели.

  4. Выберите модель Show периодический флажок портов события.

    Периодические порты события добавляются к Блоку модели с Частотами дискретизации, которые вы задали для блоков Inport, соединенных с блоками Подсистемы.

  5. Задайте уровень выполнения с помощью инициаторов вызова функции (Блоки Function-Call Generator или графики Stateflow®). События вызова функции и планирование событий расположены за пределами Блока модели, ссылающегося на основанную на уровне модель.

    В этом примере добавьте Блоки Function-Call Generator. Откройте блочное диалоговое окно для блоков и задайте Частоту дискретизации.

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

  6. Используйте решатель фиксированного шага для моделирования. Установите Тип Параметров конфигурации на Fixed-step, Решатель к auto и размер Фиксированного шага к auto.

Моделируйте основанную на уровне модель

Моделируйте поведение основанной на уровне модели от экспериментальной модели.

  1. Запустите моделирование. Некоторая общая компиляция и ошибки времени выполнения являются причиной:

    • Периодический порт события, который не соединяется с инициатором вызова функции с той же заданной частотой дискретизации.

    • Запланированный блок Inport (Набор параметра частоты дискретизации к значению) в модели компонента, на которую ссылаются, которая не задает одну из периодических скоростей порта события (частоты дискретизации, заданные в Порте дискретная таблица уровней).

  2. Наблюдайте поведение модели компонента. Откройте блок Scope.

Сгенерируйте код от основанной на уровне модели

Сгенерируйте код от основанной на уровне модели, не от образцовой тестовой обвязки. Для запланированных подсистем с различными дискретными уровнями требуется многозадачность, и получившийся код имеет отдельные точки входа.

  1. Сгенерируйте код для модели компонента. Из меню выберите Code> C/C ++ Code> Build Model.

  2. Откройте отчет генерации кода. Из меню выберите Code> C/C ++ Code> Code Generation Report> Open Model Report.

Похожие темы

Была ли эта тема полезной?