3. 焊接工艺参数体系与UR程序变量映射

在UR协作机器人焊接系统中,工艺参数并不是孤立地写在焊机面板上的数字,而是要在“焊机寄存器—UR程序变量—运动指令”三层之间建立稳定的映射关系。理解这套映射,是让焊接工艺从“手动调机”走向“程序化复现”的关键一步。本节先梳理焊接工艺参数的分类与物理含义,再说明它们在UR Polyscope程序变量、脚本变量与焊机寄存器之间的对应方法。

一、焊接工艺参数的分类与物理含义

焊接工艺参数可以按“能量—填充—运动—保护”四条主线来分类,这样分类的好处是:每一类参数在UR程序中的映射方式往往具有相似性。

  • 能量类参数:焊接电流(A)与焊接电压(V)。电流决定熔深和熔敷率,电压决定弧长和熔宽。二者通常成对出现,在MIG/MAG焊中构成一元化或分别调节关系。
  • 填充类参数:送丝速度(m/min或ipm)。在等速送丝系统中,送丝速度与电流近似成正比,因此它常作为电流的“代理变量”写入程序。
  • 运动类参数:焊接速度(mm/s)、摆焊参数(摆幅、频率、停留时间、摆焊模式)。焊接速度影响热输入和焊缝成形,摆焊参数影响熔宽与边缘熔合。
  • 保护与几何类参数:保护气流量(L/min)、干伸长(mm)、焊枪角度与行走方向。这些参数不直接写入焊机寄存器,但会显著改变焊缝质量,需要在程序注释或工艺表中固化。

需要特别说明的是:干伸长在UR程序中通常不是变量,而是由TCP(工具中心点)标定和焊枪姿态共同决定的几何量。如果干伸长变化,实际电流—电压关系会漂移,因此它应作为工艺卡中的固定条件,而不是运行时可调参数。

二、三层映射结构:焊机寄存器、UR脚本变量、Polyscope程序变量

UR焊接系统的参数传递通常遵循“焊机寄存器 ← 脚本变量 ← Polyscope程序变量”的链路。焊机寄存器是焊机内部可被外部写入的地址,例如Fronius、Lincoln、Miller等品牌都提供数字接口或模拟接口寄存器。UR的脚本变量(如 global weld_current = 180)是运行在UR控制器中的全局变量,而Polyscope程序变量则是示教器上可见、可赋值的变量节点。

映射的核心原则是:Polyscope变量负责“人机交互与工艺切换”,脚本变量负责“逻辑运算与单位换算”,焊机寄存器负责“实际执行”。三者之间不是简单的一一对应,而是存在单位换算、量程缩放和条件判断。

焊接工艺参数三层映射结构 Polyscope 程序变量 示教器可见 / 工艺切换 weld_current = 180 焊接电流 (A) weld_voltage = 22.5 焊接电压 (V) wire_feed = 7.2 送丝速度 (m/min) weld_speed = 6.0 焊接速度 (mm/s) weave_amp = 3.0 摆幅 (mm) gas_flow = 15 保护气流量 (L/min) UR 脚本变量 单位换算 / 量程缩放 / 条件判断 reg_current = 1800 ×10 缩放为整数寄存器 reg_voltage = 225 ×10 缩放为整数寄存器 reg_wire = 72 ×10 缩放为整数寄存器 speed_mm_s = 6.0 直接用于 MoveL 速度 weave_freq = 2.5 摆焊频率 (Hz) gas_on = True 保护气开关逻辑 焊机寄存器 实际执行 / 数字或模拟接口 R[1] = 1800 焊接电流寄存器 R[2] = 225 焊接电压寄存器 R[3] = 72 送丝速度寄存器 R[4] = 1 起弧/收弧触发 R[5] = 15 保护气流量寄存器 R[6] = 0 焊机状态反馈 焊机状态反馈 → 程序条件判断(起弧成功/失败、电流实际值)

三、映射方法的具体实现

以一台配Fronius TPS焊机的UR10e为例,假设工艺要求:焊接电流180 A、电压22.5 V、送丝速度7.2 m/min、焊接速度6 mm/s、摆幅3 mm、摆焊频率2.5 Hz、保护气15 L/min。映射过程可以按以下方式落地。

