exponenta event banner

Улучшение структуры диаграммы с помощью функций 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 щелкните правой кнопкой мыши блок «Расчет порога» в левом нижнем углу и выберите в контекстном меню «Вырезать».

  2. Откройте диаграмму shift_logic.

  3. На диаграмме щелкните правой кнопкой мыши ниже selection_state и выберите «Вставить» в контекстном меню.

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

    Совет

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

  5. Расширение границы selection_state для включения новой функции.

    Примечание

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

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

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

В обозревателе моделей измените область данных на уровне диаграммы. up_th и down_th кому Local потому что вычисления для этих данных теперь происходят внутри диаграммы.

Обновить действие состояния в диаграмме

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

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

Добавление данных в диаграмму

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

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

    Использование порта 1 предотвращает перекрытие сигнальных линий в модели Simulink.

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

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

  1. В обозревателе моделей удалите событие вывода вызова функции. CALC_TH поскольку блок вычисления порога больше не существует.

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

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

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

При моделировании новой модели результаты соответствуют результатам исходной конструкции.

Связанные темы