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

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

Цель руководства

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

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

The 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 между входным портом блока Engine и входным портом shift_logic графика.

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

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

  2. Удалите все штриховые сигнальные линии из вашей модели.

Запуск новой модели

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

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

Похожие темы