📖 Scenario: You are modeling a simple traffic light system using states and transitions. The traffic light has three states: Green, Yellow, and Red. It changes states in a fixed order: Green → Yellow → Red → Green, and so on.
🎯 Goal: Build a state machine in Simulink that models the traffic light states and transitions. You will create the states, define the transitions, and output the current state name.
📋 What You'll Learn
Create three states named Green, Yellow, and Red in a Stateflow chart.
Define transitions from Green to Yellow, Yellow to Red, and Red to Green.
Use a timer or counter to trigger transitions every fixed time interval.
Output the current state name as a string.
💡 Why This Matters
🌍 Real World
Traffic light controllers use state machines to manage light changes safely and predictably.
💼 Career
Understanding states and transitions is essential for designing control systems in automotive, robotics, and automation industries.
Progress0 / 4 steps
1
Create the states
In your Stateflow chart, create three states named Green, Yellow, and Red. Do not add any transitions yet.
Simulink
Hint
Use the Stateflow editor to add three states. Name them exactly Green, Yellow, and Red.
2
Add a timer variable
Add a local data variable named timer of type int in the Stateflow chart. Initialize it to zero.
Simulink
Hint
In the Stateflow chart properties, add a local data variable called timer with type int and initial value 0.
3
Define transitions with timer increment
Add transitions from Green to Yellow, Yellow to Red, and Red to Green. Use the condition timer >= 5 to trigger each transition. Reset timer to zero on each transition. Increment timer by 1 every time step in each state.
Simulink
Hint
Use the Stateflow editor to add transitions with the condition timer >= 5. Reset timer to zero in the transition action. In each state's during action, increment timer by 1.
4
Output the current state name
Create an output data named currentState of type string in the Stateflow chart. In each state, set currentState to the state's name: "Green", "Yellow", or "Red". Display the currentState output in the Simulink model.
Simulink
Hint
Add an output data variable called currentState of type string. In each state's during action, assign the state's name as a string to currentState. Connect this output to a display block in Simulink.
Practice
(1/5)
1. In Simulink Stateflow, what does a state represent?
easy
A. A mathematical operation
B. A graphical icon only
C. A data storage variable
D. A mode or condition of the system
Solution
Step 1: Understand the role of states in Stateflow
States represent different modes or conditions that a system can be in during execution.
Step 2: Differentiate states from other elements
States are not variables or operations; they define behavior and system modes.
Final Answer:
A mode or condition of the system -> Option D
Quick Check:
State = system mode [OK]
Hint: States = system modes or conditions [OK]
Common Mistakes:
Confusing states with variables
Thinking states are just icons
Mixing states with mathematical operations
2. Which of the following is the correct syntax to define a transition condition in Simulink Stateflow?
easy
A. state1 => state2 (condition)
B. state1 -> state2 {condition}
C. state1 --> state2 [condition]
D. state1 -- state2 [condition]
Solution
Step 1: Recall Stateflow transition syntax
Transitions use the arrow --> followed by a condition in square brackets.
Step 2: Match syntax options
state1 --> state2 [condition] uses --> and square brackets correctly, others use incorrect symbols or brackets.
Final Answer:
state1 --> state2 [condition] -> Option C
Quick Check:
Transition syntax = --> [condition] [OK]
Hint: Transitions use --> with [condition] brackets [OK]
Common Mistakes:
Using wrong arrow symbols
Using curly or round brackets instead of square
Omitting the condition brackets
3. Given this Stateflow snippet:
state A
entry: x = 0;
during: x = x + 1;
end
transition from A to B [x >= 3]
What is the value of x when the system transitions from state A to B?
medium
A. 3
B. 4
C. 2
D. 0
Solution
Step 1: Analyze state A behavior
On entry, x is set to 0. During state A, x increments by 1 each cycle.
Step 2: Determine when transition triggers
Transition triggers when x >= 3. So after 3 increments, x equals 3 and transition occurs.
Final Answer:
3 -> Option A
Quick Check:
Transition at x >= 3 means x = 3 [OK]
Hint: Transition triggers when condition first becomes true [OK]
Common Mistakes:
Counting increments before entry action
Assuming transition triggers at x > 3 instead of >= 3
Forgetting initial value of x
4. Identify the error in this transition definition:
state A
end
state B
end
A --> B (x > 5)
medium
A. Missing condition brackets [] around (x > 5)
B. Incorrect arrow symbol used
C. States must have entry actions
D. Transition must be inside state definitions
Solution
Step 1: Check transition condition syntax
Transition conditions must be enclosed in square brackets [], not parentheses ().
Step 2: Verify other syntax elements
The arrow --> is correct, states can be empty, and transitions are defined outside states.
Final Answer:
Missing condition brackets [] around (x > 5) -> Option A
Quick Check:
Conditions use [] not () [OK]
Hint: Use [] for conditions, not () [OK]
Common Mistakes:
Using parentheses instead of square brackets
Thinking arrow is wrong
Believing states must have actions
5. You want to model a traffic light system with states Red, Green, and Yellow. The system should transition from Green to Yellow only if a timer reaches 60 seconds. Which transition condition correctly models this?
hard
A. Green --> Yellow [timer > 60]
B. Green --> Yellow [timer == 60]
C. Green --> Yellow [timer < 60]
D. Green --> Yellow [timer != 60]
Solution
Step 1: Understand the timing condition
The transition should happen exactly when the timer reaches 60 seconds, so the condition must check equality.
Step 2: Evaluate options
Green --> Yellow [timer == 60] uses timer == 60, which triggers transition at 60 seconds. Others check greater, less, or not equal, which do not match the requirement.
Final Answer:
Green --> Yellow [timer == 60] -> Option B
Quick Check:
Exact timer match triggers transition [OK]
Hint: Use == for exact timer match in transitions [OK]
Common Mistakes:
Using > or < instead of ==
Using != which triggers at wrong times
Forgetting square brackets around condition
Recommended
Ready to prove it?
Pass the test and this pattern moves unknownstrongwhile earning +1 Grip toward your certificate.