数控机床最让现场头疼的,不是满屏报警,而是“啥报警都没有,可就是不动”:程序不往下走、轴偷停几十秒又继续、或者某个轴干脆锁死。这类“无报警隐性故障”没有报警号可查,很多人第一反应是乱改参数,结果越改越乱。
FANUC 的自诊断功能(DIAGNOSIS / DGN)就是为这种场景准备的。本文把最常见的几类无报警故障,对应到具体诊断号(DGN000 / 003 / 005 等),并给出“看哪个号、查哪条线、怎么修”的排查路径。配套可参考 FANUC PMC 梯形图入门 与 FAPT-LADDER3 下载与 PMC 上传,理解 M 码完成信号与互锁逻辑会更容易。

一、为什么“没报警”比“有报警”更难查
有报警时,报警号本身就是线索(可对照 FANUC 报警代码一览表)。没报警,说明系统认为“条件没满足”,并不是“出错了”。常见就三种情况:
- 条件未满足:动作该做的做了,但“完成确认”没回来。系统会一直等,程序停住但不报警。
- 到位判定未过:轴在动,但系统认为“还没走到指定位置”,反复定位卡在那儿。
- 互锁生效:PMC 出于安全逻辑把轴锁了(比如“既在上位又在下位”这种矛盾信号),系统照章办事,不报警。
这三类的入口诊断号分别是 DGN000、DGN003、DGN005。下面逐项拆。
二、DGN000 = 1 —— 辅助功能(M 代码)未确认完成
诊断号 000 显示 1,含义是 WAITING FOR FIN(等待辅助功能完成信号):系统正在执行 M / S / T / B 代码,但一直没收到“做完了”的确认信号(FIN,对应 PMC 输出 G4.3)。
M 代码的执行链路是这样的:
NC 读到 M 代码 → 经选通延时输出 MF(F7.0) 与 M 信息 F10~F13
→ PMC 译码(DECB) → 输出 Y 执行外部动作(阀/继电器/电机)
→ 动作完成开关给回 X
→ PMC 判定后发出 G4.3(FIN)
→ CNC 收到 FIN,结束该 M 段,继续下一行
链路任何一处断掉,G4.3 不发,DGN000 就一直 1,程序卡在那个 M 段。典型现象是:动作其实做了,但“完成信号”没回来。

实例:M8 切削液已喷但程序停住 → 查流量开关 X2.2
一台加工中心自动运行,每到 M8(开冷却液)程序就停,但肉眼看冷却液明明在喷,屏幕也无报警。
调出诊断画面:DGN000 = 1,说明 M8 这个辅助功能没被确认完成。查电气图,冷却液管路上有个流量开关用来确认“真的有冷却液流出”,它在 PMC 里对应输入点 X2.2——有流量时应为 1。
进 PMC 信号画面看 X2.2:实际是 0。也就是说,冷却液在喷,但流量开关没给出“有流量”的信号(多为开关灵敏度不够、感应对不上、或接口堵塞)。重新调整开关位置/灵敏度、清理后,X2.2 变 1,G4.3 正常发出,故障消除。
不止切削液 —— M06/M08/M19/M56 同一套逻辑
换刀 M06、主轴定向 M19、第二主轴 M56 等,本质都是“NC 下指令 → PMC 驱动外部动作 → 外部给回完成信号 → G4.3 确认”。二手机床、改造机、或后期加过 M 码的机器,常因为“动作完成信号没接好 / 没写进梯形图”而卡 M。
排查思路统一:DGN000 = 1 时,进 PMC 信号画面盯 G4.3(FIN) 有没有被置位;没置位,就沿梯形图反查该 M 码的完成条件——通常最后落在一个 X(到位/压力/流量/夹紧)或中间继电器上。
三、DGN003 = 1 —— 到位检测未通过(最常见)
诊断号 003 显示 1,含义是 IN-POSITION CHECK(到位检查中):系统正在核对“移动后的轴有没有准确停在指令位置”。如果轴没能准确定位,003 会长期为 1,程序就卡住不往下走。
DGN300 位置偏差 vs 参数 1826 到位宽度
各轴的实时位置偏差(指令位置 − 实际位置)在 DGN300~308(轴 1~8)里看。系统判定“到位”的容差,由参数 1826(到位宽度 / in-position width) 设定。
判定规则很简单:
只要 DGN300 的偏差量 ≤ 参数 1826 的设定值,系统就认为定位完成;否则认为没到位,反复定位,DGN003 一直为 1。
偏差量怎么算(位置环增益 1825)
位置偏差量(跟随误差)和进给速度、位置环增益的关系,按 FANUC 伺服原理是:
位置偏差量 E = 进给速度 F(mm/min) ÷ (60 × 位置环增益 Kp)
其中 Kp = 参数 1825 的实际增益(单位 1/s)。1825 存的是 Kp×0.01:例如 1825=3000 即 30/s,1825=5000 即 50/s(半闭环常用 3000~5000,全闭环约 1500~3000,以现场稳定为准)。
也就是说:增益越高(1825 越大),跟随误差越小、定位越“跟手”;增益过低,偏差就越大,容易卡在到位检查里。
注意一个常见误传:网上不少 2010 年前后的转载文章把公式写成「位置偏差 = 进给速度 ÷ 60 × 伺服环增益」,方向写反了。按那个写法会得出“增益越大偏差越大”的错误结论,和伺服实际规律相反。本文按 FANUC 伺服原理给正确关系。增益相关的背景可看 FANUC 伺服增益 2021/1825 调整。
伺服增益的设定与振动过冲也密切相关,调增益时若出现异常振动,参考 伺服振动过冲现象排查。

