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:
Create the following Simulink model:
Add the following states and transitions to your chart:
In your chart, add an event
Switch
with a scope of Input from Simulink and a Rising edge trigger.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:
Right-click in the chart, and select Set Breakpoint on Chart Entry.
Start the simulation.
Because you specified a breakpoint on chart entry, execution stops at that point.
Click the Step In button,
.
The Step In button executes the next step and stops.
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:
Stop the simulation so that you can edit the chart.
Add the condition
[t > 20.0]
to the transition fromPower_on
toPower_off
.Now the transition from
Power_on
toPower_off
does not occur until simulation time is greater than 20.0.Begin simulation again.
Click the Step In button repeatedly to observe the new behavior.