Skip to main content

AI-POWERED DOCS

What do you want to know?

Thiết Lập Metadata

Hướng dẫn này chỉ cho bạn cách cấu hình metadata cho hình ảnh từ camera OV20i. 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 thông tin quan trọng như mã linh kiện, 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 linh kiện, hồ sơ kiểm soát chất lượng, thông tin lô hàng, nhận dạng người vận hành, 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 kiểm tra.

Điều Kiện Tiên Quyết

  • Hệ thống camera OV20i đã đượ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 chụp ảnh và kiểm tra
  • Í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ả kiểm tra

Metadata Là Gì?

Metadata là thông tin bổ sung được đính kèm với mỗi hình ảnh được chụp. Thông tin này:

  • Lưu trữ cùng với hình ảnh trong thư viện của camera
  • Hiển thị trong HMI để người vận hành xem
  • Giúp nhận dạng và theo dõi các linh kiện hoặc đợt 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:

  • Mã linh kiện (ví dụ: "P12345")
  • Số serial (ví dụ: "SN987654")
  • Tên người vận hành (ví dụ: "John_Smith")
  • Thông tin ca làm việc (ví dụ: "A_Shift")
  • Số lô hàng (ví dụ: "Batch_2025_001")
note

Metadata chỉ có thể được lưu khi một lần kiểm tra đã hoàn thành. 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 Node-RED Editor

1.1 Điều Hướng Đến IO Block

  1. Mở recipe đang hoạt động của bạn trong Recipe Editor
  2. Nhấp vào Configure IO hoặc chọn IO Block" trong menu breadcrumb để vào Node-RED editor

1.2 Xác Minh Giao Diện Node-RED

Checkpoint: Bạn sẽ thấy Node-RED flow editor với flow IO Block hiện có và bảng node ở bên trái.

Bước 2: Xác Định Vị Trí Node "All Block Outputs"

2.1 Tìm Điểm Bắt Đầu

Trong flow Node-RED của bạn, tìm node "All Block Outputs". Đây là điểm khởi đầu nhận dữ liệu từ camera sau khi một lần kiểm tra được kích hoạt và xử lý.

Node "All Block Outputs":

  • Chứa kết quả kiểm tra 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 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:

  1. Đường Dẫn Metadata: All Block Outputs → Function (Create Metadata) → Capture Metadata
  2. Đường Dẫn Quyết Định: All Block Outputs → Function (Logic) → Final Pass/Fail
note

Cả metadata và quyết định pass/fail đều phải phân nhánh từ node "All Block Outputs".

Bước 3: Thêm Node Capture Metadata

3.1 Xác Định Vị Trí Node Metadata

  1. Tìm node "Capture Metadata" trong bảng bên trái (phần Overview)
  2. Kéo node "Capture Metadata" vào canvas của flow
  3. Đặt nó trong flow sau trigger nhưng trước khi chụp ảnh

3.2 Vị Trí Node Trong Flow

Cấu trúc flow chính xác:

All Block Outputs → Function (Create Metadata) → Capture Metadata

Function (Pass/Fail Logic) → Final Pass/Fail

warning

Node "Final Pass/Fail" là bắt buộc để flow hoạt động đúng cách. Mỗi flow 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

  1. Nhấp đúp vào node Capture Metadata
  2. Cấu hình các trường metadata bạn muốn theo dõi
  3. Thiết lập nguồn dữ liệu cho từng trường

4.2 Yêu Cầu Định Dạng Metadata

Quan Trọng

Metadata phải được định dạng dưới dạng object với:

  • Khóa dạng chuỗi - Tên trường phải là văn bản
  • Giá trị dạng chuỗi hoặc số - 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

  1. Thêm một node "function" giữa "All Block Outputs" và node "Capture Metadata"
  2. Nhấp đúp vào function node để cấu hình
  3. 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 đến 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 Luồng Bắt Buộc

Mỗi luồng phải có cả hai đường dẫn 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 Dẫn Metadata

  1. Kết nối đầu ra "All Block Outputs" vào đầu vào của function metadata
  2. Kết nối đầu ra của function metadata vào đầu vào "Capture Metadata"
  3. Node Capture Metadata có thể là node kết thúc (không cần kết nối đầu ra)

6.3 Kết Nối Đường Dẫn Pass/Fail

  1. Kết nối đầu ra "All Block Outputs" vào một function logic pass/fail
  2. Kết nối đầu ra của function logic vào đầu vào "Final Pass/Fail"
  3. Node "Final Pass/Fail" là bắt buộc - mọi luồng phải kết thúc tại đây

