100% found this document useful (1 vote)
287 views

Stateflow® Getting Started Guide

Stateflow® Getting Started Guide
Copyright
© © All Rights Reserved
Available Formats
Download as PDF, TXT or read online on Scribd
100% found this document useful (1 vote)
287 views

Stateflow® Getting Started Guide

Stateflow® Getting Started Guide
Copyright
© © All Rights Reserved
Available Formats
Download as PDF, TXT or read online on Scribd
You are on page 1/ 126

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

[email protected] Product enhancement suggestions


[email protected] Bug reports
[email protected] Documentation error reports
[email protected] Order status, license renewals, passcodes
[email protected] Sales, pricing, and general information

508-647-7000 (Phone)

508-647-7001 (Fax)

The MathWorks, Inc.


3 Apple Hill Drive
Natick, MA 01760-2098
For contact information about worldwide offices, see the MathWorks Web site.
Stateflow® Getting Started Guide
© COPYRIGHT 2004–2014 by The MathWorks, Inc.
The software described in this document is furnished under a license agreement. The software may be used
or copied only under the terms of the license agreement. No part of this manual may be photocopied or
reproduced in any form without prior written consent from The MathWorks, Inc.
FEDERAL ACQUISITION: This provision applies to all acquisitions of the Program and Documentation
by, for, or through the federal government of the United States. By accepting delivery of the Program
or Documentation, the government hereby agrees that this software or documentation qualifies as
commercial computer software or commercial computer software documentation as such terms are used
or defined in FAR 12.212, DFARS Part 227.72, and DFARS 252.227-7014. Accordingly, the terms and
conditions of this Agreement and only those rights specified in this Agreement, shall pertain to and govern
the use, modification, reproduction, release, performance, display, and disclosure of the Program and
Documentation by the federal government (or other entity acquiring for or through the federal government)
and shall supersede any conflicting contractual terms or conditions. If this License fails to meet the
government’s needs or is inconsistent in any respect with federal procurement law, the government agrees
to return the Program and Documentation, unused, to The MathWorks, Inc.

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

Introduction to the Stateflow Product


1
Stateflow Product Description . . . . . . . . . . . . . . . . . . . . . . 1-2
Key Features . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1-2

Anatomy of a Stateflow Chart . . . . . . . . . . . . . . . . . . . . . . . 1-3

How Stateflow Software Works with Simulink


Software . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1-5

Use C Chart to Model Event-Driven System . . . . . . . . . . 1-6

Installing Stateflow Software . . . . . . . . . . . . . . . . . . . . . . . 1-7


Installation Instructions . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1-7
Prerequisite Software . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1-7
Product Dependencies . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1-8
Setting Up Your Own Target Compiler . . . . . . . . . . . . . . . . 1-8
Using Stateflow Software on a Laptop Computer . . . . . . . . 1-9

Related Products . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1-10

The Stateflow Chart You Will Build


2
The Stateflow Chart . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2-2

How the Stateflow Chart Works with the Simulink


Model . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2-6

A Look at the Physical Plant . . . . . . . . . . . . . . . . . . . . . . . . 2-7

v
Running the Model . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2-10

Defining the Interface to the Simulink Model


3
Implementing the Interface with Simulink . . . . . . . . . . . 3-2
Build It Yourself or Use the Supplied Model . . . . . . . . . . . . 3-2
Design Considerations for Defining the Interface . . . . . . . . 3-2
Adding a Stateflow Block to a Simulink Model . . . . . . . . . . 3-4
Defining the Inputs and Outputs . . . . . . . . . . . . . . . . . . . . . 3-9
Connecting the Stateflow Block to the Simulink
Subsystem . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3-16

Defining the States for Modeling Each Mode of


Operation
4
Implementing the States to Represent Operating
Modes . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4-2
Build It Yourself or Use the Supplied Model . . . . . . . . . . . . 4-2
Design Considerations for Defining the States . . . . . . . . . . 4-2
Adding the Power On and Power Off States . . . . . . . . . . . . 4-7
Adding and Configuring Parallel States . . . . . . . . . . . . . . . 4-10
Adding the On and Off States for the Fans . . . . . . . . . . . . . 4-16

Defining State Actions and Variables


5
Implementing State Actions . . . . . . . . . . . . . . . . . . . . . . . . 5-2
Build It Yourself or Use the Supplied Model . . . . . . . . . . . . 5-2
Design Considerations for Defining State Actions and
Variables . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 5-2
Writing an Entry Action . . . . . . . . . . . . . . . . . . . . . . . . . . . . 5-4

vi Contents
Writing a During Action . . . . . . . . . . . . . . . . . . . . . . . . . . . . 5-6

Defining Transitions Between States


6
Adding the Transitions . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 6-2
Build It Yourself or Use the Supplied Model . . . . . . . . . . . . 6-2
Design Considerations for Defining Transitions Between
States . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 6-2
Drawing the Transitions Between States . . . . . . . . . . . . . . 6-4
Adding Default Transitions . . . . . . . . . . . . . . . . . . . . . . . . . 6-8
Adding Conditions to Guard Transitions . . . . . . . . . . . . . . . 6-11
Adding Events to Guard Transitions . . . . . . . . . . . . . . . . . . 6-13

Triggering a Stateflow Chart


7
Implementing the Triggers . . . . . . . . . . . . . . . . . . . . . . . . . 7-2
Build It Yourself or Use the Supplied Model . . . . . . . . . . . . 7-2
Design Considerations for Triggering Stateflow Charts . . . 7-2
Defining the CLOCK Event . . . . . . . . . . . . . . . . . . . . . . . . . 7-3
Connecting the Edge-Triggered Events to the Input
Signals . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 7-4

Simulating the Chart


8
Setting Simulation Parameters and Breakpoints . . . . . 8-2
Prepare the Chart Yourself or Use the Supplied Model . . . 8-2
Checking That Your Chart Conforms to Best Practices . . . 8-2
Setting the Length of the Simulation . . . . . . . . . . . . . . . . . 8-3
Configuring Animation for the Chart . . . . . . . . . . . . . . . . . 8-4
Setting Breakpoints to Observe Chart Behavior . . . . . . . . . 8-7

vii
Simulating the Air Controller Chart . . . . . . . . . . . . . . . . . . 8-8

Debugging the Chart


9
Debugging Common Modeling Errors . . . . . . . . . . . . . . . 9-2
Debugging State Inconsistencies . . . . . . . . . . . . . . . . . . . . . 9-2
Debugging Data Range Violations . . . . . . . . . . . . . . . . . . . . 9-4

viii Contents
1

Introduction to the
Stateflow Product

