跳到主要内容

AI 驱动文档

您想了解什么?

通过 TCP/IP 的 Universal Robot (UR) 集成

要将 Universal Robot (UR) 与摄像头系统集成,双方设备必须连接到同一本地网络。通信通过 TCP/IP 套接字建立——除了确保两台设备处于同一网络之外,不需要额外的激活。

在此设置中,通信以请求-响应的模式在机器人和摄像头之间进行。摄像头充当服务器,机器人充当客户端。

典型通信流程

  1. 由机器人打开一个套接字。

  2. 机器人向摄像头发送信息。

  3. 摄像头读取信息并将其转换为所需格式(例如,字符串、ASCII、字节)。

  4. 摄像头使用该信息执行功能并通过 TCP 返回响应。

  5. 机器人等待 TCP 响应。如果在几秒内未收到响应,机器人将继续其流程,不依赖该响应。

备注

建议添加一个条件以确认数据是否返回。

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

网络配置与防火墙

网络设置

  • 确保 UR 机器人与摄像头连接到同一本地网络。
  • 在同一子网内分配 IP 地址以便于通信。

防火墙设置

  • 在两台设备上配置防火墙规则,以允许通过指定端口进行 TCP/IP 通信。
  • 验证没有网络策略阻止所需的通信。

URScript 与 Socket 编程 - UR

数据格式

  • 通信可以使用多种数据格式,例如字符串、ASCII 或字节。
  • 确保双方对数据格式达成一致,以避免通信不畅。

URScript 的 Socket 通信函数

  • 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"): 关闭套接字连接。
# Open socket connection to the camera server
socket_open("192.168.0.2", 3000, "camera_socket")

# Send a string message
socket_send_string("Request Data", "camera_socket")

# Alternatively, send a byte value
socket_send_byte(42, "camera_socket") # Sends the byte value 42

# Read the response as a string
response = socket_read_string("camera_socket")

# Read the response as a byte
response_byte = socket_read_byte("camera_socket")

# Close the socket connection
socket_close("camera_socket")

以 TCP/IP 服务器的配置 - OV10i

服务器设置

  • 将摄像头配置为在指定端口监听传入的 TCP 连接(例如,端口 3000)。
  • 确保摄像头的 IP 地址是静态地址,或对机器人是已知的,以实现稳定通信。

数据解析

  • 在相机端实现逻辑,以读取来自机器人的传入数据。
  • 按相机功能的要求翻译并处理数据。
  • 准备并将适当的响应发送回机器人。

UR Robot 集成的 Node-RED 逻辑

要使用 Node-RED 将 Universal Robot (UR) 集成到您的系统中,您可以创建一个简单的流程,该流程处理来自 TCP 的传入消息、基于接收到的数据执行动作,并在必要时向机器人发送响应。

示例流程

以下是一个用于分类的流程示例,其中相机在触发后将检查部件的完整 Pass/Fail 条件,并将响应发送回机器人。

UR Robot Classification Flow Example

流程 1:

  • TCP IN:在 Node-RED 中在端口 30000 打开一个 TCP 服务器。
  • Function 1 (Reads UR):将来自 UR 机器人传入的数据转换为字符串。要使此流工作,UR 必须发送字符串 "Trigger"。
  • Switch:若字符串为 "Trigger",流程继续;若为其他值,流程停止,UR 机器人将经历超时。
  • HTTP Request:向端点(API Trigger)发送请求以激活相机触发。
  • Function 2 (Read Data):从全局内存读取数据(1 或 0),并为 UR 机器人上的 ASCII 读取正确格式化。
  • TCP Response:将信息发送回机器人。

流程 2:

  • Trigger Command:此流程以触发命令开头。
  • All Block Outputs:从上一次拍摄的图像(在 Flow 1 中触发)生成信息。
  • Classification Block Logic:为每个 ROI(Region of Interest)设置条件,以确定 Pass 或 Fail 状态。(单击该块进行设置。)
  • Function 3 (Information Setup):将 Pass/Fail 条件转换为 1 或 0,并存储在全局内存中,便于翻译给 UR robot。

注意事项

  • Flow Continuity:确保处理传入数据的所有节点在同一 Flow 中按顺序连接。如果流程分裂为并行路径,TCP Response 可能无法正常工作。
  • No Response Scenario:如果不需要响应,可以省略 TCP Response 节点。机器人应配置为在一定超时内处理未收到响应的情况。

错误处理与鲁棒性

超时与重试

  • 实现套接字操作的超时,以防机器人无限等待。
  • 在临时网络问题时包含重试机制。

🔗 参见