Resolving Omron CQM1H CPU51 0x009B FAL System Alarm Error

James Nishida13 min read
CJ/CP SeriesOmronTroubleshooting
Licensed PE Working through this on a live machine? A Maine-licensed engineer can take it from here — included with IMD hardware, by the hour for everything else. Book an engineer

Problem Overview

The Omron CQM1H-CPU51 Programmable Logic Controller reports error code 0x009B as a non-fatal System Alarm (FAL) entry in the CX-Programmer error log. On power-up, the front-panel ERR/ALM LED illuminates and remains solid red, indicating the controller has halted in a faulted state. After clearing the secondary Memory Error from the log, the LED transitions to a slow blink, which is the CQM1H convention for a non-fatal condition that still prevents normal RUN-mode operation.

The 0x009B identifier is registered by the CPU's FAL(06) execution pathway rather than by an internal diagnostic (FAL codes 0x0001 through 0x00FF are user-defined via the operand of FAL(06); 0x009B is the binary-coded decimal representation of 155 and almost always originates from a FAL(06) instruction in the user program with that exact FAL number). A persistent non-fatal FAL that refuses to clear with a normal online reset almost always traces to one of three root causes:

  1. A FAL(06) or FALS(07) ladder instruction whose input condition is held true by a logic bug or latched I/O.
  2. Corruption of the CPU's User Memory (UM) due to battery failure, capacitor degradation, or environmental contamination (dust, flux residue, humidity).
  3. Hardware degradation of the input card, power supply, or CPU board that forces the controller into a self-protective alarm state.

The remainder of this reference walks through identification, isolation, hardware recovery, software recovery, and verification using only official CQM1H documentation.

CQM1H Error Indication Reference

The CQM1H CPU front panel uses the ERR/ALM LED as the primary user-visible fault indicator. The blink cadence and color carry distinct meanings, and you must classify the LED state before chasing a specific error code.

LED State Classification Typical CPU Action Indicator Source
Solid red, no blink Fatal error CPU halts, outputs forced OFF, RUN prohibited FALS(07), watchdog, memory parity, bus error
Slow blink red (~1 Hz) Non-fatal error / FAL CPU remains in RUN or MONITOR but task is suspended FAL(06), battery warning, I/O verification mismatch
Fast blink red Peripheral or link error CPU continues, communication degraded Peripheral port, Host Link, CompoBus/S fault
OFF with PWR green Normal CPU running, no latched faults

For full indicator details, refer to the CQM1H Series Programming Manual (W364), Section 3 CPU Unit Components and Indicators. The CQM1H also latches the most recent fatal and non-fatal error codes in the following special relay / data areas that you can monitor online:

  • AR 1500 – most recent non-fatal error code (low byte) and FAL/FALS source rung (high byte)
  • AR 1501 – most recent fatal error code
  • AR 1502 – second-most-recent fatal error code
  • SR 25300 through SR 25307 – FAL/FALS output area (1 bit per FAL number 0 to 255)

FAL(06) and FALS(07) Instruction Reference

The CQM1H supports two explicit user-invoked fault instructions. Understanding the difference is critical because the recovery procedure differs between them.

Instruction Mnemonic Severity Error Code Range LED Effect CPU Behavior
Failure Alarm FAL(06) N Non-fatal 0x0001 – 0x00FF (N = FAL number) ERR/ALM blinks CPU continues; cycle continues; FAL bit set in SR 253 area
Severe Failure Alarm FALS(07) N Fatal 0x0001 – 0x00FF (N = FAL number) ERR/ALM solid red CPU halts; all outputs OFF; requires power cycle or FAL reset operation

When FAL(06) executes with operand 155 (decimal), the CPU reports the combined value 0x009B in the error log and the FAL-number-155 bit in the SR 253 area. To clear a latched FAL you must satisfy the input condition to FAL(06) (turn it OFF) and issue a FAL/FALS reset from CX-Programmer: select PLC > Error Log > Clear Error Log or use the shortcut PLC > Clear All Memory Areas to force reset of the SR 253 latch bits.

