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 в диаграмме Stateflow. Эта процедура уменьшает количество объектов в модели, сохраняя те же результаты симуляции.
Шаг | Задача | Ссылка |
---|---|---|
1 | Откройте модель. | Откройте модель |
2 | Переместите содержимое подсистемы вызова функций в функцию Simulink на графике. | Добавьте функцию Simulink к графику |
3 | Измените возможности данных уровня графика на Local . | Изменение возможностей данных графика |
4 | Замените широковещательную передачу события вызовом функции. | Обновление Состояния активности на графике |
5 | Проверьте, эти функции заданы входы и выходы. | Добавление данных к графику |
6 | Удалите неиспользованные элементы в модели. | Удаление неиспользованных элементов в модели |
Примечание
Чтобы пропустить шаги преобразования, откройте модель sf_car
.
Откройте модель old_sf_car
. Если вы моделируете модель, эти результаты отображаются в двух возможностях.
Выполните следующие действия, чтобы добавить функцию Simulink к shift_logic графику.
В модели Simulink щелкните правой кнопкой мыши блок Threshold Calculation в нижнем левом углу и выберите Cut из контекстного меню.
Откройте shift_logic график.
На графике щелкните правой кнопкой мыши ниже selection_state
и выберите Paste из контекстного меню.
Разверните новую функцию Simulink так, чтобы подпись помещалась внутри функционального поля.
Совет
Чтобы изменить размер шрифта функции, щелкните правой кнопкой по полю функции и выберите новый размер из Font Size меню.
Разверните границу selection_state
включить новую функцию.
Примечание
Функция находится в этом состоянии вместо уровня диаграммы, потому что никакое другое состояние на графике не требует выходов функции up_th
и down_th
. См. Связывание функции Simulink с состоянием.
Переименуйте функцию 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».)
Добавьте входные данные throttle
на график со свойством Port 1.
Использование порта 1 препятствует перекрытию сигнальных линий в модели Simulink.
В модели Simulink добавьте сигнальную линию для throttle
между входным портом блока Engine и входным портом shift_logic графика.
В Model Explorer удалите выходное событие вызова функции CALC_TH
поскольку Threshold Calculation блок больше не существует.
Удалите все штриховые сигнальные линии из вашей модели.
Ваша новая модель выглядит примерно так:
Если вы моделируете новую модель, результаты совпадают с результатами исходного проекта.