AI 驅動文件
您想了解什麼?
PLC 通訊細節 (EtherNet/IP)
OV20i 視覺系統支援與基於 EtherNet/IP 的 PLC 進行實時通訊。本指南解釋如何配置迴圈 I/O 連線、對映資料結構,並使用 Overview 的 Node-RED 工具訪問全域性和 ROI 級別的檢測結果。
檢視此主題的實際操作:自動整合構建器
有關基本連線說明,請參見 連線到 PLC (EtherNet/IP, PROFINET).
概述
OV20i 作為 EtherNet/IP 介面卡,而您的 PLC 作為掃描器(或主裝置)執行。配置完成後,裝置每個週期使用緊湊且可預測的格式交換結構化資料。
支援的功能
- 迴圈 I/O 通訊 - 支援 20–10,000 毫秒的週期時間
- 資料吞吐量 - 每個方向最多 256 位元組
- 自定義資料處理 - 作為活動配方的一部分讀取/寫入 Node-RED 資料
輸入元件 (OV20i → PLC)
輸入元件包含每個週期從 OV20i 傳送到 PLC 的資料。這包括系統狀態、檢測結果、配方資訊和可選的 ROI 細分。

輸出元件 (PLC → OV20i)
輸出元件包含從 PLC 傳送到 OV20i 的控制資料。您可以使用它來觸發檢測、更改配方或傳遞自定義引數。

時序和握手行為

自定義資料支援
OV20i 可以接受或返回額外的自定義資料,作為您 Node-RED 流的一部分。
PLC → OV20i
- 寫入外部標誌、閾值或計數器,以影響 Node-RED 中的邏輯
OV20i → PLC
- 返回計算值、測量值、時間戳或條件輸出
自定義資料適合放入元件的擴充套件部分,從核心訊號和配方資訊之後開始。
ROI 結果細分(僅限分類配方)
對於分類配方,您可以使用 Overview 的自定義 Node-RED 節點 Format data for PLC 將每個 ROI 的結果暴露給 PLC。
工作原理:
- 放置在 Node-RED 流中的所有塊輸出資料和傳送資料到 PLC 之間

-
自動填充從輸入元件第 16 位元組開始的結構化 ROI 區域
-
每次檢測支援最多 4 個 ROI
-
每個 ROI 包括:
- ROI ID
- 透過/失敗位
- 置信度分數
- 未來使用的保留位元組
Format Data for PLC 節點僅適用於分類配方。

