В этом примере показано, как настроить диаграмму Stateflow ®, имитирующую шар-отскок за непрерывное время. Шар непрерывно движется по воздуху до тех пор, пока не ударится о землю, в этот момент возникает разрыв. В результате мяч внезапно меняет направление и скорость. Дополнительные сведения см. в разделе Непрерывное моделирование времени в Stateflow.
Модель sf_bounce содержит диаграмму, которая обновляется в непрерывном режиме. Локальные переменные описывают динамику свободно падающего шара с точки зрения положения и скорости. Во время моделирования модель использует обнаружение пересечения нуля, чтобы определить, когда мяч ударяется о землю.
С помощью этой системы дифференциальных уравнений первого порядка можно указать, как шарик свободно попадает под силу тяжести в терминах положения p и скорости v.


Когда p < = 0, мяч попадает в землю и отскакивает. Вы можете смоделировать отскок, обновив положение и скорость мяча:
Сбросьте положение на p = 0.
Сбросьте скорость до отрицательного значения непосредственно перед ударом мяча о землю.
Для учета потерь энергии умножьте новую скорость на коэффициент распределения (-0,8).
В модели диаграмма BouningBall реализует модальную логику для моделирования непрерывной динамики свободного падения и дискретных изменений, связанных с отскоком. В диалоговом окне «Свойства диаграммы» эти параметры позволяют моделировать диаграмму BouningBall в непрерывном режиме:
Метод обновления: Continuous таким образом, диаграмма использует непрерывное моделирование для моделирования динамики подпрыгивающего мяча.
Включена функция обнаружения пересечения нулей, чтобы решатель Simulink ® мог точно определить, когда мяч попадает в землю. В противном случае модель Simulink не может точно моделировать физику, и мяч, по-видимому, опускается под землю.

Диаграмма BouningBall имеет две переменные непрерывного времени: p для положения и v для скорости. Для каждой из этих переменных:
Область действия: Local.
Тип: double.
Метод обновления: Continuous.
Чтобы показать непрерывное состояние диаграммы модели Simulink, диаграмма BouningBall имеет две выходные переменные: p_out и v_out. Для каждой из этих переменных:
Область действия: Output.
Тип: double.
Метод обновления: Discrete.
Диаграмма определяет производную по времени переменных непрерывного времени неявно:
p_dot - производная положения p.
v_dot как производная скорости v.
В обозревателе моделей можно просматривать локальные переменные непрерывного времени и соответствующие выходные данные в диаграмме. Неявные производные переменные не отображаются в обозревателе моделей или на панели Символы (Symbols).

Диаграмма BouningBall состоит из одного состояния Falling это численно решает дифференциальные уравнения для свободного падения. Переход по умолчанию в состояние устанавливает исходное положение на 10 м и начальную скорость на 15 м/с. Во время действий в состоянии:
Определите производные положения и скорости.
Назначение значений положения и скорости шара выходным переменным p_out и v_out.

Falling состояние имеет переход с петлей, который моделирует прерывистость отскока как мгновенное изменение режима, когда шар внезапно меняет направление. Условие перехода определяет, когда мяч ударяется о землю, проверяя его положение p <= 0 и скорость v < 0. Если условие является действительным, действие условия сбрасывает положение и скорость при ударе мяча о землю.
Почему бы не проверить p == 0?
Мяч попадает в землю при положении p равно ровно нулю. Ослабляя условие, вы увеличиваете допуск, в пределах которого решатель Simulink может обнаруживать, когда позиция меняет знак.
Зачем проверять v < 0?
Вторая часть условия помогает поддерживать эффективность решателя Simulink, минимизируя частоту пересечений нуля. Без второй проверки условие остается верным после перехода состояния, что приводит к двум последовательным пересечениям нуля.
Диаграмма BouningBall соответствует требованиям к конструкции, определенным в Руководстве по непрерывному моделированию времени. В частности, диаграмма:
Инициализирует локальные переменные p и v в переходе по умолчанию.
Присваивает значения производным p_dot и v_dot во время действия.
Запись в локальные переменные p и v в действии перехода.
Не содержит событий, внутренних переходов, временной логики на основе событий или операторов обнаружения изменений.
После запуска модели область действия показывает графики положения и скорости. График положения показывает ожидаемый шаблон отскока.
