Main Content

Debug Run-Time Errors in a Chart

Create the Model and the Stateflow Chart

In this topic, you create a Simulink® model with a Stateflow® chart to debug. Follow these steps:

  1. Create the following Simulink model:

    Simulink model that contains a Stateflow chart. The chart receives an input signal from a Step block and a trigger from a Sine Wave block.

  2. Add the following states and transitions to your chart:

    Stateflow chart that contains two superstates called Power_off and Power_on. The input event Switch triggers the transitions between these superstates. Power_on contains three substates called First, Second, and Third. The state cycles between theses substates when the chart input shift equals one.

  3. In your chart, add an event Switch with a scope of Input from Simulink and a Rising edge trigger.

  4. Add a data Shift with a scope of Input from Simulink.

The chart has two states at the highest level in the hierarchy, Power_off and Power_on. By default, Power_off is active. The event Switch toggles the system between the Power_off and Power_on states. Power_on has three substates: First, Second, and Third. By default, when Power_on becomes active, First also becomes active. When Shift equals 1, the system transitions from First to Second, Second to Third, Third to First, for each occurrence of the event Switch, and then the pattern repeats.

In the model, there is an event input and a data input. A Sine Wave block generates a repeating input event that corresponds with the Stateflow event Switch. The Step block generates a repeating pattern of 1 and 0 that corresponds with the Stateflow data object Shift. Ideally, the Switch event occurs at a frequency that allows at least one cycle through First, Second, and Third.

Debug the Stateflow Chart

To debug the chart in Create the Model and the Stateflow Chart, follow these steps:

  1. Right-click in the chart, and select Set Breakpoint on Chart Entry.

  2. Start the simulation.

    Because you specified a breakpoint on chart entry, execution stops at that point.

  3. Click the Step In button, .

    The Step In button executes the next step and stops.

  4. Continue clicking the Step In button and watching the animating chart.

    After each step, watch the chart animation to see the sequence of execution.

Single-stepping shows that the chart does not exhibit the desired behavior. The transitions from First to Second to Third inside the state Power_on are not occurring because the transition from Power_on to Power_off takes priority. The output display of code coverage also confirms this observation.

Correct the Run-Time Error

In Debug the Stateflow Chart, you step through a simulation of a chart and find an error: the event Switch drives the simulation but the simulation time passes too quickly for the input data object Shift to have an effect.

Correct this error as follows:

  1. Stop the simulation so that you can edit the chart.

  2. Add the condition [t > 20.0] to the transition from Power_on to Power_off.

    Stateflow chart that contains two superstates called Power_off and Power_on. A condition guards the transition from Power_on to Power_off.

    Now the transition from Power_on to Power_off does not occur until simulation time is greater than 20.0.

  3. Begin simulation again.

  4. Click the Step In button repeatedly to observe the new behavior.