FAT-210 · Lesson 9 of 12 · 20 min

Sequences of operation and the cause-and-effect matrix

Ravi Menon hands Sasha a single sheet of paper for the Tamarind House panel replacement. Down the left side are the building's inputs: smoke detectors by floor, the elevator lobby and machine room detectors, the duct detectors, the waterflow switches, the valve tampers and the pull stations. Across the top are its outputs: the notification circuits, the elevator recall, the AHU shutdowns, the door holders, the stair door locks and the signals to the monitoring station. Where a row and a column meet, a mark says that input operates that output. 'This is the most important page in the job,' he says. 'The drawings say where things are. This says what they do. If the program matches this sheet and this sheet matches the code, the building is safe.' This lesson covers sequences of operation, how they are written as a matrix, the common control functions in a building, and how a technician uses the matrix to program and test a panel.

What a sequence of operation is

A sequence of operation describes, in words and tables, everything the fire alarm system does in response to each kind of input. It is written by the designer early in the project, agreed with the owner, the other trades and the authority having jurisdiction, and kept up to date for the life of the building. A good sequence covers the normal alarm response, staged responses if any, supervisory and trouble responses, what silence and reset do, and how each control function operates and returns to normal. It also says what happens when two things occur at once, such as an alarm while a valve is closed for maintenance.

In Canada, the sequence of operation is part of the design documents the authority reviews, and CAN/ULC-S537 verification checks the installed system against it, device by device and output by output. CAN/ULC-S524 requires the system's documentation, including a description of its operation, to be kept at the building. When the system is changed, the sequence is revised and the changed parts are verified again.

The cause-and-effect matrix

The matrix is the clearest way to write a sequence. Each row is an input or a group of inputs; each column is an output or an action; and each cell says whether, and how, that input operates that output. Most matrices use a simple key: a dot or an X where the output operates, a number referring to a note where the action needs explaining, and sometimes a letter for a delayed or staged action. Rows are grouped by floor and device type, and columns by system, so that patterns stand out: every smoke detector row should have a mark in the evacuation column, and only some rows should have a mark in the elevator recall columns.

A cause-and-effect matrix grid. Rows down the left list inputs: floor 1 to 6 smoke detectors, main lobby smoke, other elevator lobby smoke, elevator machine room heat, duct detectors AHU-1 and AHU-2, waterflow floors 1 to 6, valve tampers and pull stations. Columns across the top list outputs: evacuation signal, recall to alternate floor, recall to main floor, elevator firefighter hat light, shunt trip, AHU-1 off, AHU-2 off, door holders release, stair doors unlock, alarm to monitoring, supervisory to monitoring. Dots mark which inputs operate which outputs.
Part of the cause-and-effect matrix for Tamarind House.
# Evaluate a cause-and-effect matrix: outputs for one active input (illustrative)
outputs = ["EVAC", "RECALL_ALT", "RECALL_MAIN", "HAT", "SHUNT", "AHU1_OFF", "AHU2_OFF", "DOORS", "UNLOCK", "MON_ALM", "MON_SUP"]
matrix = {   # input group: outputs marked in its row
    "Smoke, floors 1, 3, 5, 6": ["EVAC", "AHU1_OFF", "DOORS", "UNLOCK", "MON_ALM"],
    "Smoke, floors 2 and 4": ["EVAC", "AHU2_OFF", "DOORS", "UNLOCK", "MON_ALM"],
    "Main lobby smoke": ["EVAC", "RECALL_ALT", "DOORS", "UNLOCK", "MON_ALM"],
    "Other elevator lobby smoke": ["EVAC", "RECALL_MAIN", "DOORS", "UNLOCK", "MON_ALM"],
    "Machine room heat": ["EVAC", "RECALL_MAIN", "HAT", "SHUNT", "DOORS", "UNLOCK", "MON_ALM"],
    "Waterflow, any floor": ["EVAC", "DOORS", "UNLOCK", "MON_ALM"],
    "Valve tamper": ["MON_SUP"],
}
print("Input".ljust(28) + " ".join(o[:6].ljust(6) for o in outputs))
for row, marks in matrix.items():
    print(row.ljust(28) + " ".join(("X" if o in marks else ".").ljust(6) for o in outputs))
print()
active = "Machine room heat"
print("When", active.lower(), "operates:", ", ".join(matrix[active]))
Output
Input                       EVAC   RECALL RECALL HAT    SHUNT  AHU1_O AHU2_O DOORS  UNLOCK MON_AL MON_SU
Smoke, floors 1, 3, 5, 6    X      .      .      .      .      X      .      X      X      X      .     
Smoke, floors 2 and 4       X      .      .      .      .      .      X      X      X      X      .     
Main lobby smoke            X      X      .      .      .      .      .      X      X      X      .     
Other elevator lobby smoke  X      .      X      .      .      .      .      X      X      X      .     
Machine room heat           X      .      X      X      X      .      .      X      X      X      .     
Waterflow, any floor        X      .      .      .      .      .      .      X      X      X      .     
Valve tamper                .      .      .      .      .      .      .      .      .      .      X     

