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 cục bộ. Giao tiếp được thiết lập thông qua TCP/IP sockets — 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 cơ chế 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 dựa trên 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òng vài giây, robot sẽ tiếp tục luồng của mình mà không có phản hồi.
Khuyến nghị 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 vào cùng một mạng cục bộ.
- Gán địa chỉ IP trong cùng một subnet để thuận lợi 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 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 lệch 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 đế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 dạng 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 làm TCP/IP Server - OV10i
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 robot biết đến để đảm bảo 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 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 thiết.
Ví Dụ Flow
Dưới đây là một ví dụ flow cho classification, trong đó camera sẽ kiểm tra điều kiện Pass/Fail đầy đủ của chi tiết sau khi 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 tiếp tục; nếu là giá trị khác, flow dừng lại, và robot UR sẽ gặp timeout.
- HTTP Request: Gửi một request đến 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 chính xá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ừ 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ữ 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ị phân nhánh thành các đường song song, TCP Response có thể không hoạt động đúng.
- Tình Huống 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ý 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à Độ Bền Vững
Timeout và Retry
- Triển khai timeout cho các thao tác socket để tránh robot chờ đợi 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.