Mitsubishi FX PLC: Program Recovery After Battery Failure

Ryan Tanaka13 min read
FX SeriesMitsubishiTroubleshooting
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

1. Problem Overview

A Mitsubishi FX series PLC controlling a three-belt conveyor is connected to GX Developer through an SC09 programming cable. The BATT. LED is illuminated on the CPU front face and the upload operation returns an error, an empty project, or a corrupted image. The most common root cause is battery exhaustion on the FX1N, FX2N, FX3G, or FX3U family, which clears the project, retentive bit/word ranges, counters, and the real-time clock the next time main power is removed. This technical reference walks through identification, cable setup, GX Developer connection, upload semantics, error resolution, I/O remapping, and pneumatic index logic so the conveyor can be returned to service without reliance on the original integrator.

Critical safety: Never replace the CPU battery with main power OFF. Voltage loss during the swap erases the project, retentive relays, and RTC backup. Replace the battery with the PLC powered and complete the swap within 30 seconds of removal.

2. FX CPU Identification and Memory Layout

Identify the CPU by reading the designation on the front face (e.g., FX1N-40MR-D). The full part number encodes the family, total I/O count, output type (R = relay, T = transistor, S = triac), and supply voltage (D = 24 VDC, no suffix = 100–240 VAC). The FX1S, FX1N, FX2N, FX3G, and FX3U families share the SC09 port and the GX Developer toolchain but differ in memory layout, retentive ranges, and battery part numbers. Selecting the wrong CPU model returns GX Developer error 0xC050 (PLC type mismatch) and aborts the transfer.

CPU Family Typical I/O Program Memory Memory Type Battery Part Number Retentive Range
FX1S-10/14/20/30 10–30 points 2,000 steps EEPROM (built-in) F2-40BL only for RTC option board M512–M1535, D256–D511, C16–C31
FX1N-14/24/40/60 14–60 points 8,000 steps Battery-backed RAM + optional cassette F2-40BL M512–M1535, D128–D255, C16–C31
FX2N-16/32/48/64/80/128 16–128 points 8,000–16,000 steps Battery-backed RAM with cassette F2-40BL M512–M1535, D128–D255, C16–C31, R0–R32767 (cassette)
FX3G-14/24/40/60 14–60 points 32,000 steps Battery-backed RAM, optional cassette FX3U-32BL M1536–M7679, D110–D7999, C16–C199
FX3U-16/32/48/64/80/128 16–128 points 64,000 steps (FX3U-FLROM-1M) Battery-backed RAM + flash cassette FX3U-32BL Full retentive range incl. file registers

For product specifications and firmware notes, refer to the Mitsubishi Electric FA PLC product page.

3. Battery Failure Symptoms and Diagnostic Sequence

The CPU battery retains the project, retentive bit/word ranges, counter current values, and the RTC (FX3G/FX3U only) when main power is removed. A depleted battery produces these field-observable symptoms:

  • BATT. LED steady red on the CPU front face
  • Special auxiliary relay M8005 (battery voltage low) latched ON
  • Special data register D8005 holds the battery voltage (FX3U/FX3G: nominal 3.0 V, replace below 2.5 V)
  • Uploaded program returns an empty project, default parameters, or a corrupted image
  • Counter C current values reset to zero on every power cycle
  • RTC loses time on every power cycle (FX3G/FX3U only)
  • Latched solenoids or contactors drop out unexpectedly after power cycle

3.1 Diagnostic Flowchart

START: BATT. LED ON? M8005 = 1 ? Replace F2-40BL / FX3U-32BL Battery OK; check D8005 Upload succeeds ? Save to PC + 2 backups Error 0xC050? Verify CPU Ladder matches field I/O ? Map I/O with Monitor mode Document + lock cabinet YES NO YES NO NO YES

4. SC09 Cable: Wiring, Termination, and Driver Notes

The SC09 is a USB-to-Mitsubishi RS-422 mini-DIN programming cable. The PLC end is an 8-pin mini-DIN; the PC end is a USB-A. The cable contains a USB-to-serial bridge (typically FTDI FT232 or Silicon Labs CP2102) with integrated RS-422 transceivers that convert the differential pairs required by the FX programming port.

Mini-DIN Pin Signal Name Direction RS-422 Function Twisted Pair
1 RXD+ PLC → PC Receive + Pair A
2 RXD- PLC → PC Receive - Pair A
3 Not connected
4 TXD+ PC → PLC Transmit + Pair B
5 Not connected
6 Not connected
7 TXD- PC → PLC Transmit - Pair B
8 GND Cable shield

