AI-POWERED DOCS
What do you want to know?
Thiết Lập Metadata
Hướng dẫn này cho bạn cách cấu hình metadata cho hình ảnh của camera OV10i. Metadata là thông tin tùy chỉnh được lưu trữ cùng với mỗi hình ảnh được chụp, giúp bạn theo dõi các chi tiết quan trọng như số part, số serial hoặc dữ liệu sản xuất.
Khi Nào Sử Dụng Metadata: Theo dõi sản xuất, nhận dạng part, hồ sơ kiểm soát chất lượng, thông tin batch, nhận dạng operator, hoặc bất kỳ dữ liệu tùy chỉnh nào bạn cần liên kết với hình ảnh inspection.
Điều Kiện Tiên Quyết
- Hệ thống camera OV10i đã được thiết lập và kết nối
- Recipe đang hoạt động đã được cấu hình với thiết lập imaging và inspection
- Ít nhất một AI block (classification hoặc segmentation) đã được cấu hình
- Hiểu biết về dữ liệu bạn muốn theo dõi từ kết quả inspection
Metadata Là Gì?
Metadata là thông tin bổ sung được đính kèm vào mỗi hình ảnh được chụp. Thông tin này:
- Được lưu trữ cùng hình ảnh trong thư viện của camera
- Xuất hiện trên HMI để operator có thể xem
- Giúp nhận dạng và theo dõi các part hoặc lần chạy sản xuất cụ thể
- Có thể được tìm kiếm trong thư viện để phân tích
Ví dụ về metadata hữu ích:
- Số part (ví dụ: "P12345")
- Số serial (ví dụ: "SN987654")
- Tên operator (ví dụ: "John_Smith")
- Thông tin ca làm việc (ví dụ: "A_Shift")
- Số batch (ví dụ: "Batch_2025_001")
Metadata chỉ có thể được lưu khi một inspection hoàn tất. Metadata phải là một phần của flow bắt đầu từ "All Block Outputs" sau khi camera chụp và xử lý hình ảnh.
Bước 1: Truy Cập Trình Soạn Thảo Node-RED
1.1 Điều Hướng Đến IO Block
- Mở recipe đang hoạt động của bạn trong Recipe Editor
- Nhấp vào Configure IO hoặc chọn IO Block" trong menu breadcrumb để vào trình soạn thảo Node-RED
1.2 Xác Nhận Giao Diện Node-RED
Kiểm tra: Bạn sẽ thấy trình soạn thảo flow Node-RED với flow IO Block hiện có và node palette ở phía bên trái.
Bước 2: Xác Định Node "All Block Outputs"
2.1 Tìm Điểm Bắt Đầu
Trong flow Node-RED của bạn, hãy tìm node "All Block Outputs". Đây là điểm bắt đầu nhận dữ liệu từ camera sau khi một inspection được kích hoạt và xử lý.
Node "All Block Outputs":
- Chứa kết quả inspection từ tất cả các AI block
- Bao gồm thông tin chụp ảnh
- Cung cấp dữ liệu cần thiết để tạo metadata
- Là nguồn cung cấp cho cả metadata và quyết định pass/fail
2.2 Hiểu Cấu Trúc Flow
Flow của bạn nên tuân theo mẫu này:
Camera Trigger → AI Processing → All Block Outputs → [Your Custom Logic]
Từ "All Block Outputs" bạn cần hai đường dẫn riêng biệt:
- Đường Dẫn Metadata: All Block Outputs → Function (Create Metadata) → Capture Metadata
- Đường Dẫn Quyết Định: All Block Outputs → Function (Logic) → Final Pass/Fail
Cả metadata và quyết định pass/fail đều phải rẽ nhánh từ node "All Block Outputs".
Bước 3: Thêm Node Capture Metadata
3.1 Xác Định Node Metadata
- Tìm node "Capture Metadata" trong bảng bên trái (mục Overview)
- Kéo node "Capture Metadata" vào canvas flow
- Đặt nó trong flow sau trigger nhưng trước khi chụp ảnh
3.2 Vị Trí Đặt Node Trong Flow
Cấu trúc flow đúng:
All Block Outputs → Function (Create Metadata) → Capture Metadata
↓
Function (Pass/Fail Logic) → Final Pass/Fail
Node "Final Pass/Fail" là bắt buộc để flow hoạt động đúng. Mọi flow đều phải kết thúc bằng node này.
Bước 4: Cấu Hình Các Trường Metadata
4.1 Thiết Lập Metadata Cơ Bản
- Double-click vào node Capture Metadata
- Cấu hình các trường metadata mà bạn muốn theo dõi
- Thiết lập nguồn dữ liệu cho từng trường
4.2 Yêu Cầu Định Dạng Metadata
Metadata phải được định dạng dưới dạng object với:
- String keys - Tên trường phải là văn bản
- String hoặc number values - Dữ liệu có thể là văn bản hoặc số
Ví dụ định dạng đúng:
{
"part_number": "P12345",
"serial_number": "SN987654",
"operator": "John_Smith",
"shift": "A",
"quantity": 100,
"temperature": 23.5
}
Bước 5: Tạo Function Node Cho Metadata
5.1 Thêm Function Node Để Tạo Metadata
- Thêm một node "function" giữa "All Block Outputs" và node "Capture Metadata"
- Double-click vào function node để cấu hình
- Function này sẽ trích xuất dữ liệu từ kết quả kiểm tra và tạo metadata
5.2 Trích Xuất Dữ Liệu Từ All Block Outputs
Node "All Block Outputs" cung cấp dữ liệu kiểm tra phong phú. Dưới đây là cách trích xuất:
// Extract data from inspection results
const captureId = msg.payload.capture_id;
const serialNumber = msg.payload.serial_number || "No_Serial";
const inspectionTime = msg.payload.inspection_time || new Date().toISOString();
// Create metadata from inspection data
msg.payload = {
"capture_id": captureId,
"serial_number": serialNumber,
"inspection_time": inspectionTime,
"operator": global.get("current_operator") || "Unknown"
};
return msg;
5.3 Metadata Tĩnh (Giá Trị Cố Định)
Đối với thông tin không thay đổi trong quá trình sản xuất:
// Set static metadata values
msg.payload = {
"recipe_name": "Bolt_Inspection_v2",
"line_number": "Line_3",
"shift": "A_Shift",
"station": "QC_Station_1"
};
return msg;
5.4 Metadata Động (Sử Dụng Dữ Liệu Kiểm Tra)
Đối với thông tin lấy từ kết quả kiểm tra:
// Extract inspection data
const captureId = msg.payload.capture_id;
const imageUrl = msg.payload.image_url;
const predictions = msg.payload.classification?.predictions || [];
// Create dynamic metadata
msg.payload = {
"capture_id": captureId,
"part_number": "P" + Date.now(),
"total_rois": predictions.length,
"timestamp": new Date().toISOString(),
"batch": global.get("current_batch") || "Default_Batch"
};
return msg;
Bước 6: Kết Nối Luồng Metadata Và Pass/Fail
6.1 Cấu Trúc Flow Bắt Buộc
Mọi flow đều phải có cả hai đường đi từ "All Block Outputs":
All Block Outputs → Function (Create Metadata) → Capture Metadata
↓
Function (Pass/Fail Logic) → Final Pass/Fail
6.2 Kết Nối Đường Metadata
- Kết nối output của "All Block Outputs" tới input của function metadata
- Kết nối output của function metadata tới input của "Capture Metadata"
- Node Capture Metadata có thể là node kết thúc (không cần kết nối output)
6.3 Đấu Nối Đường Pass/Fail
- Kết nối output "All Block Outputs" đến một function logic pass/fail
- Kết nối output của function logic đến input "Final Pass/Fail"
- Node "Final Pass/Fail" là bắt buộc - mọi flow đều phải kết thúc tại đây
6.4 Ví Dụ Function Logic Pass/Fail
// Extract inspection result for pass/fail decision
const predictions = msg.payload.classification?.predictions || [];
// Determine if inspection passed (all ROIs passed)
let passed = true;
for (let prediction of predictions) {
if (!prediction.predicted_class.includes("pass")) {
passed = false;
break;
}
}
// Set the pass/fail result
msg.payload = passed;
return msg;
Bước 7: Kiểm Tra Cấu Hình Metadata
7.1 Deploy và Kiểm Tra
- Nhấn nút "Deploy" (góc trên bên phải)
- Kích hoạt một lần inspection bằng phương thức trigger đã cấu hình (thủ công, digital input, hoặc PLC)
- Xác minh rằng:
- Một hình ảnh đã được chụp
- Metadata xuất hiện cùng với hình ảnh
- Quyết định pass/fail đã được đưa ra
- Flow đã hoàn thành thành công
7.2 Xác Minh Toàn Bộ Flow
Kiểm tra rằng cả hai đường đều hoạt động:
Đường Metadata:
- Điều hướng đến Library trong giao diện chính
- Tìm hình ảnh kiểm tra của bạn
- Xác minh metadata xuất hiện trong chi tiết hình ảnh
Đường Pass/Fail:
- Kiểm tra rằng kết quả inspection hiển thị trạng thái pass/fail
- Xác minh node "Final Pass/Fail" đã xử lý đúng
- Xác nhận mọi output được kết nối (PLC, đèn báo) phản hồi phù hợp
7.3 Kiểm Tra Các Nguồn Trigger Khác Nhau
Xác minh metadata hoạt động với trigger cụ thể của bạn:
Đối Với Trigger Thủ Công:
- Sử dụng nút software trigger
- Xác minh metadata xuất hiện với mỗi lần chụp thủ công
Đối Với Digital Input Triggers:
- Kích hoạt cảm biến/công tắc bên ngoài
- Xác nhận metadata được ghi nhận cùng với hình ảnh đã được trigger
Đối Với PLC Triggers:
- Gửi tín hiệu trigger từ PLC
- Xác minh metadata bao gồm dữ liệu PLC nếu áp dụng
Bước 8: Cấu Hình Metadata Nâng Cao
8.1 Metadata Từ Nhiều Global Variable
Kết hợp dữ liệu từ các nguồn khác nhau được lưu trữ toàn cục:
// Combine data from various global storage
const operatorData = global.get("operator_info") || {};
const productData = global.get("product_info") || {};
const shiftData = global.get("shift_info") || {};
msg.payload = {
"operator": operatorData.name || "Unknown",
"operator_id": operatorData.id || "000",
"product_code": productData.code || "Default",
"product_version": productData.version || "1.0",
"shift": shiftData.current || "Day",
"line_status": "Running",
"timestamp": new Date().toISOString()
};
return msg;
Bước 9: Xử Lý Sự Cố Metadata
9.1 Các Vấn Đề Thường Gặp
| Vấn Đề | Triệu Chứng | Giải Pháp |
|---|---|---|
| Metadata không xuất hiện | Không có dữ liệu trong Library | Xác minh node metadata nằm trong flow IO Block chính |
| Metadata sai hình ảnh | Dữ liệu xuất hiện với hình ảnh không đúng | Kiểm tra thời điểm - metadata phải đến trước khi chụp hình |
| Trigger không hoạt động | Không có hình ảnh nào được chụp | Xác minh cấu hình trigger của IO Block |
| Thiếu trường metadata | Một số dữ liệu bị thiếu | Kiểm tra định dạng payload của function node |
| Lỗi kiểu dữ liệu sai | Node hiển thị trạng thái lỗi | Đảm bảo giá trị chỉ là string hoặc số |
9.2 Debug Luồng Metadata
Thêm các debug node để khắc phục sự cố:
- Thêm debug node sau trigger để xác minh trigger hoạt động
- Thêm debug node sau function metadata để kiểm tra payload
- Thêm debug node sau Capture Metadata để xác nhận xử lý
- Kiểm tra debug panel để xem thông báo lỗi
Bước 10: Thực Hành Tốt Nhất
10.1 Thiết Kế Luồng
Thiết kế các luồng metadata hiệu quả:
- Đặt metadata ở đầu luồng - Thiết lập metadata ngay sau trigger
- Sử dụng một metadata node duy nhất - Không nhân bản các node Capture Metadata
- Duy trì tính liên tục của luồng - Metadata phải là một phần của luồng inspection chính
- Xử lý dữ liệu bị thiếu - Luôn cung cấp giá trị mặc định
10.2 Đặt Tên Trường Metadata
Sử dụng tên trường nhất quán và rõ ràng:
- Sử dụng dấu gạch dưới thay cho khoảng trắng ("part_number" không phải "part number")
- Mô tả rõ ràng nhưng súc tích ("operator" không phải "op")
- Sử dụng chữ thường để đảm bảo tính nhất quán
- Tránh các ký tự đặc biệt có thể gây ra sự cố
10.3 Cân Nhắc Về Hiệu Suất
Đối với sản xuất khối lượng lớn:
- Giảm thiểu kích thước metadata - Chỉ bao gồm thông tin cần thiết
- Sử dụng kiểu dữ liệu hiệu quả - Dùng số khi có thể, chuỗi ngắn
- Tránh xử lý phức tạp - Giữ cho việc tạo metadata đơn giản và nhanh chóng
- Cache dữ liệu toàn cục - Lưu trữ dữ liệu thường xuyên sử dụng trong biến global
Thành Công! Hệ Thống Metadata Của Bạn Đã Sẵn Sàng
Cấu hình metadata của bạn giờ đây có thể:
✅ Đính kèm thông tin tùy chỉnh vào mỗi lần chụp ảnh được kích hoạt
✅ Theo dõi dữ liệu sản xuất đồng bộ với luồng inspection
✅ Lưu trữ thông tin có thể tìm kiếm trong thư viện camera
✅ Hiển thị dữ liệu liên quan trong HMI cho người vận hành
✅ Hỗ trợ truy xuất nguồn gốc cho các yêu cầu sản xuất
Bảo Trì Liên Tục
Kiểm Tra Hệ Thống Định Kỳ
- Xác minh metadata xuất hiện cùng với các lần chụp được kích hoạt
- Kiểm tra dữ liệu bị thiếu trong quá trình sản xuất
- Giám sát hiệu suất luồng với tốc độ trigger cao
- Cập nhật các trường metadata khi yêu cầu thay đổi
Quản Lý Luồng
- Xem xét thời gian metadata trong sản xuất
- Tối ưu hóa hiệu suất function node
- Cập nhật quản lý biến global
- Đào tạo người vận hành về hoạt động dựa trên trigger
Các Bước Tiếp Theo
Sau khi thiết lập metadata dựa trên trigger:
- Kiểm tra với tất cả các loại trigger đã cấu hình (manual, digital, PLC)
- Đào tạo người vận hành về cách sử dụng trigger đúng để chụp metadata
- Thiết lập quản lý biến global cho dữ liệu động
- Tạo các mẫu metadata cho các dòng sản phẩm khác nhau
- Triển khai giám sát sản xuất bằng phân tích metadata