Создайте тестовую обвязку для генерации вызовов функций

После создания компонента модели для инициализации, сброса и завершения состояния блоков (см. Использование функций Initialize, Reset и Terminate), можно поместить модель в тестовую обвязку моделирования. A тестовой обвязки является Simulink® модель, которую вы используете для разработки, тестирования и отладки компонента модели.

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

Ссылка на модель экспорта функций

Модель экспорта функций содержит компонент модели для проверки. Чтобы создать модель экспорта функций, см. Раздел «Создание модели экспорта функций».

  1. Создайте модель Simulink. Сохраните эту модель с именем Test_Model.

  2. Установите параметры конфигурации для Type решателя равными Fixed-step, Решатель для auto, и Fixed-step size к 1.

  3. Добавьте блок Model. Откройте диалоговое окно Параметров блоков. В Model name текстовом поле введите имя модели экспорта функций. В этом примере введите Model02.

  4. Протестируйте компонент модели-ссылки путем подключения блока Function-Call Generator к Run порт. Соедините Constant блок с Signal In порт и Scope блок на Signal Out порт.

  5. Запустите симуляцию, чтобы убедиться, что ваша модель правильно симулирует от родительской модели. Когда модель моделируется без портов событий вызова функции, блок Initialize Function выполняется в начале симуляции, а блок Terminate Function - в конце симуляции.

  6. Откройте входные порты вызова функции на блоке модели. Щелкните правой кнопкой мыши блок Model и выберите Block Parameters. В диалоговом окне Параметров блоков установите флажки Show model initialize port, Show model reset port и Show model terminate port.

  7. Удалите блок Function-Call Generator и обновите модель нажатием Ctr-D.

    Когда вы активируете порт initialize function-call входа на блоке Model, модель должна получить вызов функции initialize на initialize порт перед выполнением. Прием вызова функции инициирует выполнение стандартной программы инициализации по умолчанию модели, а затем выполнение содержимого Initialize Function блока.

    Прием вызова функции на Reset порт инициирует выполнение содержимого блока Reset Function.

    Прием вызова функции на Terminate порт запускает выполнение содержимого блока Terminate Function, а затем выполнение стандартной программы завершения модели по умолчанию. Затем модель перестает запускаться. Чтобы снова выполнить модель, вы должны повторно инициализировать модель, отправив событие вызова функции в initialize порт.

Моделируйте планировщик событий

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

  1. Добавьте диаграмму Stateflow. Нажмите на диаграмму модели и начните набирать Chart. В списке поиска выберите.

  2. Откройте график и добавьте два блока состояний, один над другим.

  3. Добавьте переход по умолчанию и соедините его с верхним блоком состояния. Отредактируйте метку:

    {step = 0}
  4. Добавьте переход от верхнего блока к нижнему блоку. Отредактируйте метку:

    [step == 2]/{Initialize}

  5. Добавьте переход от нижнего блока и назад к нижнему блоку. Отредактируйте метку:

    [step == 5]/{Reset}

  6. Добавьте переход от нижнего блока к верхнему блоку. Отредактируйте метку:

    [step == 9]/{Terminate}

  7. Отредактируйте содержимое верхнего блока:

    Inactive
    entry: step = step + 1;
    during: step = step + 1;

  8. Отредактируйте содержимое нижнего блока:

    Running
    entry: step = step + 1; Run;
    during: step = step + 1; Run;

Соедините график с экспериментальной моделью

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

  1. Откройте Model Explorer. На вкладке Modeling и из раздела Design выберите Model Workspace ..

  2. Создайте индексную переменную. В меню выберите Add > Data. В диалоговом окне «Данные» введите Step для Name.

  3. Создайте выходные порты вызова функции. Для каждого созданного события вызова функции выберите Add > Event а в диалоговом окне Event введите и выберите следующие значения.

    Введите в текстовое поле событияЗадать возможностиУстановка триггера
    InitializeOutput to SimulinkFunction call
    ResetOutput to SimulinkFunction call
    TerminateOutput to SimulinkFunction call
    RunOutput to SimulinkFunction call

  4. Перейдите к верхнему уровню модели. Соедините Initialize, Reset, Terminate, и Run порты на графике в initialize, reset, terminate, и Run входные порты на блоке Model.

  5. Запустите симуляцию.

    Модель не может выполняться до второго временного шага, когда состояние блока инициализируется равным 4. На пятом временном шаге вызов функции сброса на порт сброса инициирует выполнение блока Reset Function. На девятом временном шаге подсистема прекращает выполняться, и состояние блока остается постоянным.

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

См. также

Блоки

Похожие темы