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 cùng một mạng nội bộ. Giao tiếp được thiết lập thông qua socket TCP/IP — không cần kích hoạt thêm gì 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ò server, còn robot đóng vai trò client.
Luồng Giao Tiếp Điển Hình
-
Mở một socket từ robot.
-
Gửi thông tin từ robot đến camera.
-
Camera đọc thông tin và chuyển đổi sang định dạng yêu cầu (ví dụ: string, ASCII, byte).
-
Camera thực hiện một chức năng bằng thông tin đó và trả về phản hồi qua TCP.
-
Robot chờ phản hồi TCP. Nếu không nhận được phản hồi trong vài giây, robot sẽ tiếp tục luồng của nó mà không có phản hồi.
Nên thêm một điều kiện để xác nhận rằng dữ liệu đã được trả về.
- 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 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 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 nhận 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ư string, ASCII, hoặc byte.
- Đảm bảo cả hai thiết bị thống nhất về định dạng dữ liệu để tránh sai lệch thông tin.
Các Hàm URScript cho Giao Tiếp Socket
socket_open(address, port, "socket_name"): Mở kết nối socket đến địa chỉ và cổng được chỉ định.socket_send_string("message", "socket_name"): Gửi một thông điệp dạng string qua socket.socket_send_byte(value, "socket_name"): Gửi một giá trị byte qua socket.socket_read_string("socket_name"): Đọc một thông điệp dạng string từ socket.socket_read_ascii_float(number, "socket_name"): Đọc một thông điệp ASCII float từ socket.socket_read_byte("socket_name"): Đọc một 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 - OV20i
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 đến robot để giao tiếp ổn định.
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 của các chức năng của camera.
- Chuẩn bị và gửi phản hồi thích 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 khi cần thiết.
Ví Dụ Flow
Dưới đây là một ví dụ flow cho phân loại (classification), 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.

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 thành 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à thứ khác, flow sẽ dừng lại, và robot UR sẽ gặp timeout.
- HTTP Request: Gửi yêu cầu đến một endpoint (API Trigger) để kích hoạt trigger của camera.
- Function 2 (Read Data): Lấy dữ liệu từ global memory (1 hoặc 0) và định dạng đúng 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 bằng lệnh trigger.
- All Block Outputs: Tạo thông tin từ ảnh chụp gần nhất (được trigger trong Flow 1).
- Classification Block Logic: Thiết lập các điều kiện cho từng 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ữ trong global memory để 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 nhánh song song, TCP Response có thể không hoạt động đúng cách.
- Trường Hợp Không 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 thời gian timeout nhất định.
Xử Lý Lỗi và Tính Ổn Định
Timeouts và Retries
- Triển khai timeout cho các hoạt động socket để tránh robot chờ vô thời hạn.
- Bao gồm cơ chế thử lại (retry) trong trường hợp xảy ra sự cố mạng tạm thời.