摘要

UR 系列协作机器人内置多组 TCP/IP 通信服务端口,原生支持 Modbus TCP、仪表板服务、实时数据交互、远程脚本下载等多类通信机制,能够满足工业自动化场景下上位机远程管控需求。本文以 Universal Robots 六轴协作机器人为硬件载体,围绕 502 Modbus TCP 端口、29999 仪表板端口、30001/30002/30003 编程实时端口的通信原理、协议规范、功能划分展开系统性研究,设计一套完整上位机远程控制架构,实现机器人 IO 信号读写、URP 程序远程下载、程序启停运行管控、机器人全量状态实时采集四大核心功能。文章完成通信链路搭建、协议数据解析、上位机软件模块开发、整机联调测试全流程验证,测试结果表明,基于多端口 TCP/IP 协同通信方案具备通信稳定、实时性强、功能覆盖全面的优势,可广泛应用于白酒灌装、机床上下料、柔性装配等自动化产线上位机集中管控场景。 关键词:UR 协作机器人;TCP/IP;Modbus TCP;远程控制;上位机;实时数据交互

图1远程控制系统

一、绪论

1.1 研究背景与意义

工业柔性制造的快速发展推动协作机器人大规模落地,传统现场示教模式存在操作距离受限、多机器人集中管控难度大、程序更新效率低、设备状态无法统一采集等痛点,严重制约自动化产线智能化升级。Universal Robots(优傲)协作机器人作为轻量化人机协作设备,广泛应用于食品、3C、白酒包装、汽车零部件等行业,其控制器原生开放多组 TCP 服务端口,无需额外加装通信网关即可与 PC 上位机建立以太网通信链路,为远程集中控制提供底层协议支撑。

在白酒自动化机器人上位机开发场景中,单条灌装生产线往往部署 3~6 台 UR 机器人,若采用现场示教方式,工程师需逐台设备调试、更新程序,产线停机损耗高;同时机器人传感器数据、关节扭矩、IO 信号、运行故障代码分散存储在本地控制器,无法上传至中控上位机做数据统计与异常预警。因此,搭建一套基于 TCP/IP 协议的远程上位机控制系统,实现 IO 远程操控、程序远程下发、运行状态远程管控、设备数据实时采集,对提升产线运维效率、降低人工成本、实现产线数字化管控具备极高工程应用价值。

1.2 国内外研究现状

国外 Universal Robots 官方提供完整 TCP 通信开发手册,划分 Dashboard 仪表板、Primary/Secondary 编程端口、RTDE 实时端口、Modbus TCP 四大通信体系,配套 Python、C# 开发示例,多用于实验室单机远程调试,但缺少面向工业中控上位机的多端口协同整合方案。国内研究多聚焦单一端口功能开发,例如仅基于 29999 端口实现程序启停、仅基于 502 端口完成 IO 控制,缺乏多端口联动一体化上位机架构设计,难以覆盖完整机器人远程管控需求。现有方案普遍存在实时性不足、功能碎片化、数据解析不全等问题,无法满足工业现场一站式管控需求。

1.3 研究主要内容与章节安排

本文核心研究内容:

1)梳理 UR 机器人全部 TCP 通信端口功能、协议格式、数据交互逻辑,明确 502、29999、30001/30002/30003 端口分工;

2)搭建上位机与机器人以太网通信硬件链路,完成 IP 网段、防火墙、Modbus 寄存器映射配置; 3)模块化设计上位机软件,划分 Modbus IO 控制模块、Dashboard 程序管控模块、远程脚本下载模块、实时状态解析模块;

4)完成整机联调,验证 IO 读写、程序下载、启停控制、状态采集功能稳定性与实时性。

二、UR 机器人 TCP/IP 通信端口与协议原理

UR 机器人控制器内置多组独立 TCP 服务器,机器人固定作为通信服务端,上位机作为 TCP 客户端主动建立 Socket 连接,不同端口承载差异化控制功能,各端口相互独立运行、互不干扰,共同构成完整远程控制通信体系。各端口核心功能划分如表 1 所示。 表 1 UR 机器人 TCP 通信端口功能总览

端口号

通信协议

服务名称

核心功能

数据交互特性

502

Modbus TCP

Modbus 服务器

机器人全部数字 / 模拟 IO 读写、寄存器状态读取

标准 Modbus 功能码,毫秒级响应

29999

ASCII 明文 TCP

Dashboard 仪表板服务

远程开关机、程序加载、程序启动 / 暂停 / 停止、运行模式切换

文本指令交互,以换行符\n结束指令

30001

URScript TCP

Primary 主编程端口

下发单行 URScript 脚本、轻量程序片段下载

