欢迎光临
我们一直在努力

【发那科篇】发那科系统测头与对刀仪编程指南-G31-G37-宏程序体系

【发那科篇】发那科系统测头与对刀仪编程指南:从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触发后系统会自动将触发时的各轴坐标存入 #5061(X)、#5062(Y)、#5063(Z) 这三个只读宏变量中。必须在G31的下一程序段立即读取并赋值给其他变量。单轴探测时只读取对应轴坐标即可(如上例只读#5063),不要在G31后连续读取多轴——此时X/Y变量可能已被减速停止后的位置坐标刷新,导致微米级精度超差。

SKIP信号的硬件链路

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信号需要两根东西配合:

  • 接收器(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/#5092

    G36和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 (自动测量:向下30mm,500mm/min)
    (触发后系统自动计算刀长并更新至H02对应的几何偏置)
    G90 G00 Z300. (退刀)

    G36半径/直径测量(径向/X向)

    G36用于刀具沿X轴或Y轴的径向触发,系统自动将测量结果写入刀具偏置:

    (=== 刀具半径测量 ===)
    G90 G00 X#501 Y#502 (移至对刀仪中心)
    Z#503+50. (到对刀仪顶面上方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 标准球标定(长度+直径) 合并P9801+P9802,用标准球替代环规
    测量类(O9801~O9814系列通用测量循环)
    宏程序功能
    P9810 安全定位移动(遇触发急停)
    P9811 单点表面Z轴测量
    P9812 内径/外径测量
    P9814 标准球验证/角度测量
    P9732 电池电量检测

    P9810安全定位——防撞第一道防线

    G65 P9810 Z-5. F3000

    P9810做的事情:以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_probe
  • R_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. (标准球/环规校验)
    #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:

  • RS-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输入参数,设为1
    G37走到终点不停 参数#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 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信号开始逆向推理。


    宁波匠测科技有限公司 — 专注精密测量设备全生命周期服务

    赞(0)
    未经允许不得转载:171主机测评 » 【发那科篇】发那科系统测头与对刀仪编程指南-G31-G37-宏程序体系
    分享到: 更多 (0)

    评论 抢沙发

    • 昵称 (必填)
    • 邮箱 (必填)
    • 网址