跳到主要內容

AI 驅動文件

您想了解什麼?

後設資料設定

本指南向您展示如何為 OV20i 攝像頭影象配置後設資料。後設資料是隨每張捕獲影象儲存的自定義資訊,幫助您跟蹤諸如部件號、序列號或生產資料等重要細節。

何時使用後設資料: 生產跟蹤、部件識別、質量控制記錄、批次資訊、操作員識別,或任何需要與檢驗影象相關聯的自定義資料。

先決條件

  • OV20i 攝像頭系統已設定並連線
  • 已配置帶成像和檢驗設定的活動 recipe
  • 至少一個 AI block(classification 或 segmentation)已配置
  • 瞭解從檢驗結果中您想跟蹤的資料

後設資料是什麼?

後設資料是附加到每張捕獲影象的額外資訊。這些資訊:

  • 與影象一起儲存在相機的庫中
  • 在 HMI 中向操作員顯示
  • 有助於識別和跟蹤特定部件或生產批次
  • 可以在庫中進行分析搜尋

有用後設資料的示例:

  • 部件號(如 "P12345")
  • 序列號(如 "SN987654")
  • 操作員姓名(如 "John_Smith")
  • 班次資訊(如 "A_Shift")
  • 批次號(如 "Batch_2025_001")
備註

後設資料只有在完成檢驗後才可以儲存。後設資料必須是從攝像頭捕獲並處理影象後從 "All Block Outputs" 開始的流的一部分。

第 1 步:訪問 Node-RED 編輯器

1.1 導航至 IO Block

  1. 在 Recipe Editor 中開啟你的活動 recipe
  2. 點選 Configure IO 或在麵包屑選單中選擇 IO Block,進入 Node-RED 編輯器

1.2 驗證 Node-RED 介面

檢查點: 你應該在左側看到帶有現有 IO Block 流和節點調色盤的 Node-RED 流編輯器。

第 2 步:定位 “All Block Outputs” 節點

2.1 找到起點

在你的 Node-RED 流中,查詢 "All Block Outputs" 節點。這是接收來自攝像頭在觸發並處理一次檢驗後資料的起點。

“The All Block Outputs” 節點具備以下功能:

  • 包含來自所有 AI blocks 的檢驗結果
  • 包括影象捕獲資訊
  • 提供後設資料建立所需的資料
  • 是後設資料和透過/不透過(pass/fail)決策的來源

2.2 理解流結構

你的流程應遵循以下模式:

Camera Trigger → AI Processing → All Block Outputs → [Your Custom Logic]

從 "All Block Outputs" 出發,你需要兩條獨立路徑

  1. Metadata 路徑:All Block Outputs → Function (Create Metadata) → Capture Metadata
  2. Decision 路徑:All Block Outputs → Function (Logic) → Final Pass/Fail
備註

後設資料和透過/失敗決策必須從 "All Block Outputs" 節點分叉。

第 3 步:新增 Capture Metadata 節點

3.1 定位 Metadata 節點

  1. 在左側面板(Overview 部分)中找到 "Capture Metadata" 節點
  2. 將 "Capture Metadata" 節點拖放到流程畫布上
  3. 在你的流程中將其放置在觸發之後、影象捕獲之前

3.2 流中的節點放置

正確的流程結構:

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

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

注意

"Final Pass/Fail" 節點是實現流程正常執行所必需的。每個流程必須以該節點結束。

第 1 部分:Camera Communication Architecture

2.1 通訊架構概覽

本頁說明 OV20i 的雙層通訊設計,以及原生工業協議如何與 Node-RED 可擴充套件的通訊能力並行工作。

相機到 PLC 通訊失敗

選項 1:EtherNet/IP(網路整合)

工作原理

步驟 4:配置後設資料欄位

4.1 設定基本後設資料

  1. 雙擊 捕獲後設資料 節點
  2. 配置要跟蹤的後設資料欄位
  3. 為每個欄位設定資料來源

4.2 後設資料格式要求

重要

後設資料必須格式化為一個物件,包含:

  • 字串鍵 - 欄位名必須是文字
  • 字串或數字值 - 資料可以是文字或數字

正確格式示例:

{
"part_number": "P12345",
"serial_number": "SN987654",
"operator": "John_Smith",
"shift": "A",
"quantity": 100,
"temperature": 23.5
}

步驟 5:建立後設資料函式節點

5.1 新增用於後設資料建立的函式節點

  1. 在 "All Block Outputs" 與 "Capture Metadata" 節點之間新增一個 "function" 節點
  2. 雙擊該函式節點以進行配置
  3. 該函式將從檢測結果中提取資料並建立後設資料

5.2 從所有輸出塊提取資料

"All Block Outputs" 節點提供豐富的檢測資料。以下是提取方法:

// 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 靜態後設資料(固定值)

對於生產過程中不會改變的資訊:

// 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 動態後設資料(使用檢測資料)

來自檢測結果的資訊:

// 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;

步驟 6:連線後設資料和透過/失敗流

6.1 必要的流程結構

每個流程必須包含來自 "All Block Outputs" 的兩條路徑:

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

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