低频状态反馈(5Hz),支持运动指令下发

30002

URScript TCP

Secondary 次编程端口

后台辅助脚本下发,不阻塞主运动程序

与 30001 端口并行独立通信

30003

RTDE 实时数据端口

实时数据交换服务

完整机器人状态高频采集、大批量 URP 程序远程下载

125Hz 高速数据包反馈,二进制结构化数据

2.1 502 端口 Modbus TCP IO 通信原理

UR 控制器原生搭载 Modbus TCP 服务器,监听 502 端口,上位机以 Modbus TCP 客户端身份发起连接,通过标准 Modbus 功能码读写机器人 IO 寄存器,实现全部数字输入、数字输出、模拟量输入输出远程控制。机器人内部完成 IO 信号与 Modbus 寄存器一一映射:数字输出对应 0 号线圈寄存器,数字输入对应 10000 号离散输入寄存器,模拟量信号映射至 40000 保持寄存器。

上位机发送标准 Modbus TCP 报文,报文包含事务 ID、协议标识、长度、单元 ID、功能码、寄存器地址、读写长度等字段。机器人服务端解析报文后完成 IO 电平切换,并返回响应报文确认执行结果。该端口仅负责 IO 硬件信号控制,不参与机器人运动、程序管理,通信延迟稳定低于 10ms,适合产线传感器、电磁阀、夹具等外设远程联动控制。

2.2 29999 端口 Dashboard 仪表板通信原理

29999 端口为 UR 官方仪表板专用 TCP 服务,采用无格式 ASCII 明文通信,所有控制指令以换行符\n作为结束标识,指令不区分大小写,上位机发送文本指令、机器人返回执行结果文本,用于机器人顶层运行状态管控。核心可用指令包括:

1)程序管控:load <程序名>远程加载本地 URP 程序、play启动程序、pause暂停程序、stop终止程序;

2)系统管控:power on机器人上电、power off断电、remote切换远程控制模式、get loaded program查询当前加载程序;

3)状态查询:get robot mode读取机器人运行模式(手动 / 自动 / 远程)、get safety status读取安全急停状态。

该端口具备最高操作权限,可管控机器人整机运行逻辑,是上位机实现远程启停程序的核心通道,但不支持运动脚本下发与高频状态采集。

2.3 30001/30002/30003 编程与实时交互端口原理

30001(Primary)、30002(Secondary)、30003(RTDE)均基于 URScript 机器人脚本语言通信,上位机发送标准 URScript 指令即可控制机器人关节运动、坐标偏移、参数修改,三者核心差异为数据反馈刷新率与文件传输能力。

1)30001 主端口:主控制通道,下发运动脚本、单行控制指令,机器人以 5Hz 低频返回基础状态,适合简单实时运动调试;

2)30002 次端口:后台辅助通信通道,可并行下发脚本,不占用主端口资源,多用于后台 IO 逻辑补充控制;

3)30003 RTDE 实时端口:本系统核心数据交互端口,两大核心能力:一是支持完整 URP 工程文件远程上传下载,实现整套机器人程序远程更新;二是控制器以 125Hz 高频向外推送二进制结构化数据包,数据包包含控制器时间戳、六轴关节实际角度 / 目标角度、关节电流扭矩、工具坐标 XYZ/RXRYRZ、IO 电平、故障代码、安全状态等全量设备信息,数据包长度固定 1108 字节,采用小端字节序存储浮点、整型数据,上位机解析后可完整还原机器人实时运行状态。

多端口协同逻辑:程序文件大批量下载选用 30003 端口,临时单行运动脚本下发选用 30001 端口,后台辅助逻辑使用 30002 端口,实时设备状态采集仅依赖 30003 端口,分工明确互不冲突。

三、远程控制系统整体架构设计

3.1 硬件架构

系统硬件由上位机工控机、UR 协作机器人控制器、工业以太网交换机、超五类屏蔽网线组成,硬件拓扑如图 1(文中配图对应 UR PolyScope 移动操作界面,为机器人本地示教界面,上位机通过以太网远程替代该本地操作功能)。 1)上位机:工业工控机,搭载 Windows 系统,运行自主开发 Qt 上位机软件,配置千兆网口作为 TCP 客户端; 2)UR 机器人控制器:内置多组 TCP 服务,设置静态 IP 地址,开启 Modbus 服务器、Dashboard、RTDE 实时服务; 3)通信链路:工业交换机组建独立设备控制网段,关闭网络防火墙,上位机与机器人控制器处于同一子网,保证 Socket 连接稳定。

