Save and Restore Operating Points for Stateflow Charts - MATLAB & Simulink (original) (raw)

An operating point is a snapshot of a Simulink® model during simulation. If your model contains a Stateflow® chart, the operating point includes information about:

You can save the state of a model at a certain time step as an operating point and then use that operating point as the initial state for a simulation. For example, suppose that your simulation starts with an initialization phase. If you save an operating point after the model completes the initialization phase, you can use the operating point as the initial state for your model and get the results of a continuous simulation without starting from time t = 0. For more information, see Use Operating Points to Specify Initial State of Simulation.

You can also use operating points to test the response of a Stateflow chart to different settings, including configurations that are difficult to reach in simulation. You can modify an operating point by changing the values of local, output, or persistent data, the states that are currently active, and the previous state activity recorded by history junctions midway through a simulation. Then, you can use the modified operating point as a starting point of a simulation to test how the chart responds to your changes. For more information, see Test Difficult-to-Reproduce Chart Configurations.

Save Operating Points

To save the final operating point of a Simulink model, select the configuration parameters Final states (Simulink) and Save final operating point (Simulink), specify a variable for the operating point for the model, and run a simulation. Then, access the operating point information for your Stateflow chart by calling the get (Simulink) function using the operating point for the model and the block path to the chart.

For example, suppose that xFinal is the operating point for the modelsf_car, which contains the chart shift_logic.

Stateflow chart shift_logic in the model sf_car.

To access the operating point information for this chart, enter:

op = get(xFinal,"sf_car/shift_logic")

op =

Block: "shift_logic" (handle) (active) Path: sf_car/shift_logic

Contains:

+ gear_state         "State (AND)"          (active)
+ selection_state    "State (AND)"          (active)
  gear               "State output data"    gearType [1, 1]
  down_th            "Local scope data"     double [1, 1]
  up_th              "Local scope data"     double [1, 1]

The operating point lists the states, boxes, functions, and data in the chart in hierarchical order. If name conflicts exist, one or more underscores appear at the end of a name so that all objects have unique identifiers.

To access the operating point information for an object in the chart, use dot notation. For example, to access the operating point information for the top-level stategear_state, enter:

ans =

State: "gear_state" (handle) (active) Path: sf_car/shift_logic/gear_state

Contains:

+ first          "State (OR)"                 
+ fourth         "State (OR)"                 
+ second         "State (OR)"                 
+ third          "State (OR)"         (active)

Similarly, to access the operating point information for the chart outputgear, enter:

ans =

 Description: 'State output data'
    DataType: 'gearType'
        Size: '[1, 1]'
       Range: [1×1 struct]
InitialValue: []
       Value: third

For more information about this example, see Model a Car with Automatic Transmission.

Note

Stateless flow charts have an empty operating point because they do not contain states or persistent data.

Copy Operating Points

To create a copy of the operating point for a Stateflow chart, call the clone function. For example, suppose that you try to copy the operating point op by entering:

op1 = op; op2 = clone(op);

In this case, op1 refers to the same operating point asop, so modifying op1 also modifiesop. In contrast, op2 refers to a different operating point that you can modify without modifying op.

Note

The clone function copies the operating point information for the entire Stateflow chart. You cannot copy the operating point information for a state or data object.

Modify Operating Point Values

To test the response of your Stateflow chart to different settings, you can modify an operating point by changing the values of the local, output, or persistent data, the states that are currently active, and the previous state activity recorded by history junctions during a simulation.

Modify Data Values

To modify the values of local, output, or persistent data, change theValue property of the operating point. For example, suppose thatop contains the operating point for a chart. To modify value of a chart output called output, enter:

op.output.Value = newValue;

When you modify data values:

Modify Current State Activity

To change the states that are currently active in an operating point, call thesetActive function using a leaf state as an argument. This function maintains state consistency by:

However, the chart does not perform exit actions for the previously active states or entry actions for the newly active state. Additionally, the state does not reinitialize any state-parented local data. If you want these actions to occur, you must execute them separately. For example, if your state actions assign values to data, you must assign the values explicitly as described in Modify Data Values.

Modify Previous State Activity

To change the previously active state recorded by a history junction, call thesetPrevActiveChild function using the state that contains the history junction as an argument. The state must not be active when you call this function.

Load Modified Operating Point Information

To load modified operating point information for a Stateflow chart into the operating point for a Simulink model, call the set (Simulink) function. For example, if xFinal is the operating point for the modelsf_car and op contains the modified operating point information for the chart shift_logic, you can save the modified operating point xModified by entering:

xModified = set(xFinal,"sf_car/shift_logic",op);

Note

The set function loads the operating point information for the entire Stateflow chart. You cannot load the operating point information for a state or data object.

Restore Operating Points

To use an operating point as the initial state for a simulation, set the configuration parameter Initial state (Simulink) and specify the variable name for the operating point for the model. When you simulate your model, the simulation starts at the time of the operating point. For more information, see Speed Up Simulation Workflows by Using Model Operating Points (Simulink).

Limitations on Operating Points

Continuous-Time Charts

Operating points for continuous-time charts are read-only. You can save an operating point for a continuous-time chart and use it as the initial state for a simulation. However, you cannot modify the state activity or any data values in the operating point. For more information on continuous-time charts, see Continuous-Time Modeling in Stateflow.

Charts That Use Edge Detection

Stateflow charts that use edge detection operators do not support operating points. If your model contains a chart that uses edge detection, attempting to save the final operating point results in a compile-time error. For more information on edge detection operators, see Detect Changes in Data and Expression Values.

See Also

Model Settings

Objects

Functions

Topics