6.2 連線後設資料路徑

  1. 將 "All Block Outputs" 的輸出連線到後設資料函式的輸入
  2. 將後設資料函式的輸出連線到 "Capture Metadata" 輸入
  3. Capture Metadata 節點可以是終端節點(不需要輸出連線)

6.3 連線透過/失敗路徑

  1. 將 "All Block Outputs" 的輸出連線到一個透過/失敗邏輯函式
  2. 將邏輯函式的輸出連線到 "Final Pass/Fail" 輸入
  3. “Final Pass/Fail” 節點為必填項 - 每個流程必須在此結束

6.4 示例透過/失敗邏輯函式

// 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;

步驟 7:測試後設資料配置

7.1 部署與測試

  1. 點選“部署”按鈕(右上角)
  2. 使用配置的觸發方法觸發檢查(手動、數字輸入或 PLC)
  3. 驗證如下:
    • 已捕獲影象
    • 後設資料隨影象一起顯示
    • 已作出透過/失敗決策
    • 流程已成功完成

7.2 驗證完整流程

請確認兩個路徑均可工作:

後設資料路徑:

  • 在主介面導航到 Library
  • 找到您的測試影象
  • 驗證後設資料在影象詳情中顯示

透過/失敗路徑:

  • 檢查檢查結果是否顯示透過/失敗狀態
  • 驗證 “Final Pass/Fail” 節點是否正確處理
  • 確認任何連線的輸出(PLCs、指示燈等)能夠正確響應

7.3 測試不同的觸發源

驗證後設資料是否與您的特定觸發匹配工作:

對於手動觸發:

  • 使用軟體觸發按鈕
  • 驗證每次手動捕獲都顯示後設資料

對於數字輸入觸發:

  • 啟用外部感測器/開關
  • 確認後設資料隨觸發的影象一起捕獲

對於 PLC 觸發:

  • 從 PLC 傳送觸發訊號
  • 驗證後設資料在適用時包含 PLC 資料

步驟 8:高階後設資料配置

8.1 來自多個全域性變數的後設資料

將儲存在全域性中的不同來源的資料進行組合:

// 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;

步驟 9:後設資料問題故障排除

9.1 常見問題

問題症狀解決方法
後設資料未顯示庫中無資料驗證後設資料節點是否在主 IO Block 流中
後設資料與錯誤影象資料與不正確的捕獲一起出現檢查時序—後設資料必須在捕獲影象之前
觸發不起作用未捕獲影象驗證 IO Block 觸發配置
缺少後設資料欄位某些資料缺失檢查 function 節點 payload 格式
資料型別錯誤節點顯示錯誤狀態確保值僅為字串或數字

9.2 除錯後設資料流

新增除錯節點進行排錯:

  1. 在觸發後新增除錯節點以驗證觸發是否工作
  2. 在後設資料函式之後新增除錯節點以檢查 payload
  3. 在 捕獲後設資料 之後新增除錯節點以確認處理
  4. 在除錯面板中檢查錯誤資訊

第 10 步:最佳實踐

10.1 流設計

設計高效的後設資料流程:

  • 在流程中儘早保留後設資料 - 在觸發後立即設定後設資料
  • 使用單一 Capture Metadata 節點 - 不要重複使用 Capture Metadata 節點
  • 保持流程連貫性 - 後設資料必須成為主檢測流程的一部分
  • 處理缺失資料 - 始終提供預設值

10.2 後設資料欄位命名

使用一致、清晰的欄位名稱:

  • 使用下劃線代替空格("part_number" 而非 "part number")
  • 描述性強但簡潔("operator" 而非 "op")
  • 使用小寫字母以保持一致性
  • 避免可能引發問題的特殊字元

10.3 效能考量

對於高產量生產:

  • 儘量減小後設資料大小 - 僅包含必要資訊
  • 使用高效的資料型別 - 儘可能使用數字,儘量使用短字串
  • 避免複雜處理 - 讓後設資料建立保持簡單高效
  • 快取全域性資料 - 將常用資料儲存在全域性變數中

成功!您的後設資料系統已就緒

您的後設資料配置現在可以:

✅ 將自定義資訊附加到每次觸發的影象捕獲

✅ 跟蹤與檢測流程同步的生產資料

✅ 將可檢索資訊儲存在相機庫中

✅ 在 HMI 上為操作員顯示相關資料

✅ 支援製造要求的可追溯性

進行中的維護

常規系統檢查

  • 驗證後設資料是否隨觸發捕獲一起出現
  • 檢查生產執行中的缺失資料
  • 在高觸發率條件下監控流程效能
  • 隨著需求變化更新後設資料欄位

流管理

  • 審查生產中的後設資料時序
  • 最佳化 Function 節點效能
  • 更新全域性變數管理
  • 對操作員進行基於觸發的操作培訓

下一步

設定基於觸發的後設資料後:

  1. 使用所有配置的觸發型別(手動、數字、PLC)進行測試
  2. 對操作員進行後設資料捕獲的正確觸發使用培訓
  3. 設定全域性變數管理以處理動態資料
  4. 為不同產品線建立後設資料模板
  5. 使用後設資料分析實現生產監控

🔗 相關連結