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:
- A
FAL(06)orFALS(07)ladder instruction whose input condition is held true by a logic bug or latched I/O. - Corruption of the CPU's User Memory (UM) due to battery failure, capacitor degradation, or environmental contamination (dust, flux residue, humidity).
- 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 25300throughSR 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.
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.
- 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.
-
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. - 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.
-
Search the program for FAL(06) and FALS(07). Use
Ctrl+Fwith the mnemonic filter set toFALin CX-Programmer. Document every FAL number found. -
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. - 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.
- 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.
- 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.
- 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.
- 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.
- 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
- 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.
- 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.
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.
- Restart the host PC. The CQM1H Peripherals port driver does not recover gracefully from a CX-Programmer crash; you must reboot before reconnecting.
-
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. -
Clear the project of any binary that references the corrupted symbol table. In CX-Programmer, choose
File > Newand select CQM1H-CPU51. Save the empty project, thenPLC > Transfer > To PLCto push a clean user program (memory areas included). - 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.
- 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.
- With the controller in PROGRAM mode, confirm the ERR/ALM LED is OFF and the PWR LED is solid green.
- Read
AR 1500in CX-Programmer. The value must be0x0000. Any non-zero value indicates a residual latched FAL. - Read
SR 25300throughSR 25307. All bits must be OFF. Bit 155 (i.e.,SR 25400 + 155) corresponds to FAL number 155 and must be OFF. - Transition to MONITOR mode. Wait 10 seconds. The ERR/ALM LED must remain OFF.
- 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.
- 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.
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.