A persistent FAL that you cannot clear with a normal reset almost always means the FAL(06) input condition is still true, or the FAL bit in the SR 253 area has been re-latched by a scan that occurs after the reset completes. Online, place the controller in PROGRAM mode before clearing so that no further scan can re-trigger the instruction.

Root Cause Analysis for 0x009B

Run the following elimination matrix before replacing hardware. Each row is a confirmed-failure mode reported on CQM1H-CPU51 hardware. Work from top to bottom; the most common cause is at the top.

Priority Root Cause Diagnostic Evidence Recovery Path
1 Held input to FAL(06) 155 in user program Locate FAL(06) rung; verify input bit is OFF in MONITOR mode Fix logic, force OFF, clear error log, return to RUN
2 User Memory (UM) checksum error after battery exhaustion Secondary Memory Error in log, SR 253 bit, AR 1500 indicates 0x0001 Replace battery, cold-start with valid program, verify checksum
3 CPU board contamination (dust, flux, humidity) Visual inspection around processor socket, electrolytic capacitor, and battery clip Disassemble, clean with electronics-grade contact cleaner, dry thoroughly
4 Failed internal lithium capacitor (CQM1H uses supercapacitor in early revisions, battery in later) Voltage across supercap/battery < 2.5 VDC open-circuit, RTC and DM retentive data lost on power cycle Replace CQM1H-BAT01 battery, perform power-on initialization
5 CX-Programmer project corruption / Toolbus driver fault CX-Programmer crashes during Auto Online upload, "Fail to connect" until host PC restart Reinstall CX-Programmer, replace Toolbus USB driver, retry upload
6 Input card fuse L1 open (L1 fuse is the +24 V rail protection for the 16 onboard DC inputs) Input LEDs dark, but input status changes in IR area when 24 V applied to terminal Open the CPU, locate L1 surface-mount fuse, measure 0 Ω, replace or jumper only as last resort
7 Input card pull-down resistor network degraded (channels 14, 15 reported as 3.832 kΩ vs spec ~3.3 kΩ) Inputs 14 and 15 read unstable, require excessive voltage to switch Replace input card or rework the resistor network on the PCB

Diagnostic Procedure

Follow this ordered procedure to isolate the 0x009B fault. Do not skip steps; each subsequent step assumes the prior cause was eliminated.

  1. Confirm the LED state. A solid ERR/ALM LED is a fatal-class indicator and a blinking ERR/ALM is non-fatal. The 0x009B code in the log is non-fatal, so a blinking state is expected after the memory error is cleared.
  2. Read the full error log online. From CX-Programmer, choose PLC > Error Log. Record every entry with timestamp, error code, and category (FAL/FALS/memory/peripheral). Multiple entries narrow the root cause.
  3. Inspect AR 1500 and AR 1501 in the Address Reference Tool. The most recent non-fatal value should match 0x009B; if AR 1501 also shows a fatal code, escalate to FALS recovery.
  4. Search the program for FAL(06) and FALS(07). Use Ctrl+F with the mnemonic filter set to FAL in CX-Programmer. Document every FAL number found.
  5. Place the CPU in PROGRAM mode and force-clear the error log: PLC > Clear Error Log. The LED should turn OFF if no FAL is currently held true by user logic.
  6. Place the CPU in MONITOR mode and observe the FAL rung. If the FAL re-triggers within one scan, the input condition is latched true. Trace upstream until you find the holding bit.

Hardware Recovery Procedure