This chapter describes Stateflow® event-based modeling software and its


components.

• “Stateflow Product Description” on page 1-2


• “Anatomy of a Stateflow Chart” on page 1-3
• “How Stateflow Software Works with Simulink Software” on page 1-5
• “Use C Chart to Model Event-Driven System” on page 1-6
• “Installing Stateflow Software” on page 1-7
• “Related Products” on page 1-10
1 Introduction to the Stateflow® Product

Stateflow Product Description


Model and simulate decision logic using state machines and flow
charts
Stateflow is an environment for modeling and simulating combinatorial and
sequential decision logic based on state machines and flow charts. Stateflow
lets you combine graphical and tabular representations, including state
transition diagrams, flow charts, state transition tables, and truth tables, to
model how your system reacts to events, time-based conditions, and external
input signals.

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

Anatomy of a Stateflow Chart


Here is an example of a Stateflow chart, which models as a finite-state
machine the logic required to shift gears in an automatic transmission system
of a car:

Notice the following details in this chart:

• Each gear and shift position is represented by a state.


• States having a dashed boundary, such as gear_state and
selection_state, are parallel (can be active concurrently).
• States with a solid boundary, such as first, second, third and fourth,
are exclusive (only one can be active at a time).

1-3
1 Introduction to the Stateflow® Product

• Transitions can be triggered by events and conditions.


• Directed-event broadcasts, such as UP and DOWN, trigger selective execution
of chart logic.

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

How Stateflow Software Works with Simulink Software


Stateflow charts run as blocks in a Simulink® model. The Stateflow block
interfaces with other blocks in the model using input and output signals.
Through these connections, Stateflow and Simulink software share data and
respond to events that broadcast between model and chart. For example,
the Stateflow shift_logic block is integrated with the Simulink sf_car
model as shown.

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

Use C Chart to Model Event-Driven System


Before you start building a chart, you identify system attributes by answering
these questions:

1 What are your interfaces?

a What are the event triggers to which your system reacts?

b What are the inputs to your system?

c What are the outputs from your system?

2 Does your system have any operating modes?

a If the answer is yes, what are the operating modes?

b Between which modes can you transition? Are there any operating
modes that can run in parallel?

If your system has no operating modes, the system is stateless. If your


system has operating modes, the system is modal.

After identifying your system attributes, you can follow a basic workflow for
building Stateflow charts to model event-driven systems:

1 Define the interface to Simulink.

2 Define the states for modeling each mode of operation.

3 Define state actions and variables.

4 Define the transitions between states.

5 Decide how to trigger the chart.

6 Simulate the chart.

7 Debug the chart.

1-6
Installing Stateflow® Software

Installing Stateflow Software


In this section...
“Installation Instructions” on page 1-7
“Prerequisite Software” on page 1-7
“Product Dependencies” on page 1-8
“Setting Up Your Own Target Compiler” on page 1-8
“Using Stateflow Software on a Laptop Computer” on page 1-9

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.

Note The LCC-win64 compiler is not available as a general compiler for


use with the command line MEX in MATLAB. It is a C compiler only, and
cannot be used for SIL/PIL modes.

For platforms other than Microsoft® Windows or to install a different


compiler, see “Setting Up Your Own Target Compiler” on page 1-8.

Product Dependencies
For information about product dependencies and requirements, see
www.mathworks.com/products/stateflow/requirements.html.

Setting Up Your Own Target Compiler


If you have multiple MATLAB supported compilers on your system, MATLAB
selects one as your default. You can change the default compiler by calling the
mex setup command, and following the directions.

Tip For a list of supported compilers, see:

www.mathworks.com/support/compilers/current_release/

1-8
Installing Stateflow® Software

Using Stateflow Software on a Laptop Computer


If you plan to run the Microsoft Windows version of the Stateflow product on
a laptop computer, you should configure the Windows color palette to use
more than 256 colors. Otherwise, you may experience unacceptably slow
performance.

To set the Windows graphics palette:

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.

3 Select the Settings panel on the 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

The Stateflow Chart You


Will Build

To get hands-on experience using Stateflow software, you will build a


Stateflow chart in incremental steps that follow the basic workflow described
in “Use C Chart to Model Event-Driven System” on page 1-6. To give you a
context for your development efforts, this chapter describes the purpose and
function of the chart you will build and explains how it interfaces with a
Simulink model. You will also learn how to run a completed version of the
model from the MATLAB command line.

• “The Stateflow Chart” on page 2-2


• “How the Stateflow Chart Works with the Simulink Model” on page 2-6
• “A Look at the Physical Plant” on page 2-7
• “Running the Model” on page 2-10
2 The Stateflow® Chart You Will Build

The Stateflow Chart


You will build a Stateflow chart that maintains air temperature at 120 degrees
in a physical plant. The Stateflow controller operates two fans. The first fan
turns on if the air temperature rises above 120 degrees and the second fan
provides additional cooling if the air temperature rises above 150 degrees.
When completed, your Stateflow chart should look something like this:

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:

Exclusive (OR) states. States that represent mutually exclusive modes


of operation. No two exclusive (OR) states can ever be active or execute at
the same time. Exclusive (OR) states are represented graphically by a solid
rectangle:

The Air Controller chart contains six exclusive (OR) states:

• PowerOn
• PowerOff
• FAN1.On
• FAN1.Off
• FAN2.On
• FAN2.Off

Parallel (AND) states. States that represent independent modes of


operation. Two or more parallel (AND) states at the same hierarchical level
can be active concurrently, although they execute in a serial fashion. Parallel
(AND) states are represented graphically by a dashed rectangle with a
number indicating execution order:

The Air Controller chart contains three parallel (AND) states:

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:

The Air Controller chart contains six transitions, from

• 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

Default transitions. Graphical objects that specify which exclusive (OR)


state is to be active when there is ambiguity between two or more exclusive
(OR) states at the same level in the hierarchy. Default transitions are
represented by arrows with a closed tail:

The Air Controller chart contains default transitions:

• 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

State actions. Actions executed based on the status of a state.

The Air Controller chart contains two types of state actions:

• 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.

Other types of state actions

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”.

Conditions. Boolean expressions that allow a transition to occur when the


expression is true. Conditions appear as labels for the transition, enclosed in
square brackets ([ ]).

The Air Controller chart provides conditions on the transitions between


FAN1.On and FAN1.Off, and between FAN2.On and FAN2.Off, based on the air
temperature of the physical plant at each time step.

Events. Objects that can trigger a variety of activities, including:

• Waking up a Stateflow chart


• Causing transitions to occur from one state to another (optionally in
conjunction with a condition)
• Executing actions

