Улучшите проект графика при помощи функций Simulink

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

Цель примера

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

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

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

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

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

  • Подсистема выходные параметры (up_th и down_th) питайтесь непосредственно в график как входные параметры.

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

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

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

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

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

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

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

Примечание

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

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

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

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

Выполните эти шаги, чтобы добавить функцию Simulink в график shift_logic.

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

  2. Откройте график shift_logic.

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

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

    Совет

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

  5. Расширьте границу selection_state включать новую функцию.

    Примечание

    Функция находится в этом состоянии вместо уровня графика, потому что никакое другое состояние в графике не требует функциональных выходных параметров up_th и down_th. Смотрите связывают функцию Simulink с состоянием.

  6. Переименуйте функцию Simulink от Threshold_Calculation к calc_threshold путем ввода [down_th, up_th] = calc_threshold(gear, throttle) в функциональном поле.

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

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

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

В редакторе Stateflow измените during действие в selection_state чтобы вызвать Simulink функционируют calc_threshold.

during: [down_th, up_th] = calc_threshold(gear, throttle);

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

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

  1. Добавьте входные данные throttle к графику со свойством Port 1.

    Используя порт 1 препятствует тому, чтобы сигнальные линии перекрылись в модели Simulink.

  2. В модели Simulink добавьте сигнальную линию для throttle между импортом Блока двигателя и импортом графика shift_logic.

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

  1. В Model Explorer удалите вызов функции выходное событие CALC_TH потому что блок Threshold Calculation больше не существует.

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

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

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

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

Похожие темы