实例:Z 轴移动后频繁偷停,几十秒后又继续
一台机床自动加工时经常“偷停”,尤其 Z 轴移动后明显;程序不往下走,但几十秒后有时又继续,有时就一直愣着,全程无报警。
诊断画面:DGN003 = 1(到位检查中)。再看 DGN300,发现 Z 轴实时偏差 = 50,而该机床参数 1826(Z 轴到位宽度)设的是 4。偏差 50 远大于容差 4,系统判定“没到位”,于是反复定位、程序卡住;伺服一直在努力消除偏差,偶尔把偏差压进容差,程序就“又走几步”,表现为“偷停几十秒又继续”。
现场根因通常是机械/传动侧导致跟随误差偏大(反向间隙、丝杠预紧、负载突变等),或 1825 被设得过低。正确处置顺序:
- 先查机械与负载(反向间隙、丝杠/导轨、抱闸、切削负载),别急着动参数;
- 确认 1825 是否在合理范围,偏低则酌情提高(以稳定、不振动为限);
- 确认 1826 是否被设得过小;但不能一味调大 1826 去“盖住”机械问题,那只是把隐患藏起来。
四、DGN005 = 1 —— 轴互锁生效
诊断号 005 显示 1,含义是 INTERLOCK / START-LOCK(互锁或启动锁住):PMC 送来了“禁止轴移动”的信号,轴被锁死。系统认为是安全保护,不报警。
G8.0 / G130 / G132 / G134 逐位含义
互锁信号由 PMC 送给 CNC,极性要分清:
| 信号 | 含义 | 生效极性 |
|---|---|---|
| G8.0(*IT) | 全轴互锁:所有轴禁止移动 | = 0 时锁全轴 |
| G130.0~G130.3(*IT1~*IT4) | 轴 1~4 分别互锁 | = 0 时锁对应轴 |
| G132.0~G132.3(+MIT1~+MIT4) | 轴 1~4 正方向互锁 | = 1 时锁正向(负向仍可动) |
| G134.0~G134.3(-MIT1~-MIT4) | 轴 1~4 负方向互锁 | = 1 时锁负向(正向仍可动) |
这些信号是否真的生效,由参数 3003 控制:#0(ITL)=全轴互锁有效/无效,#2(ITX)=各轴互锁,#3(DIT)=方向互锁。把对应位设 1 = 让该信号失效,这是现场临时脱困的常用手段,但务必确认安全风险后再用,事后还原。