When machine room heat operates: EVAC, RECALL_MAIN, HAT, SHUNT, DOORS, UNLOCK, MON_ALM

Printed as a grid, the matrix shows its pattern at once: every alarm row operates the evacuation signal, the doors, the stair unlocking and the monitoring signal, while the elevator and fan columns are marked only where they belong. The valve tamper row has only the supervisory signal, and an X anywhere else in that row would be an error.

Elevator recall

Elevators in buildings with fire alarm systems are recalled so that nobody is trapped in a car that opens onto a fire floor, and so that firefighters can take control of them. The elevator code, CSA B44 in Canada, sets how this works, and the fire alarm provides the signals. Smoke detectors in elevator lobbies, the machine room and, where required, the hoistway initiate Phase I recall: the cars return non-stop to the designated level, usually the main entrance floor, and park with their doors open. If the detector that operated is on the designated level, the cars go to an alternate level instead, so they don't open into the fire. Detectors in the machine room or hoistway also light the firefighter's hat symbol in the cars, warning that the elevator equipment itself may be affected.

Where the elevator machine room or hoistway has sprinklers, the elevator's main power must be shut off before water reaches the equipment, because braking an elevator with wet electrical parts is dangerous. A heat detector placed near each sprinkler head, with a lower temperature rating than the head, operates a shunt trip that disconnects the elevator's power first. The fire alarm supervises the shunt trip's control circuit and, in many designs, the power to it. The recall signals are usually sent from relays or control modules within a short distance of the elevator controller, with the wiring supervised, so that a fault on the long run from the panel can't stop a recall.

Air handling, doors and locks

Air handling systems can spread smoke from a fire through a whole building, so many sequences shut down air handlers when a duct detector or an area detector in the zone they serve operates. Which detectors shut down which fans follows the mechanical design: at Tamarind House, AHU-1 serves floors 1, 3, 5 and 6, and AHU-2 serves floors 2 and 4 since the fit-out. Where the building has a smoke control system, the fire alarm instead starts specific fans and dampers in a planned sequence, which FAT-320 covers in detail.

Doors held open by magnetic hold-open devices are released on any alarm, so fire separations close. Doors locked with electromagnetic locks must release when the fire alarm operates, as the National Building Code requires for these locks on exit routes, and stair doors that are locked from the stair side for security must unlock so people in the stairs can re-enter a floor. Each of these is a column in the matrix, and each is tested by watching the doors, not just by checking that the relay changed state.

Off-site signals

Most systems send their signals to a signal receiving centre that monitors fire alarm systems under CAN/ULC-S561, which then calls the fire department for alarms and the building's contacts for supervisory and trouble signals. The matrix shows which inputs send which signal, and the program must keep alarm, supervisory and trouble signals separate, so the centre knows what to do. Some sequences also send more detailed information, such as the zone or device, so the fire department knows where to go before it arrives.

Writing the sequence as text

The matrix is precise but terse, so most sequences also describe each response in a sentence or two. The text explains what the marks mean, gives times for any delays, and covers the cases a grid can't show well: what happens when a device on the designated recall floor and one on another floor operate together, what reset does to the fans and doors, and which functions are bypassed during testing. Writing the text from the matrix, rather than the other way round, keeps the two consistent.

# Turn matrix rows into sequence-of-operation sentences
words = {"EVAC": "sounds the evacuation signal throughout the building",
         "RECALL_ALT": "recalls the elevators to the alternate floor",
         "RECALL_MAIN": "recalls the elevators to the main floor",
         "HAT": "flashes the firefighter's hat symbol in the cars",
         "SHUNT": "operates the elevator shunt trip",
         "AHU2_OFF": "shuts down AHU-2",
         "DOORS": "releases the door holders",
         "UNLOCK": "unlocks the stair doors",
         "MON_ALM": "sends an alarm signal to the monitoring station",
         "MON_SUP": "sends a supervisory signal to the monitoring station"}
rows = {"A smoke detector on floor 2 or 4": ["EVAC", "AHU2_OFF", "DOORS", "UNLOCK", "MON_ALM"],
        "A machine room heat detector": ["EVAC", "RECALL_MAIN", "HAT", "SHUNT", "DOORS", "UNLOCK", "MON_ALM"],
        "A valve tamper switch": ["MON_SUP"]}
for n, (inp, outs) in enumerate(rows.items(), 1):
    acts = [words[o] for o in outs]
    text = acts[0] if len(acts) == 1 else ", ".join(acts[:-1]) + " and " + acts[-1]
    print(f"{n}. {inp} {text}.")
