How to Fix Fanuc PMC Alarms PC030, PC090, and PC097 System Faults
Diagnose and repair Fanuc PMC alarms PC030, PC090, and PC097 on your CNC control. Learn to resolve RAM parity, ladder CRC, and compilation faults safely.
Introduction: Production Risks and PMC Failures
A sudden collapse of machine logic during a heavy roughing pass poses immediate danger to tooling, workpieces, and operators. When the Programmable Machine Control (PMC) system on a Fanuc CNC detects a hardware or logic verification failure, it drops the main contactor (V-ready off), initiating an absolute emergency stop (E-stop) state. With the contactor dropped, coordinate motion arrests instantly and the spindle halts. Weak mechanical axis brakes can fail to hold the weight of a heavy vertical head, resulting in sudden vertical axis drops that scrap parts and crash spindles. Operators face immediate loss of clamp pressure on heavy fixtures holding massive castings, potentially releasing workpieces mid-rotation. The abrupt halt occurs without controlled deceleration, driving the active cutting tool into the workpiece, fracturing carbide inserts, and gouging expensive alloys.
Unlike G-code parser issues such as the PS0001 TH error which stems from tape reader or data format parity mismatches in the program block, the PC030 alarm indicates a physical parity error on the SRAM chips.
Technical Summary: Fanuc PMC System Alarms
| Field | Technical Inventory |
|---|---|
| Command Code | PC030 / PC090 / PC097 |
| Modality / Group | PMC System Alarms (Programmable Machine Control diagnostic faults) |
| Supported Brands | Fanuc |
| Critical Parameters | Keep Relays (K00–K99, e.g., K17.1, K19.4), Timers (T000–T255), Data Tables (D0000–D9999), CNC Parameters 8100 & 13101 |
| Main Constraint | RAM Parity errors (PC030) force an immediate dropped contactor emergency stop state to prevent uncontrolled mechanical movement. F-ROM write operations must be performed when the machine is at a complete standstill to prevent logic conflicts. |
Quick Read: Key Troubleshooting Steps
- Contactor Drop: A PMC system alarm (PC030, PC090, PC097) triggers an immediate emergency stop, cutting power to the servo drives via the main contactor (V-ready off).
- Battery Maintenance: Replace the lithium backup battery on the main CPU card only while the CNC system is powered ON to prevent erasing SRAM memory contents.
- External Backups: Maintain fresh copies of
SRAM.FDBandPMC1.LADfiles on an external memory card before attempting any diagnostic memory clears. - Tool Verification: Use FANUC LADDER-III to recompile or debug the ladder logic program, verifying the targeted controller series is compatible with the compiler settings.
- Online Editing: Always execute a permanent write operation to the F-ROM flash memory after completing online edits to avoid a PC097 checksum error on the next power cycle.
- Interface Addresses: Separate part program syntax from logical execution using the strict G (CNC-to-PMC) and F (PMC-to-CNC) memory maps to isolate physical CNC memory from the PMC space.
Basic Concepts of Fanuc PMC Architecture
The Programmable Machine Control (PMC) operates as a high-isolation coprocessor within the Fanuc CNC architecture, executing safety-critical sequences and managing peripheral electrical systems. This system runs in parallel with the main CNC interpolator, isolating G-code execution from physical hardware controls. The logical execution of the PMC relies on distinct addressing categories, namely physical inputs (X-addresses), physical outputs (Y-addresses), internal relays (R-addresses), and keep relays (K-addresses). Keep relays are non-volatile bits (K00 to K99) that preserve setup parameters, such as auto-restart enablement or PMC screen diagnostic overrides, even when main power is disconnected.
Dynamic timing and arithmetic calculations in the machine sequences utilize functional timers (T000 to T255) and data table registers (D0000 to D9999). Timers control delay intervals from 1 millisecond up to 99,999 milliseconds to allow physical relays to fully settle. Data tables operate as double-byte signed registers, storing values between -32768 and 32767. These registers track critical manufacturing variables, tool magazine capacities, or specific diagnostic codes that guide ladder logic decisions.
The physical execution media consists of high-speed volatile memory and non-volatile storage. The PMC ladder program resides permanently within non-volatile flash memory, known as F-ROM. At boot-up, this compiled code is copied into fast system RAM (SRAM/DRAM) for real-time cyclical processing. Static RAM (SRAM) is also used to preserve active registers and data table states, relying on a continuous battery backup. If the backup battery voltage drops, or if SRAM parity checks fail during memory operations, the PMC halts execution to prevent runaway logic.
Command Structure and Interface Addressing
Part programs communicate with the PMC interface using specific CNC-to-PMC signals called G-addresses (ranging from G0000 to G7999), while the PMC communicates back to the CNC via PMC-to-CNC signals called F-addresses (ranging from F0000 to F7999). This boundary represents a rigid interface designed to protect system safety. A G-code program can set G-addresses via custom macros or standard M-codes, requesting the PMC to perform operations like indexing a turret or locking a hydraulic chuck. In return, the PMC updates F-addresses to verify input switches and release axis interlocks.
Because G-code commands cannot directly access PMC hardware relays or modify internal timers, macro variables act as the programming bridge. A part program uses write commands to change CNC parameters, which the PMC subsequently monitors. Diagnostic overrides can also be configured using non-volatile Keep Relays or specific parameters. To set up this physical system interface, system integrators configure Parameter No. 8100 to allocate PMC paths and Parameter No. 13101 to set I/O Link group sequences.
; G-code to PMC Interface Syntax
M21 ; Execute clamp command (triggers G-address sequence)
G04 P500 ; Dwell delay to wait for physical switch registration
#3000 = 101 ; Generate CNC alarm state from macro variable #3000
| Address Type | Prefix | Data Range | Description |
|---|---|---|---|
| CNC-to-PMC Interface | G | G0000 to G7999 | Transmits operational requests and mode signals from the CNC to the PMC logic |
| PMC-to-CNC Interface | F | F0000 to F7999 | Transmits status flags, interlock triggers, and confirmation signals to the CNC |
| Physical Inputs | X | X000 to X127 | Monitors external switches, door interlocks, pressure valves, and pushbuttons |
| Physical Outputs | Y | Y000 to Y127 | Drives physical solenoids, magnetic contactors, and stack lights on the machine |
| Keep Relays | K | K00.0 to K99.7 | Non-volatile binary status bits (0 or 1) used for machine configuration setup |
| Data Tables | D | D0000 to D9999 | 16-bit signed integer registers storing parameters, tools, or diagnostic codes |
Brand Applications: Fanuc PMC Environment
Fanuc
In the Fanuc architecture, the interface between the CNC and PMC is strictly managed through the G and F address registers. For example, during a tool change cycle, the CNC sets a specific G-address bit to request tool preparation, and the PMC checks physical switches before sending back an F-address confirmation bit to release the CNC feed hold.
To interact with these signals from the G-code environment, programmers utilize M-codes or write to macro variables like #3000 to throw a custom alarm if the interface state fails. For example, an operator can command M21 to lock the fixture, and the PMC will verify keep relay K02.1 and input X12.3 before allowing the next block to execute.
| System Component | Resource / Variable | Standard Target Value | Role in Troubleshooting |
|---|---|---|---|
| Keep Relay Configuration | K17.1 | Binary 1 (Enabled) | Controls the auto-restart sequence after transient power drops |
| Keep Relay Configuration | K19.4 | Binary 0 (Disabled) | Overrides diagnostic PMC screens on older series displays |
| Path Selection Parameter | Parameter No. 8100 | 0 to 4 | Allocates specific PMC processing paths in multi-path systems |
| I/O Link Group Parameter | Parameter No. 13101 | 0 to 32 | Defines communication mapping for I/O modules on the network |
| System SRAM Backup | SRAM.FDB | Binary file | Complete backup of registers, parameters, and tool offsets |
| Ladder Logic File | PMC1.LAD | Binary file | Compiled logic program controlling all machine peripheral functions |
Warning: Clearing the static memory (SRAM) without a valid SRAM.FDB backup file on a memory card will erase the system parameters, axis grid shifts, and tool offset lists, turning a simple diagnostic reboot into a major multi-day engineering rebuild.
Brand Version and Series Comparison
| Fanuc Controller Series | PMC Storage Medium | Logic Execution Method | Resolution for Checksum/Parity Faults |
|---|---|---|---|
| Legacy Series (0-C, 16i/18i/21i) | Physical EPROM or EEPROM microchips | Direct execution from non-volatile memory chips | Requires physical swap of EPROM/EEPROM chips if data sectors are damaged or corrupted. |
| Mid-Range Modern Series (0i-D/F) | Non-volatile F-ROM (Flash Read-Only Memory) | Loads compiled logic to SRAM/DRAM on boot-up | Restore the ladder logic using PMC1.LAD via the memory card in the BOOT menu screen. |
| Advanced Modern Series (30i/31i/32i-B) | High-speed multi-path F-ROM and DRAM | High-speed parallel co-processing with dynamic memory checks | Re-flash ladder logic or clear corrupted SRAM, then reload the compiled files via FANUC LADDER-III. |
Technical Analysis: Memory Evolution and Live Editing
Evaluating the progression of Fanuc hardware highlights a major technical shift in how compiled ladder logic is stored and processed. In legacy controllers, such as the Fanuc 0-C, 16i, or 18i series, the PMC program was written directly to physical EPROM or EEPROM chips. These chips had to be erased using ultraviolet light or specialized burners and physically inserted into sockets on the master board. When memory degradation or electrical surges occurred, sectors on these physical chips were permanently damaged, forcing operators to purchase replacement chips. Checksum parity errors on these systems were hard hardware faults that could not be resolved via software commands.
PMC hardware failures are closely associated with main motherboard interrupts. Operators experiencing general processor locks should read the guide on diagnosing Fanuc system alarms ALM195, ALM196, and ALM197 to isolate board-level communication faults.
Modern Fanuc controllers, including the 0i-D, 0i-F, and the 30i/31i-B series, rely on a flexible flash memory architecture (F-ROM) combined with volatile RAM (SRAM and DRAM). During the boot-up sequence, the controller copies the compiled ladder logic from the non-volatile F-ROM into DRAM for rapid, real-time cyclic execution. Diagnostic parameters, relays, and counters are maintained in battery-backed SRAM. While this architecture allows fast processing and direct online logic modifications without halting the machine, it introduces vulnerability to power fluctuations. A sudden loss of battery voltage during storage periods will degrade SRAM contents, leading to a PC030 RAM Parity error upon restarting.
This architecture also shapes how live online logic modifications, commonly referred to as online edits, are processed. Technicians can modify rung logic in real time using FANUC LADDER-III while the machine is running. However, these changes reside strictly within the volatile RAM space. If the technician completes these modifications but fails to execute the final flash write function to update the non-volatile F-ROM, a serious checksum discrepancy is created. The active RAM contents will differ from the stored F-ROM reference value. Consequently, at the next system power cycle, the controller calculates the cyclic redundancy check (CRC) across the active memory and detects the mismatch, immediately triggering a PC097 CRC error.
Program Examples and Dry Run Verification
; Fanuc: #3000 = 101 (PMC ALARM PC030 RAM PARITY OCCURRED) ; Triggers an immediate CNC alarm state from G-code macro variables to block tool movement
; Fanuc: M21 ; Commands the chuck or clamp to lock, requesting the PMC to verify keep relay K02.1 and physical input X12.3 before releasing feed holds
; Fanuc: G04 P500 ; Commands a 500-millisecond dwell delay to give the PMC hardware relay enough physical time to register the contact switches
During a dry run verification of this sequence, the G-code executor processes each instruction block step-by-step. In the first line, the system monitors macro variable #3000. If an external diagnostic condition sets the variable to 101, the CNC immediately stops tool movement and throws an active alarm message on the screen. The second line commands M21, which signals the PMC to lock the hydraulic chuck. The PMC logic halts coordinate motion (feed hold) until physical input X12.3 (chuck locked switch) is high and keep relay K02.1 is validated. The third line uses a dwell command G04 P500 to pause tool movement for exactly 500 milliseconds, ensuring the physical contacts and inductive switches have stabilized before the spindle starts rotating.
Error Analysis and Diagnostic Codes
| Brand | Alarm Code | Trigger Condition | Symptom | Root Cause / Fix Action |
|---|---|---|---|---|
| Fanuc PMC | PC030 | PMC RAM Parity mismatch or checksum failure during real-time memory operations | Contactor drop, red alarm light, system halts and displays "PC030 RAM PARITY" | Replace lithium backup battery on the main board while power is ON; check motherboard SRAM chip if error persists. |
| Fanuc PMC | PC090 | PMC CPU detects invalid, uncompiled, or corrupt functional ladder instructions | PMC fail signal active, CNC transitions to E-stop state, ladder logic ceases execution | Recompile the ladder logic file using a compatible version of FANUC LADDER-III; upload the correct binary via the BOOT menu. |
| Fanuc PMC | PC097 | Active PMC ladder CRC checksum mismatch against reference F-ROM flash value | Spindle halts, axis drives drop out, CNC displays "PC097 LADDER CRC ERROR" | Restore the verified PMC1.LAD file via FANUC LADDER-III or the system BOOT menu; check I/O Link cables for shielding issues. |
When PMC interlocks drop, the coordinate servo motors lose their reference. This sudden command drop can trigger drive-level faults such as the DS1512 excess velocity alarm due to abrupt deceleration feedback.
Application Note: Battery Replacement and Grounding Hazards
Attempting to replace the lithium backup battery while the controller is powered OFF will instantly erase all SRAM contents, resulting in a catastrophic loss of machine parameters and a PC030 RAM Parity error upon the next boot-up. To prevent this, operators must perform routine lithium battery replacements strictly while the Fanuc control system is powered ON. If the system is turned off, the memory backup capacitors can only maintain the SRAM charge for a few seconds; once they drain, all tool offsets, custom macro registers, and ladder configurations vanish. If memory corruption has already occurred, technicians must access the system BOOT screen and restore the SRAM.FDB backup file from an external PCMCIA or CF storage card to recover normal machine operation.
Related Command Network
- M06 (Tool Change): Triggers the PMC sequence logic to index the tool turret or arm. The CNC signals the tool selection via G-addresses, and the PMC checks physical switches (like turret lock sensors) before returning an F-address execution complete flag.
- M03 (Spindle Start): Decodes spindle forward rotation commands within the PMC logic. The PMC verifies safety interlocks (such as enclosure doors being closed) before closing the spindle drive contactors.
- G10 L50 (Parameter Writing): Writes G-code system parameters and registers programmatically to PMC memory tables. This allows part programs to update PMC data registers (D-addresses) directly without manual operator entry.
- M99 (Reset/Rewind): Synchronizes cycle counts and coordinates subprogram returns. The PMC monitors this M-code to update parts counters, reset keep relay flags, and reset system timers.
Practical Takeaways
Minimizing downtime on Fanuc CNC machinery requires systematic maintenance of the logic-critical PMC storage media. Operators should establish a strict calendar schedule for replacing lithium backup batteries annually, executing the exchange while the cabinet power remains switched on. Backup files of both the active SRAM (SRAM.FDB) and the compiled ladder logic (PMC1.LAD) must be saved on a physical card and stored in the machine cabinet. When deploying logic updates, developers must ensure the FANUC LADDER-III compilation settings match the specific target PMC type and that all online edits are successfully written to the non-volatile F-ROM before cycling power. These precautions prevent parity errors, checksum mismatches, and sudden production stoppages.
Frequently Asked Questions
Why does a PC030 RAM Parity error occur after a weekend shutdown?
A PC030 RAM Parity error occurs because the lithium backup battery on the CPU card has drained below its critical voltage threshold, failing to sustain the volatile SRAM contents while main power was turned off. To resolve this, keep the control system powered ON, swap the old lithium battery with a fresh cell, and restore the SRAM registers using your stored SRAM.FDB backup file through the boot menu.
How do online ladder logic changes trigger a PC097 CRC error?
A PC097 CRC error occurs because the active rungs modified during an online edit reside only in volatile RAM, creating a checksum discrepancy against the reference value stored in the non-volatile F-ROM. To prevent this, immediately perform a permanent write operation in FANUC LADDER-III to synchronize the RAM logic with the F-ROM flash memory before cycling power.
What is the difference between G-addresses and F-addresses on a Fanuc control?
G-addresses are interface registers carrying requests and modes from the CNC to the PMC, while F-addresses transmit status confirmations and interlocks from the PMC back to the CNC. When diagnosing cycle start failures, monitor these bits in the diagnostics display to identify which physical sensor or keep relay is blocking the motion release signal.
Still not resolved?
Ask our AI assistant about this topic in natural language. Grounded in verified sources, no hallucinations.