The Air Controller chart contains two edge-triggered events:

• CLOCK wakes up the Stateflow chart at each rising or falling edge of a


square wave signal.
• SWITCH allows transitions to occur between PowerOff and PowerOn at each
rising or falling edge of a pulse signal.

2-5
2 The Stateflow® Chart You Will Build

How the Stateflow Chart Works with the Simulink Model


The Stateflow chart you will build appears as a block named Air Controller
that is connected to the model of a physical plant in the Simulink
sf_aircontrol model. Here is the top-level view of the model:

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

A Look at the Physical Plant


Simulink software models the plant using a subsystem called Physical Plant,
which contains its own group of Simulink blocks. The subsystem provides a
graphical hierarchy for the blocks that define the behavior of the Simulink
model. The inputs, airflow speed and ambient temperature, model the effects
of the controller activity on plant temperature. Here is a look inside the
Physical Plant subsystem:

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

Cooling activity is modeled using a constant multiplier, derived from the


value of airflow, an output from the Stateflow chart. The chart assigns
airflow one of three cooling factors, each a value that serves as an index into
a multiport switch. Using this index, the multiport switch selects a cooling
activity multiplier that is directly proportional to the cooling factor, as follows:

Cooling Factor What It Means Cooling


(Value of Airflow) Activity
0 No fans are running. The value of 0
temp is not lowered.
1 One fan is running. The value -0.05
of temp is lowered by the cooling
activity multiplier.
2 Two fans are running. The value -0.1
of temp is lowered by the cooling
activity multiplier.

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

Running the Model


To see how the sf_aircontrol model works, you can run a completed, tested
version, which includes the Stateflow chart you will build. Here’s how to do it:

1 Start MATLAB software.

If you need instructions, consult your MATLAB documentation.

2 Type sf_aircontrol at the command line.

This command starts Simulink software and opens the sf_aircontrol


model:

3 Double-click the Air Controller block to open the Stateflow chart.

2-10
Running the Model

4 Double-click the Scope block to display the changes in temperature over


time as the model runs.

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.

Note Simulation time can be faster than elapsed time.

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

The Scope captures the temperature fluctuations:

Stopping or pausing simulation

You can stop or pause simulation at any time.

2-12
Running the Model

• To stop simulation, select Simulation > Stop.


• To pause simulation, select Simulation > Pause.

6 Close 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

Defining the Interface to


the Simulink Model

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

Implementing the Interface with Simulink


In this section...
“Build It Yourself or Use the Supplied Model” on page 3-2
“Design Considerations for Defining the Interface” on page 3-2
“” on page 3-4
“Adding a Stateflow Block to a Simulink Model” on page 3-4
“Defining the Inputs and Outputs” on page 3-9
“Connecting the Stateflow Block to the Simulink Subsystem” on page 3-16

Build It Yourself or Use the Supplied Model


To implement the interface yourself, work through the exercises in this
section. Otherwise, open the supplied model by entering this command at
the MATLAB prompt:

addpath(fullfile(docroot, 'toolbox', 'stateflow', 'gs', 'examples'))


Stage1Interface

Design Considerations for Defining the Interface


The following sections describe the rationale for the input and output of the
Stateflow chart.

Inputs Required from Simulink Model

Type of Input. Temperature of the physical plant

Rationale. The purpose of the chart is to control the air temperature in a


physical plant. The goal is to maintain an ideal temperature of 120 degrees
by activating one or two cooling fans if necessary. The chart must check the
plant temperature over time to determine the amount of cooling required.

Properties of Input. The properties of the temperature input are as follows:

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

Outputs Required from Stateflow Chart

Type of Output. Speed of airflow, based on how many fans are operating

Rationale. When the Simulink subsystem determines the temperature of


the physical plant over time, it needs to account for the speed of the airflow.
Airflow speed is directly related to the amount of cooling activity generated by
the fans. As more fans are activated, cooling activity increases and air flows
faster. To convey this information, the Stateflow chart outputs a value that
indicates whether 0, 1, or 2 fans are running. The Simulink subsystem uses
this value as an index into a multiport switch, which outputs a cooling activity
value, as described in “A Look at the Physical Plant” on page 2-7.

Properties of Output. The properties of the airflow output are as follows:

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

Adding a Stateflow Block to a Simulink Model


To begin building your Stateflow chart, you will add a Stateflow block to
a partially built Simulink model called sf_aircontrol_exercise, which
contains the Physical Plant subsystem, described in “A Look at the Physical
Plant” on page 2-7.

To add a Stateflow block to an existing Simulink model:

1 Open the Simulink model by typing sf_aircontrol_exercise at the


MATLAB command prompt.

The model opens on your desktop:

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®

2 Delete the nonfunctional blocks and their connectors.

Tip Hold down the Shift key to select multiple objects, and then press
Delete.

Your model should now look like this:

3 Save the model as Stage1Interface:

a Create a new local folder for storing your working model.

b In the Simulink model window, select File > Save As.

c Navigate to the new folder.

3-5
3 Defining the Interface to the Simulink® Model

d Enter Stage1Interface as the file name.

e Leave the default type as Simulink Models.

f Click Save.

4 On the toolbar of the Simulink model, click the Library Browser icon:

The Simulink Library Browser opens on your desktop:

5 Add the Stateflow Chart block to the Simulink model:

a In the left scroll pane of the Library Browser, select Stateflow.

3-6
Implementing the Interface with Simulink®

b Drag the first block, called Chart, into your model.

3-7
3 Defining the Interface to the Simulink® Model

The model should now look like this:

6 Click the label Chart under the Stateflow block and rename it Air
Controller.

7 Change the action language of the chart to C:

a Double-click the block to open the chart.

b Right click in an empty area of the chart and select Properties.

c From the Action Language box, select C.


d Select OK.

3-8
Implementing the Interface with Simulink®

Shortcut for adding a Stateflow block to a new Simulink model

At the MATLAB command prompt, enter this command:

sfnew

A new, untitled Simulink model opens on your desktop, automatically


configured with a Stateflow chart. For more information, see sfnew.

Defining the Inputs and Outputs


Inputs and outputs are data elements in a Stateflow chart that interact with
the parent Simulink model. To define inputs and outputs for your chart,
follow these steps:

3-9
3 Defining the Interface to the Simulink® Model

1 Double-click the Air Controller block in the Simulink model


Stage1Interface to open the Stateflow chart.

The Stateflow Editor opens on your desktop:

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:

Field Default Value What It Means


