duration
ОператорСледующий пример фокусируется на логике передачи автомобиля, когда он переключается с первой на четвертую передачу.
При моделировании переключений передач этой системы важно управлять происходящими колебаниями. Модель sf_car
использует параллельную логику отладчика состояний, которая управляет тем, какое состояние передачи активно. Для получения дополнительной информации о том, как работают отладчики в Stateflow®, см. «Уменьшение переходных сигналов при помощи логики отладки».
Можно упростить логику debouncer при помощи duration
оператор. Вы можете увидеть это упрощение в модели sf_car_using_duration
. The duration
оператор оценивает выражение условия и выводит время, в течение которого выражение было true
. Когда этот промежуток времени пересекает известный временной порог, состояние переходит к более высокой или нижней передаче.
Путем удаления логики параллельного состояния и использования duration
оператор, можно управлять колебаниями с помощью более простой логики Stateflow. The duration
оператор поддерживается только в диаграммах Stateflow в Simulink® модель.
Откройте модель sf_car
. Пока shift_logic
подсвечивается, на вкладке State Chart, нажмите Look Under Mask.
Диаграмма Stateflow shift_logic
управляет передачей автомобиля, учитывая скорость автомобиля и то, сколько дросселя применяется. Внутри shift_logic
Существует два параллельных состояния: gear_state
и selection_state
. gear_state
содержит четыре эксклюзивных состояния для каждой передачи. selection_state
определяет, является ли автомобиль понижающим, повышающим или остающимся на своей текущей передаче.
На этой диаграмме Stateflow, для автомобиля, чтобы перейти с первой передачи на вторую, событие UP
должен быть отправлен из selection_state
на gear_state
. Событие отправляется, когда скорость переходит порог и остается выше порога в течение периода времени, определенного TWAIT
. Когда событие UP
отправляется, gear_state
переходы от first
на second
.
duration
ОператорОткройте модель sf_car_using_duration
. Пока Gear_Logic
подсвечивается, на вкладке State Chart, нажмите Look Under Mask.
Внутри Gear_Logic
Существует четыре эксклюзивных состояния для каждой передачи. Локальные переменные up
и down
защитите переходы между каждым состоянием.
На этой диаграмме Stateflow, для автомобиля, чтобы перейти с первой передачи на вторую, условие up
должен быть true
. Условие up
определяется как true, если интервал времени, в течение которого скорость больше или равна порогу, больше, чем интервал времени, заданный как TWAIT
. Условие down
определяется как true, если интервал времени, в течение которого скорость меньше или равна порогу, больше, чем интервал времени, заданный как TWAIT
. Оператор duration
отслеживает период времени, в течение которого скорость была выше или ниже порога. Когда up
условие выполнено, активное состояние переходит от first
на second
.
Путем замены логики параллельного состояния debouncer на duration
оператор, можно создать более простую диаграмму Stateflow, чтобы смоделировать перемену передач.