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

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

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

  • Добавьте блок Model, который ссылается на модель export-function.

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

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

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

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

Чтобы открыть завершенную экспериментальную модель, см. ex_export_function_test_model_with_stateflow_chart.

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

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

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

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

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

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

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

  2. На вкладке Modeling и из раздела Design выберите 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 выходов с Model входами блока.

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

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

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

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

    Если экспериментальная модель вызывает функции модели-ссылки вне порядка в любой временной шаг, Simulink отображает ошибку. Для получения информации о отсортированном поручении на выполнение смотрите Управление и Отображение порядка выполнения. Чтобы отключить это ограничение, снимите флажок для параметр конфигурации <reservedrangesplaceholder0>.

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

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

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

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

Примечание

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

  1. Установите параметры конфигурации для экспериментальной модели. На вкладке Modeling и из раздела Setup выберите Model Settings. Выберите панель Модели ссылок. Снимите флажок для параметр конфигурации <reservedrangesplaceholder0>.

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

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

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

  5. Откройте Simulation Data Inspector, щелкнув значок.

После тестирования модели можно сгенерировать код для функций. См. «Генерация кода для модели экспорта функций».

См. также

Блоки

Похожие темы