Output
1. A smoke detector on floor 2 or 4 sounds the evacuation signal throughout the building, shuts down AHU-2, releases the door holders, unlocks the stair doors and sends an alarm signal to the monitoring station.
2. A machine room heat detector sounds the evacuation signal throughout the building, recalls the elevators to the main floor, flashes the firefighter's hat symbol in the cars, operates the elevator shunt trip, releases the door holders, unlocks the stair doors and sends an alarm signal to the monitoring station.
3. A valve tamper switch sends a supervisory signal to the monitoring station.

Using the matrix on site

For the technician, the matrix is both the programming guide and the test plan. Programming works through it row by row, making sure each input group exists and each mark has a rule. Testing works through it the same way: operate an input from each row, and check that every marked output operates and every unmarked output doesn't. Each test is recorded on a copy of the matrix, with the result in each cell. A cell that fails is fixed and retested. At the end, the marked-up matrix is the proof that the system does what the sequence says.

Checking the unmarked cells matters as much as the marked ones. An output that operates when it shouldn't can be just as dangerous: a fan that starts instead of stopping, a recall to the floor with the fire, or stair doors that lock instead of unlocking. Gerry has Sasha watch the outputs the matrix says should stay still during every test, not just the ones that should move.

Worked problem

A recall that went to the wrong floor

During testing at Tamarind House, Sasha operates the main lobby smoke detector. The elevators recall to the main lobby and open their doors there. The matrix says this detector should send them to the alternate floor. What went wrong, and why does it matter?

Show solution
  1. The main lobby is the designated recall level, so a detector there means the fire may be in the lobby.
  2. Sending the cars to the main lobby would open their doors into the fire, which is what the alternate floor rule prevents.
  3. The program likely has the main lobby detector in the same group as the other lobby detectors.
  4. She checks the logic and finds the main lobby detector in the 'other lobby' recall group.

Answer: Sasha moves the detector to its own group linked to the alternate floor recall, downloads the change, and retests every lobby detector, recording each car's destination on the matrix. The elevator contractor confirms the controller's inputs are wired to the right relays.

Keeping the matrix alive

Buildings change constantly, and every change to the mechanical systems, the doors or the elevators can change the matrix. A tenant fit-out that re-ducts a floor, a new access control system on the stair doors, or an elevator modernization all add, remove or move columns and rows. The service company keeps the current matrix with the building's records and updates it with each change, and the annual inspection checks a sample of rows against it. A matrix that matches the building is one of the best signs that a system is well looked after.

Common mistakes

  • MistakeProgramming from the drawings instead of the sequence of operation.

    InsteadProgram and test from the agreed matrix.

  • MistakeChecking only the outputs that should operate.

    InsteadConfirm unmarked outputs stay unchanged.

  • MistakePutting the designated-level lobby detector in the main recall group.

    InsteadIt must recall the cars to the alternate floor.

  • MistakeTesting door releases by watching relay LEDs only.

    InsteadWatch the doors close or unlock.

  • MistakeLeaving the sequence out of date after a change.

    InsteadRevise the matrix and text, then retest the changed parts.

Summary and key terms

  • A sequence of operation says what the system does for every input and is agreed before programming.
  • The cause-and-effect matrix shows inputs as rows, outputs as columns and marks where they meet.
  • Elevator recall follows CSA B44: designated level, alternate level for the lobby detector, hat signal for machine room and hoistway.
  • Shunt trip disconnects elevator power before sprinklers in the machine room or hoistway discharge.
  • Fans, door holders, locks and off-site signals each have their own columns and are tested by observation.
  • The marked-up matrix is both the programming guide and the record of the acceptance test.
Sequence of operation
A description of everything the fire alarm system does in response to each input.
Cause-and-effect matrix
A grid linking inputs (rows) to the outputs (columns) they operate.
Phase I recall
Returning elevators non-stop to a designated or alternate level when a recall detector operates.
Alternate level
The recall level used when the detector on the designated level operates.
Shunt trip
A device that disconnects elevator power before sprinklers discharge on the equipment.
Firefighter hat signal
A light in the elevator car warning that the machine room or hoistway detector has operated.

Practice problems

Work each problem on paper first, then reveal the answer to check.

  1. Which recall level is used when the main lobby detector operates?

    Show answer

    The alternate level.

  2. Why must a machine room heat detector have a lower rating than the sprinkler beside it?

    Show answer

    So the shunt trip cuts power before water reaches the equipment.

  3. A valve tamper row has a mark in the evacuation column. Is that right?

    Show answer

    No; a tamper is supervisory only.

  4. Why test outputs that shouldn't operate?

    Show answer

    An output that operates wrongly can be as dangerous as one that fails.

Lesson quiz · 5 questions

Score 60% or more to complete this lesson.

Take the quiz