When working with Stateflow in MATLAB, runtime information about states and flow diagrams can be accessed during simulation. MATLAB provides a Stateflow API that enables programmatic interaction with charts, states, transitions, and data.
The ‘sfroot’ function retrieves the root of the Stateflow hierarchy. From there, the ‘find’ method can be used to locate the desired model. Once the model is identified, a specific chart can be accessed, and the currently active states can be queried.
A sample code snippet is as shown below:
rt = sfroot;
model = rt.find('-isa', 'Stateflow.Block', '-and', 'Name', 'YourChartName');
chart = model.Chart;
activeStates = chart.activeState;
disp(activeStates.Name);
To monitor which state is active at each simulation time step, it is also possible to use a MATLAB Function block or enable data logging to export state information to the workspace.
For more information, please refer to the documentation using the following commands in the MATLAB command line:
web(fullfile(docroot, " /stateflow/ref/sfroot.html "));
web(fullfile(docroot, "/matlab/ref/find.html "));