Моделируйте прыгающий мяч за непрерывное время

В этом примере показано, как сконфигурировать график Stateflow ®, которая моделирует прыгающий мяч за непрерывное время. Мяч непрерывно движется по воздуху, пока не ударяется о землю, в этой точке происходит разрыв. В результате мяч внезапно меняет направление и скорость. Для получения дополнительной информации см. «Моделирование в непрерывном времени» в Stateflow.

Модель sf_bounce содержит график, которое обновляется в непрерывном времени. Локальные переменные описывают динамику свободно падающего мяча с точки зрения положения и скорости. Во время симуляции модель использует обнаружение пересечения нулем, чтобы определить, когда мяч ударяется о землю.

Динамика прыгающего мяча

Можно задать, как мяч свободно падает под силой тяжести в терминах положения p и скорости v с помощью этой системы дифференциальных уравнений первого порядка.

$$ \dot{p} = v $$

$$ \dot{v} = -9.81 $$

Когда p < = 0, мяч ударяется о землю и прыгает. Можно смоделировать отскок, обновив положение и скорость мяча:

  • Обнулите положение p = 0.

  • Обнулите скорость до отрицательного значения непосредственно перед ударом мяча о землю.

  • Для расчета потерь энергии умножьте новую скорость на коэффициент распределения (-0,8).

Сконфигурируйте график для симуляции в непрерывном времени

В модели график BouncingBall реализует модальную логику, чтобы симулировать непрерывную динамику свободного падения и дискретных изменений, связанных с прыганием. В диалоговом окне Свойства графика (Chart properties) эти настройки позволяют графику 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 м/с. Во время действий в состоянии:

  • Задайте производные положения и скорости.

  • Присвойте значения положения и скорости мяча выходным переменным p_out и v_out.

Модель дискретных эффектов отскока

The Falling состояние имеет переход с самоциклом, который моделирует разрыв скачка как мгновенное изменение режима, когда мяч внезапно переключается в направлении. Условие на переходе определяет, когда мяч ударяется о землю, проверяя его положение p <= 0 и скорость v < 0. Если условие верно, действие условия сбрасывает положение и скорость при ударе мяча о землю.

Почему бы не проверить на p == 0?

Мяч ударяется о землю при p положения в точности равен нулю. Расслабляя условие, вы увеличиваете допуск, в пределах которого решатель Simulink может обнаружить, когда положение меняет знак.

Зачем проверять на v < 0?

Вторая часть условия помогает поддерживать эффективность решателя Simulink, минимизируя частоту пересечений нуля. Без второй проверки условие остается верным после перехода состояния, что приводит к двум последовательным пересечениям нуля.

Валидация семантики графика

График BouncingBall соответствует требованиям проекта, определенным в Руководствах по симуляции в непрерывном времени. В частности, график:

  • Инициализирует локальные переменные p и v на переходе по умолчанию.

  • Присваивает значения производным p_dot и v_dot в течение действия.

  • Запись в локальные переменные p и v в переходном действии.

  • Не содержит событий, внутренних переходов, основанной на событиях временной логики или операторов обнаружения изменений.

Просмотр результатов симуляции

После запуска модели область возможностей показывает графики положения и скорости. График положения показывает ожидаемый шаблон отскока.

Похожие темы