PLC Simulator
Program flow

MCRMaster Control Reset

MCR (Master Control Reset) fences a group of rungs into a zone: while the MCR rung is true the zone executes normally, and while it is false every rung inside is scanned with a false rung condition — de-energizing all non-retentive outputs at once.

Join 1900+ learners practicing PLC programming

How it works

What MCR does during the scan

An MCR zone is built from two MCR instructions: a conditioned start rung (the zone’s enable) and an unconditional end rung that closes the fence. Enabled, the zone is invisible — every rung inside behaves exactly as if the MCR were not there. Disabled, the controller still scans every rung in the zone but forces each rung’s condition false before executing its outputs. That distinction — scanned-as-false, not skipped — is what separates MCR from a false JSR, and it drives every consequence worth knowing.

Because the rungs execute with a false condition, each instruction inside does whatever it does on a false rung. OTE outputs are written 0 — the whole zone’s non-retentive outputs drop on the first disabled scan, which is the instruction’s reason for existing. OTL and OTU do nothing on false rungs, so latched bits keep their state through the disabled window. TON timers reset (that is normal TON false-rung behaviour). RTO retentive timers hold their accumulated value. Counters keep their ACC. And the genuinely nasty one: a TOF timer treats the forced-false rung exactly like a real de-energization — it starts timing, and its DN bit stays true until the preset expires. A "the zone is off, why is this output still on for three seconds" mystery is almost always a TOF inside an MCR zone.

ONS/OSR instructions inside the zone deserve a thought too: the forced-false scans update their edge memory, so on re-enable, conditions that stayed true through the outage present fresh rising edges — one-shots fire on the first enabled scan. Sequences that were mid-step when the zone dropped can lurch on re-entry unless the enable logic re-homes them.

Two rules are non-negotiable. First: MCR is a program-flow convenience, not a safety function — the name collides with the hardwired Master Control Relay that drops real power to outputs, and the PLC instruction is not a substitute for it or for a safety relay/controller. Emergency stops belong in hardware (and safety-rated logic), full stop. Second: zones must be properly closed by their unconditional end MCR and must not nest or overlap — a missing end rung silently extends the zone to places the author never intended. Siemens legacy STL had the same construct (MCRA/MCRB brackets); TIA Portal deprecates it for S7-1200/1500 in favour of plain conditional logic, and IEC 61131-3 has no direct equivalent — group-disable is done with enable bits or by structuring the code.

MCR master control reset zone across three ladder rungs — an Auto_Mode contact opening the MCR zone, a conditioned output rung inside the zone, and the unconditional MCR end rung closing itThree ladder rungs between power rails. Rung 1: an XIC contact tagged Auto_Mode drives the highlighted MCR start coil, opening the zone. Rung 2, inside the zone, is drawn dimmed: a Sensor contact driving a Valve OTE coil — when the zone is disabled this rung is scanned as false and the non-retentive output de-energizes. Rung 3 is the unconditional MCR coil that ends the zone.L1L2Auto_ModeMCRzoneSensorValveOTEMCRend rung — no conditionszone false → rungs scanned as false, OTEs drop out
The MCR zone: rung 1’s conditioned MCR opens the zone, the dimmed rung inside is scanned as false while the zone is disabled (its OTE drops out), and the unconditional MCR closes the zone.
MCR zone timing diagram — while the zone-enable signal is off, an OTE inside the zone is forced off even though its sensor is on, and an RTO inside the zone holds its accumulated valueThree lanes over time. Lane 1: the MCR zone-enable signal, on then off then on again. Lane 2: a Sensor input that stays on throughout. Lane 3: the Valve OTE output inside the zone — it follows the sensor only while the zone is enabled and is forced off while the zone is disabled, coming back when the zone re-enables. A note reminds that RTO accumulators and latched OTL bits keep their values through the disabled window.zone enable vs outputs →MCR zoneSensorValve OTEzone off → OTE forced offRTO ACC and OTL latches are NOT cleared by the zone
Zone timing: the Sensor stays on throughout, but the Valve OTE inside the zone is forced off while the zone-enable is false — and retentive things (RTO ACC, OTL latches) keep their state through the window.

Across vendors

MCR in Allen-Bradley, Siemens, IEC 61131-3 and Mitsubishi

PlatformName / syntaxNotes
Allen-Bradley (Studio 5000 / RSLogix)MCRPaired MCR output instructions delimit the zone; the end MCR must be unconditional. Zones must not nest or overlap.
Siemens (legacy STL / S7-300/400)MCRA/MCRB, MCR( )MCRMaster Control Relay brackets in STL. Deprecated in TIA Portal for S7-1200/1500 — Siemens recommends restructuring with normal enable logic.
IEC 61131-3 (CODESYS, OpenPLC)No direct equivalentGroup-disable is expressed with an enable condition ANDed into the relevant networks, or by conditional execution of a POU — retention semantics are then explicit in your code.
Mitsubishi (GX Works)MC / MCRMC N0 M0 opens master-control nest N0 controlled by M0; the MCR N0 instruction closes it. Unlike AB, Mitsubishi nests (N0–N7) are explicitly numbered and may nest in order.

