AI 驅動文件
您想了解什麼?
設定數字輸出邏輯
本指南向您展示如何配置 OV20i 的數字輸出,以根據檢測結果控制外部裝置。相機有 2 個數字輸出,透過 True/False 邏輯執行,可觸發分揀機構、指示燈、報警器或其他自動化裝置。
何時使用數字輸出: 自動分揀系統、透過/失敗指示燈、剔除機構、報警系統、PLC 通訊,或任何需要基於檢測結果觸發的外部裝置。
先決條件
- OV20i 相機系統已設定並連線
- 已配置檢測邏輯的活動程式
- 待控制的外部裝置(測試可選)
- 數字 I/O 概念的基本理解
數字輸出規格
OV20i 透過 M12 聯結器提供 2 個數字輸出:
| 輸出 | 引腳號 | 線纜顏色 | 功能 |
|---|---|---|---|
| 數字輸出 1 | 10 | 紫色 | 可配置輸出 |
| 數字輸出 2 | 11 | 灰色/粉色 | 可配置輸出 |
線纜顏色因電纜長度而異。如果您電纜的線纜顏色不匹配,請參閱 線纜顏色參考 瞭解 3M 和 5M 與 10M 電纜的顏色差異。
數字輸出(DO0 / DO1)為 NPN 開集電極(僅電流吸收)。需要外部上拉電阻或連線到 +V 的負載,輸出可以拉至 0 V(接地),但不能提供 24 V。
NPN 吸收輸出工作原理
切換下方按鈕,檢視數字輸出啟用時電流如何在電路中流動。
Status: OFF
Turn ON the digital output to sink current through the relay coil to ground.
執行邏輯:
- True = 輸出 ON (24V)
- False = 輸出 OFF (0V)
第一步:訪問 Node-RED 編輯器
1.1 導航至 IO 模組
- 在程式編輯器中開啟您的活動程式
- 點選 Configure IO 或在麵包屑選單中選擇 IO Block 以進入 Node-RED 編輯器
1.2 驗證 Node-RED 介面
檢查點: 您應看到 Node-RED 流程編輯器,節點面板位於左側。
第二步:新增數字輸出節點
2.1 定位輸出節點
- 在左側面板(Overview 部分)找到 "Output" 節點
- 將 "Output" 節點拖放 到流程畫布上
- 雙擊節點 進行配置
2.2 配置輸出設定
節點配置:
| 設定 | 選項 | 說明 |
|---|---|---|
| Output Pin | DO0, DO1 | 選擇要控制的物理輸出 |
| Initial State | OFF, ON | 系統啟動時的初始狀態 |
| Name | 自定義文字 | 用於標識的可選標籤 |
2.3 輸出配置步驟
- 選擇輸出引腳:
- DO0 = 數字輸出 1(引腳 10,紫色線纜)
- DO1 = 數字輸出 2(引腳 11,灰色/粉色線纜)
線纜顏色因電纜長度而異。如果您電纜的線纜顏色不匹配,請參閱 線纜顏色參考 瞭解 3M 和 5M 與 10M 電纜的顏色差異。
- 設定初始狀態:
- OFF = 輸出初始為 OFF 狀態(推薦)
- ON = 輸出初始為 ON 狀態
- 命名節點:
- 使用描述性名稱,如 "Reject_Signal" 或 "Pass_Light"
- 點選 "Done" 儲存配置
第三步:將邏輯連線到輸出
3.1 基本透過/失敗輸出
用於簡單的透過/失敗指示:
- 新增 "Final Pass/Fail Output" 節點(如果尚未存在)
- 連線: Final Pass/Fail → Output 節點
- 結果: 檢測透過時輸出啟用
3.2 反轉邏輯(失敗訊號)
在檢測失敗時觸發輸出:
- 在透過/失敗與輸出之間新增 "function" 節點
- 配置 function 節點:
// Invert pass/fail signal - ensure boolean output
msg.payload = !msg.payload;
return msg;
- 連線: Final Pass/Fail → Function → Output 節點
- 結果: 檢測失敗時輸出啟用
3.3 基於分類結果的自定義邏輯
當使用分類或其他檢測資料時:
- 新增 "function" 節點將結果轉換為布林值
- 根據您的邏輯配置 function:
// Convert classification result to boolean
// Example: Activate output for specific class
if (msg.payload.class === "Defective") {
msg.payload = true; // Turn output ON
} else {
msg.payload = false; // Turn output OFF
}
return msg;
- 連線: 資料來源 → Function → Output 節點
3.4 布林轉換示例
對於不同的資料來源,始終轉換為布林值:
從置信度值轉換:
// Activate if confidence below threshold
msg.payload = (msg.payload.confidence <0.8);
return msg;
從 ROI 結果轉換:
// Activate if any ROI failed
msg.payload = msg.payload.roi_results.some(roi => !roi.pass);
return msg;
Output 節點需要布林輸入(true/false)。在連線到 Output 節點之前,請確保您的邏輯產生布林值。
第四步:建立脈衝輸出(推薦)
4.1 為何使用脈衝輸出
推薦使用脈衝輸出,因為:
- 提供清晰的訊號指示
- 防止輸出無限期保持 ON 狀態
- 更適合觸發外部裝置
- 更易於排查訊號時序問題
4.2 新增 Trigger 節點
- 從 Function 部分新增 "trigger" 節點
- 置於邏輯源和輸出節點之間
- 雙擊 trigger 節點進行配置
4.3 配置 Trigger 設定
脈衝配置:
| 設定 | 推薦值 | 說明 |
|---|---|---|
| Send | True | 要傳送的初始訊號 |
| Then wait | 500ms | 脈衝持續時間 |
| Then send | False | 延遲後的訊號 |
| Extend delay | Disabled | 新訊息到達時不延長 |