4.1 COM Port Assignment on Windows

  1. Connect the SC09 to the PC USB port with the FX powered ON
  2. Open Windows Device Manager → Ports (COM & LPT)
  3. Locate the new "USB Serial Port (COMx)" entry and note the COM number
  4. Right-click → Properties → Port Settings → 9600 bps, even parity, 7 data bits, 1 stop bit (default FX protocol)
  5. Advanced → set COM port number to COM1–COM9 to avoid legacy issues with GX Developer
  6. Disable USB selective suspend for the COM port to prevent disconnect during long uploads
Windows 10/11 driver note: The SC09 uses an FTDI or CP2102 bridge. If Windows auto-installs a generic driver, manually install the FTDI VCP 2.12.28 or CP210x 6.7.6 driver from the chip vendor to ensure stable enumeration under USB suspend/resume cycles. Driver mismatches cause 0x0180 timeouts after 30–60 seconds.

5. GX Developer Installation and Project Setup

GX Developer is the legacy programming tool for FX CPUs. It supports Windows XP, 7, 8, and 10 (32-bit). For 64-bit Windows 10/11 or Windows 11, install GX Developer inside a Windows XP Mode VM, or use Windows compatibility mode (set to Windows XP SP3) with administrator privileges. Newer projects should be migrated to GX Works2 (FX3G/FX3U/FX5U) or GX Works3 (iQ-R/FX5).

5.1 Recommended Installation Order

  1. Install GX Developer 8.91Z or 8.92 (last released version, supports FX3U)
  2. Install the Monitor/PLCGX simulation components if testing with GX Simulator
  3. Install the FXCPU compatibility add-on for FX3G/FX3U support
  4. Install the USB SC09 driver separately if Windows does not auto-recognize the bridge
  5. Reboot before first connection attempt

5.2 New Project Parameters

Parameter Selection
PLC Series FXCPU
PLC Type FX1N / FX2N / FX3G / FX3U (must match CPU label)
Project Type Simple Project (no labels) or Structured Project
Label None for FX1N/FX2N; optional for FX3G/FX3U
Comment Capacity Set block 1 = 3000 steps; block 2 = 3000 steps before upload

6. Connection Procedure

  1. In GX Developer, open the project created in §5.2
  2. Click Online → Transfer Setup
  3. Select Serial connection, then double-click Serial (USB-Serial COMx)
  4. Confirm 9600 bps, even parity, 7 data bits, 1 stop bit
  5. Click Connection Test — expected: "Successfully connected to FX1N/FX2N/FX3G/FX3U at COMx"
  6. If the test fails, verify SC09 seating, COM number, and CPU model
  7. Once connected, select Online → Read from PLC (Ctrl+Shift+F4)
  8. Select the components to upload: Main Program, Parameters, Device Memory, Comments (if stored in PLC)
  9. Click Execute — the upload begins and the progress bar increments
  10. Save the project immediately to two physical locations (local disk + USB or network share)

7. Read vs. Write: Semantic Distinction

This is the most common point of confusion in field recovery work. The two operations are mirror images and choosing the wrong direction will silently overwrite the only surviving project.

  • Read from PLC (Ctrl+Shift+F4): PLC → PC. Use when the PLC holds the only surviving project. This is the operation to use immediately after battery failure to preserve whatever logic remains.
  • Write to PLC (Ctrl+Shift+F3): PC → PLC. Use when the PC project is the trusted source, after editing, or when initializing a replacement CPU.
  • Verify (Ctrl+Shift+F5): PC ↔ PLC. Compares step-by-step without transferring. Always run Verify after a write to confirm the project landed correctly.
Field rule: After any successful upload, treat the resulting PC file as a working backup and never write it back to the PLC until it has been compared rung-by-rung against the physical machine I/O. PLC projects uploaded without comments are bare logic; the original comments live only in the PC source.

8. Upload Error Codes and Resolution Matrix