預設 PLC 標籤參考
本節提供輸入和輸出元件中每個標籤的完整參考,包括位元組偏移、位位置、資料型別和預設值。在配置您的 PLC 程式時,將其作為權威點陣圖使用。
在相機 UI 中檢視預設標籤
- 開啟 OV20i 網路介面(例如,
http://192.168.1.100)。 - 在左側邊欄中導航到 工業乙太網。
- 選擇您的活動協議(EtherNet/IP 或 PROFINET)。
- 頁面顯示當前的元件配置,包括輸入/輸出資料大小和連線狀態。
- 此頁面上顯示的預設標籤佈局對應於下面的表格。
輸入元件標籤 (OV20i → PLC)
這些標籤由 PLC 讀取。相機在每個 I/O 週期中寫入它們。
位元組 0 -- 狀態標誌
| 位 | PLC 標籤地址 | 標籤名稱 | 資料型別 | 描述 | 預設值 |
|---|---|---|---|---|---|
| 0 | I.Data[0].0 | 觸發準備 | BOOL | 相機準備好接受觸發。傳送觸發請求前必須為 HIGH。 | 0(啟動後變為 HIGH) |
| 1 | I.Data[0].1 | 觸發確認 | BOOL | 相機已接收到並接受觸發請求。 | 0 |
| 2 | I.Data[0].2 | 配方切換確認 | BOOL | 相機已接收到並完成配方切換請求。 | 0 |
| 7 | I.Data[0].7 | 線上 / 啟動完成 | BOOL | 相機已完成啟動並線上。 | 0(啟動後變為 HIGH) |
位元組 1 -- 錯誤和狀態標誌
| 位 | PLC 標籤地址 | 標籤名稱 | 資料型別 | 描述 | 預設值 |
|---|---|---|---|---|---|
| 0 | I.Data[1].0 | 觸發錯誤 | BOOL | 在觸發週期中發生錯誤。保持直到清除。 | 0 |
| 1 | I.Data[1].1 | 配方切換錯誤 | BOOL | 在配方切換過程中發生錯誤。保持直到清除。 | 0 |
| 6 | I.Data[1].6 | 正在處理 | BOOL | 相機正在處理(檢查執行或配方切換)。在 HIGH 時請勿傳送新命令。 | 0 |
位元組 2 -- 檢查結果標誌
| 位 | PLC 標籤地址 | 標籤名稱 | 資料型別 | 描述 | 預設值 |
|---|---|---|---|---|---|
| 0 | I.Data[2].0 | 曝光完成 | BOOL | 影象曝光已完成。 | 0 |
| 1 | I.Data[2].1 | 檢查完成 / 結果可用 | BOOL | 檢查處理已完成,結果有效。 | 0 |
| 2 | I.Data[2].2 | 檢查透過 | BOOL | 最終的透過/失敗結果。HIGH = 透過,LOW = 失敗。僅在結果可用時為 HIGH 時有效。 | 0 |
位元組 3--7 -- 保留
| 位元組 | PLC 標籤地址 | 標籤名稱 | 資料型別 | 描述 | 預設值 |
|---|---|---|---|---|---|
| 3 | I.Data[3] | 保留 | BYTE | 未來使用保留。 | 0x00 |
| 4 | I.Data[4] | 保留 | BYTE | 未來使用保留。 | 0x00 |
| 5 | I.Data[5] | 保留 | BYTE | 未來使用保留。 | 0x00 |
| 6--7 | I.Data[6]--I.Data[7] | 保留 | BYTE | 未來使用保留。 | 0x00 |
位元組 8--9 -- 當前配方 ID
| 位元組 | PLC 標籤地址 | 標籤名稱 | 資料型別 | 描述 | 預設值 |
|---|---|---|---|---|---|
| 8--9 | I.Data[8]--I.Data[9] | 當前配方 ID | UINT (16 位) | 當前活動配方的 ID。與 O.Data[4] 比較以驗證配方切換是否完成。 | 0 |
位元組 10--11 -- 保留
| 位元組 | PLC 標籤地址 | 標籤名稱 | 資料型別 | 描述 | 預設值 |
|---|---|---|---|---|---|
| 10--11 | I.Data[10]--I.Data[11] | 保留 | BYTE | 預留供將來使用。 | 0x00 |
位元組 12--13 -- 檢查 ID
| 位元組 | PLC 標籤地址 | 標籤名稱 | 資料型別 | 描述 | 預設值 |
|---|---|---|---|---|---|
| 12--13 | I.Data[12]--I.Data[13] | 檢查 ID | UINT (16 位) | 每次檢查遞增的 16 位計數器。用於將結果與特定觸發器關聯。 | 0 |
位元組 14--15 -- 保留
| 位元組 | PLC 標籤地址 | 標籤名稱 | 資料型別 | 描述 | 預設值 |
|---|---|---|---|---|---|
| 14--15 | I.Data[14]--I.Data[15] | 保留 | BYTE | 預留供將來使用。 | 0x00 |
位元組 16--256 -- ROI 結果彙編 / 來自 Node-RED 的自定義資料
| 位元組 | PLC 標籤地址 | 標籤名稱 | 資料型別 | 描述 | 預設值 |
|---|---|---|---|---|---|
| 16--256 | I.Data[16]--I.Data[256] | ROI 結果 / 自定義資料 | BYTE[] | 使用 "格式化資料為 PLC" Node-RED 塊時,此區域填充結構化的 ROI 結果。否則可用於來自 Node-RED 流的自定義資料。 | 0x00 |
輸出彙編標籤 (PLC → OV20i)
這些標籤由 PLC 寫入。相機在每個 I/O 週期讀取它們。
位元組 0 -- 控制標誌
| 位 | PLC 標籤地址 | 標籤名稱 | 資料型別 | 描述 | 預設值 |
|---|---|---|---|---|---|
| 0 | O.Data[0].0 | 觸發請求 | BOOL | 設定為高電平以觸發檢查。保持鎖存,直到觸發確認 (I.Data[0].1) 變為高電平,然後解除鎖存。 | 0 |
| 1 | O.Data[0].1 | 配方切換請求 | BOOL | 設定為高電平以請求切換到 O.Data[4] 中的配方 ID。保持鎖存,直到配方切換確認 (I.Data[0].2) 變為高電平,然後解除鎖存。 | 0 |
位元組 1--3 -- 保留
| 位元組 | PLC 標籤地址 | 標籤名稱 | 資料型別 | 描述 | 預設值 |
|---|---|---|---|---|---|
| 1 | O.Data[1] | 保留 | BYTE | 預留供將來使用。 | 0x00 |
| 2 | O.Data[2] | 保留 | BYTE | 預留供將來使用。 | 0x00 |
| 3 | O.Data[3] | 保留 | BYTE | 預留供將來使用。 | 0x00 |
位元組 4--5 -- 配方 ID
| 位元組 | PLC 標籤地址 | 標籤名稱 | 資料型別 | 描述 | 預設值 |
|---|---|---|---|---|---|
| 4--5 | O.Data[4]--O.Data[5] | 配方 ID | UINT (16 位) | 要切換到的配方 ID。在設定配方切換請求位之前,將所需的配方編號寫入此處。 | 0 |
位元組 6--256 -- Node-RED 的自定義資料
| 位元組 | PLC 標籤地址 | 標籤名稱 | 資料型別 | 描述 | 預設值 |
|---|---|---|---|---|---|
| 6--256 | O.Data[6]--O.Data[256] | Node-RED 的自定義資料 | BYTE[] | 使用者定義的資料,Node-RED 流程可以讀取。使用此區域傳遞序列號、閾值、零件 ID 或其他任何引數給相機。 | 0x00 |
位對映圖
以下基於文字的圖表顯示了兩個元件的完整位元組/位佈局。每一行代表一個位元組(或位元組範圍),每一列代表一個位位置(位 7 在左,位 0 在右)。
輸入元件點陣圖 (OV20i → PLC)
Byte │ Bit 7 │ Bit 6 │ Bit 5 │ Bit 4 │ Bit 3 │ Bit 2 │ Bit 1 │ Bit 0
─────┼────────────────┼────────┼───────┼───────┼───────┼────────────────────┼────────────────────────────┼──────────────────
0 │ Online/Startup │ --- │ --- │ --- │ --- │ Recipe Switch Ack │ Trigger Ack │ Trigger Ready
│ Complete │ │ │ │ │ │ │
─────┼────────────────┼────────┼───────┼───────┼───────┼────────────────────┼────────────────────────────┼──────────────────
1 │ --- │ Busy │ --- │ --- │ --- │ --- │ Recipe Switch Error │ Trigger Error
─────┼────────────────┼────────┼───────┼───────┼───────┼────────────────────┼────────────────────────────┼──────────────────
2 │ --- │ --- │ --- │ --- │ --- │ Inspection Pass │ Inspection Completed / │ Exposure
│ │ │ │ │ │ │ Result Available │ Complete
─────┼────────────────┼────────┼───────┼───────┼───────┼────────────────────┼────────────────────────────┼──────────────────
3-5 │ --- │ --- │ --- │ --- │ --- │ --- │ --- │ ---
─────┼────────────────┼────────┼───────┼───────┼───────┼────────────────────┼────────────────────────────┼──────────────────
6-7 │ Reserved │
─────┼──────────────────────────────────────────────────────────────────────────────────────────────────────────────────────
8-9 │ Current Recipe ID (16-bit unsigned integer) │
─────┼──────────────────────────────────────────────────────────────────────────────────────────────────────────────────────
10-11│ Reserved │
─────┼──────────────────────────────────────────────────────────────────────────────────────────────────────────────────────
12-13│ Inspection ID (16-bit unsigned integer) │
─────┼──────────────────────────────────────────────────────────────────────────────────────────────────────────────────────
14-15│ Reserved │
─────┼──────────────────────────────────────────────────────────────────────────────────────────────────────────────────────
16- │ ROI Results Assembly or Custom Data from Node-RED │
256 │ │
輸出組裝點陣圖 (PLC → OV20i)
Byte │ Bit 7 │ Bit 6 │ Bit 5 │ Bit 4 │ Bit 3 │ Bit 2 │ Bit 1 │ Bit 0
─────┼───────┼───────┼───────┼───────┼───────┼───────┼───────────────────────┼────────────────
0 │ --- │ --- │ --- │ --- │ --- │ --- │ Recipe Switch Request │ Trigger Request
─────┼───────┼───────┼───────┼───────┼───────┼───────┼───────────────────────┼────────────────
1-3 │ Reserved │
─────┼──────────────────────────────────────────────────────────────────────────────────────────
4-5 │ Recipe ID (16-bit unsigned integer) │
─────┼──────────────────────────────────────────────────────────────────────────────────────────
6- │ Custom Data for Node-RED │
256 │ │
ROI 結果組裝詳細資訊 (位元組 16--55)
當使用 格式化資料為 PLC Node-RED 塊與分類配方時,輸入組裝的位元組 16 及以上將填充結構化對齊器和每個 ROI 資料,如下所示:
對齊器部分 (位元組 16--23)
| 位元組 | PLC 標籤地址 | 標籤名稱 | 資料型別 | 描述 |
|---|---|---|---|---|
| 16, 位 0 | I.Data[16].0 | 對齊器成功 | BOOL | 如果對齊器成功定位了部件,則為 HIGH。 |
| 17--18 | I.Data[17]--I.Data[18] | 對齊器置信度 | UINT (16 位) | 對齊的置信度分數 (0--65535)。 |
| 19--20 | I.Data[19]--I.Data[20] | 對齊器角度 | INT (16 位,帶符號) | 相對於模板的匹配角度。 |
| 21--23 | I.Data[21]--I.Data[23] | 保留 (對齊器) | BYTE | 保留用於未來的對齊器資料。 |
ROI 結果塊 (位元組 24--55)
每個 ROI 佔用 8 位元組。最多支援 4 個 ROI (ROI 0 到 ROI 3)。
ROI 塊結構 (每 8 位元組重複):
| 塊內偏移 | 標籤名稱 | 資料型別 | 描述 |
|---|---|---|---|
| +0 | ROI ID | UINT8 (8 位) | ROI 的唯一數字識別符號。 |
| +1, 位 0 | ROI 透過 | BOOL | HIGH = 此 ROI 透過,LOW = 此 ROI 失敗。 |
| +2 到 +3 | ROI 置信度 | UINT (16 位) | 此 ROI 分類的置信度分數 (0--65535)。 |
| +4 到 +7 | 保留 | BYTE | 保留用於未來的每個 ROI 資料。 |
ROI 起始地址:
| ROI | 起始位元組 | PLC 地址範圍 | ID 地址 | 透過地址 | 置信度地址 |
|---|---|---|---|---|---|
| ROI 0 | 24 | I.Data[24]--I.Data[31] | I.Data[24] | I.Data[25].0 | I.Data[26]--I.Data[27] |
| ROI 1 | 32 | I.Data[32]--I.Data[39] | I.Data[32] | I.Data[33].0 | I.Data[34]--I.Data[35] |
| ROI 2 | 40 | I.Data[40]--I.Data[47] | I.Data[40] | I.Data[41].0 | I.Data[42]--I.Data[43] |
| ROI 3 | 48 | I.Data[48]--I.Data[55] | I.Data[48] | I.Data[49].0 | I.Data[50]--I.Data[51] |
緩衝區配置
在相機 UI 中檢視預設標籤
預設標籤佈局由相機韌體定義,並對應於上述表格。要檢視當前配置:
- 開啟 OV20i 網路介面。
- 在左側選單中轉到 工業 Ethernet。
- 選擇您的協議 (EtherNet/IP 或 PROFINET)。
- 頁面顯示:
- 連線狀態和裝置資訊
- 輸入和輸出組裝大小(每個方向最多 256 位元組)
- EDS 或 GSDML 檔案下載連結(該連結也編碼了預設組裝結構)
EDS 檔案(用於 EtherNet/IP)和 GSDML 檔案(用於 PROFINET)都定義了預設資料大小。當您在 Studio 5000 或 TIA Portal 中新增相機模組時,這些描述符檔案中的組裝大小決定了每個週期交換的位元組數。
建立自定義資料緩衝區
要在相機和 PLC 之間傳送自定義資料(超出預設狀態/結果標籤),請使用 "Format Data for PLC" Node-RED 塊:
- 從相機網路介面開啟 Node-RED(導航到 Node-RED 編輯器)。
- 在您的配方流程中,將 "Format Data for PLC" 節點放置在 "All Blocks Output Data" 節點和 "Send Data to PLC" 節點之間。
- 配置位元組順序:
- 小端 用於 Allen-Bradley / Rockwell PLC
- 大端 用於西門子 PLC
- 該塊會自動將分類 ROI 結果格式化為從輸入組裝的位元組 16 開始的結構化佈局(請參見上述 ROI 結果組裝詳細資訊部分)。
對於完全自定義的資料緩衝區(不使用預設的 ROI 格式):
- 在您的 Node-RED 流中,使用 Function 節點構造一個具有所需位元組佈局的
msg.payload緩衝區。 - 將其連線到 "Send Data to PLC" 節點。
- 您的自定義位元組將從位元組 16 開始填充輸入組裝。
- 在 PLC 端,透過
I.Data[16]到I.Data[256]地址讀取相應的資料。
更改標籤分配
核心標籤(輸入組裝的位元組 0--15 和輸出組裝的位元組 0--5)由相機韌體固定,無法重新分配。這些是系統級訊號(觸發器、配方切換、狀態、錯誤、配方 ID 和檢查 ID)。
可配置區域為:
- 輸入組裝位元組 16--256:由 Node-RED 填充。您可以透過配置 Node-RED 流來控制此處的資料。預設情況下,"Format Data for PLC" 塊將此填充為 ROI 結果,或者您可以使用 Function 節點寫入任意資料。
- 輸出組裝位元組 6--256:由 Node-RED 讀取。您可以將 PLC 中的任何資料寫入這些位元組,然後在 Node-RED 流中使用適當的輸入節點讀取它們。這對於將序列號、批次 ID、閾值或其他引數從 PLC 傳送到相機非常有用。
從 PLC 傳送自定義資料到相機(輸出組裝)
要將自定義資料從 PLC 傳遞到 Node-RED:
- 在您的 PLC 程式中,將值寫入
O.Data[6]到O.Data[256]。 - 在相機上的 Node-RED 中,使用 PLC 輸入資料節點讀取這些位元組。
- 在您的流邏輯中使用這些值(例如,閾值、序列號、條件引數)。
快速參考:標籤地址備忘單
下表總結了在 PLC 程式設計中常用的標籤,便於快速查詢:
| PLC 地址 | 方向 | 訊號名稱 | 用途 |
|---|---|---|---|
I.Data[0].0 | 相機 → PLC | 觸發準備 | 在觸發前檢查 |
I.Data[0].1 | 相機 → PLC | 觸發確認 | 在此訊號變為高電平後解除觸發 |
I.Data[0].2 | 相機 → PLC | 配方切換確認 | 在此訊號變為高電平後解除配方請求 |
I.Data[0].7 | 相機 → PLC | 線上 / 啟動完成 | 確認相機已啟動 |
I.Data[1].0 | 相機 → PLC | 觸發錯誤 | 監控觸發故障 |
I.Data[1].1 | 相機 → PLC | 配方切換錯誤 | 監控配方切換故障 |
I.Data[1].6 | 相機 → PLC | 正在忙碌 | 在高電平時不要傳送命令 |
I.Data[2].0 | 相機 → PLC | 曝光完成 | 影象已捕獲 |
I.Data[2].1 | 相機 → PLC | 結果可用 | 可以安全讀取合格/不合格 |
I.Data[2].2 | 相機 → PLC | 檢測合格 | 高電平 = 合格,低電平 = 不合格 |
I.Data[8]--I.Data[9] | 相機 → PLC | 當前配方 ID | 切換後驗證配方 |
I.Data[12]--I.Data[13] | 相機 → PLC | 檢測 ID | 將結果與觸發器關聯 |
O.Data[0].0 | PLC → 相機 | 觸發請求 | 高電平保持以觸發 |
O.Data[0].1 | PLC → 相機 | 配方切換請求 | 高電平保持以切換配方 |
O.Data[4]--O.Data[5] | PLC → 相機 | 配方 ID | 設定所需的配方編號 |
O.Data[6]+ | PLC → 相機 | 自定義資料 | 使用者定義的資料用於 Node-RED |
I.Data[16]+ | 相機 → PLC | ROI 結果 / 自定義資料 | ROI 結果或自定義 Node-RED 輸出 |