Contenido principal

La traducción de esta página aún no se ha actualizado a la versión más reciente. Haga clic aquí para ver la última versión en inglés.

Modelar una pelota que rebota en tiempo continuo

Este ejemplo muestra cómo configurar un gráfico de Stateflow® que simula una pelota que rebota en tiempo continuo. La pelota se mueve continuamente por el aire hasta que toca el suelo, momento en el que se produce una discontinuidad. Como resultado, la pelota cambia de velocidad y de dirección repentinamente. Para obtener más información, consulte Continuous-Time Modeling in Stateflow.

El modelo sf_bounce contiene un gráfico que se actualiza en tiempo continuo. Las variables locales describen la dinámica de una pelota en caída libre en términos de posición y velocidad. Durante la simulación, el modelo utiliza la detección de cruce por cero para determinar cuándo la pelota toca el suelo.

Dinámica de una pelota que rebota

Puede especificar cómo una pelota cae en caída libre por la fuerza de la gravedad en términos de posición p y velocidad v con este sistema de ecuaciones diferenciales de primer orden:

$$ \dot{p} = v $$

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

Cuando p <= 0, la pelota toca el suelo y rebota. Puede modelar el rebote actualizando la posición y la velocidad de la pelota:

  • Restablezca la posición a p = 0.

  • Restablezca la velocidad al negativo de su valor justo antes de que la pelota toque el suelo.

  • Para tener en cuenta la pérdida de energía, multiplique la velocidad nueva por un coeficiente de distribución (-0.8).

Configurar un gráfico para una simulación en tiempo continuo

En el modelo, el gráfico BouncingBall implementa la lógica modal para simular la dinámica continua de la caída libre y los cambios discretos asociados al rebote. En el cuadro de diálogo de propiedades del gráfico, esta configuración permite que el gráfico BouncingBall simule en tiempo continuo:

  • Update method es Continuous, por lo que el gráfico utiliza simulación en tiempo continuo para modelar la dinámica de la pelota que rebota.

  • Enable zero-crossing detection está seleccionado, por lo que el solver de Simulink® puede determinar exactamente cuándo la pelota toca el suelo. De lo contrario, el modelo de Simulink no puede simular la física de forma exacta y parece que la pelota sigue descendiendo por debajo del suelo.

Definir variables de tiempo continuo

El gráfico BouncingBall tiene dos variables de tiempo continuo: p para posición y v para velocidad. Para cada una de estas variables:

  • Scope es Local.

  • Type es double.

  • Update Method es Continuous.

Para exponer el estado continuo del gráfico al modelo de Simulink, el gráfico BouncingBall tiene dos variables de salida: p_out y v_out. Para cada una de estas variables:

  • Scope es Output.

  • Type es double.

  • Update Method es Discrete.

El gráfico define la derivada de tiempo de variables de tiempo continuo implícitamente:

  • p_dot es la derivada de la posición p.

  • v_dot es la derivada de la velocidad v.

En Model Explorer, puede ver las variables locales de tiempo continuo y las correspondientes salidas en el gráfico. Las variables de derivadas implícitas no aparecen en Model Explorer ni en el panel Symbols.

Modelar la dinámica continua de una caída libre

El gráfico BouncingBall consta de un estado único denominado Falling que resuelve numéricamente las ecuaciones diferenciales de la caída libre. La transición predeterminada al estado establece la posición inicial en 10 m y la velocidad inicial en 15 m/s. Las acciones during del estado:

  • Definen las derivadas de la posición y la velocidad

  • Asignan los valores de la posición y velocidad de la pelota a las variables de salida p_out y v_out

Modelar efectos discretos del rebote

El estado Falling tiene una transición de autobucle que modela la discontinuidad del rebote como un cambio de modo instantáneo cuando la pelota cambia de dirección repentinamente. La condición en la transición llama al operador de detección de flancos falling. Este operador determina cuándo la pelota toca el suelo detectando el momento en el que la posición supera un umbral de cero y se convierte en negativa. Si la condición es válida, la acción de condición restablece la posición y velocidad cuando la pelota toca el suelo.

Validar la semántica de un gráfico

El gráfico BouncingBall cumple los requisitos de diseño definidos en Guidelines for Continuous-Time Simulation. En particular, el gráfico:

  • Inicializa las variables locales p y v en la transición predeterminada

  • Asigna valores a las derivadas p_dot y v_dot en una acción during

  • Escribe en las variables locales p y v en una acción de transición

  • No contiene eventos, transiciones internas, lógica temporal basada en eventos u operadores de detección de cambios

Ver los resultados de la simulación

Después de ejecutar el modelo, el bloque Scope representa la posición y la velocidad de la pelota. La gráfica de la posición muestra el patrón de rebote esperado.

Consulte también

Temas