GX Developer Error Hex / Code Likely Cause Resolution
Communication timeout 0x0180 Wrong COM port, cable not seated, FX in STOP with no protocol enabled, USB suspend Verify COM port, reseat mini-DIN, disable USB selective suspend, retry
PLC type mismatch 0xC050 Project header lists wrong FX CPU Re-create project with correct PLC Type and retry read
Password protected 0xC056 Project password set in PLC Request password from original integrator, or perform password clear (erases project)
Memory cassette error 0xC044 Optional cassette not detected or wrong orientation Power down, reseat FX1N-CNV-BD cassette, retry
Parameter out of range 0xC024 Battery-low corruption in parameter block Reset PLC to defaults via Online → Remote Reset, re-write parameters from PC
Battery low warning 0xC0B0 M8005 latched; upload still proceeds with warning Replace battery before next power cycle; upload succeeds
Memory capacity exceeded 0xC102 PC project larger than PLC program memory Trim unused subroutines or migrate to FX3U with FX3U-FLROM-1M
Checksum error 0xC056 Project file corrupted in PC storage Re-read from PLC or restore from earlier backup

9. I/O Address Conventions

Mitsubishi FX addressing uses octal notation for X (input) and Y (output) and decimal for M (internal), T (timer), C (counter), and D (data register). The same physical point may appear multiple times in ladder, which is normal — unlike Allen-Bradley, Mitsubishi does not require unique coil references for parallel branches.

Address Type Symbol Notation Typical Use
Input X Octal (X0, X1, … X7, X10, X17) Field sensors, pushbuttons, E-stops
Output Y Octal (Y0, Y1, … Y7, Y10) Solenoids, contactors, indicators
Internal Relay M Decimal (M0–M3071, M8000–M8511 special) Logic, status, latches
Data Register D Decimal (D0–D7999) Numeric values, setpoints, recipes
Timer T Decimal + K preset (T0 K50 = 5.0 s at 100 ms) On/off delays, dwell times
Counter C Decimal (C0–C255) Event counts, batch tracking
Special M M8000–M8511 Decimal (system-defined) M8000 RUN flag, M8001 inverse RUN, M8002 initial pulse, M8005 battery low, M8011 10 ms clock, M8012 100 ms clock, M8013 1 s clock, M8014 1 min clock

10. Conveyor Index Logic: Three-Belt Pneumatic Sequencer

The field scenario describes three belts where the outer belts run continuously and the middle belt indexes via pneumatic cylinders to create single-file spacing. A typical ladder implementation uses one timer per indexer stage, one output per solenoid, and an interlock so the cylinder retracts before the next extension cycle.

10.1 Sample Ladder for Indexer Stage 1 (Inverted)

|    X0      M100      Y0           |
|-----||-----| |-----(  )----------|
|  Product-in         Index1 fwd   |
|                     (solenoid)   |

|    Y0      T0                    |
|-----|/|-----|/|------------------|
|  Index1 run  T0 done (retract)  |

|    Y0                             |
|--(TON T0 K30)--------------------|   ; 3.0 s dwell (100 ms clock)

Reading the ladder: X0 is the "product-in" sensor on belt 1; M100 is a run permit; when both are true, output Y0 (indexer 1 forward) energizes. After 3.0 s (T0 = K30 at 100 ms clock from M8012), the normally-closed Y0 contact drops out and the cylinder retracts via the second rung.

10.2 Cycle Time Adjustment

To tune the index rate, modify only the K preset of the dwell timer. Common field values for box spacing conveyors:

Application Dwell Timer Preset (K) Effective Dwell (100 ms base)
Fast indexing (small parts) K10–K20 1.0–2.0 s
Standard indexing (cartons) K30–K50 3.0–5.0 s
Heavy or odd-shaped product K70–K120 7.0–12.0 s
Mixed manual/automatic K200–K500 20–50 s (operator paced)

10.3 Timer Clock Source Selection

FX timers T192–T199 default to the 10 ms clock (M8011). T200–T245 default to the 100 ms clock (M8012). Most conveyor dwell timers fall in T0–T199 and can be switched between 100 ms and 10 ms by editing the parameter "Timer clock" for the relevant range.

11. Pneumatic Solenoid Mapping Procedure

  1. Place the PLC in Monitor mode (Online → Monitor → Monitor Mode)
  2. Force all Y outputs OFF (Online → Debug → Force ON/OFF → clear all)
  3. Open Device Monitor (Online → Monitor → Device Monitor) and locate the Y range
  4. Manually toggle each Y address via the force menu and observe which physical cylinder extends
  5. Record the mapping in a spreadsheet (Y0 = front belt raise, Y1 = mid belt raise, Y2 = rear belt raise)
  6. Cross-reference the mapping against the machine P&ID; if mismatches exist, the original comments are your only source of truth
  7. Remove all forces before resuming ladder execution

