Запланируйте выполнение нескольких контроллеров

Simulink® функция является графическим объектом, который вы заполняете блоками Simulink и вызываете в действиях состояний и переходах. Функции Simulink не поддерживаются в автономном Stateflow® графики в MATLAB®. Для получения дополнительной информации смотрите Повторное использование Функции Simulink в диаграммах Stateflow.

Цель примера

Цель этого примера состоит в том, чтобы использовать функции Simulink в диаграмме Stateflow, чтобы улучшить проект модели под названием sf_temporal_logic_scheduler.

Объяснение для улучшения проекта модели

sf_temporal_logic_scheduler модель содержит диаграмму Stateflow и три подсистемы вызова функций. Эти блоки взаимодействуют можно следующим образом:

  • График широковещательно передает выходные события A1, A2, и A3 инициировать подсистемы вызова функций.

  • Подсистемы A1, A2 и A3 выполняются на различных уровнях, заданных графиком.

  • Подсистема выходные параметры питается непосредственно в график.

    Никакие другие блоки в доступе модели подсистема выходные параметры.

Можно заменить подсистемы вызова функций на функции Simulink в графике когда:

  • Подсистемы выполняют вычисления, требуемые графиком.

  • Другим блокам в модели не нужен доступ к подсистеме выходные параметры.

Отредактируйте модель, чтобы использовать функции Simulink

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

ШагЗадачаСсылка
1Откройте модель.Откройте модель
2Переместите содержимое подсистем вызова функций в функции Simulink в графике.Добавьте функции Simulink в график
3Измените осциллограф определенных данных уровня графика к Local.Измените осциллограф данных о графике
4Замените широковещательные сообщения события на вызовы функции.Обновите состояния активности в графике
5Проверьте, что вводы и выводы этой функции заданы.Добавьте данные в график
6Удалите неиспользованные элементы в модели.Удалите неиспользованные элементы в модели

Примечание

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

Откройте модель

Откройте sf_temporal_logic_scheduler модель. Если вы симулируете модель, вы видите этот результат в осциллографе.

Для получения дополнительной информации смотрите Подсистемы Расписания, чтобы Выполниться в конкретные моменты времени.

Добавьте функции Simulink в график

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

  1. В модели Simulink щелкните правой кнопкой по блоку A1 по правому нижнему углу и выберите Cut из контекстного меню.

  2. Откройте Временный Логический график Планировщика.

  3. В графике щелкните правой кнопкой вне любых состояний и выберите Paste из контекстного меню.

  4. Расширьте новую функцию Simulink так, чтобы подпись соответствовала в функциональном поле.

    Совет

    Чтобы изменить размер шрифта функции, щелкните правой кнопкой по функциональному полю и выберите новый размер из меню Font Size.

  5. Переименуйте функцию Simulink от A1 к f1 путем ввода y = f1(u) в функциональном поле.

  6. Повторите шаги 1 - 5 для этих случаев:

    • Копирование содержимого A2 в функцию с именем Simulink f2.

    • Копирование содержимого A3 в функцию с именем Simulink f3.

    Примечание

    Новые функции находятся на уровне графика потому что оба состояния FastScheduler и SlowScheduler потребуйте доступа к функциональным выходным параметрам.

Измените осциллограф данных о графике

В Model Explorer измените область видимости данных уровня графика y к Local потому что вычисление для тех данных теперь происходит в графике.

Обновите состояния активности в графике

В редакторе Stateflow можно заменить широковещательные сообщения события в состояниях активности с вызовами функции.

  1. Отредактируйте состояния активности в FastScheduler и SlowScheduler вызывать функции Simulink f1, f2, и f3.

  2. В обоих состояниях обновите каждый during действие можно следующим образом.

    du: y = u1-y2;

Добавьте данные в график

Для on every состояния активности FastScheduler и SlowScheduler, задайте три данные. (Для получения дополнительной информации смотрите, Добавляют Данные Stateflow.)

  1. Добавьте локальные данные y1 и y2 к графику.

  2. Добавьте выходные данные y3 к графику.

  3. В модели соедините выход для y3 к осциллографу.

    Совет

    Чтобы инвертировать блок Scope, выберите блок. Затем в панели инструментов, на вкладке Format, нажимают Flip left-right Flip left-right button.

Удалите неиспользованные элементы в модели

  1. В Model Explorer удалите выходные события A1, A2, и A3 и входные данные u2 потому что подсистемы вызова функций больше не существуют.

  2. Удалите любые пунктирные сигнальные линии из своей модели.

Запустите новую модель

Ваша новая модель выглядит примерно так:

Если вы симулируете новую модель, результаты совпадают с теми из первоначального проекта.

Похожие темы