Протестируйте симуляцию модели экспорта функций Используя диаграмму Stateflow

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

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

  • Добавьте блок Model, который ссылается на модель экспорта функций.

  • Задайте Входные параметры вызова функции с помощью диаграммы Stateflow.

  • Задайте вводы данных.

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

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

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

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

  1. Добавьте блок Model в новую модель Simulink. В поле Model name введите export_function_model.

  2. Добавьте блоки Выходного порта в порты ouput_100ms и output_10ms для сохранения данных моделирования к MATLAB.

  3. Добавьте блок Sine Wave, чтобы обеспечить ввод данных. Установите Amplitude на 2 и Sample time к 0.01. Соедините блок с входным портом input_10ms на блоке Model.

Создайте периодический планировщик Используя диаграмму Stateflow

  1. Создайте новую диаграмму Stateflow. Этот шаг требует лицензии Stateflow.

  2. Из меню выберите View> Model Explorer> Model Explorer. В панели Model Hierarchy выберите Chart.

  3. Добавьте события вызова функции с выходными портами к графику. Из меню выберите Add> Event. В поле Name введите out_100ms. Из списка Scope выберите Output to Simulink. Повторите шаг, чтобы создать событие вызова функции и выходной порт для out_10ms.

  4. Откройте график путем двойного клика по блоку. Добавьте блок State и стрелку перехода По умолчанию.

  5. Переименуйте состояние к function_call_scheduler.

  6. Добавьте периодические вызовы функции каждые 10 и 100 миллисекунд. В блоке состояния введите следующие команды.

    on every(10, tick):send(out_10ms);
    on every(100, tick):send(out_100ms);

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

Создайте тестовую модель (обвязка) для симуляции

Вы используете тестовую модель Simulink только для симуляции. После тестирования симуляции сгенерируйте код из модели экспорта функций, и затем интегрируйте экспортируемый функциональный код с внешне закодированным планировщиком.

  1. Перетащите диаграмму Stateflow к своей тестовой модели.

  2. Соедините Stateflow Chart выходные параметры с входными параметрами блока Model.

Планирование ограничений для моделей экспорта функций, на которые ссылаются,

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

Для тестовой модели:

  • Вызовы функции к входным портам на блоке Model должны следовать за порядком выполнения вызова функции корневого уровня блоки Inport в модели экспорта функций, на которую ссылаются.

    Если тестовая модель вызывает образцовые функции, на которые ссылаются, не в порядке в любое время продвигаются, Simulink отображает ошибку. Для получения информации об отсортированном порядке выполнения смотрите Управление и Отображение Отсортированный Порядок. Чтобы отключить это ограничение, очистите флажок Model Configuration Parameters> Model Referencing> Enable strict scheduling checks for referenced models.

Для модели экспорта функций:

  • Шаги расчета для вызова функции корневого уровня блоки Inport должны быть установлены в наследованный (-1) или совпадать с шагом расчета вызовов функции от диаграммы Stateflow, которая управляет ими.

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

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

Примечание

При использовании моделей экспорта функций в симуляциях топ-модели не изменяйте позволять/запрещать состояние модели во время симуляции. Включите его в начале симуляции и используйте вызовы функции вызвать его.

  1. Очистите параметр конфигурации Enable strict scheduling check for referenced models.

  2. Проверьте параметры конфигурации, Solver Type установлен в Fixed-step, набор Solver к discrete (no continuous states) и размер Фиксированного шага (основной шаг расчета) набор к auto.

  3. Щелкните правой кнопкой по сигналам выходного порта по блоку Model и выберите Log selected signal.

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

  5. Откройте Инспектора Данных моделирования путем нажатия на значок.

После того, как вы протестируете свою модель, можно сгенерировать код для функций. Смотрите Генерируют Код для Модели Экспорта функций.

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

Блоки

Похожие темы