Watch Stateflow Data Values

Watch Data in the Stateflow Chart

During simulation, if you point at an object in the chart, a tooltip displays the value of the data and the messages that the selected object uses.

Object TypeTooltip Information
States and transitionsValues of data, messages, and temporal logic expressions that the object uses
Graphical, truth table, and MATLAB functionsValues of local data, messages, inputs, and outputs in the scope of the function

Note

If you select the chart properties Export Chart Level Functions and Treat Exported Functions as Globally Visible, then the tooltip does not display temporal logic data.

For example, this chart stops execution before entering the second state. Pointing to the superstate gear displays a tooltip showing the values of:

  • Data such as speed, up_threshold, and TWAIT.

  • Temporal logic expressions such as duration(speed >= up_threshold).

Because the value of duration(speed >= up_threshold) is greater than TWAIT, the chart takes the transition from first to second.

A chart determines the value of data and temporal logic expressions at different stages of a time step. For instance, in the previous example, the chart computes temporal information at the start of each time step and updates speed at the end of each time step. If you advance through the simulation using the Step Forward option and observe data at the end of each time step, the temporal information in the tooltip can appear to lag behind the rest of the data. After observing the value of speed cross the up_threshold, you must step forward twice before duration(speed >= up_threshold) becomes nonzero. To avoid this behavior, use the Step Over option and observe the data at shorter intervals.

Watch Stateflow Data in the MATLAB Command Window

When simulation reaches a breakpoint, you can view the values of Stateflow® data in the MATLAB® Command Window. In the following chart, a default transition calls a MATLAB function:

A breakpoint is set at the last executable line of the function:

function stats(vals)
%#codegen

% calculates a statistical mean and standard deviation
% for the values in vals.

len = length(vals);
mean = avg(vals, len);
stdev = sqrt(sum(((vals-avg(vals,len)).^2))/len);
coder.extrinsic('plot');
plot(vals,'-+');  % Breakpoint set at this line

When simulation reaches the breakpoint, you can display Stateflow data in the MATLAB Command Window.

  1. At the MATLAB prompt, press Enter.

    A debug>> prompt appears.

  2. Type whos to view the data that is visible at the current scope.

  3. Enter the name of data array vals at the prompt to display its value.

  4. Enter vals(2:3) to view specific values of that array.

The Command Line Debugger provides these commands during simulation:

Command

Description

dbstep

Advance to next executable line of code.

dbstep [in/out]

When debugging MATLAB functions in a chart:

  • dbstep [in] advances to the next executable line of code. If that line contains a call to another function, execution continues to the first executable line of the function.

  • dbstep [out] executes the rest of the function and stops just after leaving the function.

dbcont

Continue execution to next breakpoint.

dbquit (ctrl-c)

Stop simulation of the model. Press Enter after this command to return to the command prompt.

help

Display help for command-line debugging.

print var

...or...

var

Display the value of the variable var.

var (i)Display the value of the ith element of the vector or matrix var.
var (i:j)Display the value of a submatrix of the vector or matrix var.

save

Saves all variables to the specified file. Follows the syntax of the MATLAB save command. To retrieve variables in the MATLAB base workspace, use the load command after simulation has ended.

whos

Display the size and class (type) of all variables in the scope of the halted MATLAB function in your chart.

You can issue any other MATLAB command at the debug>> prompt but the results are executed in the Stateflow workspace. For example, you can issue the MATLAB command plot(var) to plot the values of the variable var.

To issue a command in the MATLAB base workspace at the debug>> prompt, use the evalin command with the first argument 'base' followed by the second argument command, for example, evalin('base','whos').

To return to the MATLAB base workspace, use the dbquit command.

Watch Data in the Stateflow Breakpoints and Watch Window

In the Watch tab of the Stateflow Breakpoints and Watch window, you can view current data and messages when simulation pauses. The Watch tab displays a list of watch data, and highlights the values that changed since the last time simulation paused. In the Watch tab, you can expand a message to view the message queue and message data values. To add Stateflow data or messages to the watch data list:

  1. In the chart, right-click an object that uses the data or message.

  2. Select Add to Watch Window.

  3. Choose the data or message.

To add active state data and truth table data to the watch list, from the Model Explorer, open the Data Properties dialog box. Select Add to Watch Window.

You can choose the display format for each data type. For more information, see Format Watch Display.