Используйте график Stateflow®, чтобы обеспечить планировщик вызова функции, где можно полностью управлять процессом планирования для периодических (синхронных) или апериодических (асинхронных) последовательностей вызова.
Создайте новую модель Simulink®.
Добавьте Блок модели, который ссылается на модель экспорта функций.
Задайте Вводы вызова функции с помощью диаграммы Stateflow.
Задайте вводы данных.
Запустите моделирование.
Чтобы создать модель для этого примера, смотрите, Создают Модель Экспорта функций.
Ссылка на модель экспорта функций от Блока модели позволяет сложение сигналов вызовов функции от диаграммы Stateflow и журналирования сигналов, не изменяя саму модель.
Добавьте Блок модели к новой модели Simulink. В поле Имени модели введите export_function_model
.
Добавьте блоки Выходного порта к ouput_100ms и output_10ms портам для того, чтобы сохранить данные моделирования к MATLAB.
Добавьте блок Sine Wave, чтобы обеспечить ввод данных. Установите Амплитуду на 2
и Частоту дискретизации к 0.01
. Соедините блок с input_10ms входным портом на Блоке модели.
Создайте новую диаграмму Stateflow. Этот шаг требует лицензии Stateflow.
Из меню выберите View> Model Explorer> Model Explorer. В панели Иерархии модели выберите Chart
.
Добавьте события вызова функции с выходными портами к графику. Из меню выберите Add> Event. В поле Name введите out_100ms
. Из списка Осциллографов выберите Output to Simulink
. Повторите шаг, чтобы создать событие вызова функции и выходной порт для out_10ms
.
Откройте график путем двойного клика по блоку. Добавьте блок State и стрелку перехода По умолчанию.
Переименуйте состояние к function_call_scheduler
.
Добавьте периодические вызовы функции каждые 10 и 100 миллисекунд. В блоке состояния введите следующие команды.
on every(10, tick):send(out_10ms); on every(100, tick):send(out_100ms);
tick
ключевого слова является неявным событием, которое считает количество шагов моделирования, в то время как send
является явным событием, которое выводит событие вызова функции к выходным портам.
Вы используете экспериментальную модель Simulink только для моделирования. После тестирования моделирования сгенерируйте код от модели экспорта функций, и затем интегрируйте экспортируемый функциональный код с внешне закодированным планировщиком.
Перетащите диаграмму Stateflow к своей экспериментальной модели.
Соедините Stateflow Chart выходные параметры с входными параметрами Блока модели.
Если экспериментальная модель ссылается на модель экспорта функций, существуют некоторые ограничения, чтобы гарантировать непротиворечивость результатами симуляции.
Для экспериментальной модели:
Вызовы функции к входным портам на Блоке модели должны следовать за порядком выполнения вызова функции корневого уровня блоки Inport в модели экспорта функций, на которую ссылаются.
Если экспериментальная модель вызывает образцовые функции, на которые ссылаются, не в порядке в любое время продвигаются, Simulink отображает ошибку. Для получения информации об отсортированном порядке выполнения смотрите Управление и Отображение Отсортированный Порядок. Чтобы отключить это ограничение, очистите флажок Model Configuration Parameters> Model Referencing> Enable строгие проверки планирования на модели, на которые ссылаются.
Для модели экспорта функций:
Частоты дискретизации для вызова функции корневого уровня блоки Inport должны быть установлены в наследованный (-1
) или совпадать с частотой дискретизации вызовов функции от диаграммы Stateflow, которая управляет ими.
Моделируйте модель экспорта функций, чтобы протестировать и наблюдать ее поведение прежде, чем сгенерировать код.
При использовании моделей экспорта функций в моделированиях топ-модели не изменяйте позволять/запрещать состояние модели во время моделирования. Включите его в начале моделирования и используйте вызовы функции вызвать его.
Очиститесь параметр конфигурации Включают строгую проверку планирования на модели, на которые ссылаются.
Проверьте, что Тип Решателя параметров конфигурации установлен в Fixed-step
, набор Решателя к discrete (no continuous states)
и размер Фиксированного шага (основная частота дискретизации) набор к auto
.
Щелкните правой кнопкой по сигналам выходного порта по Блоку модели и выберите Log выбранный сигнал.
Запустите моделирование.
Откройте Моделирование Data Inspector путем нажатия на значок.
После того, как вы протестируете свою модель, можно сгенерировать код для функций. Смотрите Генерируют Код для Модели Экспорта функций.