Address
宁波研发园A区2栋12B17
聚贤街道,鄞州区,宁波市,浙江中国
Work Hours
周一 to 周五: 8:30AM - 10:30PM
周六 to 周日: 9:30AM - 10:30PM

基准系统:发那科0i-MODEL F
发那科系统在机内测量领域有两套核心G代码支撑着整个测头/对刀仪的应用体系:G31(跳转功能) 和 G36/G37(刀具自动测定)。前者是工件测头的触发基石,后者是对刀仪的自动测量入口。再往上,雷尼绍的Inspection Plus宏程序包把G31封装成了工程可直接调用的标定与测量循环。
本文把这套体系从头到尾拆一遍。
说明: 本文以发那科0i-MODEL F为基准编写,G31/G36/G37的基本用法同样适用于0i-D、30i/31i-B系列,参数号可能因系统版本略有差异。
G31是发那科系统的跳转功能(Skip Function),属于00组一次性G代码(仅当前程序段有效)。它与G01在运动方式上完全一致——按指定的F速度做直线插补——唯一的区别是:G31在运动过程中持续监测跳转信号(SKIP信号)的输入。一旦SKIP信号从0变为1,系统立即中断当前运动、记录当前位置坐标,并跳转执行下一程序段。
这是测头触发的底层硬件机制。
G31 Z-50. F300 ; Z轴向下移动300mm/min,等待SKIP信号 #100 = #5063 ; 关键:在紧接着的下一行立即读取Z轴触发坐标 G90 G00 Z100. ; 安全退刀
注意: G31触发后系统会自动将触发时的各轴坐标存入 #5061(X)、#5062(Y)、#5063(Z) 这三个只读宏变量中。必须在G31的下一程序段立即读取并赋值给其他变量。单轴探测时只读取对应轴坐标即可(如上例只读#5063),不要在G31后连续读取多轴——此时X/Y变量可能已被减速停止后的位置坐标刷新,导致微米级精度超差。
SKIP信号在发那科系统中的硬件路径:
测头触发 → OMI-2/OIM接收器 → PMC输入(X地址) → 系统内部SKIP信号
关键参数:
| 参数号 | 含义 | 典型设定 |
|---|---|---|
| #6200#0 (SKIP) | 跳转信号有效电平 | 1(高电平有效) |
| #6200#1 (MI) | 多段跳转信号有效电平 | 0 |
| X地址 | SKIP信号对应的PMC输入点 | 由梯形图定义,常用X4.7/X6.3 |
常见误区: 很多人以为测头装上就能用G31。实际上G31只认系统的SKIP信号,而SKIP信号需要两根东西配合:
两者缺一,G31就不会触发,轴会直接走到超程。
发那科0i-F及以上系统支持G31多段跳转功能——通过指定P参数,可以在一次G31运动中记录最多3个触发点:
G31 P2 Z-100. F500 ; 记录前2次触发位置
应用场景:刀具半径测量时,铣刀先触碰到对刀仪左壁(第一次触发),继续移动通过刀具中心空隙后触碰右壁(第二次触发)——两次触发位置之差就是刀具直径。
不过雷尼绍Inspection Plus宏程序在内部已经处理了这些逻辑,日常使用中直接调对应的宏程序即可,不需要手写G31多段跳转。
G36和G37是发那科系统的一对刀具自动测定指令,同属00组G代码,功能互为反向:
| 指令 | 功能 | 测量方向 |
|---|---|---|
| G36 | 刀具径向自动测定 | X轴或Y轴方向(测偏置/半径) |
| G37 | 刀具轴向自动测定 | Z轴方向(测刀长) |
两者的行为与G31类似——在进给运动中监测SKIP信号——但区别在于:
G36和G37本身不提供”安全围栏”功能。防止对刀仪被撞坏的安全距离是通过系统参数设定的:
| 参数号 | 含义 | 典型设定 |
|---|---|---|
| #5091 | 刀具自动测定(G36/G37)的最大移动距离(轴向) | 根据实际刀具范围设定 |
| #5092 | 刀具自动测定时的进给速度 | 300~500 mm/min |
如果G36/G37在执行过程中移动距离超过#5091的设定值仍未触发SKIP信号,系统会触发报警并停止运动,从而保护对刀仪不被撞击。
在实际应用中,也有在一些非标准场景下使用G31配合宏程序手写限位保护的做法,但标准的发那科安全方案就是参数#5091控制搜索范围。
G37的工作原理:
对刀仪参考高度如何设定: 对刀仪顶面在机床坐标系中的Z坐标,是在首次安装时手工设定到参数No.5063(不是宏变量#5063)中的。操作方式是在系统参数画面中找到5063号参数,手动输入对刀仪顶面的机床坐标Z值。不需要也不允许在程序中用#5063 = …赋值——宏变量#5061~#5068是只读的,无法赋值。
(=== 首次安装:设定对刀仪偏置 ===) (基准刀长度 L_ref = 120.000mm) (1. 手轮移至对刀仪上方,使基准刀端面刚好接触对刀仪上表面) (2. 记录此时机床Z坐标值,假设为Z_arm_pos) (3. 计算:对刀仪顶面Z值 = Z_arm_pos - L_ref) (4. 在系统参数画面中找到"No.5063",手动输入计算结果) (5. 这个值永久有效,不需要每次都设) (=== 日常生产:自动对刀 ===) T02 M06 (换刀) G90 G00 X#501 Y#502 (移至对刀仪中心,#501/#502预先存储) G00 Z150. (用机床坐标快速下至安全高度,勿带G43) G49 (取消刀长补偿,防止干扰G37计算) G37 G91 Z-30. F500 (自动测量:向下30mm,500mm/min) (触发后系统自动计算刀长并更新至H02对应的几何偏置) G90 G00 Z300. (退刀)
G36用于刀具沿X轴或Y轴的径向触发,系统自动将测量结果写入刀具偏置:
(=== 刀具半径测量 ===) G90 G00 X#501 Y#502 (移至对刀仪中心) Z#503+50. (到对刀仪顶面上方50mm) G36 G91 X25. F300 (+X方向,刀具右侧触面对刀仪侧壁) G90 G00 Z300.
逻辑说明:
注意: 半径测量依赖的是相对差值,因此对刀仪的安装位置偏差在此过程中会自动抵消。但对刀仪的机械状态(侧壁垂直度、表面清洁度)直接影响测量精度。
雷尼绍的Inspection Plus是一套预装在发那科系统上的宏程序包。它不是硬件,而是以O9000~O9999系列宏程序的形式存储在CNC内存中。它的核心价值:把G31跳转坐标 → 与已知基准对比计算 → 更新偏置变量 这个流程封装成一条G65调用。
| 宏程序 | 功能 | 说明 |
|---|---|---|
| P9801 | 标定测头长度 | 用环规或基准面标定测头的Z向长度偏置 |
| P9802 | 标定测头直径 | 用环规内壁四方向测量标定触发半径 |
| P9804 | 标准球标定(长度+直径) | 合并P9801+P9802,用标准球替代环规 |
| 宏程序 | 功能 |
|---|---|
| P9810 | 安全定位移动(遇触发急停) |
| P9811 | 单点表面Z轴测量 |
| P9812 | 内径/外径测量 |
| P9814 | 标准球验证/角度测量 |
| P9732 | 电池电量检测 |
G65 P9810 Z-5. F3000
P9810做的事情:以3000mm/min的G00速度移动到Z-5.位置,但在移动过程中监测测头触发信号。如果在到达目标位置之前测头触碰到任何障碍物,立即急停并触发报警。
这个设计的精妙之处:如果测头带电开启,P9810移动时如果路上遇到切屑堆积或工件残留,会在触碰瞬间停下报警,而不是像常规G00那样硬推过去把测头撞坏。
用环规标定测头(OMP40-2为例):
G90 G54 G00 X0 Y0 G43 Z100. H01 (调出测头刀补) G65 P9810 Z-5. F3000 (安全定位到环规上方) G65 P9801 Z_ring_top (标定:测量环规顶面,自动计算测头长度偏置) M30
内部逻辑(简化版):
G65 P9810 X0 Y0 Z-5. F3000 (回到环规中心上方) G65 P9802 D25. (标定:环规内径Ø25mm) M30
内部逻辑(简化版):
注意:正负方向不对称(如+方向与-方向测得的半径差>2μm)说明测头预行程变化(PTV)已超出正常范围——常见原因是测针弯曲、测头内部机械磨损或密封老化导致触发力不对称。
标定完成后,日常生产中用P9811测量工件表面Z坐标:
G65 P9810 Z-5. F3000 (安全定位到测量点上方) G65 P9811 Z-10. (测量Z轴表面,结果用于工件找正)
注意: P9811是测量循环,不是标定循环。很多初学者把P9811/P9812当标定用,实际上标定应该走P9801/P9802,测量才走P9811/P9812。
G65 P9810 X0 Y0 Z-5. F3000 G65 P9814 D25. (标准球/环规校验) #3000=1 (CHECK DIA) (偏差>0.005mm触发报警)
生产现场最容易被跳过的一步。 标定做完不验证,相当于换完电池不确认设备是否真的通电了。定期做验证记录的车间,测头故障响应速度比不做验证的快50%以上。
| 参数号 | 含义 | 设定值 |
|---|---|---|
| #8133#5 | 跳转功能(Skip)是否可用 | 1(开启) |
| #8133#6 | 刀具自动测定(G36/G37)是否可用 | 1(开启) |
| #6200#0 | SKIP信号极性 | 1(高电平有效) |
| #6200#1 | MI多段跳转信号极性 | 0 |
| #5091 | G36/G37轴向最大移动距离(安全范围) | 根据实际刀具设定 |
| #5092 | G36/G37进给速度 | 300~500 |
| No.5063 | 系统参数(注意:不是宏变量#5063)— 对刀仪参考位置Z值 | 手动输入参数画面 |
| #6000~#6500 | 用户宏变量区 | 测头宏程序使用 |
Inspection Plus宏程序必须通过以下方式加载到CNC:
加载后检查O9000~O9999程序是否存在:
// 在MDI模式下输入 O9001 // 如果能浏览到程序内容,说明已加载
雷尼绍宏程序通常是O9000系列,发那科系统默认受保护。需要开放参数:
#3202#4 (NE8) = 0 允许编辑O9000~O9999 #3202#0 (NEP) = 0 允许删除O9000~O9999
⚠️ 安全提示: 宏程序导入完成后,必须将#3202#4(NE8)和#3202#0(NEP)重新恢复为1。O9000系列宏程序是机床厂和雷尼绍的底层核心程序,如果不重新锁上,操作工在加工时误删或误改了P9810等安全移动程序,会导致严重的撞机事故。这一点是很多现场忽略的。
| 现象 | 原因 | 排查 |
|---|---|---|
| G31走到终点不触发 | 测头未激活 | 检查测头是否已光学开启;OMI-2绿灯是否常亮 |
| G31触发但坐标不准 | SKIP信号毛刺 | 检查电缆屏蔽是否断裂,OMI-2安装角度是否偏移 |
| G31时有时无 | 电池电量低 | OMP40-2用P9732检测,或直接换电池 |
| 程序跑完测头没亮 | 宏程序未加载 | 检查O9810等是否存在 |
| 现象 | 原因 | 排查 |
|---|---|---|
| G37无反应直接过冲 | #6200#0未设 | MDI输入参数,设为1 |
| G37走到终点不停 | 参数#5091设定过小,刀具超出搜索范围 | 检查#5091值是否满足刀具最大长度 |
| 每次重复性>5μm | 对刀仪表面脏 | 清洁对刀仪表面,确认吹气正常 |
| 刀长写不进去 | 偏置写入方式参数错误 | 检查#6201相关设定 |
| G36无法触发 | 使用G37指令测量径向 | 确认:半径测量用G36,长度测量用G37 |
| 报警码 | 含义 | 处理 |
|---|---|---|
| 报警92 P/S | 宏程序调用失败 | 检查对应O程序是否在CNC内存中 |
| 测头不触发报警 | 接收器未就绪 | 检查OMI-2状态灯 |
| 超程报警 | P9810移动路径受阻 | 确认Z轴安全高度足够 |
把这三层串起来看,发那科系统的测头/对刀仪编程体系其实非常简洁:
物理层: 测头触发 → 接收器 → SKIP信号(X地址)
指令层: G31(记录触发坐标 → 宏程序读取#5061~#5063计算偏置)
G36(径向测量:X/Y轴自动测偏置 → 写入D偏置/半径偏置)
G37(轴向测量:Z轴自动测刀长 → 写入H偏置)
应用层: Inspection Plus(O9800系列标定 + O9810~O9820系列测量)→ 工程API
G31是底层指令,什么品牌的测头都能用,触发后坐标存入只读变量**#5061(X)/ #5062(Y)/ #5063(Z)**,需在下一程序段立即读取。
G36/G37是发那科给对刀仪准备的专用指令,G36管径向(半径),G37管轴向(刀长),两者不可混用。安全距离由参数#5091控制,不是靠G36保护G37。
Inspection Plus宏程序是雷尼绍在G31之上的封装,标定走O9800系列(如P9801/P9802),测量走O9810~O9820系列(如P9811/P9812),两者功能不同,不可混淆。
三者面向的设备不同、入手的深度不同,但底层共用同一套SKIP信号机制。理解了这条链路,遇到任何品牌的测头/对刀仪在发那科系统上配置,都可以从G31和SKIP信号开始逆向推理。