Use this procedure when steps 1–6 of the diagnostic confirm no user-logic cause and the fault persists after a cold restart. The procedure reproduces a documented field recovery for the CQM1H-CPU51.

  1. Power down and isolate. Remove the 24 VDC supply to the CPU and disconnect the AC mains upstream. Wait 30 seconds for internal rails to collapse.
  2. Remove all expansion cards. Slide out the inner boards, I/O cards, Communication cards, and any CompoBus/S slave. Label each slot for reassembly. Leave only the CPU and power supply.
  3. Disconnect the backup battery. The CQM1H-CPU51 uses a CQM1H-BAT01 lithium battery (3.6 V, 1,100 mAh) on the CPU board. Note the polarity and lift the connector. The CPU will lose retentive DM, HR, and RTC data — make sure you have an offline backup of the program.
  4. Discharge the on-board supercapacitor. Early CQM1H-CPU51 revisions include a 0.1 F to 0.47 F supercapacitor in parallel with the battery. Wait at least 30 minutes with the battery disconnected to allow the supercap to bleed below 0.5 V. Measuring across the cap with a DMM should show a slow decay toward 0 V.
  5. Remove the CPU board. Release the four captive screws that hold the CPU to the plastic chassis. Lift the board straight out. Inspect under a 10× loupe for:
  • Dust accumulation around the MPU socket and crystal oscillator
  • Electrolyte residue at the supercapacitor pads (white-greenish crust)
  • Flux residue on through-hole leads (brown/yellow varnish)
  • Corroded battery clip contacts
  1. Clean the board. Spray electronics-grade contact cleaner (MG Chemicals 4140 or equivalent) on the affected areas. Scrub gently with an anti-static brush. Do not use isopropyl alcohol on the electrolytic capacitor pads; it does not dissolve carbon-tracking residue as well as a purpose cleaner. Allow the board to air-dry for at least 15 minutes, or bake at 50 °C for 30 minutes if you have access to a low-temperature oven.
  2. Reassemble. Reseat the CPU board, tighten the four screws, and reinstall each card in its original slot. Confirm the battery clip is reconnected and the supercapacitor is discharged before reconnecting power.
Never reinstall the battery or apply power until the board is fully dry. Residual contact cleaner is conductive and can produce transient short circuits that re-corrupt the UM checksum on the first scan.

Software and CX-Programmer Recovery

If CX-Programmer crashes during the Auto Online upload with a Microsoft error report dialog, the PC-side Toolbus driver is the most likely cause, not the PLC. Apply the following in order.

  1. Restart the host PC. The CQM1H Peripherals port driver does not recover gracefully from a CX-Programmer crash; you must reboot before reconnecting.
  2. Use Work Online, not Auto Online. From PLC > Work Online, manually select the correct Device Type: CQM1H-CPU51 and Network Type: Toolbus. Work Online does not require a successful upload to establish a connection.
  3. Clear the project of any binary that references the corrupted symbol table. In CX-Programmer, choose File > New and select CQM1H-CPU51. Save the empty project, then PLC > Transfer > To PLC to push a clean user program (memory areas included).
  4. Issue a full memory-format transfer. In the Transfer dialog, check Memory Areas > UM, DM, HR, AR, LR, TC, CIO to clear the controller's volatile and retentive memory. This forces a checksum re-write of the UM area on the next PROGRAM → RUN transition.
  5. Re-download the original program from the offline backup. Confirm the compile is error-free. Switch to MONITOR and verify the FAL rung does not execute.

For the Toolbus USB driver specifically, use the official CQM1H Series Programming Manual (W364), Appendix B Connecting to the PLC, for the correct COM port mapping and the standard 9600 bps / 19200 bps / 38400 bps / 115200 bps auto-baud sequence.

Verification and Commissioning

After applying the hardware and software recovery, perform this verification sequence to confirm the controller is fully operational before leaving site.

  1. With the controller in PROGRAM mode, confirm the ERR/ALM LED is OFF and the PWR LED is solid green.
  2. Read AR 1500 in CX-Programmer. The value must be 0x0000. Any non-zero value indicates a residual latched FAL.
  3. Read SR 25300 through SR 25307. All bits must be OFF. Bit 155 (i.e., SR 25400 + 155) corresponds to FAL number 155 and must be OFF.
  4. Transition to MONITOR mode. Wait 10 seconds. The ERR/ALM LED must remain OFF.
  5. Transition to RUN mode. Verify outputs drive per the program, then force an intentional I/O fault (open an input, break an output feedback) to confirm the controller still enters a non-fatal FAL state and recovers when the condition clears.
  6. Cycle power three consecutive times with at least 30 seconds between cycles. The controller must boot to RUN with the PWR green, ERR/ALM off, and the retentive data preserved.

Related Fault: Input LED Failure