实例:转塔上下接近开关同时 ON 导致 Z 轴被锁死
一台专机执行 G90 G01 Z0 就停,复位重来还是卡在同一段,无报警。诊断画面 DGN005 = 1(互锁生效)。
进 PMC 信号画面看 G130.0 = 0(Z 轴是第 1 轴,对应 *IT1)。沿梯形图反查:这台专机的 PMC 里写了“转塔(或刀库)上位开关与下位开关不能同时为 ON,否则判定不安全、锁 Z 轴”。现场是转塔上位的接近开关被铁屑/油污卡住,一直输出 ON;当下位开关因动作也 ON 时,PMC 收到“既在上位又在下位”的矛盾信号,于是 G130.0 置 0 锁死 Z 轴。清理开关、恢复间隙后,G130.0 回到 1,互锁解除。
排查口诀:DGN005 = 1 时,进 PMC 信号画面看 G8.0 / G130~G134 哪一位不符合预期,再沿梯形图反查是谁给了这个信号。
五、常用诊断号速查
下面这张表覆盖无报警排查时最高频的诊断号。完整报警含义可对照 FANUC 报警代码一览表。
| 诊断号 | 含义 | 常见现象 / 处置 |
|---|---|---|
| 000 | 等待 FIN(M/S/T/B 未结束) | 程序停在 M 段 → 查 G4.3(FIN) 与动作完成 X |
| 001 | 自动运行移动指令执行中 | 正常 |
| 002 | 暂停(DWELL,G04)执行中 | 正常 |
| 003 | 到位检查中 | 长期 = 1 → 查 DGN300 与参数 1826 |
| 004 | 进给倍率 0% | 程序不走 → 查倍率旋钮/参数 |
| 005 | 互锁 / 启动锁住 | 查 G8.0 / G130~G134 |
| 006 | 主轴转速到达检查 | 主轴未达额定转速 |
| 010 / 011 | 穿孔机输出 / 读入 | 数据 I/O 中 |
| 012 | 等待(非)夹紧 | 转台/分度未夹紧完成 |
| 013 | 手轮倍率 0% | 手轮不动 → 查倍率 |
| 014 | 等待复位 / 急停 / RRW 解除 | 查急停链、外部复位 |
| 020~025 | 切削提速降速、复位、急停、停止类 | 查复位/急停链 |
| 030~031 | TH 报警字符位置 | 纸带/宏报警定位 |
| 200~204 | 伺服报警详细位(OVL/LV/OVC/HCAL/HVAL/DCAL/FBAL/OFAL 等) | 配合 4xx 报警定位 |
| 300~308 | 各轴位置偏差量 | DGN003 卡住时看这里 |
| 350 | α 串行脉冲编码器内部控制异常 | 查 202 / 204 |
| 400~412 | 伺服/主轴模块、过热、断线等 | 查 200 / 201 等 |
| 450~475 | 超程/过载/电池等硬件类辅助诊断 | 结合屏幕报警文本 |
六、报警 → 诊断号反查表
当你已经看到报警时,用下面这张表把报警号映射到对应诊断号,能少走弯路。各报警号的精确文本以机床屏幕为准(这里给 0i 系列常见对应):
| 报警 | 常见含义 | 重点看的诊断号 |
|---|---|---|
| 350 | α 串行脉冲编码器内部控制异常 | 202、204 |
| 351 | α 串行脉冲编码器与模块通信异常 | 203 |
| 400 类 | 伺服相关(过热/过载等,以屏幕为准) | 200、201 |
| 414 | 数字伺服报警(X 轴为例) | 200、201、204 + 模块 LED |
| 416 | 位置检测器信号断线 / 短路 | 200、201 |
| 417 | 伺服参数设定异常 | 203、280 |
| 749 | 串行主轴模块异常 | 408 |
| 750 | 串行主轴系统上电启动异常 | 409 |
七、排查前置动作:先做这 3 件事
动手改任何东西之前,先做好三件事,能避免把“小问题”变成“大事故”:
- 备份参数再动手:包括 NC 参数、PMC/梯形图、螺距补偿、宏变量。改错还能回退。参数与 PMC 的备份方法见 FANUC PMC 梯形图入门。
- 看报警履历:哪怕当前没报警,履历里可能记过瞬时报警、或 300 号级历史,往往是伏笔。
- 记录诊断快照:把 DGN000~006、DGN300~308、200~204 的当前值拍照/记下,和正常机对比,差异点就是突破口。更多排查思路见 FANUC 故障排查 5 案例。
八、什么时候该停手叫厂商
下面这些情况,别硬调参数、别拆机,直接联系机床制造商或授权维修:
- PMC/CPU 状态灯常红:控制单元上的 PMC/CPU 指示灯正常应为绿色规律闪动;常红说明 PMC 没正常运行(程序损坏、电池失效丢程序等)。
- F-ROM 写入失败 / SRAM 校验报警:涉及系统软件层,强行操作可能扩大故障。
- 970~975 一类系统/PMC 报警,复位即回、反复出现:往往是 I/O 模块、PMC 类型不匹配或硬件问题,不是常规参数能调的。
- 涉及改 PMC 逻辑、拆伺服放大器、动光栅/编码器且现场没把握时,也建议停手。
常见问题(FAQ)
1. FANUC 机床不报警但程序不往下走,应该先看哪个诊断号?
先看 DGN000。它 = 1 表示系统正在等辅助功能(M/S/T/B)的“完成确认”信号 FIN(G4.3),常见于 M 码动作做了但完成信号没回来。若 DGN000 正常,再看 DGN003(到位没通过)和 DGN005(轴被互锁)。
2. 诊断号 003 长期是 1 但没有任何报警,是什么意思?
说明系统一直在做到位检查却没通过:移动后的轴位置偏差一直大于参数 1826(到位宽度)设定的容差。调 DGN300~308 看是哪个轴偏差过大,先查机械/负载,再核 1825(位置环增益)是否偏低、1826 是否过小。
3. 机床偷停(停几十秒又继续)通常是什么原因?
最典型是 DGN003 到位检查卡住:某轴位置偏差偶尔越过容差、程序暂停,伺服努力把偏差压回容差内后程序又走几步,于是表现为“偷停几十秒又继续”,多数伴 Z 轴移动后发生。根因多为机械/传动导致跟随误差偏大,或 1825 设得过低。
4. 参数 1826 到位宽度应该设多少?和 1825 有什么区别?
- 1826(到位宽度) 是“系统认为定位完成所允许的最大位置偏差”,单位与 DGN300 一致(检测单位)。设太小容易卡到位检查,设太大定位精度下降,一般按机床厂默认值,不要随便改。
- 1825(位置环增益) 决定伺服“跟手”程度:增益越高跟随误差越小,但过高会振动。两者关系:位置偏差 ≈ 进给速度 ÷ (60 × 1825 实际增益)。调 1825 改变的是“偏差本身的大小”,调 1826 改变的是“允许偏差的门槛”。
























暂无评论内容