Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
109 changes: 109 additions & 0 deletions lessons/en/fanuc-alarm-code-reference.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,109 @@
---
{
"title": "FANUC Robot Alarm Code Reference Table",
"domain": "fanuc",
"subdomain": "alarm-troubleshooting",
"tags": ["fanuc", "alarm", "error-code", "troubleshooting", "reference"],
"status": "draft",
"lang": "en",
"source": "bbs.gongkong.com/d/202401/915680",
"translated_from": "lessons/contrib/fanuc-alarm-code-reference.md",
"created": "2026-07-28",
"quality_score": 43
}
---

# FANUC Robot Alarm Code Reference Table

> English translation of `lessons/contrib/fanuc-alarm-code-reference.md`

## Problem

FANUC robots generate various alarm codes during operation. On-site engineers need to quickly look up alarm meanings and corrective actions, but lack systematic alarm code reference materials.

## Root Cause

The FANUC controller alarm code system is vast, covering motion control (MOTN), program (PROG), system (SYST), communication (COMM), KAREL (INTP), and other subsystems. Each subsystem uses different alarm code formats with distinct meanings. The original post provided an attachment download for an alarm code table, but the actual content required points/credits to access.

## Solution

1. Master the FANUC alarm code classification system: MOTN (Motion), PROG (Program), SYST (System), COMM (Communication), INTP (KAREL), etc.
2. Become familiar with common alarm code meanings and standard handling procedures
3. Build an on-site alarm code quick-reference checklist
4. Use the FANUC controller's built-in help function to view alarm details

## Root Cause Analysis

FANUC controller alarm codes are classified by subsystem, each with an independent code prefix:

| Prefix | Subsystem | Description | Typical Scenario |
|--------|-----------|-------------|------------------|
| **MOTN** | Motion Control | Robot motion-related alarms | Collision, over-travel, motion lock |
| **PROG** | Program | TP/LS program execution alarms | Program syntax errors, logic anomalies |
| **SYST** | System | Controller system alarms | Memory shortage, hardware failure |
| **COMM** | Communication | Network and I/O communication alarms | PROFINET disconnection, EIP timeout |
| **INTP** | KAREL | KAREL interpreter alarms | CALL errors, variable anomalies |
| **IOGEN** | I/O | General I/O alarms | Signal configuration errors |
| **SERVO** | Servo | Servo drive alarms | Motor overcurrent, encoder failure |

## Fix / Technical Key Points

### Common Alarm Code Quick Reference

**Motion Control (MOTN):**

| Code | Meaning | Handling Method |
|------|---------|-----------------|
| MOTN-023 | Motion Lock | Check motion group configuration, verify condition waits are satisfied |
| MOTN-018 | Position Unreachable | Check whether target position is within workspace |
| MOTN-050 | Collision Detection | Check robot path for obstacles |

**Program (PROG):**

| Code | Meaning | Handling Method |
|------|---------|-----------------|
| PROG-004 | Program Not Found | Confirm program name is correct and loaded |
| PROG-017 | Program Protected | Remove program write protection |
| PROG-035 | Register Range Exceeded | Check R/PR/VR register numbers |

**System (SYST):**

| Code | Meaning | Handling Method |
|------|---------|-----------------|
| SYST-012 | Insufficient Memory | Clean up unused programs and variables |
| SYST-044 | Low Battery Voltage | Replace controller battery |

**Communication (COMM):**

| Code | Meaning | Handling Method |
|------|---------|-----------------|
| COMM-007 | PROFINET Communication Timeout | Check network cable connection and IP configuration |
| COMM-013 | I/O Communication Disconnected | Check I/O modules and bus connections |

**KAREL (INTP):**

| Code | Meaning | Handling Method |
|------|---------|-----------------|
| INTP-316 | CALL Invocation Error | Check call syntax and target program |
| INTP-1086 | Line Number (not an error code) | KTRANS compilation output line number information |

### General Alarm Handling Procedure

1. **Record the alarm code**: Note the complete alarm code and additional information
2. **Confirm alarm severity**: Fault > Error > Warning > Info
3. **View help information**: Press the HELP key on the teach pendant to view alarm details
4. **Execute standard handling**: Take appropriate action based on alarm type
5. **Reset the alarm**: Press the RESET key after handling is complete
6. **Verify recovery**: Confirm that robot functionality has returned to normal

## Verification

1. Alarm code lookup response time < 5 minutes
2. Robot returns to normal operation after executing the handling procedure
3. The same alarm code does not recur after the root cause is eliminated

## Source

- Post: [FANUC Alarm Code Table](https://bbs.gongkong.com/d/202401/915680/915680_1.shtml)
- Author: 刘海均, 2024-01-29
- Note: The original post is an attachment download (including images and files, requires 5 points/credits). This lesson is compiled based on the general FANUC alarm system and is not a direct copy of the original attachment content.
32 changes: 32 additions & 0 deletions search_knowledge.py
Original file line number Diff line number Diff line change
Expand Up @@ -511,6 +511,9 @@ def main():
heal(log)
return


# ── Feedback mode ──
use_feedback = "--feedback" in args
if "--score" in args:
top_k = None
telemetry_path = DEFAULT_TELEMETRY
Expand Down Expand Up @@ -790,8 +793,37 @@ def main():
print(f" 💡 View full content: cat lessons/<filename>.md")
print(f" 💡 Contribute new knowledge: python3 scripts/queue_lesson.py -t 'title' -d domain 'content...'")
print()
if use_feedback:
_prompt_feedback(query)



def _prompt_feedback(query: str = ""):
"""Prompt user for feedback and log to JSONL."""
import datetime as _dt
feedback_dir = Path("data")
feedback_dir.mkdir(parents=True, exist_ok=True)
feedback_file = feedback_dir / "search-feedback.jsonl"
try:
print("\n" + "=" * 50)
response = input(" Was this helpful? (y/n/comment): ").strip()
entry = {
"query": query,
"results_shown": True,
"feedback": response if response else "(empty)",
"timestamp": _dt.datetime.now(_dt.timezone.utc).strftime("%Y-%m-%d %H:%M:%S"),
}
with open(feedback_file, "a", encoding="utf-8") as f:
f.write(json.dumps(entry, ensure_ascii=False) + "\n")
if response.lower() == "y":
print(" ✅ Thanks! Feedback logged.")
elif response.lower() == "n":
print(" 📝 Thanks! We'll improve search quality.")
else:
print(f" 💬 Comment saved. Thanks!")
except (EOFError, KeyboardInterrupt):
pass

def _harvest_from_file(filepath: str):
"""Log Harvester prototype — parse error log and generate lesson draft."""
from pathlib import Path
Expand Down
Loading