Skip to main content

AI-POWERED DOCS

What do you want to know?

Tích Hợp Universal Robot (UR) qua TCP/IP

Để tích hợp Universal Robot (UR) với hệ thống camera, cả hai thiết bị phải được kết nối vào cùng một mạng nội bộ. Giao tiếp được thiết lập bằng cách sử dụng TCP/IP socket — không cần kích hoạt thêm ngoài việc đảm bảo cả hai thiết bị chia sẻ cùng một mạng.

Trong cấu hình này, giao tiếp hoạt động theo dạng yêu cầu và phản hồi giữa robot và camera. Camera đóng vai trò là server, còn robot hoạt động như client.

Luồng Giao Tiếp Điển Hình

  1. Mở một socket từ robot.

  2. Gửi thông tin từ robot đến camera.

  3. Camera đọc thông tin và chuyển đổi nó sang định dạng yêu cầu (ví dụ: string, ASCII, byte).

  4. Camera thực hiện chức năng sử dụng thông tin đó và trả về phản hồi qua TCP.

  5. Robot chờ phản hồi TCP. Nếu không nhận được phản hồi trong vòng vài giây, robot sẽ tiếp tục luồng của nó mà không có phản hồi.

note

Nên thêm một điều kiện để xác nhận dữ liệu đã được trả về.

  1. Robot đóng kết nối socket.

Cấu Hình Mạng và Firewall

Thiết Lập Mạng

  • Đảm bảo cả robot UR và camera được kết nối vào cùng một mạng nội bộ.
  • Gán địa chỉ IP trong cùng một subnet để thuận tiện cho việc giao tiếp.

Cài Đặt Firewall

  • Cấu hình các quy tắc firewall trên cả hai thiết bị để cho phép giao tiếp TCP/IP qua các cổng được chỉ định.
  • Xác minh rằng không có chính sách mạng nào chặn giao tiếp cần thiết.

URScript và Lập Trình Socket - UR

Định Dạng Dữ Liệu

  • Giao tiếp có thể sử dụng nhiều định dạng dữ liệu khác nhau như strings, ASCII, hoặc bytes.
  • Đảm bảo cả hai thiết bị thống nhất về định dạng dữ liệu để tránh sai sót trong giao tiếp.

Các Hàm URScript cho Giao Tiếp Socket

  • socket_open(address, port, "socket_name"): Mở kết nối socket tới địa chỉ và cổng được chỉ định.
  • socket_send_string("message", "socket_name"): Gửi thông điệp dạng string qua socket.
  • socket_send_byte(value, "socket_name"): Gửi giá trị byte qua socket.
  • socket_read_string("socket_name"): Đọc thông điệp dạng string từ socket.
  • socket_read_ascii_float(number, "socket_name"): Đọc thông điệp ASCII float từ socket.
  • socket_read_byte("socket_name"): Đọc giá trị byte từ socket.
  • socket_close("socket_name"): Đóng kết nối socket.
# 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")

Cấu Hình như một TCP/IP Server - OV80i

Thiết Lập Server

  • Cấu hình camera để lắng nghe các kết nối TCP đến trên một cổng cụ thể (ví dụ: cổng 3000).
  • Đảm bảo địa chỉ IP của camera là tĩnh hoặc được biết bởi robot để giao tiếp nhất quán.

Phân Tích Dữ Liệu

  • Triển khai logic trên camera để đọc dữ liệu đến từ robot.
  • Chuyển đổi và xử lý dữ liệu theo yêu cầu cho các chức năng của camera.
  • Chuẩn bị và gửi phản hồi phù hợp trở lại robot.

Logic Node-RED cho Tích Hợp Robot UR

Để tích hợp Universal Robot (UR) với hệ thống của bạn bằng Node-RED, bạn có thể tạo một flow đơn giản để xử lý các thông điệp TCP đến, thực hiện các hành động dựa trên dữ liệu nhận được và phản hồi lại robot nếu cần.

Ví Dụ về Flow

Đây là một ví dụ về flow cho phân loại, trong đó camera sẽ kiểm tra điều kiện Pass/Fail hoàn chỉnh của chi tiết sau một trigger, và sẽ gửi phản hồi trở lại robot.

UR Robot Classification Flow Example

Flow 1:

  • TCP IN: Mở một TCP server trong Node-RED trên cổng 30000.
  • Function 1 (Reads UR): Chuyển đổi dữ liệu đến từ robot UR sang dạng string. Để flow này hoạt động, UR phải gửi chuỗi "Trigger".
  • Switch: Nếu chuỗi là "Trigger", flow sẽ tiếp tục; nếu là chuỗi khác, flow sẽ dừng lại và robot UR sẽ gặp timeout.
  • HTTP Request: Gửi một yêu cầu đến endpoint (API Trigger) để kích hoạt trigger của camera.
  • Function 2 (Read Data): Lấy dữ liệu từ bộ nhớ global (1 hoặc 0) và định dạng nó chính xác cho việc đọc ASCII trên robot UR.
  • TCP Response: Gửi thông tin trở lại robot.

Flow 2:

  • Trigger Command: Flow này bắt đầu với lệnh trigger.
  • All Block Outputs: Tạo thông tin từ hình ảnh cuối cùng được chụp (được trigger trong Flow 1).
  • Classification Block Logic: Thiết lập điều kiện cho mỗi ROI (Region of Interest) để xác định trạng thái Pass hoặc Fail. (Nhấp vào block để thiết lập.)
  • Function 3 (Information Setup): Chuyển đổi điều kiện Pass/Fail thành 1 hoặc 0 và lưu trữ vào bộ nhớ global để dễ dàng chuyển đổi sang robot UR.

Lưu Ý

  • Tính Liên Tục của Flow: Đảm bảo tất cả các node xử lý dữ liệu đến được kết nối tuần tự trong cùng một flow. Nếu flow bị chia thành các đường song song, TCP Response có thể không hoạt động đúng cách.
  • Trường Hợp Không Có Phản Hồi: Nếu không cần phản hồi, bạn có thể bỏ qua node TCP Response. Robot nên được cấu hình để xử lý các trường hợp không nhận được phản hồi trong một khoảng timeout nhất định.

Xử Lý Lỗi và Độ Tin Cậy

Timeouts và Retries

  • Triển khai timeout cho các thao tác socket để ngăn robot phải chờ vô thời hạn.
  • Bao gồm cơ chế retry trong trường hợp có sự cố mạng tạm thời.

🔗 Xem Thêm