# Transportation Systems Simulation - A Tutorial for Multi-Modal Simulation Using VISSIM/Intersection: Traffic Signal Controller Programming

Traffic signal controllers are the brains of a traffic signal. They are computers programed with multiple timers and rules for each timer. In VISSIM, a typically traffic signal is controlled by a Ring-Barrier Controller (RBC). This section describes the steps needed to create a simple RBC traffic signal controller in VISSIM.

## Traffic Signal Controller Programming

Step 1: Select Signal Controllers from the Signal Control menu.
Notice the Signal Controller list appears along the bottom of the main layout window. Notice the key column headers:
* Each signal controller will be given a unique sequential number (No)
* You can give each signal controller a Name
* There are various Types of signal controllers including Ring Barrier Controllers (RBC)
* You will be able to see what SupplyFile1 & 2 files are used to operate the controller. Supply files are the data files that contain the program parameters for signal controllers.
Step 2: You can add a new signal controller to VISSIM by right-clicking an open area of the signal controllers list and selecting Add…
When you add or modify a signal controller you will open the Signal Control information window. You can modify a signal controller by right clicking on it and selecting Edit. In the Signal Control edit window you can set up many foundational settings for each signal controller. To get started fill out the following:
* Enter a name for your signal controller. Create a meaningful name for your signal controller such as the names of the streets at the intersection.
* In the Type box, select Ring Barrier Controller. There is also Fixed Time, VAP and External types that will be discussed in the advanced Signal Tutorial.
* Select the Edit Signal Groups button to open the Ring Barrier Controller edit window. You can also get to the Edit Signal Groups window by right-clicking the signal controller from the list and selecting Edit Signal Groups from the shortcut menu.
This is the Ring Barrier Controller edit window. In this window you can modify the programming parameters of the traffic signal controller. On the left side of this window is a tree of parameter groups. The tree includes Base Timing, Detectors, SC Communications, Preempts and Transit Priority main areas. The large window is where you can enter the majority of the parameter settings. Just below both of these sections is the Signal Timing Diagram that will display the phase sequences and times of all of your signal groups / phases.
Step 3: By clicking on the check box next to each group or individual setting you allow that setting or group of settings to be visible for editing in the main window area. For the purposes of this tutorial, we will use the following sections:
* Base Timing -> Timing by SG -> Basic
* Base Timing -> Sequence
* Base Timing -> Conflict SGs
* Detectors -> Vehicle
Below is an actual sample of signal timing from the intersection we are simulating, Kellogg & S. Campus. Using a timing sheet or documented observations you can program the controller to simulate like the actual real life counterpart. The first page shows the phase diagram and some of the setup settings for the controller. The second page shows more of the basic timing settings necessary for a traffic signal to perform its basic functions.
Step 4: Enter the timing parameters from the recorded timing into the editor.
* For the SG Number you can assign these to the Phase Numbers in use in the signal timing sheet.
* It’s a good idea to name the SG Name for the direction of travel and the movement to help identify it for example: NB-LT.
* Min Green can be taken straight from the timing sheet’s Min Green.
* Veh Extension is found at Veh Exten.
* Max 1 is found in the timing sheet at Max Exten.
* Yellow and Red Clearance are the Yellow and Red Clear times on the sheet.
* Assign the next sequential SG numbers to the Ped SG Number (for example: 9, 10, 11 & 12).
* Walk and Ped Clear (FDW) are found in the timing sheet under Walk and Flash DW.
Tip: SG Numbers must be unique for each signal group, pedestrian group and overlap.
One of the most important parameters are the Sequence and Conflict SGs. These parameters set the phasing your traffic signal will operate with. Program the Sequence so that the ordering of your movements is achieved. Mark the check box at the intersection of any 2-phases that should never be allowed to go on together. The remaining empty boxes will represent which Signal Groups are allowed to go together.
The Sequence section allows you to organize the Signal Groups (Phases) in to your preferred sequence so example, left turns go before the through movements adjacent to them. It is also typical for the phases to be organized into 2-rings. The Conflict SGs area allows you to assign which phases are not allowed to go with other phases. This is necessary to make sure say a SB-LT does not go with a NB-TH movement.
Once you have some basic timing in, you will see that a diagram appears under the timing. You can re-fit the signal timing diagram to fit the width of the window so you have a better idea of how your signal controller will operate. You can auto-fit by right-clicking on the diagram.
In the figure above, you can see the phase diagram shows to scale the length of the various movements. The Green, Yellow and Red bars form into groups for each Signal Group (Phase). If you have entered PED timing (Ped SG Number, Walk & Ped Clear) you will notice smaller green and yellow bars under their parent phases. The diagram shows the SG Number, the time for that SG (aka Split), and the SG Name for vehicle SGs.
Once you have entered all of your parameters the first time click the Ok button and you be prompted to save your setting to a RBC file. VISSIM uses this type of file to give each signal controller its programming.

## Coordination Signal Timing

When you have two or more traffic signals in close proximity to each other (roughly 1,000 or less), the traffic signals should be timed such that the major flow of vehicles that passes through each of the intersections with as little delay as possible. To accomplish this, traffic signals can be programmed to work together with common and related settings so that this is accomplished. This technique is known as coordination or synchronization. There are some very good software packages that can assist with creating coordination settings such as Synchro® from Trafficware®. VISSIM provides signal timing parameters that accomplish this.
* Reopen the Edit Signal Groups from the controller list as you did before.
* Click on the Pattern 1 below the Timing Tree checkmarks. These reveals more settings used in coordination.
** Cycle Length: Set this to the common cycle length used in the corridor.
** Offset: Set this so that the cycle starts in such a manner as to maximize the coordination.
** MaxGreenMode: Set this to MaxInhibit so that it will ignore basic phase max and serve the split.
** PermissiveMode: Set this to SingleBand so that any Signal Group with demand may be served.
** PedPermMode: Set this to Yield so that PEDs will be served if called. (May cause the signal to go into coordination if the split is not long enough.
** WalkRestMode: Set this to Yield so that PEDs in the coordinated phase terminate with the phase.
** ExplicitForceoffs: Set to off, so that you use splits for coordination.
** ExplicitPermissive: Set this to off so that VISSIM will calculate your permissive windows automatically.
** AltPattern1 & 2: Set these to none so that an alternate pattern is not triggered.
* Activate the following timing parameters by marking them with a checkmark:
      * Basic -> Patterns / Coordination -> Pattern 1 ->
         * Splits: Enter the total time (Green + Yellow + Red) allocated to each Signal Group.
             Tip: The Green should include the Walk and FDW time if possible. Especially for the coordinated or sync signal groups (phases).
             Note: Each ring should add up to the cycle length and each side of the barrier should be the same for each ring. (Ex: SG1 + SG2 + SG3 + SG4 = Cycle Length AND SG1 + SG2 = SG5 + SG6 AND SG3 + SG4 = SG7 + SG8)
         * Transition Max: VISSIM automatically enters these values but it’s good to see.
         * Coordinated: Place a check in SG1 & SG6 (typically your coordinated phases).
         * Lead: Can be used to change the phase sequence. For, now keep it as is unless you know how this impacts your simulation.
      * Basic -> Pattern Schedule
         * Pattern Number: Set this to 1 to use Pattern 1.
         * Pattern Start Time: Set this to 0, so that the pattern begins at the start of your simulation. This is time in seconds into the simulation.
* Set your other intersections with their coordination settings as well. Run the simulation and adjust as needed.
Back to Main Page