硬件配置参数:机器人控制器 IP [192.168.1.100](192.168.1.100),上位机工控机 IP [192.168.1.1](192.168.1.1),子网掩码 [255.255.255.0](255.255.255.0),网关 [192.168.1.1](192.168.1.1)。

3.2 软件分层架构

上位机软件采用四层分层架构,自下而上分为通信链路层、协议解析层、功能业务层、人机交互 UI 层,实现通信、解析、业务、界面解耦,便于后期功能扩展。

1)通信链路层:基于 Socket 套接字开发,创建 5 组独立 TCP 客户端线程,分别对应 502、29999、30001、30002、30003 端口,线程独立运行避免端口通信阻塞,内置断线重连、心跳检测机制;

2)协议解析层:分协议封装解析类,Modbus 解析类处理 502 端口报文、Dashboard 文本解析类处理 29999 明文指令、URScript 脚本处理类管理 30001/30002 指令收发、RTDE 二进制数据包解析类完成 30003 高频 125Hz 数据包字节拆分、数据类型转换;

3)功能业务层:模块化划分四大业务单元:Modbus IO 远程控制单元、Dashboard 程序启停管控单元、URP 程序远程下载单元、机器人实时状态监测单元,实现工业业务逻辑封装;

4)人机交互 UI 层:基于 Qt 开发可视化界面,包含 IO 信号面板、程序管理面板、实时状态曲线面板、故障报警弹窗、网络连接状态监控,对应文中 UR 机器人 PolyScope 本地 “移动” 示教界面的全部功能,并拓展远程管控功能。

3.3 整体控制业务流程

上位机完整远程控制流程如下:

1)初始化:软件启动后,5 组 TCP 客户端线程自动连接机器人对应端口,心跳包检测链路连通性,断线自动重连;

2)IO 远程控制流程:上位机 UI 下发 IO 切换指令→协议层封装 Modbus TCP 报文→502 端口发送至机器人→控制器修改对应寄存器 IO 电平→返回 Modbus 响应报文,UI 同步刷新 IO 指示灯; 3)程序远程管控流程:上位机选择本地 URP 程序文件→30003 端口传输完整程序至机器人存储目录→29999 端口发送load指令加载程序→发送play指令远程启动运行;暂停 / 停止 / 断电指令均通过 29999 端口下发;

4)实时状态采集流程:30003 端口持续接收 125Hz 二进制数据包→协议层解析关节坐标、扭矩、故障、IO 数据→业务层缓存数据→UI 实时刷新坐标数值、绘制关节扭矩曲线,故障代码触发弹窗报警。

四、上位机软件模块化功能实现

本文基于 C++ Qt 开发上位机软件,模块化实现全部远程控制功能,各核心模块开发细节如下。

4.1 Modbus TCP IO 控制模块(502 端口)

采用标准 Modbus TCP 客户端开源库封装通信逻辑,UI 界面设计数字输入、数字输出、模拟量调节面板,支持单路 / 批量 IO 电平切换。模块内置寄存器地址映射表,将机器人物理 IO 与 Modbus 寄存器绑定:数字输出 DO0\DO15 对应线圈 0\15,数字输入 DI0\DI15 对应离散输入 10000\10015,模拟输出 AO0~AO1 对应保持寄存器 40000、40002。

交互逻辑:上位机点击 UI 输出开关,程序自动封装功能码 05(单线圈置位)Modbus 报文,通过 502 端口发送至机器人;周期 200ms 发送功能码 02 读取全部输入 IO 寄存器,刷新界面输入指示灯。模块内置通信超时判断,超过 50ms 未收到机器人响应则提示 IO 通信异常。

4.2 Dashboard 程序管控模块(29999 端口)

独立 TCP 线程维护 29999 端口长连接,封装指令发送函数,自动在每条指令末尾追加\n换行符。UI 设计程序操作按钮组:【加载程序】【启动】【暂停】【停止】【远程模式切换】【机器人上电 / 断电】。

程序下载联动逻辑:上位机通过 30003 端口将 URP 程序文件传输至机器人控制器programs目录后,自动调用 Dashboard 接口发送load 程序名指令,加载完成后弹窗提示;点击启动按钮发送play指令,同时持续查询get robot mode指令,实时在界面显示机器人当前运行状态(运行 / 暂停 / 停止 / 急停)。当机器人触发急停故障,Dashboard 端口返回安全状态文本,软件自动弹出急停报警窗口。

4.3 URScript 远程脚本与程序下载模块(30001/30002/30003)

1)30001/30002 单行脚本下发:UI 内置脚本编辑框,支持手动输入 URScript 运动指令(moveL线性运动、moveJ关节运动、set_tcp工具坐标设置等),选择主 / 次端口发送,机器人执行运动指令后返回执行日志;

