В этом примере показано, как сконфигурировать график Stateflow®, который симулирует прыгающий мяч в непрерывное время. Мяч перемещается постоянно через воздух, пока это не ударяется о землю, в которой точке происходит разрыв. В результате мяч внезапно изменяет направление и скорость. Для получения дополнительной информации смотрите, что Непрерывное время Моделирует в Stateflow.
Модель sf_bounce
содержит график, который обновляется в непрерывное время. Локальные переменные описывают динамику свободно падающего мяча в терминах положения и скорости. В процессе моделирования модель использует обнаружение пересечения нулем, чтобы определить, когда мяч ударяется о землю.
Можно задать, как мяч свободно подпадает под силу тяжести в терминах положения p и скорости v с этой системой дифференциальных уравнений первого порядка:
Когда p <= 0, мяч ударяется о землю и возвращается. Можно смоделировать возврат путем обновления положения и скорости мяча:
Сбросьте положение к p = 0.
Сбросьте скорость к отрицанию ее значения непосредственно перед тем, как мяч ударился о землю.
С учетом энергетической потери умножьте новую скорость на коэффициент распределения (-0.8).
В модели график BouncingBall реализует модальную логику, чтобы симулировать непрерывную динамику свободного падения и дискретных изменений, сопоставленных с возвратом. В диалоговом окне Свойств диаграммы эти настройки позволяют графику BouncingBall симулировать в непрерывное время:
Обновитесь методом является Continuous
таким образом, график использует симуляцию непрерывного времени, чтобы смоделировать динамику прыгающего мяча.
Включите обнаружение пересечения нулем, выбран так, решатель Simulink® может определить точно, когда мяч ударяется о землю. В противном случае модель Simulink не может симулировать физику точно, и мяч, кажется, убывает под землей.
График BouncingBall имеет две переменные непрерывного времени: p
для положения и v
для скорости. Для каждой из этих переменных:
Осциллографом является Local
.
Типом является double
.
Обновитесь Методом является Continuous
.
Чтобы отсоединить непрерывное состояние графика к модели Simulink, график BouncingBall имеет две выходных переменные: p_out
и v_out
. Для каждой из этих переменных:
Осциллографом является Output
.
Типом является double
.
Обновитесь Методом является Discrete
.
График задает производную времени переменных непрерывного времени неявно:
p_dot
производная положения p
.
v_dot
как производная скорости v
.
В Model Explorer можно просмотреть локальные переменные непрерывного времени и соответствующие выходные параметры в графике. Неявные производные переменные не появляются в Model Explorer или в панели Символов.
График BouncingBall состоит из одного состояния под названием Falling
это численно решает дифференциальные уравнения для свободного падения. Переход по умолчанию в состояние устанавливает исходное положение на 10 м и начальную скорость к 15 м/с during
действия в состоянии:
Задайте производные положения и скорости
Присвойте значения положения и скорость мяча к выходным переменным p_out
и v_out
Falling
состояние имеет переход самоцикла, который моделирует разрыв возврата как мгновенное изменение режима, когда мяч внезапно инвертирует направление. Условие на переходе вызывает оператор обнаружения ребра falling
. Этот оператор определяет, когда мяч ударяется о землю путем обнаружения, когда положение пересекает порог нуля и становится отрицательным. Если условие допустимо, действие условия сбрасывает положение и скорость, когда мяч ударяется о землю.
График BouncingBall соответствует конструктивным требованиям, заданным в Инструкциях для Симуляции Непрерывного времени. В частности, график:
Инициализирует локальные переменные p и v на переходе по умолчанию
Значения присвоений к производным p_dot и v_dot в during
действие
Записи к локальным переменным p и v в действии перехода
Не содержит события, внутренние переходы, основанную на событии временную логику, или изменяет операторы обнаружения
После того, как вы запускаете модель, блоковые графы Осциллографа положение и скорость мяча. График положения показывает ожидаемый шаблон возврата.