4.4 Trigger 配置步驟
- 首次輸出:
- Send:
boolean→true - 這會將輸出置為 ON
- Send:
- 延遲設定:
- Then wait for:
500毫秒 - Then send:
boolean→false - 這會在延遲後將輸出置為 OFF
- Then wait for:
- 高階選項:
- Extend delay if new message arrives: 未勾選
- Stop existing delay if new message arrives: 已勾選
- 點選 "Done" 儲存

4.5 連線脈衝配置
按以下順序連線節點: 邏輯源 → 觸發器 → 輸出節點
示例流程: 最終 Pass/Fail → 觸發器 → 輸出 (DO0)
第 5 步:部署並測試配置
5.1 部署流程
- 點選"Deploy" 按鈕(右上角)
- 驗證部署成功訊息
- 檢查節點狀態指示器
5.2 監控數字 I/O 狀態
使用內建的 I/O 監控介面:
- 導航至"I/O Live Monitor" 頁面(主介面中)
- 實時觀察輸出狀態
- 檢查"Last state change" 時間戳

數字 I/O 狀態介面顯示:
- 當前輸出狀態 (ON/OFF)
- 最近狀態變化時間戳
- 實時狀態更新
5.3 測試輸出啟用
手動測試:
- 新增"inject"節點用於測試
- 配置 inject 節點:
- Payload:
boolean→true - Name: "Test Output"
- Payload:
- 連線: Inject → 觸發器 → 輸出
- 點選 inject 按鈕測試輸出
- 驗證輸出啟用(在 I/O 狀態介面中)
第 6 步:高階輸出配置
6.1 多路輸出控制
同時控制兩個輸出:
- 為 DO0 和 DO1 新增獨立的輸出節點
- 將同一邏輯源連線到兩個輸出
- 如需要,使用不同的觸發延時
6.2 條件輸出選擇
根據條件路由到不同的輸出:
- 從 Function 部分新增"switch"節點
- 配置路由規則:
// Route based on classification result
if (msg.payload.class === "Large") {
return [msg, null]; // Send to first output (DO0)
} else if (msg.payload.class === "Small") {
return [null, msg]; // Send to second output (DO1)
}
return [null, null]; // No output
- 將 switch 輸出連線到相應的輸出節點
6.3 延時輸出序列
建立定時輸出序列:
- 新增多個觸發節點,設定不同的延時
- 配置序列時序:
- 第一個觸發器:100ms 脈衝
- 第二個觸發器:500ms 延時,然後 200ms 脈衝
- 串聯連線以實現順序啟用
第 7 步:整合示例
7.1 分揀系統整合
雙向分揀設定:
- DO0(輸出 1): 合格件傳送帶
- DO1(輸出 2): 剔除箱執行器
Final Pass/Fail → Switch Node → Trigger → DO0 (Pass)
→ Trigger → DO1 (Fail)
7.2 報警系統整合
多級報警系統:
- DO0: 警示燈(輕微缺陷)
- DO1: 報警蜂鳴器(嚴重缺陷)
Classification Logic → Function (Check severity) → Appropriate Output
7.3 PLC 通訊
簡單的 PLC 握手:
- DO0: 檢測完成訊號
- DO1: 部件剔除訊號
All Block Outputs → Format for PLC → Trigger → DO0
→ Reject Logic → Trigger → DO1
第 8 步:輸出問題故障排除
8.1 輸出未啟用
| 問題 | 檢查 | 解決方案 |
|---|---|---|
| 無輸出訊號 | 節點連線 | 驗證所有連線是否已連線 |
| 邏輯從未觸發 | 輸入條件 | 檢查 pass/fail 邏輯配置 |
| 時序問題 | 觸發器設定 | 調整脈衝持續時間 |
| 錯誤的引腳啟用 | 輸出引腳選擇 | 驗證 DO0/DO1 配置 |
8.2 使用 I/O 狀態進行故障排除
Digital I/O 螢幕有助於識別:
- 當前輸出狀態: 檢視輸出是否實際發生變化
- 上次狀態變化: 驗證輸出啟用的時序
- 狀態歷史: 跟蹤一段時間內的輸出行為
使用 I/O 螢幕進行故障排除:
- 輸出始終顯示"OFF": 邏輯可能未被觸發
- 輸出始終顯示"ON": 缺少脈衝配置
- 無時間戳更新: 檢查 Node-RED 連線
- 狀態快速變化: 邏輯可能觸發過於頻繁
8.3 外部裝置問題
| 問題 | 原因 | 解決方案 |
|---|---|---|
| 裝置無響應 | 電壓不匹配 | 驗證 24V 相容性 |
| 間歇性執行 | 接線問題 | 檢查 M12 聯結器接線 |
| 響應延遲 | 外部裝置時序 | 調整脈衝持續時間 |
第 9 步:測試與驗證
9.1 系統性測試
系統地測試每個輸出:
| 測試 | 預期結果 | 狀態 |
|---|---|---|
| 手動觸發 DO0 | 輸出 1 在脈衝持續時間內啟用 | ☐ |
| 手動觸發 DO1 | 輸出 2 在脈衝持續時間內啟用 | ☐ |
| 透過條件 | 正確的輸出啟用 | ☐ |
| 失敗條件 | 正確的輸出啟用 | ☐ |
| I/O 狀態更新 | 時間戳顯示狀態變化 | ☐ |
9.2 生產驗證
部署到生產環境之前:
- 使用實際零件和檢測條件進行測試
- 驗證輸出時序滿足外部裝置要求
- 確認電氣連線牢固
- 記錄輸出分配以便維護
9.3 效能驗證
監控以下方面:
- 響應時間: 檢測後輸出啟用的延遲
- 可靠性: 長時間內輸出行為的一致性
- 時序準確性: 脈衝持續時間與配置匹配
成功!您的數字輸出已就緒
您的數字輸出系統現在可以:
- 根據檢測結果控制外部裝置
- 提供脈衝訊號以實現可靠觸發
- 支援多種輸出配置以實現複雜自動化
- 與 PLC 和分揀系統整合以實現生產自動化
- 透過內建 I/O 介面監控輸出狀態
持續維護
定期系統檢查
- 監控 I/O 狀態螢幕以確保執行一致
- 驗證輸出時序保持在規格範圍內
- 檢查 M12 聯結器處的電氣連線
- 定期測試手動觸發器以確保系統健康
故障排除資源
- 使用 I/O 狀態螢幕進行實時診斷
- 檢查 Node-RED 除錯面板以排查邏輯問題
- 驗證外部裝置規格與輸出能力匹配
- 記錄任何配置更改以供將來參考
後續步驟
配置數字輸出後:
- 如果需要外部控制,設定數字輸入觸發器
- 配置 PLC 通訊以實現整合自動化
- 實施安全聯鎖以適應生產環境
- 建立自動化監控以瞭解系統健康狀況