2)30003 程序文件传输:基于 TCP 流文件分片传输,将本地 URP 工程分包发送至机器人控制器存储路径,传输进度实时显示在 UI 进度条;同时持续接收 125Hz 实时状态数据包,二进制数据包按字节偏移拆分,依次解析时间戳、六轴关节角度、工具位姿 XYZ/RXRYRZ、各轴电流扭矩、IO 状态、故障码等浮点、整型数据,转换为十进制数值供界面展示。

4.4 实时状态监测与数据解析模块

针对 30003 端口 1108 字节固定数据包设计专用解析函数,按字节偏移划分数据块:

1)字节 1~4:数据包总长度校验,过滤异常残缺数据包;

2)字节 5~12:控制器开机时间戳(微秒),用于数据时序对齐;

3)字节 13~444:核心机器人状态区,包含 6 轴目标 / 实际关节角度、速度、加速度、电流、扭矩;

4)后续字节段:工具 TCP 坐标、IO 状态、安全模式、故障代码、机器人运行模式。

解析后的数据分为两路输出:一路实时推送至 UI 界面,动态刷新文中截图所示基座 / 肩部 / 肘部 / 手腕关节角度、工具 XYZ 坐标数值;另一路写入本地 SQLite 数据库,存储历史运行数据,支持后期产线设备数据分析、故障追溯。当解析出非 0 故障代码时,软件立即高亮故障字段,同步触发声光报警提示运维人员。

4.5 网络通信保障模块

所有 TCP 客户端线程集成心跳检测与断线重连机制:每 500ms 向上对应端口发送心跳探测报文,若连续 3 次无机器人响应,则判定链路断开,自动关闭 Socket 并每 2 秒尝试重新建立连接;软件主界面实时展示 5 组端口连接状态,绿色标识连通、红色标识断开,直观呈现通信链路健康度。同时设置通信缓冲区,避免高频 30003 数据包堆积导致软件卡顿,保证 125Hz 数据流稳定处理。

五、系统联调与性能测试

5.1 测试环境搭建

测试硬件:UR5 六轴协作机器人、工业工控上位机、千兆工业交换机;软件环境:Qt5.15 上位机软件、UR PolyScope 5.11 控制器系统;测试场景:模拟白酒灌装自动化工位,完成 IO 夹具控制、远程程序下载、机器人运动控制、实时状态采集全流程测试。

5.2 功能完整性测试

逐项验证系统四大核心功能,测试结果如下:

1)502 端口 Modbus IO 控制:全部 16 路数字输入、16 路数字输出、2 路模拟输出可远程读写,IO 电平切换指令响应时间 7~10ms,无信号丢失、误触发问题;

2)29999 端口 Dashboard 管控:远程上电、断电、程序加载、启动、暂停、停止指令全部执行正常,急停、故障状态可实时上传至上位机,指令反馈延迟低于 20ms;

3)30001/30003 程序下载与脚本控制:单套 500KB URP 灌装程序通过 30003 端口完整下载耗时 1.2s,无文件损坏;30001 端口下发关节运动指令,机器人可精准跟随目标坐标运动;

4)30003 实时状态采集:稳定以 125Hz 频率接收机器人数据包,关节角度、工具坐标、扭矩数值与机器人本地 PolyScope 界面(文中截图)数值完全一致,无数据丢包、延迟偏移。

5.3 系统稳定性压力测试

连续 72 小时不间断运行上位机软件,循环执行 IO 切换、程序启停、实时数据采集操作,记录系统运行指标:

1)TCP 断线重连:人为断开网线 10 次,恢复网络后全部端口可在 2s 内自动重连,无程序崩溃; 2)实时数据流稳定性:72 小时累计接收数据包约 3.24 亿帧,丢包率<0.01%;

3)软件资源占用:工控机 CPU 占用率稳定 12%~18%,内存占用低于 300MB,长时间运行无内存泄漏、界面卡顿现象。

5.4 测试结论

基于多端口 TCP/IP 协同通信的上位机远程控制系统,完整覆盖 UR 机器人 IO 控制、程序远程下载、运行状态管控、设备实时监测全部需求,通信实时性、系统稳定性满足工业自动化现场使用标准,可替代现场 PolyScope 示教界面实现远程集中管控,大幅降低产线设备运维成本。

Logo

DAMO开发者矩阵,由阿里巴巴达摩院和中国互联网协会联合发起,致力于探讨最前沿的技术趋势与应用成果,搭建高质量的交流与分享平台,推动技术创新与产业应用链接,围绕“人工智能与新型计算”构建开放共享的开发者生态。

更多推荐