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

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

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

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

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

$$ \dot{p} = v $$

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

Когда 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 м/с. Во время действий в состоянии:

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

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

Дискретные эффекты модели возврата

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

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

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

Почему проверка на v < 0?

Вторая часть условия помогает обеспечить КПД решателя Simulink путем минимизации частоты нулевых пересечений. Без второй проверки условие остается верным после изменения состояния, приводящего к двум последовательным нулевым пересечениям.

Подтвердите семантику графика

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

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

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

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

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

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

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

Похожие темы