4. UR协作机器人焊接通信与接口配置

UR协作机器人本体并不直接“驱动”焊接电源,它承担的是时序控制与信号映射:由UR控制器通过本地I/O或工业总线,把起弧、收弧、电流/电压给定、送丝使能等指令交给焊接电源,同时把电源返回的起弧成功、焊接中、报警、电流/电压反馈等状态读回程序。理解这一层“谁给谁什么信号、信号放在哪个地址、极性如何定义”,是焊接单元能否稳定联调的前提。

一、四类通信通道的定位

UR控制器可用的焊接通信通道主要有四类,它们不是互相替代关系,而是按实时性、接线成本和电源支持能力分层使用:

  • UR本地I/O:控制器自带数字输入、数字输出、模拟输入、模拟输出。数字量用于起弧、收弧、使能、报警复位等开关指令;模拟量(0~10V或4~20mA)用于电流、电压、送丝速度给定。优点是延迟低、接线直观,缺点是线数多、模拟量易受干扰。
  • Modbus TCP:基于以太网,UR作为客户端或服务器,用寄存器地址读写电源参数。适合读写电流设定、电压设定、焊接程序号、状态字等成组数据,配置简单,但周期通常在10~50ms量级。
  • EtherNet/IP:面向工业以太网的CIP协议,通过隐式报文(Implicit)做周期性I/O数据交换,实时性优于Modbus TCP,适合与支持EtherNet/IP的焊接电源做高速状态交互。
  • Profinet:西门子生态常用,UR需通过Profinet选项或网关接入,用输入/输出模块槽位映射焊接信号,适合与西门子PLC、Profinet电源共线的产线。

选择原则:安全与急停类信号走硬线,实时焊接时序优先走总线或本地I/O,参数读写可走Modbus TCP。不要把所有信号都塞进一条总线,否则一旦通信抖动,起弧时序就会失稳。

UR焊接通信信号映射总览 UR控制器 URScript / 程序节点 本地数字I/O DI0-DI7 / DO0-DO7 本地模拟I/O AI0-AI1 / AO0-AO1 Modbus TCP 寄存器读写 EtherNet/IP 隐式I/O数据 Profinet 槽位I/O映射 焊接电源 MIG/MAG / TIG 电源 起弧/收弧端子 Arc On / Arc Off 电流/电压给定 0-10V 或 4-20mA 状态返回 Arc Established / Alarm 参数寄存器 Job号 / 电流 / 电压 反馈采样 实际电流 / 实际电压 DO[0] 起弧 / DO[1] 收弧 / DO[2] 使能 AO[0] 电流给定 / AO[1] 电压给定 Modbus 写寄存器:Job号、电流设定 EtherNet/IP 隐式I/O:控制字 Profinet 输出槽:焊接指令 DI[0] 起弧成功 / DI[1] 焊接中 / DI[2] 报警 AI[0] 实际电流 / AI[1] 实际电压 Modbus 读寄存器:状态字、报警码 EtherNet/IP 隐式I/O:状态字 Profinet 输入槽:状态反馈 UR→电源 控制指令 电源→UR 状态反馈 实线=控制方向 虚线=反馈方向

二、本地I/O信号映射的实操配置

以一台支持模拟量给定的MIG电源为例,典型映射如下(示例参数,需按实际电源手册核对):

UR端口方向信号名电源端子说明
DO[0]输出ArcStart起弧输入高电平起弧,保持至收弧
DO[1]输出ArcStop收弧输入脉冲或电平,按电源定义
DO[2]输出WeldEnable使能输入安全使能,常与安全门联锁
DO[3]输出AlarmReset复位输入报警后复位
AO[0]输出CurrentRef电流给定0~10V对应0~300A
AO[1]输出VoltageRef电压给定0~10V对应10~40V
DI[0]输入ArcEstablished起弧成功电源确认起弧后置位
DI[1]输入Welding焊接中焊接过程有效
DI[2]输入Alarm报警输出故障时置位
AI[0]输入CurrentFB电流反馈0~10V对应0~300A
AI[1]输入VoltageFB电压反馈0~10V对应0~40V

在UR示教器或PolyScope中,通过“I/O设置”把上述端口命名并设置极性。模拟量给定需要做标定换算:若AO[0]输出0~10V对应0~300A,则设定200A时输出值应为 200/300×10 = 6.67V。UR的模拟输出通常以0~1的归一化值或电压值写入,需在程序里用赋值语句完成换算,例如 set_analog_out(0, 200.0/300.0)。反馈侧同理,读回0.5的归一化值代表150A。

模拟量信号建议使用屏蔽双绞线,屏蔽层单端接地;给定线与反馈线分开走线,避免与伺服动力线并行,否则电流反馈会出现周期性波动。

三、Modbus TCP寄存器映射

Modbus TCP配置分三步:确认电源的IP与端口(默认502)、确认寄存器地址表、在UR的“Modbus”客户端中建立连接。以某电源为例(示例地址,实际以手册为准):

# UR中建立Modbus TCP连接(示意)
modbus_add_signal("192.168.1.50", 502, 0, 100, "CurrentSet")
modbus_add_signal("192.168.1.50", 502, 0, 101, "VoltageSet")
modbus_add_signal("192.168.1.50", 502, 0, 200, "StatusWord")
modbus_add_signal("192.168.1.50", 502, 0, 201, "AlarmCode")

# 写入电流设定 180A(寄存器按0.1A分辨率,写1800)
modbus_set_output_register("CurrentSet", 1800)
# 读取状态字
modbus_get_input_register("StatusWord")

注意区分保持寄存器(4x)与输入寄存器(3x),以及字/字节顺序。若读回的电流值明显偏大或偏小,优先检查分辨率与高低字节交换设置。Modbus TCP适合做参数下发和状态巡检,不建议用它承担起弧时序,因为轮询周期不确定。

四、EtherNet/IP与Profinet的映射思路

EtherNet/IP通过EDS文件把电源描述为从站,UR侧配置隐式报文的输入/输出实例与长度。典型输出(UR→电源)为4字节控制字加4字节电流/电压给定,输入(电源→UR)为4字节状态字加4字节实际值。配置完成后,这些数据以固定周期刷新,程序里直接读写对应标签即可。

Profinet则通过GSDML文件导入,UR作为控制器或通过网关,把电源映射为若干输入/输出槽位。每个槽位对应一个信号,例如槽1输出“起弧”,槽2输出“电流给定”,槽3输入“状态字”。配置时务必核对槽位顺序与字节对齐,错位会导致指令与状态完全对不上。

无论使用哪种总线,起弧指令发出后必须等待“起弧成功”反馈再进入焊接运动,不能仅凭延时判断。建议设置超时监控:若500ms内未收到ArcEstablished,立即撤销起弧并报警,避免空焊或撞枪。

五、联调检查要点

  1. 先用手动I/O面板逐点强制输出,用万用表在电源端确认电平与极性。
  2. 模拟量给定从0、50%、100%三点校验,记录电源显示值与UR输出值的偏差。
  3. 总线通信先用ping和寄存器读写验证连通,再接入焊接时序。
  4. 完整跑一次“起弧—焊接—收弧”,观察状态字与反馈值是否与过程一致。
  5. 模拟一次电源报警,确认UR能读到报警位并停止程序。

通信配置的本质是把焊接工艺的时序要求,翻译成UR与电源都能识别的信号和地址。只要方向、极性、分辨率、超时判断四件事对齐,后续的焊接程序才能稳定复现。