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