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

После того, как вы создаете компонент модели, чтобы инициализировать, сбросить и отключить состояние блоков (см. Используя, Инициализируют, Сброс и Оконечные Функции), можно поместить модель в тестовую обвязку симуляции. Тестовая обвязка является моделью Simulink®, которую вы используете, чтобы разработать, тестируете, и отлаживаете компонент модели.

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

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

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

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

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

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

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

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

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

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

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

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

    Прием вызова функции на 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. В диалоговом окне Data введите Step для Name.

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

    Войдите в текстовое поле событияУстановите осциллографУстановите триггер
    InitializeOutput to SimulinkFunction call
    ResetOutput to SimulinkFunction call
    TerminateOutput to SimulinkFunction call
    RunOutput to SimulinkFunction call

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

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

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

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

Смотрите также

Блоки

Похожие темы