После создания компонента модели для инициализации, сброса и завершения состояния блоков (см. Использование функций Initialize, Reset и Terminate), можно поместить модель в тестовую обвязку моделирования. A тестовой обвязки является Simulink® модель, которую вы используете для разработки, тестирования и отладки компонента модели.
Чтобы создать тестовую обвязку, ссылитесь на модель экспорта функций, содержащую компонент модели в новой модели, а затем добавьте Stateflow® график, чтобы смоделировать планировщик событий вызова функции.
Модель экспорта функций содержит компонент модели для проверки. Чтобы создать модель экспорта функций, см. Раздел «Создание модели экспорта функций».
Создайте модель Simulink. Сохраните эту модель с именем Test_Model
.
Установите параметры конфигурации для Type решателя равными Fixed-step
, Решатель для auto
, и Fixed-step size к 1
.
Добавьте блок Model. Откройте диалоговое окно Параметров блоков. В Model name текстовом поле введите имя модели экспорта функций. В этом примере введите Model02
.
Протестируйте компонент модели-ссылки путем подключения блока Function-Call Generator к Run
порт. Соедините Constant блок с Signal In
порт и Scope блок на Signal Out
порт.
Запустите симуляцию, чтобы убедиться, что ваша модель правильно симулирует от родительской модели. Когда модель моделируется без портов событий вызова функции, блок Initialize Function выполняется в начале симуляции, а блок Terminate Function - в конце симуляции.
Откройте входные порты вызова функции на блоке модели. Щелкните правой кнопкой мыши блок Model и выберите Block Parameters. В диалоговом окне Параметров блоков установите флажки Show model initialize port, Show model reset port и Show model terminate port.
Удалите блок Function-Call Generator и обновите модель нажатием Ctr-D.
Когда вы активируете порт initialize function-call входа на блоке Model, модель должна получить вызов функции initialize на initialize
порт перед выполнением. Прием вызова функции инициирует выполнение стандартной программы инициализации по умолчанию модели, а затем выполнение содержимого Initialize Function блока.
Прием вызова функции на Reset
порт инициирует выполнение содержимого блока Reset Function.
Прием вызова функции на Terminate
порт запускает выполнение содержимого блока Terminate Function, а затем выполнение стандартной программы завершения модели по умолчанию. Затем модель перестает запускаться. Чтобы снова выполнить модель, вы должны повторно инициализировать модель, отправив событие вызова функции в initialize
порт.
Используйте диаграмму Stateflow, чтобы смоделировать расписание событий и сгенерировать сигналы инициализации и завершения вызова функции.
Добавьте диаграмму Stateflow. Нажмите на диаграмму модели и начните набирать Chart
. В списке поиска выберите.
Откройте график и добавьте два блока состояний, один над другим.
Добавьте переход по умолчанию и соедините его с верхним блоком состояния. Отредактируйте метку:
{step = 0}
Добавьте переход от верхнего блока к нижнему блоку. Отредактируйте метку:
[step == 2]/{Initialize}
Добавьте переход от нижнего блока и назад к нижнему блоку. Отредактируйте метку:
[step == 5]/{Reset}
Добавьте переход от нижнего блока к верхнему блоку. Отредактируйте метку:
[step == 9]/{Terminate}
Отредактируйте содержимое верхнего блока:
Inactive entry: step = step + 1; during: step = step + 1;
Отредактируйте содержимое нижнего блока:
Running entry: step = step + 1; Run; during: step = step + 1; Run;
Создайте выходные порты вызова функции на графике, чтобы управлять и запускать компонент модели.
Откройте Model Explorer. На вкладке Modeling и из раздела Design выберите Model Workspace ..
Создайте индексную переменную. В меню выберите Add > Data. В диалоговом окне «Данные» введите Step
для Name.
Создайте выходные порты вызова функции. Для каждого созданного события вызова функции выберите Add > Event а в диалоговом окне Event введите и выберите следующие значения.
Введите в текстовое поле события | Задать возможности | Установка триггера |
---|---|---|
Initialize | Output to Simulink | Function call |
Reset | Output to Simulink | Function call |
Terminate | Output to Simulink | Function call |
Run | Output to Simulink | Function call |
Перейдите к верхнему уровню модели. Соедините Initialize
, Reset
, Terminate
, и Run
порты на графике в initialize
, reset
, terminate
, и Run
входные порты на блоке Model.
Запустите симуляцию.
Модель не может выполняться до второго временного шага, когда состояние блока инициализируется равным 4. На пятом временном шаге вызов функции сброса на порт сброса инициирует выполнение блока Reset Function. На девятом временном шаге подсистема прекращает выполняться, и состояние блока остается постоянным.
Если модель получает вызов функции, чтобы запустить перед вызовом инициализации функции, происходит ошибка симуляции.