Stateflow® Getting Started Guide
Stateflow® Getting Started Guide
R2014a
How to Contact MathWorks
www.mathworks.com Web
comp.soft-sys.matlab Newsgroup
www.mathworks.com/contact_TS.html Technical Support
508-647-7000 (Phone)
508-647-7001 (Fax)
Trademarks
MATLAB and Simulink are registered trademarks of The MathWorks, Inc. See
www.mathworks.com/trademarks for a list of additional trademarks. Other product or brand
names may be trademarks or registered trademarks of their respective holders.
Patents
MathWorks products are protected by one or more U.S. patents. Please see
www.mathworks.com/patents for more information.
Revision History
June 2004 First printing New for Version 6.0 (Release 14)
October 2004 Online only Revised for Version 6.1 (Release 14SP1)
March 2005 Online only Revised for Version 6.2 (Release 14SP2)
September 2005 Online only Revised for Version 6.3 (Release 14SP3)
October 2005 Reprint Version 6.0
March 2006 Second printing Revised for Version 6.4 (Release 2006a)
September 2006 Reprint Version 6.5 (Release 2006b)
March 2007 Online only Rereleased for Version 6.6 (Release 2007a)
September 2007 Third printing Rereleased for Version 7.0 (Release 2007b)
March 2008 Fourth printing Revised for Version 7.1 (Release 2008a)
October 2008 Fifth printing Revised for Version 7.2 (Release 2008b)
March 2009 Sixth printing Revised for Version 7.3 (Release 2009a)
September 2009 Online only Revised for Version 7.4 (Release 2009b)
March 2010 Online only Revised for Version 7.5 (Release 2010a)
September 2010 Online only Revised for Version 7.6 (Release 2010b)
April 2011 Seventh printing Revised for Version 7.7 (Release 2011a)
September 2011 Online only Revised for Version 7.8 (Release 2011b)
March 2012 Online only Revised for Version 7.9 (Release 2012a)
September 2012 Online only Revised for Version 8.0 (Release 2012b)
March 2013 Online only Revised for Version 8.1 (Release 2013a)
September 2013 Online only Revised for Version 8.2 (Release 2013b)
March 2014 Online only Revised for Version 8.3 (Release 2014a)
Contents
v
Running the Model . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2-10
vi Contents
Writing a During Action . . . . . . . . . . . . . . . . . . . . . . . . . . . . 5-6
vii
Simulating the Air Controller Chart . . . . . . . . . . . . . . . . . . 8-8
viii Contents
1
Introduction to the
Stateflow Product
With Stateflow you can design logic for supervisory control, task scheduling,
and fault management applications. Stateflow includes state machines
animation and static and run-time checks for testing design consistency and
completeness before implementation.
Key Features
• Modeling environment, graphical components, and simulation engine for
modeling and simulating complex logic
• Deterministic execution semantics with hierarchy, parallelism, temporal
operators, and events
• State diagrams, state transition tables, and state transition matrices
representing finite state machines
• Flow charts, MATLAB® functions, and truth tables for representing
algorithms
• State diagram animation, state activity logging, data logging, and
integrated debugging for analyzing the design and detecting runtime errors
• Static and run-time checks for transition conflicts, cyclic problems, state
inconsistencies, data-range violations, and overflow conditions
• Mealy and Moore finite-state machines
1-2
Anatomy of a Stateflow® Chart
1-3
1 Introduction to the Stateflow® Product
This chart is part of an example model called sf_car that ships with the
Stateflow product. To explore the model further, open it by typing sf_car at
the command prompt in the MATLAB Command Window.
1-4
How Stateflow® Software Works with Simulink® Software
You can develop your Stateflow chart before or after the Simulink model in
which it will run. Stateflow software comes with its own editor and debugger,
which helps you simulate and test the chart logic before you integrate it with
a Simulink model. You can test a Stateflow chart independently of its parent
model by attaching a Source block as an input and a Sink block as an output.
During simulation, you can animate the chart to get visual feedback about
its run-time behavior.
1-5
1 Introduction to the Stateflow® Product
b Between which modes can you transition? Are there any operating
modes that can run in parallel?
After identifying your system attributes, you can follow a basic workflow for
building Stateflow charts to model event-driven systems:
1-6
Installing Stateflow® Software
Installation Instructions
Stateflow software runs on Windows® and UNIX® operating systems. Your
MATLAB installation documentation provides all the information you
need to install Stateflow software. Before installing the product, you must
obtain and activate a license (see instructions in your MATLAB installation
documentation) and install prerequisite software (see “Prerequisite Software”
on page 1-7 for a complete list).
Prerequisite Software
Before installing Stateflow software, you need the following products:
• MATLAB
• Simulink
• C or C++ compiler supported by the MATLAB technical computing
environment
The compiler is required for compiling code generated by Stateflow
software for simulation. The 32-bit Windows version of the Stateflow
product comes with a C compiler (lcc.exe) and a make utility (lccmake).
Both tools are installed in the folder matlabroot\sys\lcc. If you do not
configure MATLAB to use any other compiler on Windows operating
systems, Stateflow software uses lcc to build targets.
The 64–bit Windows version of the Stateflow product comes with a default
C compiler, LCC-win64. LCC-win64 is used for simulation and acceleration.
1-7
1 Introduction to the Stateflow® Product
LCC-win64 is only used when another compiler has not been configured
in MATLAB.
Product Dependencies
For information about product dependencies and requirements, see
www.mathworks.com/products/stateflow/requirements.html.
www.mathworks.com/support/compilers/current_release/
1-8
Installing Stateflow® Software
1 Click the right mouse button on the Windows desktop to display the
desktop menu.
2 Select Properties from the desktop menu to display the Windows Display
Properties dialog box.
4 Choose a setting that is more than 256 colors and click OK.
1-9
1 Introduction to the Stateflow® Product
Related Products
Several MathWorks® products extend the capabilities of Stateflow
software. For information about these related products, see
www.mathworks.com/products/stateflow/related.htm.
1-10
2
2-2
The Stateflow® Chart
As you can see from the title bar, the chart is called Air Controller and is part
of a Simulink model called sf_aircontrol. When you build this chart, you
will learn how to work with the following elements of state-transition charts:
• PowerOn
• PowerOff
• FAN1.On
• FAN1.Off
• FAN2.On
• FAN2.Off
2-3
2 The Stateflow® Chart You Will Build
• FAN1
• FAN2
• SpeedValue
Transitions. Graphical objects that link one state to another and specify a
direction of flow. Transitions are represented by unidirectional arrows:
• PowerOn to PowerOff
• PowerOff to PowerOn
• FAN1.On to FAN1.Off
• FAN1.Off to FAN1.On
• FAN2.On to FAN2.Off
• FAN2.Off to FAN2.On
• At the chart level, the default transition indicates that the state PowerOff
is activated (wakes up) first when the chart is activated.
• In the FAN1 and FAN2 states, the default transitions specify that the fans be
powered off when the states are activated.
2-4
The Stateflow® Chart
• entry (en) action in the PowerOff state. Entry actions are executed when
the state is entered (becomes active).
• during (du) action in the SpeedValue state. During actions are executed for
a state while it is active and no valid transition to another state is available.
There are other types of state actions besides entry and during, but they
involve concepts that go beyond the scope of this guide. For more information,
see “Syntax for States and Transitions”.
2-5
2 The Stateflow® Chart You Will Build
The Simulink model passes the temperature of the plant as an input temp to
the Stateflow Air Controller block. Based on the temperature of the plant, the
controller activates zero, one, or two fans, and passes back to the model an
output value airflow that indicates how fast the air is flowing. The amount
of cooling activity depends on the speed of the fans. As air flows faster, cooling
activity increases. The model uses the value of airflow to simulate the effect
of cooling when it computes the air temperature in the plant over time. You
will learn more about these design elements in “Interface with Simulink”.
The Signal Builder block in the Simulink model sends a square wave signal
(CLOCK) to wake up the Stateflow chart at regular intervals and a pulse
signal (SWITCH) to cycle the power on and off for the control system modeled
by the Stateflow chart. You will learn more about these design elements in
“Implementing the Triggers” on page 7-2.
2-6
A Look at the Physical Plant
In this model, the internal temperature of the plant attempts to rise to achieve
steady state with the ambient air temperature, set at a constant 160 degrees
(as shown in “How the Stateflow Chart Works with the Simulink Model” on
page 2-6). The rate at which the internal temperature rises depends in part on
the degree of thermal isolation in the plant and the amount of cooling activity.
Thermal isolation measures how much heat flows into a closed structure,
based on whether the structure is constructed of materials with insulation or
conduction properties. Here, thermal isolation is represented by a Gain block,
labeled Thermal Isolation. The Gain block provides a constant multiplier
that is used in calculating the temperature in the plant over time.
2-7
2 The Stateflow® Chart You Will Build
Over time, the subsystem calculates the cooling effect inside the plant, taking
into account thermal isolation and cooling activity. The cooling effect is the
time-derivative of the temperature and is the input to the Integrator block in
the Physical Plant subsystem. Let the variable temp_change represent the
time derivative of temperature. Note that temp_change can be a warming or
cooling effect, depending on whether it is positive or negative, based on this
equation:
temp_change = ((ambient − temp) ∗ ( thermal isolation multiplier )) + ((ambient − temp) ∗ ( cooling factor))
2-8
A Look at the Physical Plant
The Integrator block computes its output temp from the input temp_change,
as follows:
t
temp(t) = ∫ temp _ change(t) dt + 70
t0
Note In this model, the initial condition of the Integrator block is 70 degrees.
temp is passed back to the Stateflow Air Controller chart to determine how
much cooling is required to maintain the ideal plant temperature.
2-9
2 The Stateflow® Chart You Will Build
2-10
Running the Model
Tip Position the Air Controller chart and the Scope window so they are
both visible on your desktop.
5 Start simulation in the Air Controller chart by selecting Simulation > Run.
As the simulation runs, the chart becomes active (wakes up) in the
PowerOff state. Notice in the Scope that until PowerOn becomes active, the
temperature rises unchecked. After approximately 350 seconds into the
simulation, a rising edge signal switches power on and the fans become
active.
When the temperature rises above 120 degrees, FAN1 cycles on. When the
temperature exceeds 150 degrees, FAN2 cycles on to provide additional
cooling. Ultimately, FAN1 succeeds in maintaining the temperature at 120
degrees until a falling edge signal switches power off again at 500 seconds.
Then, the temperature begins to rise again.
2-11
2 The Stateflow® Chart You Will Build
2-12
Running the Model
Where to go next. Now you are ready to start building the Air Controller
chart. Begin at phase 1 of the workflow: “Implementing the Interface with
Simulink” on page 3-2.
2-13
2 The Stateflow® Chart You Will Build
2-14
3
2
Define the states 6
for modeling each Simulate
mode of operation the chart
1 3 5 7
Define the Define Decide how to Debug
interface state actions trigger the chart the chart
to Simulink and variables
4
Define the
transitions
between states
In phase 1 of this workflow, you define the interface to the Simulink model.
3 Defining the Interface to the Simulink® Model
3-2
Implementing the Interface with Simulink®
Property Value
Name temp
Scope Input
Size Inherit from Simulink input signal for compatibility
Data type Inherit from Simulink input signal for compatibility
Port 1
Watch in debugger Enable
Type of Output. Speed of airflow, based on how many fans are operating
Property Value
Name airflow
Scope Output
Data type 8-bit unsigned integer (uint8)
(The values can be only 0, 1, or 2.)
Port 1
Watch in debugger Enable
3-3
3 Defining the Interface to the Simulink® Model
The model is incomplete because it does not include the Stateflow chart
that you will build as you work through the exercises in this guide. Instead,
the model contains several nonfunctional blocks: the Terminator, Inport,
and Annotation blocks.
3-4
Implementing the Interface with Simulink®
Tip Hold down the Shift key to select multiple objects, and then press
Delete.
3-5
3 Defining the Interface to the Simulink® Model
f Click Save.
4 On the toolbar of the Simulink model, click the Library Browser icon:
3-6
Implementing the Interface with Simulink®
3-7
3 Defining the Interface to the Simulink® Model
6 Click the label Chart under the Stateflow block and rename it Air
Controller.
3-8
Implementing the Interface with Simulink®
sfnew
3-9
3 Defining the Interface to the Simulink® Model
2 Add a data element to hold the value of the temperature input from the
Simulink model:
a In the editor menu, select Chart > Add Inputs & Outputs > Data
Input From Simulink.
3-10
Implementing the Interface with Simulink®
The Data properties dialog box opens on your desktop with the General
tab selected:
The default values in the dialog box depend on the scope — in this case,
a data input.
b In the Name field, change the name of the data element to temp.
3-11
3 Defining the Interface to the Simulink® Model
c Leave the following fields at their default values in the General tab
because they meet the design requirements:
Note Ports are assigned to inputs and outputs in the order they are
created. Because temp is the first input you created, it is assigned to
input port 1.
Enabling Watch in debugger lets you examine the value of temp during
breakpoints in simulation. You will try this in “Setting Simulation
Parameters and Breakpoints” on page 8-2.
e Click OK to apply the changes and close the dialog box.
3 Add a data element to hold the value of the airflow output from the Air
Controller chart:
a In the editor menu, select Chart > Add Inputs & Outputs > Data
Output To Simulink.
3-12
Implementing the Interface with Simulink®
The Data properties dialog box opens on your desktop, this time with
different default values, associated with the scope Output:
b In the Name field of the Data properties dialog box, change the name of
the data element to airflow.
3-13
3 Defining the Interface to the Simulink® Model
c In the Type field, select uint8 (8-bit unsigned integer) from the submenu.
3-14
Implementing the Interface with Simulink®
Notice that the input temp and output airflow have been added to the
Stateflow block:
Tip You might need to enlarge the Air Controller block to see the input
and output clearly. To change the size of the block:
a Select the block and move your pointer over one of the corners until it
changes to this shape:
b Hold down the left mouse button and drag the block to the desired size.
3-15
3 Defining the Interface to the Simulink® Model
5 Save Stage1Interface.
Tip There are several ways to add data objects to Stateflow charts. You used
the Stateflow Editor, which lets you add data elements to the Stateflow chart
that is open and has focus. However, to add data objects not just to a chart,
but anywhere in the Stateflow design hierarchy, you can use a tool called
the Model Explorer. This tool also lets you view and modify the data objects
you have already added to a chart. For more information, see “Stateflow
Hierarchy of Objects” and “How to Add Data Using the Model Explorer” in
the Stateflow User’s Guide. You can also add data objects programmatically
using the Stateflow API, as described in “Create Stateflow Objects” in the
Stateflow API Guide.
3-16
Implementing the Interface with Simulink®
Tip You can use a shortcut for automatically connecting blocks. Select the
source block, and then hold down the Ctrl key and left-click the destination
block.
2 Connect the output temp from the Physical Plant to the corresponding
input in Air Controller by drawing a branch line from the line that connects
temp to the Scope:
a Place your pointer on the line where you want the branch line to start.
b While holding down the Ctrl key, press and hold down the left mouse
button.
3-17
3 Defining the Interface to the Simulink® Model
c Drag your pointer to the input port for temp on the left side of the Air
Controller block.
d Release the mouse button and the Ctrl key.
Tip To reposition connections, move your cursor over the end of the
line. When the cursor changes to a circle, select the end of the line with
the left mouse button and drag the line to a new location. For more
information, see “Connect Blocks”.
3 Save Stage1Interface.
3-18
Implementing the Interface with Simulink®
Where to go next. Now you are ready to model the operating modes with
states. See “Implementing the States to Represent Operating Modes” on
page 4-2.
3-19
3 Defining the Interface to the Simulink® Model
3-20
4
2
Define the states 6
for modeling each Simulate
mode of operation the chart
1 3 5 7
Define the Define Decide how to Debug
interface state actions trigger the chart the chart
to Simulink and variables
4
Define the
transitions
between states
In phase 2 of this workflow, you define the states for modeling each mode
of operation.
4 Defining the States for Modeling Each Mode of Operation
4-2
Implementing the States to Represent Operating Modes
4-3
4 Defining the States for Modeling Each Mode of Operation
4-4
Implementing the States to Represent Operating Modes
Note Notice the use of dot notation to refer to the On and Off states for FAN1
and FAN2. You use namespace dot notation to give objects unique identifiers
when they have the same name in different parts of the chart hierarchy.
4-5
4 Defining the States for Modeling Each Mode of Operation
4-6
Implementing the States to Represent Operating Modes
The Air Controller chart requires both types of states. Here is a breakdown of
the exclusive (OR) and parallel (AND) states required for the Stateflow chart:
1 Open the model Stage1Interface — either the one you created in the
previous exercise or the supplied model for stage 1.
4-7
4 Defining the States for Modeling Each Mode of Operation
To open the supplied model, enter the following command at the MATLAB
prompt:
The Stateflow Editor for Air Controller opens on your desktop. Notice the
object palette on the left side of the editor window. This palette displays a
set of tools for drawing graphical chart objects, including states:
6 Click in the upper-left corner of the drawing area to place the state.
The new state appears with a blinking text cursor in its upper-left corner.
Tip If you click away from the text cursor before typing the new name, the
cursor changes to a question mark. Click the question mark to restore
the text cursor.
4-8
Implementing the States to Represent Operating Modes
4-9
4 Defining the States for Modeling Each Mode of Operation
10 Click the state tool icon again and draw a smaller state named PowerOff at
the bottom of the drawing area, like this:
11 Save the chart by selecting File > Save in the Stateflow Editor, but leave
the chart open for the next exercise.
4-10
Implementing the States to Represent Operating Modes
A submenu opens, presenting tasks you can perform and properties you
can set for the selected state.
3 Save the model Stage2States, but leave the chart open for the next
exercise.
1 Left-click the state tool icon in the Stateflow Editor and place two states
inside the PowerOn state.
Tip Instead of using the state tool icon to add multiple states, you can
right-click inside an existing state and drag a copy to a new position in the
chart. This shortcut is convenient when you need to create states of the
same size and shape, such as the fan states.
4-11
4 Defining the States for Modeling Each Mode of Operation
The borders of the two states appear as dashed lines, indicating that
they are parallel states. Note also that the substates display numbers in
their upper-right corners. These numbers specify the order of execution.
Although multiple parallel (AND) states in the same chart are activated
concurrently, the chart must determine when to execute each one during
simulation.
You have created hierarchy in the Air Controller chart. PowerOn is now a
superstate while FAN1 and FAN2 are substates. Your chart should look
something like this:
4-12
Implementing the States to Represent Operating Modes
Note Your chart might not show the same execution order for parallel
substates FAN1 and FAN2. The reason is that, by default, Stateflow software
orders parallel states based on order of creation. If you add FAN2 before
FAN1 in your chart, FAN2 moves to the top of the order. You will fine-tune
order of activation in a later exercise, “Setting Explicit Ordering of Parallel
States” on page 4-14.
Tip If you want to move a state together with its substates — and any
other graphical objects it contains — double-click the state. It turns gray,
indicating that the state is grouped with the objects inside it and that they
can be moved as a unit. To ungroup the objects, double-click the state again.
4 Save the model Stage2States, but leave the chart open for the next
exercise.
1 Add another substate to PowerOn under FAN1 and FAN2, either by using the
state tool icon or copying an existing state in the chart.
You might need to resize the substate to prevent overlap with other
substates, but remain within the borders of PowerOn.
4-13
4 Defining the States for Modeling Each Mode of Operation
Like FAN1 and FAN2, SpeedValue appears as a parallel substate because its
parent, the superstate PowerOn, has parallel decomposition.
3 Save the model Stage2States, but leave the chart open for the next
exercise, “Setting Explicit Ordering of Parallel States” on page 4-14.
1 In the Stateflow Editor, select File > Model Properties > Chart
Properties.
4-14
Implementing the States to Represent Operating Modes
2 In the Chart properties dialog box, verify that the check box User
specified state/transition execution order is selected and click OK.
4-15
4 Defining the States for Modeling Each Mode of Operation
Note This option also lets you explicitly specify the order in which
transitions execute when there is a choice of transitions to take from one
state to another. This behavior does not apply to the Air Controller chart
because it is deterministic: for each exclusive (OR) state, there is one and
only one transition to a next exclusive (OR) state. You will learn more
about transitions in “Drawing the Transitions Between States” on page 6-4.
3 Assign order of execution for each parallel state in the Air Controller chart:
4 Save the model Stage2States, but leave the chart open for the next
exercise, “Adding the On and Off States for the Fans” on page 4-16.
4-16
Implementing the States to Represent Operating Modes
2 Resize the substates to fit within the borders of FAN1 and FAN2.
3 In each fan state, name one substate On and name the other Off.
Your Air Controller chart should now look something like this:
Where to go next. Now you are ready to specify the actions that execute
when a state is active. See “Implementing State Actions” on page 5-2.
4-17
4 Defining the States for Modeling Each Mode of Operation
4-18
5
2
Define the states 6
for modeling each Simulate
mode of operation the chart
1 3 5
Define 7
Define the Decide how to Debug
interface state actions trigger the chart
and variables the chart
to Simulink
4
Define the
transitions
between states
The states in the Air Controller chart do not require local or persistent data,
only the input and output data that you defined in “Defining the Inputs and
Outputs” on page 3-9.
5-2
Implementing State Actions
When building the Air Controller chart, you need to determine whether any
states should perform actions. Some charts do not use state actions at all, but
instead perform actions only during the transitions from state to state. Other
charts require both types of state actions.
For the Air Controller chart, think about whether data values need to be
initialized or modified during any of its modes of operation. Recall that the
chart receives the air temperature of the plant as the input temp from the
Physical Plant subsystem. The chart then uses this value to activate fans if
necessary to cool the air. Based on how many fans are running, the chart sets
a value that indicates speed of airflow, which it sends at each time step to
the Simulink subsystem as the output airflow. The Air Controller does not
modify the value of temp, but does need to update the value of airflow.
The next consideration is when to update, and for that matter, initialize
the value of airflow. If the when translates to a mode of operation, the
action should likely be performed by the state that represents that mode of
operation. Here is the analysis for the Air Controller chart:
5-3
5 Defining State Actions and Variables
For example, you can use entry actions to initialize data, during actions
to update data, and exit actions to configure data for the next transition.
(There are other types of state actions, but they involve concepts that go
beyond the scope of this guide. For more information, see “Syntax for States
and Transitions”.)
5-4
Implementing State Actions
1 Open the model Stage2States — either the one you created in the previous
exercises or the supplied model for stage 2.
To open the supplied model, enter the following command at the MATLAB
prompt:
4 Click inside the PowerOff state after the last letter of its name label to
get a blinking text cursor.
entry: airflow = 0;
5-5
5 Defining State Actions and Variables
6 Save Stage3Actions, but leave the chart open for the next exercise.
1 Click inside the SpeedValue state after the last letter of its name label to
get a blinking text cursor.
5-6
Implementing State Actions
Where to go next. Now you are ready to specify conditions for when
state-to-state transitions occur. See “Adding the Transitions” on page 6-2.
5-7
5 Defining State Actions and Variables
5-8
6
Defining Transitions
Between States
2
Define the states 6
for modeling each Simulate
mode of operation the chart
3 5
1 Define 7
Define the Decide how to Debug
state actions trigger the chart
interface and variables the chart
to Simulink
4
Define the
transitions
between states
6-2
Adding the Transitions
Exclusive (OR) states require transitions. Recall that no two exclusive states
can be active at the same time. Therefore, you need to add transitions to
specify when and where control flows from one exclusive state to another.
The Air Controller chart models a system in which power can cycle on and off
and, while power is on, fans can cycle on and off. Six exclusive (OR) states
represent these operating modes. To model this activity, you need to add the
following transitions between exclusive (OR) states:
• PowerOff to PowerOn
• PowerOn to PowerOff
• FAN1.Off to FAN1.On
• FAN1.On to FAN1.Off
• FAN2.Off to FAN2.On
• FAN2.On to FAN2.Off
In each case, the initial state should be off so you will add default transitions
to the states PowerOff, FAN1.Off, and FAN2.Off.
6-3
6 Defining Transitions Between States
6-4
Adding the Transitions
You will model this activity by drawing transitions between the PowerOn
and PowerOff states and between the On and Off states for each fan. Follow
these steps:
1 Open the model Stage3Actions — either the one you created in the
previous exercises or the supplied model for stage 3.
To open the supplied model, enter the following command at the MATLAB
prompt:
a Move your pointer over the top edge of PowerOff until the pointer shape
changes to crosshairs.
b Hold down the left mouse button, drag your pointer to the bottom edge of
PowerOn, and release the mouse.
6-5
6 Defining Transitions Between States
6-6
Adding the Transitions
6-7
6 Defining Transitions Between States
6 Save Stage4Transitions, but leave the chart open for the next exercise.
1 In the Stateflow Editor, left-click the default transition icon in the object
palette:
6-8
Adding the Transitions
4 When the arrow becomes orthogonal to the edge, release the mouse button.
5 Repeat the same procedure to add default transitions at the top edges of
FAN1.Off and FAN2.Off.
6-9
6 Defining Transitions Between States
6-10
Adding the Transitions
Tip The location of the tail of a default transition determines the state it
activates. Therefore, make sure that your default transition fits completely
inside the parent of the state that it activates. In the Air Controller chart
pictured above, notice that the default transition for FAN1.Off correctly
resides inside the parent state, FAN1. Now consider this chart:
In this example, the tail of the default transition resides in PowerOn, not in
FAN1. Therefore, it will activate FAN1 instead of FAN1.Off.
6 Save Stage4Transitions, but leave the chart open for the next exercise.
As you learned in “Deciding How to Guard the Transitions” on page 6-4, the
fans cycle on and off depending on the air temperature. In this exercise,
you will add conditions to the transitions in FAN1 and FAN2 that model this
behavior.
6-11
6 Defining Transitions Between States
You may need to reposition the condition for readability. Click outside
the condition, then left-click and drag the condition expression to a new
location.
4 Repeat these steps to add the following conditions to the other transitions
in FAN1 and FAN2:
Transition Condition
FAN1.On to FAN1.Off [temp < 120]
FAN2.Off to FAN2.On [temp >= 150]
FAN2.On to FAN2.Off [temp < 150]
6-12
Adding the Transitions
5 Save Stage4Transitions, but leave the chart open for the next exercise.
As you learned in “Deciding How to Guard the Transitions” on page 6-4, the
control system should power on and off at regular intervals. You model this
behavior by first defining an event that occurs at the rising or falling edge of
an input signal, and then associating that event with the transitions between
the PowerOn and PowerOff states.
6-13
6 Defining Transitions Between States
1 In the Stateflow Editor, add an input event by selecting Chart > Add
Inputs & Outputs > Event Input From Simulink.
6-14
Adding the Transitions
4 Look back at the model and notice that a trigger port appears at the top of
the Stateflow block:
6-15
6 Defining Transitions Between States
When you define one or more input events for a chart, Stateflow software
adds a single trigger port to the block. External Simulink blocks can
trigger the input events via a signal or vector of signals connected to the
trigger port.
5 Back in the Stateflow Editor, associate the input event SWITCH with the
transitions:
a Select the transition from PowerOff to PowerOn and click the question
mark to get a text cursor.
b Type the name of the event you just defined, SWITCH.
You might need to reposition the event text for readability. If so, click
outside the text string, left-click the text, and drag it to the desired
location.
c Repeat these steps to add the same event, SWITCH, to the transition from
PowerOn to PowerOff.
6-16
Adding the Transitions
Now that you have associated these transitions with the event SWITCH, the
control system will alternately power on and off every time SWITCH occurs
— that is, every time the chart detects a rising or falling signal edge.
Note that the sf_aircontrol model has already defined the pulse signal
SWITCH in the Signal Builder block at the top level of the model hierarchy:
6-17
6 Defining Transitions Between States
In the next phase of the workflow, you will connect your Stateflow chart to
the SWITCH signal to trigger the transitions between power on and power off.
6 Save Stage4Transitions.
6-18
7
Triggering a Stateflow
Chart
2
Define the states 6
Simulate
for modeling each the chart
mode of operation
1 3 5 7
Define the Define Decide how to Debug
interface state actions trigger the chart the chart
to Simulink and variables
4
Define the
transitions
between states
A signal trigger works best for the Air Controller chart because it needs to
monitor the temperature of the physical plant at regular intervals. To meet
this requirement, you will use a periodic signal to trigger the chart. The
source is a square wave signal called CLOCK, provided by a Signal Builder block
in the Simulink model, described in “How the Stateflow Chart Works with the
Simulink Model” on page 2-6. To harness the signal, you will set up an edge
trigger event that wakes the chart at the rising or falling edge of CLOCK.
The rationale for using an edge trigger in this case is that it uses the
regularity and frequency of the signal to wake up the chart. When using edge
triggers, keep in mind that there can be a delay from the time the trigger
7-2
Implementing the Triggers
occurs to the time the chart begins executing. This is because an edge trigger
causes the chart to execute at the beginning of the next simulation time step,
regardless of when the edge trigger actually occurred during the previous time
step. The Air Controller can tolerate this delay, as long as the edge occurs
frequently enough. (For more information about triggering Stateflow charts,
see “Implement Interfaces to Simulink Models” in the Stateflow User’s Guide.)
Recall that you already defined one edge-triggered event, SWITCH, to guard
the transitions between PowerOff and PowerOn. You will now define a second
edge-triggered event, CLOCK, to wake up the chart.
1 Open the model Stage4Transitions — either the one you created in the
previous exercises or the supplied model for stage 4.
To open the supplied model, enter the following command at the MATLAB
prompt:
4 In the Stateflow Editor, add an input event by selecting Chart > Add
Inputs & Outputs > Event Input From Simulink.
7-3
7 Triggering a Stateflow® Chart
In Stage5Trigger, notice that the two input signals SWITCH and CLOCK feed
into a Mux block where they are joined in an array to a single output. SWITCH
is a pulse signal and CLOCK is a square wave. When you connect the Mux to
the trigger port, the index of the signals in the array are associated with the
like-numbered ports. Therefore, the SWITCH signal at the top input port of the
Mux triggers the event SWITCH on trigger port 1. Likewise, the CLOCK signal
at the second input port of the Mux triggers the event CLOCK on trigger port 2.
1 Click the Mux block, hold down the Ctrl key, and click the Air Controller
block.
7-4
Implementing the Triggers
The output signal of the Mux block connects to the input trigger port of the
Stateflow block. Your model should look like this:
2 Save Stage5Trigger.
Where to go next. Now you are ready to simulate your chart. See “Setting
Simulation Parameters and Breakpoints” on page 8-2.
7-5
7 Triggering a Stateflow® Chart
7-6
8
2
6
Define the states Simulate
for modeling each the chart
mode of operation
1 3
Define 5 7
Define the Decide how to Debug
interface state actions
and variables trigger the chart the chart
to Simulink
4
Define the
transitions
between states
In phase 6 of this workflow, you simulate the chart to test its behavior.
During simulation, you can animate Stateflow charts to highlight states and
transitions as they execute.
8 Simulating the Chart
8-2
Setting Simulation Parameters and Breakpoints
3-9, you specified the data type as uint8 and the size as scalar (the default).
(See “Avoid inheriting output data properties from Simulink blocks” in
the Stateflow User’s Guide.)
Tip You can specify data types and sizes as expressions in which you call
functions that return property values of other variables already defined in
Stateflow, MATLAB, or Simulink software. Such functions include type and
fixdt. For more information, see “Enter Expressions and Parameters for
Data Properties” in the Stateflow User’s Guide.
1 Open the model Stage5Trigger — either the one you created in the
previous exercises or the supplied model for stage 5.
To open the supplied model, enter the following command at the MATLAB
prompt:
8-3
8 Simulating the Chart
Under Simulation time on the right, note that the start and stop times
have been preset for you. You can adjust these times later as you become
more familiar with the run-time behavior of the chart.
c Keep the preset values for now and click OK to close the dialog box.
8-4
Setting Simulation Parameters and Breakpoints
8-5
8 Simulating the Chart
8-6
Setting Simulation Parameters and Breakpoints
Note You can change the speed of animation at any time during
simulation.
3 Leave the Air Controller chart and the debugger open for the next exercise.
Breakpoint Description
Chart Entry Simulation halts when the Stateflow chart wakes
up.
Event Broadcast Simulation halts when an event, such as SWITCH or
CLOCK, occurs.
State Entry Simulation halts when a state becomes active.
You will also learn how to examine data values when simulation pauses.
8-7
8 Simulating the Chart
2 Notice the Browse Data option in the menu bar just above the output
display pane of the debugger:
The Browse Data option appears grayed out, but becomes active when
simulation pauses at a breakpoint. You will use this option in “Simulating
the Air Controller Chart” on page 8-8.
• Parses the chart for state inconsistency errors, like those mentioned in
“Checking That Your Chart Conforms to Best Practices” on page 8-2
• Generates C code that represents the behavior of the chart
8-8
Setting Simulation Parameters and Breakpoints
• Builds the generated code into an executable program for the simulation
target
• Creates a new folder called slprj in the folder where the chart resides to
store the generated files that make up the simulation target
• Creates a MEX (MATLAB executable) file that corresponds to the C source
file
The MATLAB command line displays status messages during each of these
processes. You should see the following messages in your MATLAB Command
Window, which indicate a successful build:
During simulation, you will change breakpoints and observe data values
when execution pauses. Follow these steps:
1 In Stage6Simulate, open the Scope block. Position the Scope block, Air
Controller chart, and debugger so all are visible on your desktop.
After the simulation target is built, the chart appears with a gray
background, indicating that simulation has begun. Simulation continues
until it reaches the first breakpoint, when the Air Controller chart wakes
up. Notice that the status panel at the top of the debugger provides a
snapshot of simulation activities at the breakpoint.
8-9
8 Simulating the Chart
3 Click the down arrow to the right of the Browse Data option and select
Watched Data (Current Chart) from the submenu.
By selecting this option, you can examine the values of the input temp and
output airflow. Recall that you configured these objects as data to be
watched in the debugger in the exercise “Defining the Inputs and Outputs”
on page 3-9.
Tip You can also view data values from the MATLAB command line at
simulation breakpoints. Here’s how to do it:
a When simulation pauses at a breakpoint, click in the MATLAB command
line and press the Enter key.
The MATLAB Command Window displays the value of the data object.
4 Scroll down in the output display pane of the debugger to view the values
of temp and airflow.
Note that temp is 70 (below the threshold for turning on FAN1) and airflow
is 0 (indicating that no fans are running).
8-10
Setting Simulation Parameters and Breakpoints
The default transition activates PowerOff after the chart wakes up.
8-11
8 Simulating the Chart
8-12
Setting Simulation Parameters and Breakpoints
Note in the output display pane of the debugger that temp has risen to over
157 degrees. The Scope displays the temperature pattern:
8-13
8 Simulating the Chart
8 To speed through the rest of the simulation, clear all breakpoints, change
animation delay to 0, and click Continue.
Notice that FAN1 continues to cycle on and off as temp fluctuates between
119 and 120 degrees until power cycles off at 500 seconds. After power
cycles off, the fans stop running and temp begins to rise unchecked until
simulation reaches stop time at 600 seconds.
8-14
Setting Simulation Parameters and Breakpoints
Note This display should look the same as the Scope after running the
prebuilt model in “Running the Model” on page 2-10.
8-15
8 Simulating the Chart
9 Save Stage6Simulate, and close all other windows and dialog boxes.
Where to go next. Now you are ready to use the debugger for detecting
state inconsistencies and data range violations. See “Debugging Common
Modeling Errors” on page 9-2.
8-16
9
2 6
Define the states Simulate
for modeling each the chart
mode of operation
1 3 5 7
Define the Define Decide how to Debug
interface state actions trigger the chart the chart
to Simulink and variables
4
Define the
transitions
between states
1 Open the model Stage6Simulate — either the one you created in the
previous exercises or the supplied model for stage 6.
To open the supplied model, enter the following command at the MATLAB
prompt:
9-2
Debugging Common Modeling Errors
An error appears in the Diagnostic Viewer. The error indicates that a state
(identified by number) has no default paths to a substate.
Note The state number in your dialog display can differ from the one
pictured above.
6 Locate the offending state in the Air Controller chart, by clicking the link
to the state number.
9-3
9 Debugging the Chart
9 Save Stage7Debug, and leave the chart open for the next exercise.
9-4
Debugging Common Modeling Errors
1 In the Air Controller chart, modify the during action in the SpeedValue
state by adding 1 to the computed value, as follows:
Recall that in “Defining the Inputs and Outputs” on page 3-9, you set a
limit range of 0 to 2 for airflow. By adding 1 to the computation, the
value of airflow will exceed the upper limit of this range when two fans
are running.
3 Start simulation.
9-5
9 Debugging the Chart
4 To isolate the problem, double-click the last line in the status panel at
the bottom of the dialog box:
The Model Explorer opens on your desktop, allowing you to view the
properties of airflow in the right, read-only pane (read-only because
simulation is running).
Note The ID number of the data that appears in the debugger can vary
from the value shown.
9-6
Debugging Common Modeling Errors
airflow = 3
7 Stop simulation.
9-7
9 Debugging the Chart
8 Restore the during action to its previous code, and then restart simulation
for the model.
9-8