欢迎光临
我们一直在努力

调试秘籍:BLUM 激光对刀 O9670~O9679 用户程序结构与 FANUC I/O 映射配置

O9670~O9679 用户程序结构与 I/O 映射配置指南

BLUM LaserControl NT 激光对刀系统 · 发那科 FANUC 篇

文档编号: P87.0634-030.360 / V5D / FANUC 编制单位:由宁波匠测科技有限公司(专注工业精密测量15年)根据官方手册数据原创整理编制 参考文档: LaserControl NT Setup Guide + Programming Manual 适用系统: FANUC 15-MB / 16-MB / 18-MB / 21i / 30i 等支持宏程序 B 的 CNC


目录

  • O9670~O9679 程序结构总览
  • 用户启停程序详解
    • 2.1 O9670 (USERSTARTPROG) — 启动预处理
    • 2.2 O9679 (USERENDPROG) — 结束收尾处理
  • USERSETOFFS 子程序 O9678
  • USERPARATABx 配置表 O9671~O9677
  • I/O 映射参数表
    • 5.1 输出信号参数 #670~#675
    • 5.2 输入信号参数 #676~#678
    • 5.3 I/O 映射异常处理
    • 5.4 #679 硬件控制程序号
  • Global Parameters 完整参数表
    • 6.1 在 O9670 中定义的参数
    • 6.2 在 O967x 中定义的参数
    • 6.3 程序自动设定的参数
  • 完整编程示例
    • 7.1 标准 3 轴铣床配置
    • 7.2 带温度补偿的完整配置
    • 7.3 自定义错误处理方案
  • 常见陷阱与排查
    • 8.1 I/O 配置错误
    • 8.2 位置参数错误
    • 8.3 选项位设置错误
    • 8.4 多激光系统配置

  • 1. O9670~O9679 程序结构总览

    BLUM LaserControl NT 测量循环采用模块化架构。系统将以下四类程序交由机床制造商/终端用户在开机调试时编写或适配:

    程序号名称功能调用时机
    O9670 USERSTARTPROG 启动预处理:轴定位、冷却液关闭、激光摆入、刀具库门开启 每个测量循环的第一步
    O9671~O9674 USERPARATABx 机床参数定义:轴分配、测量位置、进给率、限位、标定数据等 通过 O9630 在循环开始时按 #629 取值调用
    O9678 USERSETOFFS 温度补偿偏置写入:接收 O9604 测得的热漂移值并处理 由 O9604 温度补偿循环调用
    O9679 USERENDPROG 结束收尾:激光摆回休止位、关闭库门、清屑、错误处理 每个测量循环的最后一步

    程序调用链(以 O9602 长度测量为例):

    主程序 → O9602 (测量子程序)
    → O9670 (USERSTARTPROG) [启动预处理]
    → O9630 → O9671 (USERPARATABx) [加载参数]
    → … (测量执行)
    → O9679 (USERENDPROG) [收尾处理]

    必须始终加载的用户相关程序(无论使用哪些测量功能):

    • O9670
    • O967x(至少一个配置表,通常 O9671)
    • O9679
    • O9630, O9631, O9632, O9633, O9639, O9640, O9644
    • O[9650+#680](错误文本,按语言代码选一个)

    按需加载的程序:

    • O9601(标定)
    • O9602, O9603, O9606(刀具测量)
    • O9604, O9678(温度补偿)
    • O9605, O9607, O9608, O9636, O9638, O9641, O9642(刀具监测)

    #629 参数开关:

    参数 #629 在 O9670 中设定,取值范围 1~4,用于选择使用哪个 USERPARATABx:

    • #629=1 → 使用 O9671 中的参数定义
    • #629=2 → 使用 O9672
    • #629=3 → 使用 O9673
    • #629=4 → 使用 O9674

    一台机床安装多套激光系统(如长床身机床、双主轴机床),或需要在 0° 和 90° 两个方向测量(转角头刀具)时,可为每个配置建立独立的 O967x 程序块。

    关于 O9675~O9677:

    文档中 O9671~O9674 被明确指定为 USERPARATABx。O9675~O9677 在标准文档中未分配固定功能,在 V5D 版本的标准配置中未被使用,可用于用户自定义扩展。一份典型的 FANUC 配置使用 O9671 作为唯一的参数定义程序,此时 #629=1。


    2. 用户启停程序详解

    2.1 O9670 (USERSTARTPROG) — 启动预处理

    调用者:所有测量循环 (O9601~O9608 / O9685 / O9688) 的第一步

    功能:

    • 执行测量前的预备动作
    • 设置 #629 选择参数配置表
    • 关闭冷却液
    • 摆入激光测量头
    • 打开刀具库门(激光系统通常位于刀库区域)
    • 移动旋转轴至定义位置
    • 如果使用刀具管理系统,设置 #8400=11

    标准示例:

    O9670 (USERSTARTPROG)
    M9 (关闭冷却液)
    #629=1 (使用 O9671 中的参数定义)
    …
    N9999 M99 (返回调用程序)

    关键说明:

  • 冷却液处理:所有测量任务前必须关闭冷却液(M9)。残留冷却液会干扰激光束,导致测量值偏差或信号丢失。

  • #629 设置:必须在此处设定 #629 的值(1~4),指定使用哪个 O967x 配置表。标准配置为 #629=1。

  • 刀具管理系统:如果使用刀具管理功能(如 FANUC 的 Tool Management),需要设置 #8400=11(11=Spindle 1),同时在 O967x 中将 #656 Bit4=1。

  • 多主轴/多激光系统:在双主轴机床中,可通过 #629 的不同值让不同主轴使用不同的激光配置,甚至可设置 #629=0 来临时跳过测量。

  • 摆入/摆出机构:激光系统可能安装在摆动机构上。此时 O9670 中应包含对应的 M 代码或宏程序将激光摆入工作区。摆入动作完成后才能继续测量。

  • 2.2 O9679 (USERENDPROG) — 结束收尾处理

    调用者:所有测量循环 (O9601~O9608 / O9685 / O9688) 的最后一步

    功能:

    • 激光系统缩回休止位置
    • 关闭刀具库门
    • 执行清屑策略
    • 处理错误参数 #600
    • 恢复默认 PLC 状态(HSS 选择信号等)

    标准示例(不带自定义错误处理):

    O9679
    …
    IF[#600EQ15] GOTO9995 (切削刃崩刃)
    IF[#600EQ16] GOTO9995 (超差)
    IF[#600EQ19] GOTO9995 (刀具断裂)
    GOTO9999
    N9995 (M代码 锁定刀具)
    N9999 M99

    带自定义错误处理的示例:

    O9679
    …
    IF[#600EQ15] GOTO9995
    IF[#600EQ16] GOTO9995
    IF[#600EQ19] GOTO9995
    GOTO9999
    N9995 (M代码 锁定刀具)
    #600=-#600 (将错误号取负,抑制标准错误中断)
    (此处添加用户自定义错误处理逻辑)
    N9999 M99

    错误处理机制详解:

    #600 在测量循环中是错误状态参数:

    #600 状态含义系统行为
    =0 无错误 正常结束
    >0 有错误发生 O9679 自动调用 G65 P[9650+语言代码] 显示错误文本并中断程序
    <0(取负) 用户接管错误处理 不显示错误文本,不中断程序,由用户在 O9679 中自定义处理

    将 #600 取负(#600=-#600)是抑制系统默认错误中断的关键操作。取负后,用户可以在 O9679 中执行:

    • 调用姊妹刀具(Sister Tool)
    • 锁定损坏刀具
    • 自动换刀
    • 摆出工件托盘
    • 标记刀具状态并继续加工

    复位状态恢复: 由于测量循环可能在 O9679 未完整执行时因急停、复位等原因中断,PLC 程序必须在 RESET 条件下恢复默认状态(如 HSS 输入选择、激光关闭等)。NC 程序通过 O9670 启动激光相关操作,通过 O9679 关闭;如果复位发生在中间,PLC 的复位逻辑必须兜底。


    3. USERSETOFFS 子程序 O9678

    程序号:O9678 调用者:O9604(温度补偿循环) 功能:接收 O9604 测得的热漂移差值,执行机床制造商自定义的偏置处理策略

    温度补偿流程:

  • 首次标定后,在机床达到工作温度且试切合格后执行"参考测量"(B=0),记录当前状态至 #[#640+6]、#[#640+7]
  • 加工一段时间后执行"比较测量"(B=1),测量当前激光束位置
  • 漂移计算:
    • 长度轴漂移 = #[#640+6] – #[#640+4]
    • 半径轴漂移 = #[#640+7] – #[#640+5]
  • O9678 接收上述差值并写入外部零点偏置
  • 标准示例代码:

    O9678 (USERSETOFFSET)
    (轴分解: 从 #601 中提取各轴编号)
    #12=FIX[#601/100] (长度轴编号, 如 3=Z)
    #11=FIX[[#601-100*#12]/10] (激光轴编号, 如 1=X)
    #10=FIX[#601-100*#12-10*#11] (半径轴编号, 如 2=Y)

    (将标定值写入诊断参数供检查)
    #4=#[#640+4] (标定均值-长度轴)
    #6=#[#640+6] (TC 参考值-长度轴)
    #5=#[#640+5] (标定均值-半径轴)
    #7=#[#640+7] (TC 参考值-半径轴)

    (写入外部零点偏置 — 注释状态,需激活)
    ([#[5200+#12]=#[#640+6]-#[#640+4]) (长度轴漂移 → 外部零点偏置)
    ([#[5200+#10]=#[#640+7]-#[#640+5]) (半径轴漂移 → 外部零点偏置)
    …
    M99

    轴编号提取逻辑:

    #601 以百位/十位/个位编码三轴信息。以铣床标准值 #601=312 为例:

    • 个位(×1)= 2 → 半径轴 = Y
    • 十位(×10)= 1 → 激光轴 = X
    • 百位(×100)= 3 → 长度轴 = Z

    FIX 函数分解代码:

    • #12 = FIX[312/100] = 3(长度轴编号)
    • #11 = FIX[[312-100*3]/10] = 1(激光轴编号)
    • #10 = FIX[312-100*3-10*1] = 2(半径轴编号)

    偏置写入目标:

    外部零点偏置参数格式为 #[5200+轴编号],在 FANUC 系统中:

    • #[5200+2] ← Y 轴热漂移(半径轴)
    • #[5200+3] ← Z 轴热漂移(长度轴)

    机床制造商可根据需要写入不同的偏置地址(如工件零点偏置 #250x 系列),或执行更复杂的处理策略(如加权平均、趋势过滤等)。

    TC 历史参数(可选):

    如果启用 TC 历史记录,可使用以下参数存储多次测量值:

    • #692 — 历史计数器
    • #693 / #694 — 第 1 组 TC 值(长度/半径轴)
    • #695 / #696 — 第 2 组 TC 值
    • #697 / #698 — 第 3 组 TC 值
    • #699 — 保留

    这些参数用于趋势分析,在 O9678 中由用户实现读写逻辑。


    4. USERPARATABx 配置表 O9671~O9677

    O9671~O9674 是激光系统的核心参数定义程序,由 O9630 在每个测量循环开始时自动调用。O9675~O9677 在 V5D 标准配置中未被分配。

    配置表必须包含以下参数组:

    4.1 完整参数定义

    O9671 (USERPARATAB1)
    (所有尺寸单位为 mm)

    (* 语言代码 *)
    #680=0 (0=英 1=德 2=法 3=意 4=西 5=荷 6=瑞典 7=波 8=丹 9=捷)

    (* 重试次数 *)
    #641=4 (重复测量次数 2~10)

    (* 标定参数起始地址 — 必须为掉电保持区 *)
    #640=540 (标定值存储于 #540~#549)

    (* 轴分配 *)
    #601=312 (个位=半径轴Y=2, 十位=激光轴X=1, 百位=长度轴Z=3)

    (* 进刀侧 *)
    #602=+1 (长度轴进刀侧: +1=正侧, -1=负侧)
    #603=-1 (半径轴进刀侧: +1/-1=单侧, +2/-2=双侧)

    (* 激光束角度补偿 *)
    #662=0 (激光束与长度轴的垂直偏差角度°, <45°)
    #663=0 (激光束与半径轴的垂直偏差角度°, <45°)

    (* 测量位置 机床坐标 *)
    #604=-50.0 (半径轴测量位置, 精度<0.1mm)
    #605=300.0 (激光轴测量位置, 精度<1mm)
    #606=-370.0 (长度轴测量位置, 精度<0.1mm)

    (* 安全平面 *)
    #620=0.0 (测量前长度轴安全平面)
    #621=0.0 (测量后长度轴安全平面)

    (* 干涉轮廓距离 *)
    #607=50.-2. (激光束与后方障碍物-半径轴)
    #608=88./2-2. (测量位置至障碍物-激光轴)
    #609=62.-7. (激光束至障碍物-长度轴)
    #682=15.+2. (激光束前方障碍物-半径轴)

    (* 软件限位 *)
    #650=0.0 (长度轴正限位)
    #651=-300.0 (长度轴负限位)
    #652=0.0 (半径轴正限位)
    #653=-200.0 (半径轴负限位)

    (* 刀具表地址 *)
    #660=1 (1=铣床A/999刀, 2=铣床B/999, 3=铣床C/999, 4=车C/99)

    (* I/O 映射 *)
    #676=1000 (输入: Laser OK)
    #677=1001 (输入: Output Dynamic)
    #678=1002 (输入: Output Static)
    #670=1100 (输出: Enable0 发射器)
    #671=1101 (输出: Enable1 接收器)
    #672=1102 (输出: 防尘快门阀)
    #673=1103 (输出: 气帘阀)
    #674=1104 (输出: Enable2, NT专用, 不用设0)
    #675=0 (输出: 刀具吹气嘴, 不用设0)
    #679=0 (0=标准I/O控制)

    (* 激光系统时间常数 *)
    #632=0.020 (Output Dynamic 脉冲宽度 s)

    (* 基准转速 *)
    #633=3750 (MODE0, NT用时)
    #634=0 (MODE1)
    #635=600 (MODE2, Z-2选项)
    #636=3000 (MODE3, 拉出测量最小速度)

    (* 选项位 *)
    #654=0 (激光系统选项)
    #655=0 (测量循环选项)
    #656=0 (温度补偿选项)
    #657=0 (保留选项)

    (* 主轴模式 *)
    #643=3 (3=M3, 4=M4, 5=M5, 19=M19索引主轴)
    IF[[#637-26]*[#637-29]EQ0]THEN#643=19

    (* 退刀距离 *)
    #622=6.000 (刀尖距离)
    #623=1.800 (首次测量块后退刀)
    #624=0.050 (二次测量块后退刀)
    #625=0.030 (后续测量块后退刀)

    (* 进给率 *)
    #617=0 (快速进给: 0=G0)
    #618=5000 (定位进给 mm/min)
    #619=5000 (最大测量进给 mm/min)
    #642=#4109 (循环结束进给率)
    #630=1000 (测量进给率1, 保留)
    #631=200 (测量进给率2, 碰撞风险时使用)

    (* 刀具极限 *)
    #610=300.0 (最大刀具长度)
    #611=60.0 (最小刀具长度)
    #612=70.0 (最大刀具半径)

    (* 附加刀具数据 *)
    #614=0.0 (刀具长度偏置 — 后处理器虚拟长度)
    #615=0.0 (刀具半径偏置 — 后处理器虚拟半径)
    #616=0.0 (零刀具实际长度)

    (* 标定选项 *)
    #638=0*2+0*1 (Bit0: 0=BLUM标定刀 1=直柄针; Bit1: 0=双侧 1=单侧)
    #639=+1 (测量方向: +1=拉出 暗→亮; -1=推入 亮→暗)

    (* 标定刀具数据 *)
    #626=999.999 (标定刀具长度 L)
    #627=5.999 (标定刀具半径 R)
    #628=9.999 (标定刀具高度 H)

    (* 吹气嘴模式 *)
    #681=0 (DCBA格式, 0=不使用)

    4.2 参数分组说明

    分组参数范围参数数量说明
    语言/错误 #680, #641 2 基本系统设置
    标定参数区 #640 1 指定标定值存储起始地址
    轴分配 #601~#603, #662~#663 5 定义机床坐标系和激光束方向
    测量位置 #604~#606 3 激光束在三个轴上的机床坐标
    安全平面 #620~#621 2 测量前后长度轴安全位置
    干涉轮廓 #607~#609, #682 4 激光系统周边碰撞保护
    软件限位 #650~#653 4 测量轴的安全行程范围
    刀具表 #660 1 刀具存储器类型
    I/O 映射 #670~#679 10 电气连接地址
    激光常数 #632 1 信号脉冲宽度
    转速常数 #633~#636 4 各模式基准转速
    选项位 #654~#657 4 系统功能选项
    主轴模式 #643 1 M 代码选择
    退刀距离 #622~#625 4 测量进刀策略
    进给率 #617~#619, #642, #630~#631 6 各阶段移动速度
    刀具极限 #610~#613 4 允许的刀具尺寸范围
    附加数据 #614~#616 3 后处理器/零刀偏置
    标定模式 #638~#639 2 标定方式和方向
    标定刀具 #626~#628 3 标定刀几何数据
    吹气嘴 #681 1 刀具清洁选项

    4.3 关于参数的注意事项

  • 所有尺寸单位为 mm:即使在 G20(英制)模式下调用,O9630 会自动转换为英寸。用户始终以毫米为单位填写参数。

  • 直径编程轴的特殊性:车床中即使使用直径编程,O967x 中所有数值仍必须输入为半径值。

  • 修改参数后必须重新标定:每次修改 O967x 中的任何参数后,应执行 O9601 标定循环。标定程序会进行参数合理性检查。

  • #626/#627/#628 可为零:如果标定刀具数据从刀具表中读取,将这三个参数设为 0。此时系统从刀具存储器中读取标定刀的实际数据:

    • #626=0 → 标定刀长度 L 从刀具表长度读取
    • #627=0 → 标定刀半径 R 从刀具表半径读取
    • #628=0 → 标定刀高度 H 从刀具表长度磨损读取

  • 5. I/O 映射参数表

    激光系统通过 #11xx(输出)和 #10xx(输入)参数与 CNC/PLC 通信。PLC 程序负责将物理输入/输出点位映射到这些宏变量地址。

    5.1 输出信号参数 #670~#675

    系统通过 PLC 输出控制激光系统的 6 个独立功能:

    参数符号功能默认示例物理连接说明
    #670 Enable0 发射器使能(激光开/关) 1100 PLC Yx.0 → 发射器 控制激光束发射。24V=开,0V=关。可和 #672 共用一个 PLC 输出
    #671 Enable1 接收器 MODE1 1101 PLC Yx.1 → 接收器 标准测量模式。24V=MODE1,0V=非 MODE1
    #672 — 防尘快门阀 1102 PLC Yx.2 → 气动阀 Y2 控制防尘快门气缸。可与 #670 共用一个 PLC 输出
    #673 — 气帘阀(Barrier Air) 1103 PLC Yx.3 → 气动阀 Y1 控制气帘。若无独立气帘,设 #673=0
    #674 Enable2 接收器 MODE2(NT 可选) 1104 PLC Yx.4 → 接收器 NT 系统专用。不用时设 0
    #675 — 刀具清洁吹气嘴(可选) 1105 PLC Yx.5 → 吹气嘴电磁阀 不用时设 0

    关于 #670 和 #672 共用输出: 如果防尘快门阀和发射器使能接到同一个 PLC 输出点(即激光开启时快门也打开),则 #670 和 #672 必须设置为相同的值。此时系统不会单独控制快门。

    关于 #673: 如果没有独立的气帘阀(例如气路中气帘与快门共用),设 #673=0。系统将跳过气帘控制逻辑。

    5.2 输入信号参数 #676~#678

    系统通过 PLC 输入读取激光系统的 3 个状态信号:

    参数符号功能默认示例物理连接说明
    #676 Output Laser OK 激光系统状态正常 1000 接收器 → PLC Xx.0 24V=激光正常,0V=故障(光强低于阈值约 25%)。不可接跳跃输入
    #677 Output Dynamic 动态脉冲信号 1001 接收器 → PLC Xx.1 → NC HSS1~HSS8 跳变信号,每次光栅变化产生固定脉宽的 24V 脉冲。必须连接至 NC 高速跳跃输入(High Speed Skip Input HSS,JA40 接口 HDI0~HDI7)
    #678 Output Static 静态光栅状态 1002 接收器 → PLC Xx.2 持续电平信号(24V=光通,0V=遮光)。不可接跳跃输入(脉宽太短,NC 无法检测)

    关于高速跳跃输入(High Speed Skip):

    • 跳变信号 Output Dynamic 必须通过光耦隔离后接入 NC 的高速跳跃输入。FANUC 21i/210i 只有一个 HDI0;较新型号有 HDI0~HDI7。
    • 相关 NC 参数设置(以 FANUC 16i/18i/30i 为例):
      • 6200.4 (HSS)=1 — 启用高速跳跃
      • 6200.6 (SRE) — 上升沿(=0)或下降沿(=1)触发(取决于控制类型)
      • 6200.7 (SKF)=1 — 启用空运行/倍率/加减速
      • 6202.x (1Sx)=1 — 指定 HDIx 用于 G31
      • 6201.1 (SEB)=1 — 伺服延迟补偿 B 型
    • 对于 FANUC 15-MB / 150MB:7200.4=1, 7200.5=0, 7200.6=1, 7201.x=1, 7300.7=1
    • 如果激光系统与测头共享同一个 HSS 输入,需在 O9670 中切换参数 6202 使激光专用的输入生效,在 O9679 中恢复默认状态。PLC 的 RESET 逻辑也必须恢复默认状态。

    关于 #677 的小数部分(测量输入延迟补偿):

    #677 的值可以包含小数部分,用于补偿测量输入的信号延迟时间(范围 0~0.999 秒):

    #677=1001.010 (输入地址=1001, 延迟时间=10ms)

    系统会解析为:输入地址 = 1001,延迟时间 = 0.010 秒。这个延迟时间被补偿在测量块中。

    关于 #676 和 #678 的特殊约束:

    如果 Output Static(静态光栅信号)没有连接到独立的 PLC 输入点,则 #676 和 #678 必须设置为相同的值(即 Laser OK 和 Static 接到同一个 PLC 输入点的同一个 #10xx 地址)。

    注意:对于 LaserNT 系统,即使 Static 未独立连接,也不允许将 #676 和 #678 设为相同值。LaserNT 要求分开读取 Laser OK 和 Static 信号。

    5.3 I/O 映射异常处理

    现象:激光系统无法正常开关、测量信号丢失、或错误地触发了其他机床功能。

    排查步骤:

  • 确认 #670~#678 的值与 PLC 程序中的 #10xx/#11xx 地址对应一致
  • 确认 PLC 输出 Y 点与激光系统输入 Enable0~Enable2 的物理接线正确
  • 确认 PLC 输入 X 点与激光系统输出(Laser OK/Dynamic/Static)的物理接线正确
  • 确认 Output Dynamic 已通过光耦连接到 NC 的 HSS 输入
  • 在 O9670 中设置 #629,运行 O9699(T_SIGNAL)诊断程序验证所有 I/O 信号
  • 系统工作模式与 I/O 的关系:

    模式Enable0 (#670)Enable1 (#671)Enable2 (#674)用途LED
    MODE0 24V 0V 0V 单切削刃监测 灭
    MODE1 24V 24V 0V 标准测量 绿
    MODE2 24V 0V 24V 切削刃监测 2 或测量 2 红
    MODE3 24V 24V 24V 拉出测量 黄

    5.4 #679 硬件控制程序号

    #679 用于选择 I/O 控制方式:

    #679 值控制方式说明
    0 标准 I/O 系统使用 #670~#678 定义的地址直接控制硬件
    非零(如 9643) CLI 接口程序 I/O 控制由程序号 #679 指定的 CLI 接口程序接管,此时 #670~#678 不直接用于硬件控制

    标准配置下 #679=0,使用直接 I/O 映射方式。如果需要通过 RS232 串行接口(CLI)控制激光系统,则由机床制造商提供对应的接口程序(如 O9643)。


    6. Global Parameters 完整参数表

    6.1 在 O9670 中定义的参数

    参数功能描述标准值说明
    #629 配置表选择(1~4) 1 选择 O9671~O9674 中的一个

    6.2 在 O967x 中定义的参数

    基本设置
    参数功能描述标准值
    #680 语言代码:0=英,1=德,2=法,3=意,4=西,5=荷,6=瑞典,7=波,8=丹,9=捷 0
    #641 错误重试次数(2~10) 4
    #640 标定参数起始地址(需掉电保持区) 540
    轴分配与进刀侧
    参数功能描述标准值
    #601 轴分配:半径轴×1 + 激光轴×10 + 长度轴×100。铣床用 1/2/3,车床用 6/7/9 312 (Z=3,X=1,Y=2)
    #602 长度轴进刀侧:+1=正侧,-1=负侧 +1
    #603 半径轴进刀侧:+1/-1=单侧,+2/-2=双侧 -1
    测量位置(机床坐标系)
    参数功能描述标准值
    #604 半径轴测量位置,精度 <0.1mm -50.0
    #605 激光轴测量位置(收发器之间),精度 <1mm 300.0
    #606 长度轴测量位置,精度 <0.1mm -370.0
    干涉轮廓距离
    参数功能描述标准值
    #607 激光束至后方障碍物(半径轴) 50-2
    #608 测量位置至障碍物(激光轴) 88/2-2
    #609 激光束至障碍物(长度轴) 62-7
    #682 激光束前方障碍物(半径轴) 15+2
    软件限位
    参数功能描述标准值
    #650 长度轴正软件限位 0.0
    #651 长度轴负软件限位 -300.0
    #652 半径轴正软件限位 0.0
    #653 半径轴负软件限位 -200.0
    刀具数据
    参数功能描述标准值
    #610 最大刀具长度 mm 300.0
    #611 最小刀具长度 mm 60.0
    #612 最大刀具半径 mm 70.0
    #613 保留 0.0
    #614 刀具长度偏置(后处理器虚拟长度)mm 0.0
    #615 刀具半径偏置(后处理器虚拟半径)mm 0.0
    #616 零刀具实际长度 mm 0.0
    #660 刀具表类型:1=铣A/999, 2=铣B/999, 3=铣C/999, 4=车C/99, 11=铣A/200, 12=铣B/200, 13=铣C/200, 14=车C/32/64;负值=自定义 1
    进给率
    参数功能描述标准值
    #617 快速进给(0=G0,非0=G1 F#617) 0
    #618 定位进给率 mm/min 5000
    #619 最大测量进给率 mm/min 5000
    #630 测量进给率 1(保留) 1000
    #631 测量进给率 2(O9603/O9606 长度测量碰撞风险时使用) 200
    #642 循环结束进给率 #4109
    退刀距离
    参数功能描述标准值
    #622 刀尖距离(首次测量前退刀距离) 6.000 mm
    #623 首次测量块后退刀量 1.800 mm
    #624 二次测量块后退刀量 0.050 mm
    #625 后续测量块后退刀量 0.030 mm
    安全平面
    参数功能描述标准值
    #620 测量前长度轴安全平面(机床坐标) 0.0
    #621 测量后长度轴安全平面(机床坐标) 0.0
    激光常数与转速
    参数功能描述标准值
    #632 Output Dynamic 脉冲宽度 s 0.020
    #633 MODE0 基准转速 min⁻¹(NT用) 3750
    #634 MODE1 基准转速 min⁻¹ 0
    #635 MODE2 基准转速 min⁻¹(Z-0=0, Z-1=42000, Z-2=600) 0
    #636 MODE3 基准转速 min⁻¹(拉出测量最小速度) 3000
    标定参数
    参数功能描述标准值
    #638 标定模式 Bit0:0=BLUM标定刀,1=直柄针;Bit1:0=双侧,1=单侧 0
    #639 标定测量方向:+1=拉出(暗→亮),-1=推入(亮→暗) +1
    #626 标定刀具长度 L mm 999.999
    #627 标定刀具半径 R mm 5.999
    #628 标定刀具高度 H mm 9.999
    选项位

    #654 — 激光系统选项

    Bit值功能
    0 1 Laser NT 功能启用
    1 2 单切削刃监测锁定(不可用)
    2 4 保留
    3 8 Hybrid Laser(激光+测头一体)
    4 16 Z-1 选项(MODE2 同 MODE0,不同基准转速)
    5 32 Z-2 选项(MODE2 同 MODE3,不同基准转速)
    6~7 — 保留

    #655 — 测量循环选项

    Bit值功能
    0 1 O9603/O9606 偏心测量块起始位置计算方式:0=用心测量触发信号,1=用刀具长度
    1 2 车内刀测量(不旋转)启用:0=禁止,1=允许
    2 4 保留(SINUMERIK 840D)
    3 8 保留(SINUMERIK 840D)
    4 16 O9608 M0/M2 检查允许
    5 32 测量循环结束不回退安全平面
    6 64 完整循环重试
    7 128 保留(SINUMERIK 840D)

    #656 — 温度补偿与刀具修正选项

    Bit值功能
    0 1 标定/TC 中锁定长度轴测量
    1 2 标定/TC 中锁定半径轴测量
    2 4 刀具长度计算与工件坐标系的关系(5006.6 和 6006.4 不一致时设 4)
    3 8 使用 H0 执行测量循环
    4 16 姊妹刀具管理启用

    #657 — 保留选项

    Bit值功能
    0 1 #663=0 时半径测量方向:0=平行于半径轴,1=垂直于激光束
    1 2 保留(SINUMERIK 840D)
    2 4 不开启激光系统
    3 8 不关闭激光系统
    4 16 磨削 NT 模式
    其他
    参数功能描述标准值
    #643 主轴 M 代码:3,4,5,19 3
    #681 吹气嘴模式:DCBA 格式(D=起始等待秒 C=粗测吹气 B=精测前等待 A=精测吹气) 0
    #662 激光束与长度轴的垂直偏差角度° 0
    #663 激光束与半径轴的垂直偏差角度°(<45°) 0

    6.3 程序自动设定的参数

    以下参数由测量循环在运行过程中自动写入,用户不应写入(仅用于读取诊断):

    参数功能描述
    #600 错误编号(0=无错误)
    #637 当前程序编号(1~29):1=O9601, 5=O9602, 7=O9603, 9=O9604, 13=O9605, 15=O9606, 18=O9607, 20=O9608, 26=O9685, 29=O9688
    #[#640+0] 标定值 — 长度轴前缘
    #[#640+1] 标定值 — 长度轴后缘
    #[#640+2] 标定值 — 半径轴标准侧
    #[#640+3] 标定值 — 半径轴可选侧
    #[#640+4] 标定均值 — 长度轴
    #[#640+5] 标定均值 — 半径轴
    #[#640+6] TC 参考值 — 长度轴
    #[#640+7] TC 参考值 — 半径轴
    #[#640+8] #662 角度值
    #[#640+9] #663 角度值 或 激光轴位置 #605
    #643 程序调用时的主轴转角方向及转速(100×S代码+M代码)
    #644 比例因子(1=mm, 25.4=inch)
    #645 刀具存储器地址:H代码×1000 + D代码
    #646 刀具长度(钻/铣)/ 长度L1(车刀)
    #647 刀具半径(钻/铣)/ 长度L2(车刀)
    #648 长度磨损(钻/铣)/ 磨损L1(车刀)
    #649 半径磨损(钻/铣)/ 磨损L2(车刀)
    #658 半径(车刀)
    #659 半径磨损(车刀)
    #661 假想刀尖方向
    #664~#669 角度函数定位/测量修正系数
    #682~#684 测量轴触发点、最大/最小值
    #685~#692 测量累加和、O9606/O9646 内部参数、TC计数器
    #693~#699 TC 历史值(长度/半径轴,最多3组,在 O9678 中可选实现)

    7. 完整编程示例

    7.1 标准 3 轴铣床配置

    O9670 — 启动预处理:

    O9670 (USERSTARTPROG)
    M9 (关闭冷却液)
    G05.1 Q0 (退出多缓冲模式)
    #629=1 (使用 O9671 配置)
    (如激光系统需摆入,在此添加 M 代码)
    N9999 M99

    O9671 — 参数配置(标准立式加工中心,激光平行于 X 轴):

    O9671 (USERPARATAB1)
    (基本设置)
    #680=0 (英语)
    #641=4 (重试 4 次)
    #640=540 (标定参数起始 #540)

    (轴分配: Z=长度, X=激光, Y=半径)
    #601=312
    #602=+1 (长度轴正侧进刀)
    #603=-1 (半径轴负侧进刀)
    #662=0 (激光⊥长度轴)
    #663=0 (激光⊥半径轴)

    (测量位置)
    #604=-50.0 (半径轴 Y=-50)
    #605=300.0 (激光轴 X=300)
    #606=-370.0 (长度轴 Z=-370)

    (安全平面)
    #620=0.0
    #621=0.0

    (干涉距离)
    #607=48.0 (半径轴后方)
    #608=42.0 (激光轴方向)
    #609=55.0 (长度轴方向)
    #682=17.0 (半径轴前方)

    (软件限位)
    #650=0.0 (Z+)
    #651=-300.0 (Z-)
    #652=0.0 (Y+)
    #653=-200.0 (Y-)

    (刀具表)
    #660=1 (铣床 A 型, 999 刀)

    (I/O 映射)
    #676=1000 (Laser OK → #1000)
    #677=1001 (Dynamic → #1001)
    #678=1002 (Static → #1002)
    #670=1100 (Enable0 → #1100)
    #671=1101 (Enable1 → #1101)
    #672=1102 (快门 → #1102)
    #673=1103 (气帘 → #1103)
    #674=1104 (Enable2 → #1104, NT)
    #675=0 (吹气嘴未使用)
    #679=0 (标准 I/O)

    (激光时间常数)
    #632=0.020

    (基准转速)
    #633=3750
    #634=0
    #635=0
    #636=3000

    (选项)
    #654=0
    #655=0
    #656=0
    #657=0

    (主轴)
    #643=3
    IF[[#637-26]*[#637-29]EQ0]THEN#643=19

    (退刀距离)
    #622=6.000
    #623=1.800
    #624=0.050
    #625=0.030

    (进给率)
    #617=0
    #618=5000
    #619=5000
    #642=#4109
    #630=1000
    #631=200

    (刀具极限)
    #610=300.0
    #611=60.0
    #612=70.0
    #613=0.0

    (附加偏置)
    #614=0.0
    #615=0.0
    #616=0.0

    (标定)
    #638=0 (BLUM标定刀, 双侧进刀)
    #639=+1 (拉出测量)

    (标定刀数据)
    #626=999.999
    #627=5.999
    #628=9.999

    (吹气嘴)
    #681=0
    M99

    O9679 — 收尾处理:

    O9679 (USERENDPROG)
    (如激光系统需摆出,在此添加 M 代码)
    (关闭激光系统相应输出)
    (恢复 HSS 默认输入配置)

    IF[#600EQ15] GOTO9995 (切削刃崩刃)
    IF[#600EQ16] GOTO9995 (超差)
    IF[#600EQ19] GOTO9995 (刀具断裂)
    GOTO9999

    N9995 (刀具错误处理)
    (在此添加锁定刀具/调用姊妹刀具的逻辑)

    N9999 M99

    O9678 — 温度补偿偏置(如不启用 TC,可保持空壳):

    O9678 (USERSETOFFSET)
    (温度补偿偏置处理)
    #12=FIX[#601/100]
    #11=FIX[[#601-100*#12]/10]
    #10=FIX[#601-100*#12-10*#11]
    (诊断参数)
    #4=#[#640+4]
    #6=#[#640+6]
    #5=#[#640+5]
    #7=#[#640+7]
    (如启用 TC,激活下面两行)
    (#[5200+#12]=#[#640+6]-#[#640+4])
    (#[5200+#10]=#[#640+7]-#[#640+5])
    M99

    7.2 带温度补偿的完整配置

    在主程序中集成 TC 的推荐流程:

    (1. 标定)
    T1 M6 (装载标定刀)
    M3 S3000
    G65 P9601 H1 D1 A3 R0.01 Z0. X0. (标定)
    T0 M6 (卸载标定刀)

    (2. 测量所有刀具)
    T2 M6
    M3 S3000
    G65 P9602 H2 B0 W0 A3 R0.01 (长度测量)
    T0 M6

    T3 M6
    M3 S3000
    G65 P9603 H3 D3 B0 M+1 S0.05 T0.05 W0 A3 R0.01 (长度+半径测量)
    T0 M6

    (3. 试切首件至合格)

    (4. TC 参考测量 — 记录当前机床热状态)
    T1 M6
    M3 S3000
    G65 P9604 H1 D1 B0 A3 R0.01 Z0. X0. (参考测量 B=0)
    T0 M6

    (5. 批量加工)
    (加工代码…)

    (6. TC 比较测量 — 检测热漂移)
    T1 M6
    M3 S3000
    G65 P9604 H1 D1 B1 A3 R0.01 Z0. X0. S0.05 T0.05 (比较测量 B=1)
    T0 M6

    (7. O9678 已将漂移值写入外部零点偏置,继续加工)
    (加工代码…)

    O9678 — TC 偏置写入(激活版):

    O9678 (USERSETOFFSET)
    #12=FIX[#601/100] (长度轴编号)
    #11=FIX[[#601-100*#12]/10] (激光轴编号)
    #10=FIX[#601-100*#12-10*#11] (半径轴编号)

    (写入外部零点偏置)
    #[5200+#12]=#[#640+6]-#[#640+4] (长度轴漂移 → 外部零点偏置)
    #[5200+#10]=#[#640+7]-#[#640+5] (半径轴漂移 → 外部零点偏置)
    M99

    7.3 自定义错误处理方案

    当刀具在测量循环中报错时,以下 O9679 实现自动调用姊妹刀具:

    O9679 (USERENDPROG)
    (标准收尾动作)
    M9

    (错误处理)
    IF[#600EQ0] GOTO9999 (无错误,正常结束)

    (错误锁定刀具并调用姊妹刀)
    IF[#600EQ15] GOTO9995 (切削刃崩刃)
    IF[#600EQ16] GOTO9995 (超差)
    IF[#600EQ19] GOTO9995 (刀具断裂)
    GOTO9999 (其他错误按标准方式处理)

    N9995
    #600=-#600 (取负,抑制系统错误中断)
    (此处插入姊妹刀具调用逻辑)
    (例如: #3000=100 (TOOL ERROR – LOCK TOOL))
    (或者: 调用 M 代码锁定该刀具并通知管理系统)

    N9999 M99


    8. 常见陷阱与排查

    8.1 I/O 配置错误

    陷阱 1:#677 的值不含小数部分时忽略信号延迟 实际接线可能存在传输延迟。如果测量值始终偏大或偏小固定值,考虑在 #677 中加入小数部分表示延迟时间(秒)。

    陷阱 2:LaserNT 不允许 #676 = #678 即使 Output Static 未独立接线,LaserNT 系统也强制要求 #676 和 #678 指向不同的输入点。否则测量循环无法正确区分 Laser OK 状态和光栅遮断状态。

    陷阱 3:物理接线与 #10xx/#11xx 地址不对应 #670~#678 中填写的是 PLC 映射到 CNC 宏变量的中间地址(由 PLC 程序中的 #11xx 和 #10xx 定义),不是物理 I/O 地址(X/Y 点)。必须确认 PLC 程序中已将 Xx.0 映射到 #1000、Yx.0 映射到 #1100 等。

    陷阱 4:多个测量系统共享 HSS 输入 如果机床同时使用激光对刀仪和接触式测头,且共用 HSS 输入,必须在 O9670 中设置正确的 6202 参数以激活激光专用的 HSS 输入,在 O9679 中恢复测头使用的输入。PLC 的 RESET 逻辑也必须兜底恢复。

    8.2 位置参数错误

    陷阱 5:#604/#606 测量位置与标定值差异过大 如果标定后首次测量失败(E14),检查 #604 和 #606 的设定值是否与标定后的 #[#640+4] 和 #[#640+5] 相差超过 2mm。标定值是基于这些测量位置计算的,差异过大会导致 E14 错误。

    陷阱 6:干涉距离 #607/#608/#609 设定过小

    • #607 过小:半径较大的刀具在光束后方可能碰撞
    • #608 过小:刀具可能在收发器之间碰撞
    • #609 过小:阶跃刀具(Step Tool)的长度可能无法完全测量
    • 检查:在 O9603/O9606 中,如果 #607 < (实测半径 + #623),第二个侧面的测量将自动跳过

    陷阱 7:安全平面 #620/#621 设置不当 如果 #620 或 #621 超出软件限位(#650~#653),测量循环会报 E6 碰撞风险。安全平面必须位于限位开关范围内且保证激光系统可无碰撞到达。

    8.3 选项位设置错误

    陷阱 8:使用 NT 功能(B 值为负)但 #654 Bit0=0 如果调用带负 B 值的测量模式(如 B=-2),但 Laser NT 未安装或 #654 Bit0=0,系统会自动降级为对应的正值模式(B=-2 → B=2)。不会报错,但刀具将以 G0 快速进刀到激光束中,存在碰撞风险。

    陷阱 9:#638 Bit1 设为 1(单侧进刀)但机床两侧都有空间 单侧进刀时,该侧的测量值也被用作均值,降低了标定精度。只有在轴行程限制导致无法从另一侧进刀时才使用单侧模式。

    陷阱 10:#639 测量方向选错 推入测量(#639=-1)的触发逻辑是亮→暗变化,残留冷却液或切屑可能产生虚假的暗信号,导致误触发。推荐优先选择拉出测量(#639=+1)。

    陷阱 11:标定刀类型 #638 Bit0 选错

    • Bit0=0(BLUM 标定刀):预期标定刀有测试直径,可以在长度轴双侧进刀精确找到激光束中心
    • Bit0=1(直柄针):预期标定刀是简单的直圆柱,#628 应设为 10mm
    • 设置与实际标定刀类型不符时,标定值将不可靠

    8.4 多激光系统配置

    陷阱 12:#629 值超出范围 如果 #629 不在 1~4 范围内,O9630 会报 E17 错误。在 O9670 中必须确保 #629=1 或 #629=2 等有效值,并且对应的 O967x 程序(O9671~O9674)已加载。

    陷阱 13:多激光系统的 #640 起始地址冲突 如果一台机床安装了两套激光系统,且使用两个不同的 O967x 配置表,两组标定参数(各 10 个)的起始地址 #640 不能重叠。例如:

    • 激光 1:#640=540 → 使用 #540~#549
    • 激光 2:#640=550 → 使用 #550~#559
    • 两组地址必须不重叠,且均在掉电保持参数区

    陷阱 14:修改 O967x 参数后未重新标定 每次修改 O967x 中的测量位置、标定刀具数据或干涉距离后,必须重新执行 O9601 标定。标定程序会进行参数合理性检查,如果参数不合理会明确报错。跳过此步骤直接测量会导致数据错误。

    8.5 系统调试检查清单

    运行诊断程序 O9699(T_SIGNAL)前必须确认:

    • O9670 中已设置 #629=x
    • O967x(O9671~O9674)已填入有效值,特别是 #670~#678 和 #604~#606
    • 气动单元已连接,快门已安装
    • 如激光系统有摆入机构,对应的 M 代码已在 O9670 中集成
    • NC 参数 6200.4 (HSS)、6202.x (1Sx) 等已按 FANUC 型号设置
    • 3202.4 (NE9)=0(解除 O96xx 程序保护)
    • 宏程序 B 选项已启用

    O9699 会依次检查:

  • 输出/输入信号和接线正确性
  • 测量输入(Skip)功能
  • 语言设置(结束时给出 “E0: LANGUAGE VERSION V5XX” 提示)
  • 所有测试通过后,方可执行实际测量循环。


    本文档基于 BLUM LaserControl NT Setup Guide (P87.0634-030.360 / V5D / FANUC) 和 Programming Manual 编写。 文档中所有参数值、标准值和示例均来自原始技术文档。

    赞(0)
    未经允许不得转载:171主机测评 » 调试秘籍:BLUM 激光对刀 O9670~O9679 用户程序结构与 FANUC I/O 映射配置
    分享到: 更多 (0)

    评论 抢沙发

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