Documentation

This is machine translation

Translated by Microsoft
Mouseover text to see original. Click the button below to return to the English verison of the page.

Note: This page has been translated by MathWorks. Please click here
To view all translated materals including this page, select Japan from the country navigator on the bottom of this page.

Modeling a Bouncing Ball

This model shows how to define continuous time state variables and their derivatives in Stateflow®. The dynamics of a bouncing ball can be defined in terms of two continuous time variables, namely the position and the velocity of the ball.

In order to model this in Stateflow, you first need to create a chart whose "Update Method" is "continuous" and which has "Enable zero-crossing detection" option checked.

Once this is done, you can create local variables whose "Update Method" is "continuous". For this model, we create two local variables p and v whose update method is "continuous".

When you create a "continuous" local variable, you can also define its time-derivative by using the notation varname|_dot| where varname is the name of the continuous variable. Thus the variable p_dot refers to the time derivative of the position variable p. You should not attempt to create a variable with this name in the chart. You automatically get access to this variable once you declare p to have "continuous" update.

Using this convention, the bouncing ball can be modeled using the following Stateflow chart:

For most of the time, the ball is just freely falling under the influence of gravity. The dynamics in this "mode" are specified in the "during" section of the "Falling" state. The sudden resets in position and velocity which occurs when the ball bounces are modeled using a self-transition with a condition action which performs the state reset.

When this model is simulated, we get the familiar bouncing trajectory of the ball:

The top axis represents the position and the bottom axis of the scope represents the velocity.

Was this topic helpful?