通用机器人 (UR) 通信 - TCP/IP
  • 03 Feb 2025
  • PDF

通用机器人 (UR) 通信 - TCP/IP

  • PDF

文章摘要

UR 集成说明

要将通用机器人 (UR) 与相机系统集成,需确保两台设备连接至同一局域网。通信采用 TCP/IP 套接字,无需额外激活,只需保证设备处于同一网络。

在此架构中,通信以请求-响应方式运行。相机作为服务器,机器人作为客户端

典型通信流程

  1. 机器人打开套接字。

  2. 机器人向相机发送信息。

  3. 相机读取信息并转换为所需格式(如字符串、ASCII、字节)。

  4. 相机根据信息执行功能,并通过 TCP 返回响应。

  5. 机器人等待 TCP 响应。 若数秒内未收到响应,机器人将继续执行流程。(建议添加条件以确认数据返回。)

  6. 机器人关闭套接字通信。


网络配置与防火墙

网络设置

  • 确保 UR 机器人和相机连接至同一局域网。

  • 分配相同子网内的 IP 地址 以便通信。

防火墙设置

  • 配置防火墙规则 允许指定端口的 TCP/IP 通信。

  • 确保无网络策略 阻止所需通信。

URScript 与套接字编程 - UR

数据格式

  • 通信可使用多种数据格式,如字符串、ASCII 或字节。

  • 确保双方设备采用一致的数据格式,以避免通信错误。

URScript 套接字通信函数

  • socket_open(address, port, "socket_name"): 打开到指定地址和端口的套接字连接。

  • socket_send_string("message", "socket_name"): 通过套接字发送字符串消息。

  • socket_send_byte(value, "socket_name"): 通过套接字发送字节值。

  • socket_read_string("socket_name"): 从套接字读取字符串消息。

  • socket_read_ascii_float(number, "socket_name"): 从套接字读取 ASCII 浮点消息。

  • socket_read_byte("socket_name"): 从套接字读取字节值。

  • socket_close("socket_name"): 关闭套接字连接。

# 打开到相机服务器的套接字连接
socket_open("192.168.0.2", 3000, "camera_socket")

# 发送字符串消息
socket_send_string("Request Data", "camera_socket")

# 或者,发送字节值
socket_send_byte(42, "camera_socket")  # 发送字节值 42

# 以字符串形式读取响应
response = socket_read_string("camera_socket")

# 以字节形式读取响应
response_byte = socket_read_byte("camera_socket")

# 关闭套接字连接
socket_close("camera_socket")

配置为 TCP/IP 服务器 - OV20i

服务器设置

  • 配置相机监听 指定端口(例如端口 3000)的传入 TCP 连接。

  • 确保相机的 IP 地址为静态 或已知,以便机器人能够保持稳定的通信。

数据解析

  • 在相机上实现逻辑 以读取来自机器人的传入数据。

  • 根据相机功能翻译和处理数据

  • 准备并发送适当的响应 返回给机器人。


Node-RED 逻辑用于 UR 机器人集成

要使用 Node-RED 将通用机器人 (UR) 与系统集成,可以创建一个简单的流程,用于处理传入的 TCP 消息、根据接收到的数据执行操作,并在必要时返回响应给机器人。

示例

以下是一个分类流程示例,其中相机将在触发后检查部件的完整通过/失败条件,并将响应返回给机器人。

流程 1

  • TCP IN: 在 Node-RED 上的端口 30000 启动 TCP 服务器。

  • Function 1 (读取 UR): 将来自 UR 机器人的传入数据转换为字符串。为了使此流程正常工作,UR 必须发送字符串 "Trigger"。

  • Switch: 如果字符串是 "Trigger",流程继续;如果是其他内容,流程停止,UR 机器人将经历超时。

  • HTTP 请求: 向端点(API 触发器)发送请求以激活相机触发。

  • Function 2 (读取数据): 从全局内存中检索数据(1 或 0),并将其正确格式化以便 UR 机器人进行 ASCII 阅读。

  • TCP 响应: 将信息返回给机器人。

流程 2

  • 触发命令: 该流程从触发命令开始。

  • 所有块输出: 生成来自上次拍摄的图片的信息(在流程 1 中触发)。

  • 分类块逻辑: 为每个 ROI(感兴趣区域)设置条件,以确定通过或失败状态。(点击该块进行设置。)

  • Function 3 (信息设置): 将通过/失败条件转换为 1 或 0,并存储在全局内存中,便于 UR 机器人进行翻译。

Class_UR_TCP
16.16 KB

注意事项

  • 流程连续性: 确保所有处理传入数据的节点按顺序连接在同一流程中。如果流程分成并行路径,TCP 响应可能无法正常工作。

  • 无响应场景: 如果无需响应,可以省略 TCP 响应节点。机器人应配置为处理在一定超时内未收到响应的情况。


错误处理与健壮性

超时与重试

  • 实现套接字操作超时,防止机器人无限期等待。

  • 包含重试机制,以应对临时网络问题。


参考文献

  • URScript 手册:

  • Node-RED 文档

    • 请访问 Node-RED 网站,查阅关于设置和使用 Node-RED 进行应用集成的指南。


本文对您有帮助吗?