第一步:在Polyscope中建立工艺变量。在“安装→变量”中新建全局变量,命名建议带前缀以便区分,例如 weld_current、weld_voltage、wire_feed、weld_speed、weave_amp、weave_freq、gas_flow。这些变量在示教器上可直接修改,适合作为工艺切换的入口。

第二步:在脚本中完成单位换算与寄存器写入。多数焊机的数字接口使用整数寄存器,且量程经过缩放。例如电流寄存器可能以0.1 A为最小单位,则180 A对应1800;电压以0.1 V为单位,22.5 V对应225;送丝速度以0.1 m/min为单位,7.2 m/min对应72。脚本片段如下:

global weld_current = 180.0
global weld_voltage = 22.5
global wire_feed = 7.2
global weld_speed = 6.0
global weave_amp = 3.0
global weave_freq = 2.5
global gas_flow = 15

def weld_setup():
  write_output_integer_register(1, round(weld_current * 10))
  write_output_integer_register(2, round(weld_voltage * 10))
  write_output_integer_register(3, round(wire_feed * 10))
  write_output_integer_register(5, round(gas_flow))
  write_output_integer_register(4, 1)  # 起弧触发
end

这里 round() 用于避免浮点误差导致寄存器写入非整数;write_output_integer_register 是UR脚本中常用的寄存器写入函数,具体函数名取决于所配的焊接接口包(如Fronius、Lincoln等厂商提供的URCap)。

第三步:将运动参数与摆焊参数写入UR运动指令。焊接速度直接作为 MoveL 的速度参数,摆焊参数则通过URCap的摆焊功能或脚本中的 weave 相关函数设置。例如:

movel(p_weld_start, a=0.5, v=weld_speed, r=0.02)
weave_enable(amplitude=weave_amp, frequency=weave_freq, mode="triangular")
movel(p_weld_end, a=0.3, v=weld_speed, r=0.02)
weave_disable()

注意:摆焊的幅值和频率在UR中通常以mm和Hz为单位,与焊机寄存器无关,因此它们只存在于脚本变量和运动指令层,不需要写入焊机寄存器。

四、映射中的常见问题与判断依据

实际调试中,映射最容易出问题的地方有三处。第一是量程不匹配:焊机寄存器量程为0~1000,而程序写入1800,会导致焊机报错或饱和。判断方法是先查焊机接口手册的寄存器量程表,再在脚本中加入限幅判断,例如 min(max(value,0),1000)。第二是单位不一致:送丝速度有的焊机用m/min,有的用ipm,若未换算会导致实际送丝量偏差约2.54倍。第三是起弧时序:寄存器写入后需要等待焊机反馈“起弧成功”再开始运动,否则会出现未熔合或断弧。判断依据是读取焊机状态寄存器(如R[6]),当反馈值为1时再执行 MoveL。

建议在程序开头加入一段“参数回读”逻辑:将焊机实际电流、电压反馈值读入UR寄存器,与设定值比较,偏差超过±10%时弹出提示。这能有效发现送丝管堵塞、导电嘴磨损或保护气不足等隐性故障。

五、工艺参数映射表(示例)

下表给出一份可直接参考的映射对照,字段包括工艺参数、Polyscope变量名、脚本换算方式、焊机寄存器地址与量程。表中数值为教学示例,实际使用时需按焊机手册和工艺评定结果调整。

工艺参数 Polyscope变量 脚本换算 焊机寄存器 量程/单位
焊接电流weld_current×10 取整R[1]0~3000(0.1 A)
焊接电压weld_voltage×10 取整R[2]0~500(0.1 V)
送丝速度wire_feed×10 取整R[3]0~200(0.1 m/min)
焊接速度weld_speed直接用于MoveL—mm/s
摆幅weave_amp直接用于weave—mm
摆焊频率weave_freq直接用于weave—Hz
保护气流量gas_flow取整R[5]0~30(L/min)
起弧触发arc_on布尔转1/0R[4]0/1
焊机状态arc_ready读取反馈R[6]0/1

这张表的价值在于:它把“工艺卡上的数字”翻译成“程序里可执行的变量与寄存器”,使工艺参数不再依赖操作者记忆,而是成为可版本管理、可复现的程序资产。当需要切换不同板厚或接头形式时,只需修改Polyscope变量值,脚本会自动完成换算与写入,从而保证焊接质量的一致性。