6.4 Ví Dụ Về Hàm 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 Triển Khai và Kiểm Tra

  1. Nhấp vào nút "Deploy" (góc trên bên phải)
  2. Kích hoạt một lần kiểm tra bằng phương thức trigger đã cấu hình (thủ công, digital input, hoặc PLC)
  3. 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 Flow Hoàn Chỉnh

Kiểm tra cả hai đường dẫn đều hoạt động:

Đường Dẫn 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 Dẫn Pass/Fail:

  • Kiểm tra rằng kết quả kiểm tra hiển thị trạng thái pass/fail
  • Xác minh node "Final Pass/Fail" đã xử lý chính xác
  • Xác nhận các đầu ra được kết nối (PLC, đèn báo) phản hồi đúng cách

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 Trigger Digital Input:

  • Kích hoạt cảm biến/công tắc bên ngoài
  • Xác nhận metadata được ghi lại cùng với hình ảnh được trigger

Đối với Trigger PLC:

  • Gửi tín hiệu trigger từ PLC
  • Xác minh metadata bao gồm dữ liệu PLC nếu có

Bước 8: Cấu Hình Metadata Nâng Cao

8.1 Metadata Từ Nhiều Global Variables

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: Khắc Phục Sự Cố Metadata

9.1 Các Vấn Đề Thường Gặp

Vấn ĐềTriệu ChứngGiải Pháp
Metadata không xuất hiệnKhông có dữ liệu trong LibraryXác minh node metadata nằm trong flow IO Block chính
Metadata sai hình ảnhDữ liệu xuất hiện với các lần chụp không chính xácKiểm tra thời gian - metadata phải đến trước khi chụp hình ảnh
Trigger không hoạt độngKhông có hình ảnh nào được chụpXác minh cấu hình trigger của IO Block
Thiếu trường metadataMột số dữ liệu bị thiếuKiểm tra định dạng payload của function node
Lỗi sai kiểu dữ liệuNode hiển thị trạng thái lỗiĐảm bảo các giá trị chỉ là chuỗi (string) hoặc số (number)

9.2 Debug Flow Metadata

Thêm các debug node để khắc phục sự cố:

  1. Thêm debug node sau trigger để xác minh trigger hoạt động
  2. Thêm debug node sau metadata function để kiểm tra payload
  3. Thêm debug node sau Capture Metadata để xác nhận quá trình xử lý
  4. Kiểm tra debug panel để xem các thông báo lỗi

Bước 10: Các Thực Hành Tốt Nhất

10.1 Thiết Kế Flow

Thiết kế các flow metadata hiệu quả:

  • Đặt metadata ở đầu flow - Thiết lập metadata ngay sau trigger
  • Sử dụng một node metadata duy nhất - Không tạo trùng lặp node Capture Metadata
  • Duy trì tính liên tục của flow - Metadata phải là một phần của flow kiểm tra 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, rõ ràng:

  • Sử dụng dấu gạch dưới thay vì dấu cách ("part_number" thay vì "part number")
  • Đặt tên mô tả nhưng ngắn gọn ("operator" thay vì "op")
  • Sử dụng chữ thường để đảm bảo nhất quán
  • Tránh các ký tự đặc biệt có thể gây lỗi

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ữ việc tạo metadata đơn giản và nhanh chóng
  • Cache dữ liệu global - Lưu trữ dữ liệu thường dùng trong các 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ờ có thể:

✅ Gắn thông tin tùy chỉnh vào mỗi lần chụp ảnh được trigger

✅ Theo dõi dữ liệu sản xuất đồng bộ với flow kiểm tra

✅ 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 trên 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ì Thường Xuyên

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 trigger
  • Kiểm tra dữ liệu bị thiếu trong các đợt sản xuất
  • Giám sát hiệu suất flow 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ý Flow

  • Xem xét thời gian metadata trong sản xuất
  • Tối ưu hóa hiệu suất của 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:

  1. Kiểm tra với tất cả các loại trigger đã cấu hình (manual, digital, PLC)
  2. Đào tạo người vận hành về cách sử dụng trigger đúng cách để thu thập metadata
  3. Thiết lập quản lý biến global cho dữ liệu động
  4. Tạo các mẫu metadata cho các dòng sản phẩm khác nhau
  5. Triển khai giám sát sản xuất bằng cách sử dụng phân tích metadata

🔗 Xem Thêm