- CNC CARE Co-Founder (May 2025 - Present)
- Mitsubishi Electric NC Sales & Service Section Manager (2008 - 2025)
- Reis CNC Service Engineer (2003 - 2005)
- Ören Kalıp CNC Mold Line Team Leader (1999 - 2002)
With over 25 years of experience working in all areas of the CNC machine industry, I continue my activities as a co-founder of CNC CARE, where we offer brand-independent consulting, engineering, and original spare parts services.
Related Articles
Other articles on this topic
G73 and G83 Peck Drilling Cycles: High-Speed and Deep-Hole Milling
Program G73 and G83 peck drilling cycles on Fanuc, Siemens, and Mitsubishi CNCs. Learn parameters, clear alarms, and optimize high-speed deep-hole milling.
G50.2 and G51.2 Polygon Turning: Synchronized Lathe Machining
Learn how to program G50.2 and G51.2 polygon turning on Fanuc, Siemens, and Mitsubishi CNC controls. Master spindle synchronization parameters, alarms, and G-code examples.
G31 Skip Function and CNC Probe Programming: Fanuc, Siemens, Mitsubishi
Master G31 skip function and probe programming on Fanuc, Siemens, and Mitsubishi CNCs. Prevent crashes, resolve alarms, and configure servo lag parameters.
G07.1 Cylindrical Interpolation: Guide for Fanuc, Siemens, Mitsubishi
Master G07.1 cylindrical interpolation on Fanuc, Siemens, and Mitsubishi CNCs. Learn axis mapping parameters, alarm fixes, and syntax rules to prevent crashes.