Scope Input Input from Simulink model. The
data element gets its value from
the Simulink signal on the same
input port.
Size -1 The data element inherits its size
from the Simulink signal on the
same port.
Complexity Off The data element does not contain
any complex values.
Type Inherit: Same as The data element inherits its data
Simulink type from the Simulink signal on
the same output port.

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.

d In the General tab, select the Watch in debugger check box.

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:

Note Because airflow is the first output you created, it is assigned


to output port 1.

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.

d Look at the Initial value field.

The initial value is a blank expression, which indicates a default value


of zero, based on the data type. This value is consistent with the model
design, which specifies that no fans are running when the chart wakes
up for the first time.
e Make the following changes for other properties in the General tab:

Property What to Specify


Limit range Enter 0 for Minimum and 2 for Maximum.
Watch in Select the check box to enable this option.
debugger

f Click OK to apply the changes and close the dialog box.

4 Go back to the Simulink model by clicking the up-arrow button in the


Stateflow Editor toolbar.

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.

Connecting the Stateflow Block to the Simulink


Subsystem
Now that you have defined the inputs and outputs for the Stateflow Air
Controller block, you need to connect them to the corresponding signals of the
Simulink Physical Plant subsystem. Follow these steps:

1 In the model Stage1Interface, connect the output airflow from Air


Controller to the corresponding input in Physical Plant:
a Place your pointer over the output port for airflow on the right side
of the Air Controller block.

The pointer changes in shape to crosshairs.


b Hold down the left mouse button and move the pointer to the input port
for airflow on the left side of the Physical Plant block.
c Release the mouse.

3-16
Implementing the Interface with Simulink®

The connection should look something like this:

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.

e Reposition the connection so that it looks like this:

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

Defining the States for


Modeling Each Mode of
Operation

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

Implementing the States to Represent Operating Modes


In this section...
“Build It Yourself or Use the Supplied Model” on page 4-2
“Design Considerations for Defining the States” on page 4-2
“Adding the Power On and Power Off States” on page 4-7
“Adding and Configuring Parallel States” on page 4-10
“Adding the On and Off States for the Fans” on page 4-16

Build It Yourself or Use the Supplied Model


To implement the states yourself, work through the exercises in this section.
Otherwise, open the supplied model by entering this command at the
MATLAB prompt:

addpath(fullfile(docroot, 'toolbox', 'stateflow', 'gs', 'examples'))


Stage2States

Design Considerations for Defining the States


The following sections describe the rationale for the hierarchy and
decomposition of states in the chart.

When to Use States


Whether or not to use states depends on the control logic you want to
implement. You can model two types of control logic: finite state machines
and stateless flow charts. Each type is optimized for different applications, as
follows:

4-2
Implementing the States to Represent Operating Modes

Control Logic Optimized for Modeling


Finite state Physical systems that transition between a finite
machines number of operating modes. In Stateflow charts, you
represent each mode as a state.
Stateless flow Abstract logic patterns — such as if, if-else, and
charts case statements — and iterative loops — such as
for, while, and do loops. You represent these logic
constructs with connective junctions and transitions
in Stateflow charts. No states are required. See
“Decision Logic”.

The Air Controller chart is a system that cools a physical plant by


transitioning between several modes of operation and, therefore, can be
modeled as a finite state machine. In the following sections, you will design
the states that model each mode of operation.

Determining the States to Define


States model modes of operation in a physical system. To determine the
number and type of states required for your Air Controller chart, you must
identify each mode in which the system can operate. Often, a table or grid
is helpful for analyzing each mode and determining dependencies between
modes.

Analysis of Operating Modes. For Air Controller, the modes of operation


are

Operating Description Dependencies


Mode
Power Off Turns off all power in No fan can operate when power
the control system is off.
Power On Turns on all power in Zero, one, or two fans can
the control system operate when power is on.
Fan 1 Activates Fan 1 Fan 1 can be active at the same
time as Fan 2. When activated,
Fan 1 can turn on or off.

4-3
4 Defining the States for Modeling Each Mode of Operation

Operating Description Dependencies


Mode
Fan 1 On Cycles on Fan 1 Fan 1 On can be active if Fan 1
is active and power is on.
Fan 1 Off Cycles off Fan 1 Fan 1 Off can be active if Fan 1
is active, and power is on.
Fan 2 Activates Fan 2 Fan 2 can be active at the same
time as Fan 1. When activated,
Fan 2 can turn on or off.
Fan 2 On Cycles on Fan 2 Fan 2 On can be active if Fan 2
is active and power is on.
Fan 2 Off Cycles off Fan 2 Fan 2 Off can be active if Fan 2
is active and power is on.
Calculate Calculates a constant Calculates the constant value,
airflow value of 0, 1, or 2 to based on how many fans have
indicate how fast air cycled on at each time step.
is flowing. Outputs
this value to the
Simulink subsystem
for selecting a cooling
factor.

Number of States to Define. The number of states depends on the number


of operating modes to be represented. In “Analysis of Operating Modes” on
page 4-3, you learned that the Air Controller chart has nine operating modes.
Therefore, you need to define nine states to model each mode. Here are the
names you will assign to the states that represent each operating mode in
“Implementing the States to Represent Operating Modes” on page 4-2:

State Name Operating Mode


PowerOff Power Off
PowerOn Power On
FAN1 Fan 1
FAN2 Fan 2

4-4
Implementing the States to Represent Operating Modes

State Name Operating Mode


SpeedValue Calculate airflow
FAN1.On Fan 1 On
FAN1.Off Fan 1 Off
FAN2.On Fan 2 On
FAN2.Off Fan 2 Off

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.

Determining the Hierarchy of States


Stateflow objects can exist in a hierarchy. For example, states can contain
other states — referred to as substates — and, in turn, can be contained
by other states — referred to as superstates. You need to determine the
hierarchical structure of states you will define for the Air Controller chart.
Often, dependencies among states imply a hierarchical relationship — such
as parent to child — between the states.

Based on the dependencies described in “Analysis of Operating Modes” on


page 4-3, here is an analysis of state hierarchy for the Air Controller chart:

Dependent States Implied Hierarchy


FAN1 and FAN2 depend on PowerOn. FAN1 and FAN2 should be substates
No fan can operate unless PowerOn of a PowerOn state.
is active.
FAN1.On and FAN1.Off depend on FAN1 should have two substates,
Fan1 and PowerOn. FAN1 must be On and Off. In this hierarchical
active before it can be cycled on or relationship, On and Off will inherit
off. from FAN1 the dependency on
PowerOn.

4-5
4 Defining the States for Modeling Each Mode of Operation

Dependent States Implied Hierarchy


