Entry, During, and Exit Actions in Simulink Stateflow
📖 Scenario: Imagine you are designing a simple traffic light controller using Simulink Stateflow. The traffic light has three states: Red, Green, and Yellow. Each state has specific actions that happen when the state starts (entry), while the state is active (during), and when the state ends (exit).
🎯 Goal: You will create a Stateflow chart with three states (Red, Green, Yellow) and add entry, during, and exit actions to each state. Then, you will simulate the chart and observe the printed messages that show these actions.
📋 What You'll Learn
Create a Stateflow chart with three states named Red, Green, and Yellow.
Add entry, during, and exit actions to each state that print messages.
Configure transitions between states to cycle through Red -> Green -> Yellow -> Red.
Simulate the chart and observe the printed output showing entry, during, and exit actions.
💡 Why This Matters
🌍 Real World
Traffic light controllers use state machines to manage light changes safely and predictably. Entry, during, and exit actions help perform tasks like turning lights on/off and timing.
💼 Career
Understanding state machines and their actions is essential for control system engineers, embedded system developers, and anyone working with Simulink Stateflow for automation and control.
Progress0 / 4 steps
1
Create the Stateflow chart with three states
Create a Stateflow chart named TrafficLight with three states named Red, Green, and Yellow. Do not add any actions yet.
Simulink
Hint
Use sfnew('TrafficLight') to create the chart and State(sfChart) to add states. Set the Name property for each state.
2
Add entry, during, and exit actions to each state
Add entry, during, and exit actions to each state (Red, Green, Yellow) that print messages like disp('Entering Red'), disp('During Red'), and disp('Exiting Red') respectively.
Simulink
Hint
Set the Entry, During, and Exit properties of each state to disp commands that print messages.
3
Add transitions to cycle through the states
Add transitions to cycle through the states in this order: Red to Green, Green to Yellow, and Yellow to Red. Use a simple condition true for each transition to allow automatic cycling.
Simulink
Hint
Create Transition objects between states and set their Condition property to 'true' to enable automatic cycling.
4
Simulate the chart and display the output
Simulate the TrafficLight Stateflow chart for a few steps and print the output messages showing the entry, during, and exit actions for each state.
Simulink
Hint
Use a for loop to simulate the chart multiple times and observe the printed messages.
Practice
(1/5)
1. In Simulink Stateflow, what is the purpose of an entry action in a state?
easy
A. To execute code continuously while the state is active
B. To execute code once when the state is entered
C. To execute code once when the state is exited
D. To define transitions between states
Solution
Step 1: Understand what entry action means
An entry action runs only once when the state becomes active, right at the moment of entry.
Step 2: Compare with other actions
During actions run continuously while in the state, exit actions run once when leaving the state, and transitions define movement between states.
Final Answer:
To execute code once when the state is entered -> Option B
Quick Check:
Entry action = runs once on entering state [OK]
Hint: Entry actions run once at state start, not continuously [OK]
Common Mistakes:
Confusing entry with during actions
Thinking entry runs multiple times
Mixing entry with exit actions
2. Which of the following is the correct syntax to define an exit action in a Simulink Stateflow state named Idle?
easy
A. exit() { disp('Exiting Idle'); }
B. on exit: disp('Exiting Idle');
C. exit: disp('Exiting Idle');
D. exit_action: disp('Exiting Idle');
Solution
Step 1: Recall exit action syntax in Stateflow
Exit actions are defined with the keyword exit: followed by the action code.
Step 2: Check each option
exit: disp('Exiting Idle'); uses correct exit: syntax. on exit: disp('Exiting Idle'); uses incorrect on exit:. exit() { disp('Exiting Idle'); } uses function style which is invalid. exit_action: disp('Exiting Idle'); uses exit_action: which is not recognized.
Final Answer:
exit: disp('Exiting Idle'); -> Option C
Quick Check:
Exit action syntax = exit: code [OK]
Hint: Exit actions start with 'exit:' keyword followed by code [OK]
Common Mistakes:
Using 'on exit:' instead of 'exit:'
Trying to define exit as a function
Using incorrect keywords like 'exit_action:'
3. Consider the following Stateflow state Processing with these actions:
What will be displayed when the state Processing is exited after being active for 3 simulation steps?
medium
A. 3
B. 1
C. 0
D. 4
Solution
Step 1: Track variable changes during state
On entry, count is set to 0. During each step, it increments by 1. After 3 steps, count = 3.
Step 2: Determine exit action output
On exit, disp(count) prints the current count, which is 3.
Final Answer:
3 -> Option A
Quick Check:
Count increments 3 times, exit prints 3 [OK]
Hint: Count increments during each step, exit prints final count [OK]
Common Mistakes:
Forgetting entry sets count to 0
Assuming exit prints 0 or 1
Counting one extra increment
4. You have this Stateflow state code:
entry: x = 5;
during: x = x + 2;
exit: disp(x);
But when you run the simulation, disp(x) shows 5 instead of increasing values. What is the likely error?
medium
A. The during action is not executing because the state is not active long enough
B. The entry action resets x every step
C. The exit action is placed incorrectly inside the during block
D. The variable x is not declared
Solution
Step 1: Analyze why during action might not run
If the state is active only one step or immediately exited, the during action does not get a chance to increment x.
Step 2: Check other options for correctness
Entry runs once on entry, not every step. Exit action placement is correct. Variable declaration is not required to see this behavior.
Final Answer:
The during action is not executing because the state is not active long enough -> Option A
Quick Check:
During runs only while state active [OK]
Hint: During runs only if state stays active multiple steps [OK]
Common Mistakes:
Thinking entry runs every step
Misplacing exit action inside during
Assuming variable declaration causes issue
5. You want to count how many times a state Active is entered during a simulation. Which approach correctly uses entry, during, and exit actions to achieve this?
hard
A. Use entry: count = 0; to reset count every time state is entered
B. Use during: count = count + 1; to increment count continuously while active
C. Use exit: count = count + 1; to increment count when leaving the state
D. Use entry: count = count + 1; and initialize count outside the state; no during or exit needed
Solution
Step 1: Understand counting entries
To count entries, increment count once each time the state is entered. This is done in the entry action.
Step 2: Evaluate other options
During increments continuously, not suitable for counting entries. Exit increments on leaving, not entering. Resetting count on entry loses previous counts.
Final Answer:
Use entry: count = count + 1; and initialize count outside the state; no during or exit needed -> Option D
Quick Check:
Entry action increments count once per entry [OK]
Hint: Increment count in entry action, initialize count outside [OK]
Common Mistakes:
Incrementing count in during action
Resetting count on every entry
Incrementing count on exit instead of entry
Recommended
Ready to prove it?
Pass the test and this pattern moves unknownstrongwhile earning +1 Grip toward your certificate.