Debug Run-Time Errors in a State Transition Table
A state transition table represents a finite state machine for sequential modal logic in tabular format. Instead of drawing states and transitions in a Stateflow® chart, you can use a state transition table to model a state machine in a concise, compact format that requires minimal maintenance of graphical objects. For more information, see Model Finite State Machines Using State Transition Tables.
Create the Model and the State Transition Table
Create a Simulink® model with a new State Transition Table.
sfnew -STT
Add the following states and transitions to your table:
The table has two states at the highest level in the hierarchy,
Power_off
andPower_on
. By default,Power_off
is active. The eventSWITCH
toggles the system between thePower_off
andPower_on
states.Power_on
has three substates:First
,Second
, andThird
. By default, whenPower_on
becomes active,First
also becomes active. WhenShift
equals 1, the system transitions fromFirst
toSecond
,Second
toThird
, andThird
toFirst
, for each occurrence of the eventSWITCH
. Then the pattern repeats.Add two inputs from Simulink:
An event called
SWITCH
with a scope of Input from Simulink and a Rising edge trigger.A data called
Shift
with a scope of Input from Simulink.
In the model view, connect a Sine Wave block as the
SWITCH
event and a Step block as theShift
data for your State Transition Table.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 objectShift
. Ideally, theSWITCH
event occurs at a frequency that allows at least one cycle throughFirst
,Second
, andThird
.
Debug the State Transition Table
To debug the table in Create the Model and the State Transition Table, follow these steps:
Right-click the
Power_off
state, and select Set Breakpoint > On State Entry.Start the simulation.
Because you specified a breakpoint on
Power_off
, execution stops at that point.Move to the next step by clicking the Step In button, .
To see the data used and the current values, hover your cursor over the different table cells.
Continue clicking the Step In button and watching the animating states. After each step, watch the chart animation to see the sequence of execution. Use the tooltips to see the data values.
Single-stepping shows that the loop from First
to
Second
to Third
inside the state
Power_on
does not occur. The transition from
Power_on
to Power_off
takes
priority.
Correct the Run-Time Error
In Debug the State Transition Table, you step through a simulation of a
state transition table 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.
To correct this error:
Stop the simulation so that you can edit the table.
Add the condition
after(20.0, sec)
to the transition fromPower_on
toPower_off
.Now the transition from
Power_on
toPower_off
does not occur until 20 seconds have passed.Begin simulation.
Click the Step In button repeatedly to observe the fixed behavior.