FAN2.On and FAN2.Off depend on FAN2 should have two substates,
FAN2 and PowerOn. FAN2 must be On and Off. In this hierarchical
active before it can be cycled on or relationship, On and Off will inherit
off. from FAN2 the dependency on
PowerOn.
The state that calculates airflow The state that calculates airflow
needs to know how many fans are should be a substate of PowerOn so
running at each time step. it can check the status of FAN1 and
FAN2 at the same level of hierarchy.

Determining the Decomposition of States


The decomposition of a state dictates whether its substates execute exclusively
of each other — as exclusive (OR) states — or can be activated at the same
time — as parallel (AND) states. No two exclusive (OR) states can ever be
active at the same time, while any number of parallel (AND) states can be
activated concurrently.

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:

State Decomposition Rationale


PowerOff, Exclusive (OR) The power can never be on and off at
PowerOn states the same time.
FAN1, FAN2 Parallel (AND) Zero, one, or two fans can operate at
states the same time, depending on how much
cooling is required.
FAN1.On, Exclusive (OR) Fan 1 can never be on and off at the
FAN1.Off states same time.
FAN2.On, Exclusive (OR) Fan 2 can never be on and off at the
FAN2.Off states same time.
SpeedValue Parallel (AND) SpeedValue is an observer state that
state monitors the status of Fan 1 and Fan
2, updating its output based on how
many fans are operating at each time
step. SpeedValue must be activated at
the same time as Fan 1 and Fan 2, but
execute last so it can capture the most
current status of the fans.

Adding the Power On and Power Off States


When you add states to the Air Controller chart, you will work from the
top down in the Stateflow hierarchy. As you learned in “Determining the
Decomposition of States” on page 4-6, the PowerOff and PowerOn states are
exclusive (OR) states that turn power off and on in the control system. These
states are never active at the same time. By default, states are exclusive (OR)
states, represented graphically as rectangles with solid borders.

To add PowerOn and PowerOff to your chart, follow these steps:

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:

addpath(fullfile(docroot, 'toolbox', 'stateflow', 'gs', 'examples'))


Stage1Interface

2 Save the model as Stage2States in your local work folder.

3 In Stage2States, double-click the Air Controller block to open the


Stateflow chart.

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:

4 Left-click the state tool icon:

5 Move your pointer into the drawing area.

The pointer changes to a rectangle, the graphical representation of a state.

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.

7 At the text cursor, type PowerOn to name the state.

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.

8 Move your pointer to the lower-right corner of the rectangle so it changes


to this symbol:

4-8
Implementing the States to Represent Operating Modes

9 Drag the lower-right corner to enlarge the state as shown:

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.

Adding and Configuring Parallel States


In “Determining the States to Define” on page 4-3, you learned that FAN1,
FAN2, and SpeedValue will be represented by parallel (AND) substates of the
PowerOn state. Parallel states appear graphically as rectangles with dashed
borders.

4-10
Implementing the States to Represent Operating Modes

In this set of exercises, you will learn how to:

• Assign parallel decomposition to PowerOn so its substates can be activated


concurrently.
Recall that the decomposition of a state determines whether its substates
will be exclusive or parallel.
• Add parallel substates to a state in the chart.
• Set the order of execution for the parallel substates.
Even though parallel states can be activated concurrently, they execute
in a sequential order.

Setting Parallel Decomposition


Follow these steps:

1 In the Air Controller chart, right-click inside PowerOn.

A submenu opens, presenting tasks you can perform and properties you
can set for the selected state.

2 In the submenu, select Decomposition > AND (Parallel).

3 Save the model Stage2States, but leave the chart open for the next
exercise.

Adding the Fan States


Follow these steps:

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

2 Notice the appearance of the states you just added.

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.

3 Name the new substates FAN1 and FAN2.

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.

Adding the SpeedValue State


Recall that SpeedValue acts as an observer state, which monitors the status
of the FAN1 and FAN2 states. To add the SpeedValue state, follow these steps:

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

2 Name the state SpeedValue.

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.

Setting Explicit Ordering of Parallel States


Recall that, by default, Stateflow software assigns execution order of parallel
states based on order of creation in the chart. This behavior is called explicit
ordering. In this exercise, you will set the execution order explicitly for each
parallel state in your chart.

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:

a Right-click inside each parallel state to bring up its state properties


submenu.
b From the submenu, select Execution Order and make these
assignments:

For State: Assign:


FAN1 1
FAN2 2
SpeedValue 3

Here is the rationale for this order of execution:


• FAN1 should execute first because it cycles on at a lower temperature
than FAN2.
• SpeedValue should execute last so it can observe the most current
status of FAN1 and FAN2.

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.

Adding the On and Off States for the Fans


In this exercise, you will enter the on and off substates for each fan.
Because fans cannot cycle on and off at the same time, these states must be
exclusive, not parallel. Even though FAN1 and FAN2 are parallel states, their
decomposition is exclusive (OR) by default. As a result, any substate that you
add to FAN1 or FAN2 will be an exclusive (OR) state.

4-16
Implementing the States to Represent Operating Modes

Follow these steps:

1 Add two substates inside FAN1 and FAN2.

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:

4 Save the model Stage2States.

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

Defining State Actions and


Variables

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

In phase 3 of this workflow, you define state actions and variables.


5 Defining State Actions and Variables

Implementing State Actions


In this section...
“Build It Yourself or Use the Supplied Model” on page 5-2
“Design Considerations for Defining State Actions and Variables” on page
5-2
“Writing an Entry Action” on page 5-4
“Writing a During Action” on page 5-6

Build It Yourself or Use the Supplied Model


To implement the state actions yourself, work through the exercises in this
section. Otherwise, open the supplied model to see how the actions should
appear in the states. Enter this command at the MATLAB prompt:

addpath(fullfile(docroot, 'toolbox', 'stateflow', 'gs', 'examples'))


Stage3Actions

Design Considerations for Defining State Actions and


Variables
The following sections describe the decisions you make for defining state
actions and variables.

Deciding Whether to Use State Variables


At this stage of the workflow for developing Stateflow charts, you must
determine if any of your states require local or persistent variables. If so, you
define these data elements using the Stateflow Editor or the Model Explorer,
as described in “Add Data” in the Stateflow User’s Guide.

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.

Deciding Whether to Use State Actions


During simulation of a Stateflow chart, states can perform actions while
they are active. Often, actions are used to manipulate data, using a variety

5-2
Implementing State Actions

of constructs such as binary, bitwise, unary, assignment, and type cast


operators.

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:

Action When How