12. Battery Replacement Procedure

  1. Verify the PLC is powered ON and in STOP or RUN mode
  2. Open the lower front cover (FX1N/FX2N) or remove the small panel (FX3G/FX3U)
  3. Locate the battery connector — typically a 2-pin JST with the battery lead pre-attached
  4. Disconnect the old F2-40BL or FX3U-32BL
  5. Connect the new battery within 30 seconds
  6. Verify BATT. LED extinguishes within 10 seconds
  7. Verify M8005 clears in Device Monitor
  8. Close the cover and record the replacement date on the cabinet label
  9. Power-cycle the PLC once and confirm the project survives (with new battery installed)
Battery Compatible CPUs Nominal Voltage Service Life (25 °C)
F2-40BL FX1N, FX2N, FX1S (RTC option) 3.6 V 5 years
FX3U-32BL FX3G, FX3U, FX3UC 3.0 V (Lithium) 5 years
F2-40BLC Replacement series for F2-40BL 3.6 V 5 years

13. Verification Checklist After Recovery

  1. Read from PLC and confirm step count matches PC project
  2. Verify all X inputs toggle correctly in Monitor mode by manually actuating each sensor
  3. Verify all Y outputs drive correctly via Debug → Force (one at a time)
  4. Run each timer T with a 1 s preset and verify the accumulator behaves correctly
  5. Run each counter C with a manual count and verify latching at the preset value
  6. Power-cycle the PLC and confirm program retention (with new battery installed)
  7. Confirm retentive M and D ranges hold values across power cycle
  8. Document the recovery on the maintenance log including original integrator, recovery date, and battery replacement date
  9. Save the recovered project to the maintenance server with a versioned filename (e.g., Conveyor_FX1N_2024-03-15_recovered.gxw)

14. Preventive Maintenance Schedule

Interval Action
Annual Check BATT. LED; verify M8005 = 0 in Device Monitor
4-year Schedule battery replacement regardless of LED state
5-year Mandatory battery replacement; replace during planned downtime
Per revision Upload and back up PC project with version comment and date
Quarterly Verify SC09 cable and COM port still enumerate after PC maintenance

15. Platform Alternatives for Migration

If the FX is approaching end-of-life or the conveyor is being re-engineered, consider migrating to a current platform. ABB AC500 V3 with Automation Builder 2.9.0 supports structured text and ladder with multi-CPU configurations suitable for conveyor lines, and ships with example projects. For smaller standalone machines, the AutomationDirect CLICK series with CLICK Help Version 3.80.2 offers a low-cost ladder-only environment with built-in USB programming. Migration should preserve the I/O list and timer/counter ranges from the existing FX program to minimize rewiring.

16. Frequently Asked Questions

Why does GX Developer show error 0xC050 even though the SC09 cable is working?

The cable is functional, but the project header lists a different FX CPU than is physically installed. Re-create the project with the exact CPU model (FX1N-40MR-D, FX3U-32MT-D, etc.) printed on the front face and retry Read from PLC.

Can the program be recovered if the battery has been dead for weeks?

Yes, if the project is stored in battery-backed RAM, but expect partial corruption of retentive bits, counters, and the RTC. EEPROM-based FX1S retains the program indefinitely without a battery. Always attempt a read before any further power cycle to capture whatever logic remains.

Does uploading from the PLC include the comments?

Only if the original programmer enabled comment storage in the PLC comment memory area (Parameters → Device Capacity → Comment). Most legacy projects strip comments on upload; rebuild them in GX Developer using the I/O list, machine P&ID, and force-driven I/O verification.

What is the difference between T0 K30 and T0 K3.0?

T0 K30 means 30 timer ticks. With the 100 ms clock (M8012) that is 3.0 seconds. T0 K3.0 is not a valid preset — FX timers always use integer ticks. To get 0.3 seconds, use the 10 ms clock (M8011) with T192 K30.

How do I force an output on for testing without changing the program?

In GX Developer select Online → Debug → Force ON/OFF, choose the target Y or M address, select Force ON, and click Execute. Always remove all forces before resuming normal operation; forced bits override the ladder logic and can cause unexpected motion if left active.

What GX Developer version supports FX3U and FX3G?

GX Developer 8.91Z or later (last released 8.92) supports FX3U and FX3G with the FXCPU compatibility add-on. Newer projects should migrate to GX Works2 (FX3G/FX3U/FX5U) or GX Works3 (iQ-R/FX5), both of which can import GX Developer projects directly.

Back to blog