Mitsubishi’s MCR mnemonic closes a zone that its MC instruction opens — a naming collision with Allen-Bradley’s MCR that regularly confuses people moving between the platforms. Always ask "whose MCR?" first.

In practice

Worked MCR examples

Example 1 — manual-mode zone

| Manual_Mode   Guards_OK                          MCR    |
|----] [-----------] [----------------------------(MCR)--|

|   Jog_Fwd_PB                              Conveyor_Fwd  |
|-----] [---------------------------------------( )------|

|   Jog_Rev_PB                              Conveyor_Rev  |
|-----] [---------------------------------------( )------|

|                                                  MCR    |
|-------------------------------------------------(MCR)--|

All the jog controls live inside one zone enabled only in manual mode with guards healthy. Leave manual mode mid-jog and every OTE in the zone is written false on the next scan — no per-rung mode contacts needed, and no way to forget one. The unconditional MCR on the last rung closes the zone; everything after it is normal logic again.

Example 2 — the TOF gotcha inside a zone

| Zone_Enable                                      MCR    |
|----] [------------------------------------------(MCR)--|

|   Fan_Request                          TOF Purge_Timer  |
|-----] [------------------------------[ PRE 5000 ms   ]--|

|   Purge_Timer.DN                            Purge_Fan   |
|-----] [--------------------------------------( )-------|

|                                                  MCR    |
|-------------------------------------------------(MCR)--|

The design intent: the purge fan runs 5 seconds beyond the fan request (a classic TOF use). Now disable the zone while the fan is running. The TOF sees its rung go false — forced by the MCR — and starts its off-delay: DN stays true for another 5 seconds. But wait: the Purge_Fan OTE is also inside the zone, so it is forced off immediately. Move that OTE below the zone (a plausible refactor) and the fan genuinely runs on for 5 seconds after the zone is "off".

The lesson generalizes: an MCR zone forces rung conditions false, and every instruction responds with its own false-rung behaviour. Audit TOFs, retentive timers and latches inside any zone you add.

Gotchas

Common MCR mistakes

  • Using the MCR instruction as a safety function

    The PLC MCR is a software convenience that shares a name with the hardwired master control relay. It does not remove power, it does not meet any safety category, and a controller fault bypasses it entirely. E-stops and guard circuits belong in safety-rated hardware/logic.

  • Forgetting the unconditional end MCR

    The zone extends until the next MCR instruction — omit it (or delete it during an edit) and rungs far below silently join the zone. Studio 5000 will flag unmatched zones, but only if you let the verify finish and read it.

  • Assuming a disabled zone resets everything

    It de-energizes OTEs and resets TONs — but OTL latches, RTO accumulators and counter ACCs all retain. If "zone off" must mean "zone reset", write the reset logic explicitly on the disable edge.

  • TOF timers inside zones

    Disabling the zone starts every TOF in it (forced-false rung = start of off-delay) — DN bits inside the zone stay true for their presets. Outputs driven from those DN bits outside the zone stay on after the zone is disabled.

  • Nesting or overlapping zones

    Allen-Bradley zones must not nest or overlap — the controller pairs each MCR with the nearest end, and overlapping fences produce zones the editor never shows you. (Mitsubishi MC/MCR nests are numbered and may nest — different platform, different rules.)

Run MCR live — no install

Drop the instruction on a rung in the browser simulator, toggle the inputs, and watch the rung state, accumulator values and outputs update scan by scan.

Questions

MCR — frequently asked

What does MCR mean in PLC programming?

MCR stands for Master Control Reset. It is a zone-control instruction: two MCR instructions fence a group of rungs, the first conditioned (the zone enable) and the last unconditional. While the enable is false, every rung inside the zone is scanned with a forced-false rung condition, so all non-retentive outputs (OTEs) in the zone de-energize.

What happens to timers and counters inside a disabled MCR zone?

Each instruction does what it normally does on a false rung. TON timers reset. RTO retentive timers keep their accumulated value. Counters keep their ACC. OTL/OTU latches hold their state. TOF timers actually start timing — the forced-false rung looks like a real de-energization — so their DN bits stay true for the preset duration. The zone is scanned as false, not skipped.

What is the difference between MCR and JSR for disabling logic?

A false MCR zone is still scanned — rung conditions are forced false, so OTEs are actively written off. A false JSR simply never scans its routine — every output inside freezes at its last value. If you want outputs to drop, MCR (or in-rung conditions) does it; a conditioned JSR quietly does the opposite.

Is the MCR instruction the same as a master control relay?

No — and the name collision is dangerous. The hardwired master control relay physically removes power from output circuits and is part of the machine’s safety system. The MCR instruction only manipulates rung conditions in software. Rockwell’s own documentation is explicit that the instruction is not a substitute for a hardwired MCR or any safety function.