Initialize airflow Before simulation Set an initial value when you
to 0. first define airflow (as you
did in “Defining the Inputs
and Outputs” on page 3-9).
Set airflow to 0. Whenever power is Add an action in the state
off PowerOff.
Update airflow to Whenever power is Add an action in the state
0, 1, or 2, based on on SpeedValue, which becomes
how many fans are active concurrently with FAN1
running. and FAN2 when the state
PowerOn is active.

5-3
5 Defining State Actions and Variables

Deciding the Type of State Action to Use


States perform actions at different phases of their execution cycle from the
time they become active to the time they become inactive. Three basic state
actions are:

Type of When Executed How Often Executed


Action While State Is Active
Entry When the state is entered Once
(becomes active)
During While the state is active At every time step
and no valid transition to
another state is available
Exit Before a transition is taken Once
to another state

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”.)

Based on the requirements in “Deciding Whether to Use State Actions” on


page 5-2, you will write the following state actions for the Air Controller chart:

• Entry action in state PowerOff to set airflow to 0


• During action in state SpeedValue to calculate the value of airflow at
every time step

Writing an Entry Action


The syntax for entry actions is

entry:one or more actions;


en:one or more actions;

To write the entry action for PowerOff, follow these steps:

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:

addpath(fullfile(docroot, 'toolbox', 'stateflow', 'gs', 'examples'))


Stage2States

2 Save the model as Stage3Actions in your local work folder.

3 In Stage3Actions, double-click the Air Controller block to open the


Stateflow chart.

4 Click inside the PowerOff state after the last letter of its name label to
get a blinking text cursor.

5 Press the Enter key and type

entry: airflow = 0;

5-5
5 Defining State Actions and Variables

Your chart should look like this:

6 Save Stage3Actions, but leave the chart open for the next exercise.

Writing a During Action


The syntax for during actions is

during:one or more actions;


du:one or more actions;

The during action for SpeedValue uses a Boolean expression to determine


whether zero, one, or two fans are running at each time step.

To write the during action for SpeedValue, follow these steps:

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

2 Press the Enter key and type

during: airflow = in(FAN1.On) + in(FAN2.On);

Your chart should look like this:

The Boolean expression in(FAN1.On) is true — and its value equals 1 — if


the On state of FAN1 is active. If FAN1 is not on — that is, its Off state is
active or power is off — then in(FAN1.On) equals 0. Similarly, the value of
in(FAN2.On) represents whether FAN2 is on or off. Therefore, the sum of
these Boolean expressions indicates whether 0, 1, or 2 fans are operating
during each time step.

3 Save the model Stage3Actions.

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

In phase 4 of this workflow, you define the transitions between states.


6 Defining Transitions Between States

Adding the Transitions


In this section...
“Build It Yourself or Use the Supplied Model” on page 6-2
“Design Considerations for Defining Transitions Between States” on page
6-2
“Drawing the Transitions Between States” on page 6-4
“Adding Default Transitions” on page 6-8
“Adding Conditions to Guard Transitions” on page 6-11
“Adding Events to Guard Transitions” on page 6-13

Build It Yourself or Use the Supplied Model


To add the transitions yourself, work through the exercises in this section.
Otherwise, open the supplied model to see how the transitions should appear
in the chart. Enter this command at the MATLAB prompt:

addpath(fullfile(docroot, 'toolbox', 'stateflow', 'gs', 'examples'))


Stage4Transitions

Design Considerations for Defining Transitions


Between States
The following sections describe the decisions you make for defining state
transitions.

Deciding How and When to Transition Between Operating


Modes
Transitions create paths for the logic flow of a system from one state to
another. When a transition is taken from state A to state B, state A becomes
inactive and state B becomes active.

Transitions have direction and are represented in a Stateflow chart by lines


with arrowheads. Transitions are unidirectional, not bidirectional. You must
add a transition for each direction of flow between two 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.

Typically, parallel (AND) states do not require transitions because they


execute concurrently.

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

Deciding Where to Place Default Transitions


Good design practice requires that you specify default transitions for exclusive
(OR) states at each level of hierarchy. Default transitions indicate which
exclusive (OR) state is to be active when there is ambiguity between two or
more exclusive (OR) states at the same level in the Stateflow hierarchy. There
are three such areas of ambiguity in the Air Controller chart:

• When the chart wakes up, should power be on or off?


• When FAN1 becomes active, should it be on or off?
• When FAN2 becomes active, should it be on or 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

Deciding How to Guard the Transitions


Guarding a transition means specifying a condition, action, or event that
allows the transition to be taken from one state to another. Based on the
design of the Air Controller chart, here are the requirements for guarding the
transitions from one exclusive operating mode to another:

Transition When Should It How to Guard It


Occur?
PowerOff to PowerOn At regular time Specify an
PowerOn to PowerOff intervals edge-triggered event

FAN1.Off to FAN1.On When the temperature Specify a condition


of the physical plant based on temperature
rises above 120 degrees value
FAN1.On to FAN1.Off When the temperature
of the physical plant
falls below 120 degrees
FAN2.Off to FAN2.On When the temperature
rises above 150 degrees,
a threshold indicating
that first fan is not
providing the required
amount of cooling
FAN2.On to FAN2.Off When the temperature
falls below 150 degrees

Drawing the Transitions Between States


In “Design Considerations for Defining Transitions Between States” on page
6-2, you learned that the following transitions occur in the Air Controller
chart:

• Power for the control system can cycle on and off.


• Each fan can cycle on and off.

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:

addpath(fullfile(docroot, 'toolbox', 'stateflow', 'gs', 'examples'))


Stage3Actions

2 Save the model as Stage4Transitions in your local work folder.

3 In Stage4Transitions, double-click the Air Controller block to open the


Stateflow chart.

The chart opens on your desktop.

4 Draw transitions between the PowerOff to PowerOn states:

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

You should see a transition pointing from PowerOff to PowerOn:

c Follow the same procedure to draw a transition from PowerOn to


PowerOff.

6-6
Adding the Transitions

Your chart should now look like this:

5 Follow the procedure described in step 3 to draw the following transitions


between the Off and On states for each fan:
• Transition from Off to On in FAN1
• Transition from On to Off in FAN1
• Transition from Off to On in FAN2
• Transition from On to Off in FAN2

6-7
6 Defining Transitions Between States

Your chart should now look like this:

6 Save Stage4Transitions, but leave the chart open for the next exercise.

Adding Default Transitions


In “Deciding Where to Place Default Transitions” on page 6-3, you learned
that you need to add default transitions to PowerOff, FAN1.Off, and
FAN2.Off. Follow these steps:

1 In the Stateflow Editor, left-click the default transition icon in the object
palette:

2 Move your pointer into the drawing area.

6-8
Adding the Transitions

