Stateflow® objects are arranged in a hierarchy based on containment. That is, one Stateflow object can contain other Stateflow objects.
The highest object in Stateflow hierarchy is the Stateflow machine. The Stateflow machine contains all of the Stateflow charts in a Simulink® model. In addition, the Stateflow machine for a model can contain its own data.
Stateflow charts can contain states, boxes, functions, data, events, messages, transitions, junctions, and annotations. States, boxes, and functions can contain other states, boxes, functions, transitions, junctions, annotations, data, events, and messages. Levels of nesting can continue indefinitely.
To manage graphical objects, use the Stateflow Editor. This table lists each type of graphical object and the palette icon to use for drawing the object.
Type of Graphical Object
||Represent Operating Modes by Using States|
Not applicable. Point and drag from the source state to the destination state.
|Transition Between Operating Modes|
||Group Chart Objects by Using Boxes|
Simulink based state
||Simulink Subsystems as States|
||Reuse Simulink Components in Stateflow Charts|
||Reuse Logic Patterns by Defining Graphical Functions|
||Reuse MATLAB Code by Defining MATLAB Functions|
Truth table function
||Reuse Combinatorial Logic by Defining Truth Tables|
||Record State Activity by Using History Junctions|
||Add Descriptive Comments in a Chart|
You can define data, event, and message objects that do not appear graphically in the Stateflow Editor. To manage nongraphical objects, use the Symbols pane or Model Explorer. For more information, see:
A Stateflow chart stores and retrieves data that it uses to control its execution. Stateflow data resides in its own workspace, but you can also access data that resides externally in the Simulink model or application that embeds the Stateflow machine. You must define any internal or external data that you use in a Stateflow chart.
An event is a Stateflow object that can trigger a whole Stateflow chart or individual actions in a chart. Because Stateflow charts execute by reacting to events, you specify and program events into your charts to control their execution. You can broadcast events to every object in the scope of the object sending the event, or you can send an event to a specific object. You can define explicit events that you specify directly, or you can define implicit events to take place when certain actions are performed, such as entering a state. For more information, see Synchronize Model Components by Broadcasting Events.
Stateflow message objects are queued objects that can carry data. You can send a message from one Stateflow chart to another to communicate between charts. You can also send local messages within a chart. You define the type of message data. You can view the lifeline of a message in the Sequence Viewer block. For more information, see Communicate with Stateflow Charts by Sending Messages.