Main Content

Stateflow.Chart

Graphical representation of a finite state machine

    Description

    Use a Stateflow.Chart object to create a graphical representation of a finite state machine based on a state transition diagram. In a Chart block, states and transitions form the basic building blocks of a sequential logic system. States correspond to operating modes and transitions represent pathways between states. For more information, see Model Finite State Machines by Using Stateflow Charts and Create Charts by Using the Stateflow API.

    Creation

    To create a Stateflow.Chart object, call the function sfnew. For example, to create an empty chart in a new Simulink® model called myModel, enter:

    sfnew myModel

    Alternatively, you can add a new chart to an existing model by using the function add_block (Simulink):

    add_block("sflib/Chart","myModel/Chart")

    Then, to access the Stateflow.Chart object, call the find function for the Simulink.Root object:

    chart = find(sfroot,"-isa","Stateflow.Chart", ...
        Path="myModel/Chart");

    Properties

    expand all

    Stateflow® API objects have properties that correspond to the values you set in the Stateflow Editor. To access or modify a property, use dot notation. To access or modify multiple properties for multiple API objects, use the get and set functions, respectively. For more information, see Modify Properties and Call Functions of Stateflow Objects.

    Content

    Name of the chart, specified as a string scalar or character vector.

    Action language used to program the chart, specified as "MATLAB" or "C". For more information, see Differences Between MATLAB and C as Action Language Syntax.

    State machine semantics implemented by the chart, specified as "Classic", "Mealy", or "Moore". For more information, see Overview of Mealy and Moore Machines.

    Whether the chart supports variable-size data, specified as a numeric or logical 1 (true) or 0 (false). For more information, see Declare Variable-Size Data in Stateflow Charts.

    Since R2023a

    Whether the chart treats output data with a dimension of length 1 as fixed size, specified as a numeric or logical 0 (false) or 1 (true). When this property is true, the chart treats output data that have at least one dimension of length 1 as fixed size, regardless of whether you specify the data as having variable size. When this property is false, the chart treats output data as variable size if you specify the data as having variable size.

    State Decomposition

    Decomposition of substates at the top level of containment in the chart, specified as "EXCLUSIVE_OR" or "PARALLEL_AND". For more information, see Define Exclusive and Parallel Modes by Using State Decomposition.

    Chart Initialization

    Whether to activate the chart with the start of simulation, specified as a numeric or logical 1 (true) or 0 (false). For more information, see Execution of a Chart at Initialization.

    Behavior of the states when a function-call input event reenables the chart, specified as one of these values:

    • "" — The chart does not contain function-call input events.

    • "held" — The chart maintains the most recent values of the states.

    • "reset" — The chart reverts to the initial conditions of the states.

    For more information, see Control States in Charts Enabled by Function-Call Input Events.

    Whether to initialize the output data every time the chart wakes up, specified as a numeric or logical 1 (true) or 0 (false). For more information, see Initialize outputs every time chart wakes up.

    Active State Output

    Whether to create an active state data output port for the chart, specified as a numeric or logical 1 (true) or 0 (false). For more information, see Monitor State Activity Through Active State Data.

    This property is read-only.

    Active state data object for the chart, specified as a Stateflow.Data object. This property applies only when the HasOutputData property for the chart is true.

    Name of the active state data object for the chart, specified as a string scalar or character vector. This property applies only when the HasOutputData property for the chart is true.

    Monitoring mode for the active state output data, specified as "ChildActivity" or "LeafStateActivity".

    Name of the enumerated data type for the active state data object for the chart, specified as a string scalar or character vector. For more information, see Enum Name.

    Whether to define the enumerated data type for the active state data output manually, specified as a numeric or logical 1 (true) or 0 (false). For more information, see Define State Activity Enumeration Type.

    Discrete and Continuous-Time Semantics

    Activation method for the chart, specified as "CONTINUOUS", "DISCRETE", or "INHERITED".

    Sample time for activating the chart, specified as a string scalar or character vector. This property applies only when the ChartUpdate property for the chart is "DISCRETE".

    Whether to enable zero-crossing detection on state transitions in the chart, specified as a numeric or logical 1 (true) or 0 (false). This property applies only when the ChartUpdate property for the chart is set to "CONTINUOUS". For more information, see Disable Zero-Crossing Detection.

    Which block variants Stateflow analyzes during simulation and code generation, specified as one of these values:

    • update diagram analyze all choices — Stateflow analyzes both active and inactive choices for incompatibilities in signal attributes and generates code only for the active choice.

    • code compile — Stateflow analyzes both active and inactive choices of variant transitions and generates code for both the active and inactive choices. The choices are enclosed in C preprocessor conditional statements #if and #endif that are conditionally compiled when you compile the generated code.

    Super Step Semantics

    Whether to enable super step semantics for the chart, specified as a numeric or logical 1 (true) or 0 (false). For more information, see Super Step Semantics.

    Maximum number of transitions the chart can take in one super step, specified as an integer scalar. This property applies only when the EnableNonTerminalStates property for the chart is true.

    Behavior if a super step for the chart exceeds the maximum number of transitions specified in the NonTerminalMaxCounts property before reaching a stable state, specified as one of these values:

    • "Proceed" — The chart goes to sleep with the last active state configuration.

    • "Throw Error" — The chart generates an error.

    This property applies only when the EnableNonTerminalStates property for the chart is true.

    Exported Functions

    Whether to export chart-level functions to other blocks in the Simulink model, specified as a numeric or logical 1 (true) or 0 (false). For more information, see Export Stateflow Functions for Reuse.

    Whether exported functions from the chart are globally visible in the Simulink model, specified as a numeric or logical 1 (true) or 0 (false). When this property is enabled, blocks throughout the model can call functions exported from the chart without using qualified notation. This property applies only when the ExportChartFunctions property for the chart is true.

    Integer and Fixed-Point Data

    Whether the data in the chart saturates on integer overflow, specified as a numeric or logical 1 (true) or 0 (false). When this property is disabled, the data in the chart wraps on integer overflow. For more information, see Handle Integer and Enumeration Overflow for Chart Data.

    Inherited Simulink signals to treat as Fixed-Point Designer™ fi objects, specified as one of these values:

    • "Fixed-point" — The chart treats all fixed-point inputs as fi objects.

    • "Fixed-point & Integer" — The chart treats all fixed-point and integer inputs as fi objects.

    This property applies only to charts that use MATLAB® as the action language.

    Default fimath properties for the chart, specified as one of these values:

    • "Same as MATLAB Default" — Use the same fimath properties as the current default fimath object.

    • "Other:UserSpecified" — Use the InputFimath property to specify the default fimath object.

    This property applies only when the ActionLanguage property of the chart is "MATLAB".

    Default fimath object, specified as a string scalar or character vector. When the EmlDefaultFimath property for the chart is "Other:UserSpecified", you can use this property to:

    • Enter an expression that constructs a fimath object.

    • Enter the variable name for a fimath object in the MATLAB or model workspace.

    This property applies only to charts that use MATLAB as the action language.

    Code Generation

    Whether the generated code includes a preprocessor conditional statement for the variant conditions in the chart, specified as a numeric or logical 1 (true) or 0 (false). This property applies only when generating code with Embedded Coder®. For more information, see Control Indicator Lamp Dimmer Using Variant Conditions.

    C Action Language

    Whether to use bit operations in state and transition actions in the chart, specified as a numeric or logical 1 (true) or 0 (false). This property applies only to charts that use C as the action language.

    Debugging

    Debugger properties for the chart, specified as a Stateflow.ChartDebug object with this property:

    • Breakpoints.OnEntry — Whether to set the On Chart Entry breakpoint, specified as a numeric or logical 1 (true) or 0 (false).

    For more information, see Set Breakpoints to Debug Charts.

    Example: chart.Debug.Breakpoints.OnEntry = true;

    Graphical Appearance

    This property is read-only.

    Editor for the chart, specified as a Stateflow.Editor object. You can use this object to control the position, size, and magnification level of the Stateflow Editor window.

    Whether the Stateflow Editor window is displaying the chart, specified as a numeric or logical 1 (true) or 0 (false).

    Background color for the chart, specified as a three-element numeric vector of the form [red green blue] that specifies the red, green, and blue values. Each element must be in the range between 0 and 1.

    Color for the boxes, functions, and states in the chart, specified as a three-element numeric vector of the form [red green blue] that specifies the red, green, and blue values. Each element must be in the range between 0 and 1.

    Color for transitions in the chart, specified as a three-element numeric vector of the form [red green blue] that specifies the red, green, and blue values. Each element must be in the range between 0 and 1.

    Color for junctions in the chart, specified as a three-element numeric vector of the form [red green blue] that specifies the red, green, and blue values. Each element must be in the range between 0 and 1.

    Font for the box, function, and state labels in the chart, specified as a Stateflow.StateFont object with these properties:

    • Name — Font name, specified as a string scalar or character vector. This property also determines the font for annotations in the chart.

    • Angle — Font angle, specified as "NORMAL" or "ITALIC".

    • Weight — Font weight, specified as "NORMAL" or "BOLD".

    • Size — Default font size for new boxes, functions, and states, specified as a scalar. This property also determines the default font size for new annotations in the chart.

    Example: chart.StateFont.Name = "Arial";

    Example: chart.StateFont.Angle = "ITALIC";

    Example: chart.StateFont.Weight = "BOLD;

    Example: chart.StateFont.Size = 8;

    Color for the box, function, and state labels in the chart, specified as a three-element numeric vector of the form [red green blue] that specifies the red, green, and blue values. Each element must be in the range between 0 and 1.

    Font for the transition labels in the chart, specified as a Stateflow.TransFont object with these properties:

    • Name — Font name, specified as a string scalar or character vector.

    • Angle — Font angle, specified as "NORMAL" or "ITALIC".

    • Weight — Font weight, specified as "NORMAL" or "BOLD".

    • Size — Default font size for new transitions, specified as a scalar.

    Example: chart.TransitionFont.Name = "Arial";

    Example: chart.TransitionFont.Angle = "ITALIC";

    Example: chart.TransitionFont.Weight = "BOLD";

    Example: chart.TransitionFont.Size = 8;

    Color for the transition labels in the chart, specified as a three-element numeric vector of the form [red green blue] that specifies the red, green, and blue values. Each element must be in the range between 0 and 1.

    Hierarchy

    This property is read-only.

    Machine that contains the chart, specified as a Stateflow.Machine object.

    This property is read-only.

    Location of the chart in the model hierarchy, specified as a character vector.

    Whether the chart has changed after being opened or saved, specified as a numeric or logical 1 (true) or 0 (false).

    Whether the chart is locked, specified as a numeric or logical 1 (true) or 0 (false). Enable this property to prevent changes in the chart.

    This property is read-only.

    Whether the chart is locked, specified as a numeric or logical 1 (true) or 0 (false). This property is equivalent to the property Locked, but is used internally to prevent changes in the chart during simulation.

    Identification

    Description for the chart, specified as a string scalar or character vector.

    Document link for the chart, specified as a string scalar or character vector.

    User-defined tag for the chart, specified as data of any type.

    This property is read-only.

    Unique identifier, specified as an integer scalar. Use this property to distinguish the chart from other objects in the model. The value of this property is reassigned every time you start a new MATLAB session and may be recycled after an object is deleted.

    Object Functions

    findIdentify specified objects in hierarchy
    getChildrenIdentify children of object
    defaultTransitionsIdentify default transitions in specified object
    dialogOpen properties dialog box
    viewDisplay object in editing environment
    fitToViewZoom in on graphical object

    Examples

    collapse all

    Call the function sfnew to open a new Simulink model that contains an empty Stateflow chart.

    sfnew

    Access the Simulink.Root object by calling the sfroot function.

    rt = sfroot;

    Access the Stateflow.Chart object by calling the find function for the Simulink.Root object.

    chart = find(rt,"-isa","Stateflow.Chart");

    Version History

    Introduced before R2006a

    expand all