Updated 2026-10-09
Movements and phases
A traffic signal controls movements: eastbound through, northbound left, the crosswalk on the west leg. A phase is the controller's unit of timing, the green-yellow-red sequence that serves one or more movements that do not conflict. In the United States most intersections follow the NEMA eight-phase convention:
| Phase | Movement (typical) | Phase | Movement (typical) |
|---|---|---|---|
| 1 | Southbound left | 5 | Northbound left |
| 2 | Northbound through (main street) | 6 | Southbound through (main street) |
| 3 | Westbound left | 7 | Eastbound left |
| 4 | Eastbound through (side street) | 8 | Westbound through (side street) |
Some agencies rotate the assignment so that 2 and 6 are east-west; what matters is that 2 and 6 are the opposing throughs on the main street, 4 and 8 on the side street, and the odd phases are the lefts that precede or follow them. Pedestrian movements are timed with the through phase they run parallel to: the crosswalk parallel to phase 2 is "ped 2". Right turns usually run with their through phase; a right-turn arrow may be an overlap, a signal output derived from one or more parent phases.
Rings and barriers
The controller runs two rings at once. Ring 1 holds phases 1, 2, 3, 4; ring 2 holds 5, 6, 7, 8. Each ring times one phase at a time, so two phases are green together, one from each ring. A barrier separates the main-street side (1, 2, 5, 6) from the side-street side (3, 4, 7, 8): both rings must cross the barrier together, which is what stops a main-street phase from being green while a side-street phase is.
Ring 1 | 1 | 2 || 3 | 4 |
Ring 2 | 5 | 6 || 7 | 8 |
left through || left through
main street || side street
barrier
Within a side of the barrier the controller may run the lefts first (lead), or the throughs first (lag), or split them (lead-lag), and it may skip a phase that has no call from its detectors.
Intervals inside a phase
Each phase has a timing sheet:
| Interval | What it is | Typical value |
|---|---|---|
| Minimum green | The shortest green once the phase starts | 5 to 15 s |
| Passage (gap) | Each vehicle detected extends green by this amount | 2 to 4 s |
| Maximum green | The green cannot extend beyond this while there is a conflicting call | 20 to 60 s |
| Yellow (clearance) | Yellow change interval | 3 to 6 s |
| All-red | Red clearance before the next phase | 1 to 3 s |
| Walk | Pedestrian WALK | 4 to 7 s |
| Pedestrian clearance | Flashing DON'T WALK countdown | crossing distance ÷ 3.5 ft/s |
An actuated phase runs minimum green, then extends with each detector call until it gaps out or hits maximum green, then clears. A fixed-time phase runs the same split every cycle. A coordinated intersection runs a fixed cycle length with a coordinated phase (usually 2 and 6) that is guaranteed to be green at a point in the cycle called the offset, so that platoons released from the upstream signal arrive on green; the other phases are actuated within their splits, and unused time is returned to the coordinated phase. Preemption interrupts all of this for a train or an emergency vehicle; priority nudges it, by extending or advancing a phase, for a bus or a plow (see signal priority).
What the controller exposes over NTCIP 1202
NTCIP 1202 is the object standard for actuated signal controllers, carried over SNMP on the cabinet network. Version 03 (2019) added the objects a connected intersection needs, and version 04 (2024) extended them. The relevant groups:
| Group | What you get |
|---|---|
Phase status (phaseStatusGroup*) | Which phases are green, yellow, red, walk, pedestrian clearance, don't walk, next, and whether each has a call |
Phase timing (phase* parameters) | Minimum green, maximum green, yellow, red clearance, walk and pedestrian clearance per phase |
| Overlap status | The state of each overlap output |
Coordination (coord*) | Pattern, cycle length, offset, splits |
Preemption and priority (preempt*, and the NTCIP 1211 prioritization objects) | Which preempt or priority inputs are active |
| SPaT support objects (v03) | A block the controller fills at 10 Hz with, for each phase and overlap, the current state and the minimum and maximum time to change, plus the intersection status bits; NTCIP 1202 v03 Annex defines a UDP broadcast of this block so the RSU need not poll |
A controller that implements the v03 SPaT block can feed an RSU directly; one that does not needs a cabinet device (a "SPaT box" or roadside processor) that polls phase status and timing parameters and computes the times itself, with less accuracy.
From phases to signal groups
A SPaT does not talk about phases. It talks about signal groups, which are the numbers that a MAP's connectsTo entries reference. The SPaT generator holds a mapping table:
| Signal group | Source | eventState mapping |
|---|---|---|
| 2 | Phase 2 vehicle | green → protected-Movement-Allowed, yellow → protected-clearance, red → stop-And-Remain |
| 5 | Phase 5 vehicle (protected left arrow) | the same three states |
| 1 | Flashing yellow arrow overlap for the permissive left | flashing yellow → permissive-Movement-Allowed, solid yellow → permissive-clearance, red → stop-And-Remain |
| 9 | Overlap A (right-turn arrow fed by phases 2 and 3) | overlap outputs mapped like a phase |
| 22 | Ped 2 (some agencies use phase + 20, others reuse the phase number in a separate range) | walk → protected-Movement-Allowed, flashing don't walk → protected-clearance, don't walk → stop-And-Remain |
The convention CTI 4501 encourages is to number vehicle signal groups with their NEMA phase number, so a technician reading signal group 4 in a SPaT knows it is phase 4, and to give overlaps and pedestrian movements numbers that do not collide. The same table is what the MAP author uses when assigning signalGroup in connectsTo (see MAP to SPaT).
For each signal group, every 100 ms, the generator writes a MovementState with:
eventStatefrom the mapping above. Flashing red (an intersection in flash) becomesstop-Then-Proceed; a dark signal becomesdark.timing.minEndTimefrom the controller's "minimum time to change": for a green that has not reached minimum green, the end of minimum green; for a green in extension, now plus the passage time it has left. For a red, the earliest the conflicting phases could clear.timing.maxEndTimefrom "maximum time to change": for a green, the end of maximum green (or the end of its split under coordination); for a red, the latest the green could begin given every other phase running to its maximum.timing.likelyTimefrom the controller's prediction when it has one, withconfidence.- All three as TimeMarks, tenths of a second past the current UTC hour, computed from the controller's clock, which is why the cabinet needs a disciplined time source.
For a fixed-time or coordinated phase, minEndTime and maxEndTime coincide and vehicles get an exact countdown. For an actuated phase the window is wide and a vehicle only knows that the green will end sometime between the two; that is what the standard intends, and a generator that reports a fake exact time is worse than one that reports an honest window.
The status bits of the IntersectionState come from controller flags: preemptIsActive, signalPriorityIsActive, failureFlash, manualControlIsEnabled and the coordination mode bits. enabledLanes is filled when a time-of-day plan turns a revocable lane on.
Checking it with the portal
Decode a SPaT from your RSU in the decoder and lay the controller's phase display beside it. Every green phase should appear as protected-Movement-Allowed (or permissive for a green ball with opposing traffic) under the expected signal group, the yellow should appear as a clearance state for the right 3 to 6 seconds, and minEndTime should never be in the past. The live view replays the same comparison over time and highlights a signal group whose state does not advance or whose timing contradicts itself. If a mapping is wrong, the fix is in the generator's table, not in the MAP.
Related reading
- NTCIP 1202 v03/v04 (Actuated Signal Controller objects, SPaT block), NTCIP 1211 (Signal Control and Prioritization), CTI 4501 (Connected Intersections Implementation Guide), the FHWA Signal Timing Manual for the engineering behind the intervals.
- SPaT, MAP, MAP to SPaT, signal priority, TMC and ATMS integration.