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

После того, как вы создаете компонент модели, чтобы инициализировать, сбросить и отключить состояние блоков (см. Используя, Инициализируют, Сброс и Оконечные Функции), можно поместить модель в тестовую обвязку симуляции. Тестовая обвязка является моделью 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. Запустите симуляцию, чтобы проверить, что ваша модель моделирует правильно от родительской модели. Когда модель моделируется без портов события вызова функции, Инициализировать Функциональный блок выполняется в начале симуляции, и Оконечный Функциональный блок выполняется в конце симуляции.

  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, прежде чем это сможет выполниться. Прием вызова функции инициировал выполнение образцовой программы инициализации по умолчанию, и затем выполнение Инициализировать содержимого Функционального блока.

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

    Прием вызова функции на порте Terminate инициировал выполнение Оконечного содержимого Функционального блока, и затем выполнение модели по умолчанию отключает стандартную программу. Модель затем прекращает запускаться. Чтобы выполнить модель снова, необходимо повторно инициализировать модель путем отправки события вызова функции в порт 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. View> Model Explorer> Model Explorer.

  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, Reset, Terminate и порты Run на графике к initialize, reset, terminate и входным портам Run на блоке Model.

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

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

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

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

Блоки

Похожие темы