The pointer changes to a diagonal arrow.

3 Place your pointer at the left edge of the PowerOff state.

4 When the arrow becomes orthogonal to the edge, release the mouse button.

The default transition attaches to the PowerOff state. It appears as a


directed line with an arrow at its head and a closed tail:

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

Your chart should now look like this:

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.

Adding Conditions to Guard Transitions


Conditions are expressions enclosed in square brackets that evaluate to true
or false. When the condition is true, the transition is taken to the destination
state; when the condition is false, the transition is not taken and the state of
origin remains active.

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.

Follow these steps:

6-11
6 Defining Transitions Between States

1 Click the transition from FAN1.Off to FAN1.On.

The transition appears highlighted and displays a question mark (?).

2 Click next to the question mark to display a blinking text cursor.

3 Type the following expression:

[temp >= 120]

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

Your chart should look like this:

5 Save Stage4Transitions, but leave the chart open for the next exercise.

Adding Events to Guard Transitions


Events are nongraphical objects that trigger activities during the execution of
a Stateflow chart. Depending on where and how you define events, they can
trigger a transition to occur, an action to be executed, and state status to be
evaluated. In this exercise, you will define an event that triggers transitions.

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

Follow these steps to define an edge-triggered event and associate it with


the transitions:

1 In the Stateflow Editor, add an input event by selecting Chart > Add
Inputs & Outputs > Event Input From Simulink.

The Event properties dialog box opens on your desktop:

Note that the event is assigned to trigger port 1.

2 Edit the following properties:

6-14
Adding the Transitions

Property What to Specify


Name Change the name to SWITCH.
Trigger Select Either from the drop-down menu so the event
can be triggered by either the rising edge or falling edge
of a signal.

3 Click OK to record the changes and close the dialog box.

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

Your chart should now look something like this:

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.

Where to go next. Now you are ready to implement an edge-triggered


event to wake up the chart at regular intervals. See “Implementing the
Triggers” on page 7-2.

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

In phase 5 of this workflow, you decide how to trigger the chart.


7 Triggering a Stateflow® Chart

Implementing the Triggers


In this section...
“Build It Yourself or Use the Supplied Model” on page 7-2
“Design Considerations for Triggering Stateflow Charts” on page 7-2
“Defining the CLOCK Event” on page 7-3
“Connecting the Edge-Triggered Events to the Input Signals” on page 7-4

Build It Yourself or Use the Supplied Model


To implement the triggers yourself, work through the exercises in this section.
Otherwise, open the supplied model to see how the triggers should appear in
the chart. Enter this command at the MATLAB prompt:

addpath(fullfile(docroot, 'toolbox', 'stateflow', 'gs', 'examples'))


Stage5Trigger

Design Considerations for Triggering Stateflow


Charts
A Simulink model can wake up a Stateflow chart by

• Sampling the chart at a specified or inherited rate


• Using a signal as a trigger
• Using one Stateflow chart to drive the activity of another

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.

Defining the CLOCK Event


To define the CLOCK event, follow these steps:

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:

addpath(fullfile(docroot, 'toolbox', 'stateflow', 'gs', 'examples'))


Stage4Transitions

2 Save the model as Stage5Trigger in your local work folder.

3 In Stage5Trigger, double-click the Air Controller block to open the


Stateflow chart.

4 In the Stateflow Editor, add an input event by selecting Chart > Add
Inputs & Outputs > Event Input From Simulink.

5 In the Event properties dialog box, edit the following fields:

Property What to Specify


Name Change the name to CLOCK.
Trigger Select Either from the drop-down menu so that the
rising or falling edge of a signal can trigger the event.

7-3
7 Triggering a Stateflow® Chart

Because the SWITCH event you created in “Adding Events to Guard


Transitions” on page 6-13 was assigned to trigger port 1, the CLOCK event is
assigned to trigger port 2. Nevertheless, only one trigger port appears at
the top of the Air Controller block to receive trigger signals. This means
that each signal must be indexed into an array, as described in “Connecting
the Edge-Triggered Events to the Input Signals” on page 7-4.

6 Click OK to record the changes and close the dialog box.

7 Save Stage5Trigger, but leave it open for the next exercise.

Connecting the Edge-Triggered Events to the Input


Signals
You need to connect the edge-triggered events to the Simulink input signals
in a way that

• Associates each event with the correct signal


• Indexes each signal into an array that can be received by the Air Controller
trigger port

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.

To connect the Mux to the trigger port, follow these steps:

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

Simulating the Chart

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

Setting Simulation Parameters and Breakpoints


In this section...
“Prepare the Chart Yourself or Use the Supplied Model” on page 8-2
“Checking That Your Chart Conforms to Best Practices” on page 8-2
“Setting the Length of the Simulation” on page 8-3
“Configuring Animation for the Chart” on page 8-4
“Setting Breakpoints to Observe Chart Behavior” on page 8-7
“Simulating the Air Controller Chart” on page 8-8

Prepare the Chart Yourself or Use the Supplied Model


To prepare the chart for simulation yourself, work through the exercises
in this section. Otherwise, open the supplied model to see how simulation
parameters should appear. Enter this command at the MATLAB prompt:

addpath(fullfile(docroot, 'toolbox', 'stateflow', 'gs', 'examples'))


Stage6Simulate

Checking That Your Chart Conforms to Best Practices


Before starting a simulation session, you should examine your chart to see if
it conforms to recommended design practices:

• A default transition must exist at every level of the Stateflow hierarchy


that contains exclusive (OR) states (has exclusive [OR] decomposition).
(See “Deciding Where to Place Default Transitions” on page 6-3.)
• Whenever possible, input data objects should inherit properties from the
associated Simulink input signal to ensure consistency, minimize data
entry, and simplify maintenance of your model. Recall that in “Defining
the Inputs and Outputs” on page 3-9, you defined the input temp to inherit
its size and type from the Simulink output port temp, which provides the
input value to the Air Controller chart.
• Output data objects should not inherit types and sizes because the
values are back propagated from Simulink blocks and may, therefore, be
unpredictable. Recall that in “Defining the Inputs and Outputs” on page

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.

Setting the Length of the Simulation


To specify the length of the simulation, follow these steps:

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:

addpath(fullfile(docroot, 'toolbox', 'stateflow', 'gs', 'examples'))


Stage5Trigger

2 Save the model as Stage6Simulate in your local work folder.

3 Double-click Air Controller to open the chart.

4 Check the settings for simulation time:

a In the Stateflow Editor, select Simulation > Model Configuration


Parameters.

8-3
8 Simulating the Chart

The following dialog box opens:

b Click Solver in the left Select pane if it is not already selected.

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.