A secondary fault commonly observed on the CQM1H-CPU51 is dark input LEDs on the 16 onboard DC inputs even when the input status changes correctly in the IR area. This is a separate hardware issue but often surfaces during the same diagnostic window. Two failure mechanisms are documented.

Mechanism A — L1 fuse open. The onboard 24 V input rail is protected by a surface-mount fuse labeled L1 on the input card. If L1 is open, the LED anode supply is missing. Measure the resistance between the L1 terminals with the CPU powered down; a healthy fuse reads 0 Ω. An open fuse reads OL. Replace the fuse with the same rating, or as a documented field workaround, jumper the L1 pads with insulated wire. The CQM1H Series Programming Manual, Section 4 Input Wiring, describes the L1 fuse function and warning language regarding over-current protection on the 24 V rail.

Mechanism B — degraded pull-down resistor network. Each input has a pull-down to the input-common terminal via an internal resistor. The CQM1H-CPU51 spec is approximately 3.3 kΩ. Field reports of inputs 14 and 15 reading 3.832 kΩ indicate a drift of 16% from spec. The CPU's input comparator may still register the input state, but the LED driver current derived from the same network is below the illumination threshold. Replace the input card or rework the resistor network if the LED visibility is required for operator feedback.

Always verify the input common wiring before assuming LED hardware failure. The CQM1H-CPU51 expects a negative-common configuration: the COM terminal is tied to 0 VDC and each input receives +24 VDC to turn ON. Reversing this polarity will leave the inputs unresponsive even with 24 V present on each terminal.

Preventive Maintenance Schedule

CQM1H-CPU51 controllers that are still in service should be inspected on the schedule below to prevent recurrence of the 0x009B fault and related issues.

Interval Action Acceptance Criterion
6 months Measure CQM1H-BAT01 voltage under load ≥ 3.4 VDC; replace at ≤ 3.0 VDC
12 months Visually inspect CPU board for dust, flux, electrolyte No visible contamination; clean if any
12 months Verify all programs in CX-Programmer match the as-running project Checksum matches; no orphan FAL/FALS
24 months Replace the CQM1H-BAT01 battery regardless of measured voltage New battery installed, date marked on label
24 months Verify supercapacitor ESR ESR ≤ 5 Ω at 1 kHz for 0.1 F cap; replace at ≥ 20 Ω

What does error code 0x009B mean on an Omron CQM1H-CPU51?

0x009B is a non-fatal FAL(06) execution with FAL number 155 (decimal). The CPU sets bit 155 in the SR 253 output area, writes the value to AR 1500, and blinks the ERR/ALM LED at ~1 Hz. Clear it by removing the input condition to FAL(06) 155 and issuing PLC > Clear Error Log in CX-Programmer from PROGRAM mode.

Why is the ERR/ALM LED solid red on a CQM1H-CPU51 with a 0x009B code in the log?

A solid ERR/ALM indicates a fatal error is also present, usually a memory error (FAL 0x0001) that the CPU registers before evaluating the FAL(06) 155 rung. Clear the memory error first; the LED should transition to a slow blink, confirming the residual is the non-fatal FAL only.

How long should I leave the CQM1H battery disconnected to clear memory?

Disconnect the CQM1H-BAT01 battery and wait at least 30 minutes to allow the on-board supercapacitor to discharge below 0.5 V. Measuring across the supercap terminals with a DMM should show a decay toward 0 V. Reconnect only after the board is fully reassembled and dry.

Can I clear the FAL(06) error without modifying the user program?

Yes, if the FAL is a one-shot (input condition is not latched). Switch to PROGRAM mode, choose PLC > Clear Error Log, then transition to MONITOR. If the FAL re-triggers on the first scan, the input condition is latched true and you must fix the user program to remove the holding bit.

The CQM1H-CPU51 input LEDs do not light but the inputs work in CX-Programmer. What is wrong?

The most common cause is an open L1 surface-mount fuse on the input card. Power down, measure across L1 with a DMM; a healthy fuse reads 0 Ω. If the fuse is open, replace it with the same rating, or as a documented field workaround, jumper the L1 pads with insulated wire. Verify the COM terminal is wired to 0 VDC (negative common) before concluding the LED hardware has failed.

Back to blog