5 Leave the chart open for the next exercise.

Configuring Animation for the Chart


When you simulate a Simulink model, you can animate Stateflow charts to
highlight states and transitions as they execute. Animation provides visual

8-4
Setting Simulation Parameters and Breakpoints

verification that your chart behaves as expected. Animation is enabled by


default, but you set the speed. To configure animation for your simulation
session, follow these steps:

1 Verify that animation has been enabled for your chart:

a In the Stateflow Editor, select Simulation > Debug > Simulation


Target For MATLAB & Stateflow.

The Simulation Target pane opens.

8-5
8 Simulating the Chart

Note This dialog box is used to configure Stateflow software for


building targets. A target is a program that executes a Stateflow chart
or a Simulink model that contains a Stateflow chart. Stateflow software
builds a simulation target that you use to simulate your Stateflow
application.

b Verify that Enable debugging/animation is selected.

c Close the dialog box.

2 Set the speed of animation:

a From the Stateflow Editor, open the Stateflow debugger by selecting


Simulation > Debug > Debug Chart.

The Stateflow debugger opens on your desktop:

By default, animation is enabled at 0-second delay.

8-6
Setting Simulation Parameters and Breakpoints

b Change the delay to 1 second so the animation will proceed at the


slowest speed.

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.

Setting Breakpoints to Observe Chart Behavior


In this exercise, you will learn how to set breakpoints in the debugger to pause
simulation during key run-time activities so you can observe the behavior of
your chart in slow motion. You can set the following breakpoints:

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.

Follow these steps:

1 In the debugger, select Chart Entry and State Entry as breakpoints.

Note If you also set breakpoints at each event broadcast, simulation


would pause at every rising or falling edge of the SWITCH and CLOCK signals.
To keep simulation running at a reasonable pace, do not select Event
Broadcast.

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.

3 Leave the debugger open for the next exercise.

Simulating the Air Controller Chart


In this exercise, you will simulate the Air Controller chart. If this is the first
time you are simulating the chart in the Stage6Simulate model, Stateflow
software builds the simulation target by performing the following actions
before simulation starts:

• 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.

2 In the debugger, start simulation by clicking the Start button.

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.

Detail What It Means What You See at First


Breakpoint
Stopped What executed at the Entry: Chart Air Controller
breakpoint
Executing Stateflow chart that is Air Controller
executing

8-9
8 Simulating the Chart

Detail What It Means What You See at First


Breakpoint
Current Event that is processed at Input event SWITCH
Event this time step
Simulink Time at which the 0.000000
Time simulation paused

Note also that the Browse Data option is now enabled.

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 a debug>> prompt.


b At the prompt, type the name of the data object.

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).

5 Resume simulation by clicking the Continue button.

8-10
Setting Simulation Parameters and Breakpoints

Simulation continues until the next breakpoint, activation of the PowerOff


state, which appears highlighted in the chart (as part of animation).

The default transition activates PowerOff after the chart wakes up.

6 Clear the breakpoint Chart Entry and continue simulation.

8-11
8 Simulating the Chart

Simulation continues to the next breakpoint, the activation of the PowerOn


state:

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:

7 Continue simulation through the following breakpoints, noting chart


animation, Scope display, and how data values change:

8-13
8 Simulating the Chart

Breakpoint Value of temp Value of


(Degrees) airflow
Activation of FAN1 > 157 0
Default transition to > 157 0
FAN1.Off
Activation of FAN2 > 157 0
Default transition to > 157 0
FAN2.Off
Activation of SpeedValue > 157 0

Transition to FAN1.On > 157 0


(because temp >= 120 degrees)
Transition to FAN2.On > 157 0
(because temp >= 150 degrees)
Transition to FAN2.Off > 149 and < 150 2
(because temp < 150 degrees)
Transition to FAN1.Off > 119 and < 120 1
(because temp < 120 degrees)
Transition to FAN1.On > 120 0
(because temp >= 120 degrees)
Transition to FAN1.Off > 119 and < 120 1
(because temp < 120 degrees)

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

The Scope captures this activity:

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

Debugging the Chart

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

In phase 7 of this workflow, you debug the chart. In “Setting Simulation


Parameters and Breakpoints” on page 8-2, you learned how to use the
debugger for setting breakpoints and observing data. In this chapter, you
will learn how Stateflow software detects errors and provides diagnostic
assistance.
9 Debugging the Chart

Debugging Common Modeling Errors


In this section...
“Debugging State Inconsistencies” on page 9-2
“Debugging Data Range Violations” on page 9-4

Debugging State Inconsistencies


In this exercise, you will introduce a state inconsistency error in your chart
and troubleshoot the problem. Follow these steps:

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:

addpath(fullfile(docroot, 'toolbox', 'stateflow', 'gs', 'examples'))


Stage6Simulate

2 Save the model as Stage7Debug in your local work folder.

3 Double-click Air Controller to open the chart.

4 Delete the default transition to FAN2.Off by selecting it and pressing the


Delete key.

Removing the default transition will cause a state inconsistency error.


(Recall from “Checking That Your Chart Conforms to Best Practices” on
page 8-2 that there must be a default transition at every level of the
Stateflow hierarchy that has exclusive [OR] decomposition.)

9-2
Debugging Common Modeling Errors

Your chart should look like this:

5 Save the chart, and start simulation.

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

FAN2 appears highlighted in the chart:

7 Add back the default transition to FAN2.Off.

The default transition provides an unconditional default path to one of


the substates of FAN2.

8 Simulate the model again.

This time, simulation proceeds without any errors.

9 Save Stage7Debug, and leave the chart open for the next exercise.

Debugging Data Range Violations


In this exercise, you will introduce a data range violation in your chart and
use the debugger to troubleshoot the problem. Follow these steps:

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:

during: airflow = in(FAN1.On) + in(FAN2.On) + 1;

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.

2 Open the Stateflow debugger and make the following changes:

• Under Error checking options, make sure that Data Range is


selected.
• Clear all breakpoints.

3 Start simulation.

Simulation pauses after 350 seconds because of an out-of-range data error:

9-5
9 Debugging the Chart

As expected, the error occurs in the during action of SpeedValue because


the value of airflow is out of range.

4 To isolate the problem, double-click the last line in the status panel at
the bottom of the dialog box:

Data '#439 (0:0:0)': 'airflow'

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

5 Check the limit range for airflow:

6 Back in the debugger, check the value of airflow by clicking Browse


Data > Watched Data (Current Chart).

airflow = 3

This value exceeds the upper limit of 2.

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.

The model should simulate with no errors or warnings.

9-8

You might also like