跳到主要內容

AI 驅動文件

您想了解什麼?

PLC 通訊詳情(EtherNet/IP)

OV10i 視覺系統支援與基於 EtherNet/IP 的 PLC 實時通訊。本指南說明如何配置迴圈 I/O 連線、對映資料結構,並使用 Overview 的 Node-RED 工具訪問全域性和 ROI 級別的檢測結果。

影片指南

請觀看本主題的演示: Auto-Integration Builder

備註

如需基本連線指引,請參閱 Connect to PLC (EtherNet/IP, PROFINET).


概覽

OV10i 充當 EtherNet/IP 介面卡,而 PLC 作為掃描器(或主機)執行。配置完成後,裝置在每個迴圈中以緊湊且可預測的格式交換結構化資料。

支援的特性

  • Cyclic I/O 通訊 - 支援 20–10,000 ms 的迴圈時間
  • 資料吞吐量 - 雙向高達 256 位元組
  • 自定義資料處理 - 將 Node-RED 資料讀/寫作為活動配方的一部分

輸入裝配 (OV10i → PLC)

輸入裝配包含每個迴圈從 OV10i 傳送到 PLC 的資料。這些資料包括系統狀態、檢測結果、配方資訊,以及可選的 ROI 細分。

OV10i 輸入裝配的位元組與位佈局

輸出裝配 (PLC → OV10i)

輸出裝配包含從 PLC 傳送到 OV10i 的控制資料。可用於觸發檢測、修改配方,或傳入自定義引數。

OV10i 輸出裝配的位元組與位佈局

定時與握手行為

EtherNet/IP 觸發時序圖

自定義資料支援

OV10i 可以作為 Node-RED 流的一部分,接受或返回額外的自定義資料。

PLC → OV10i

  • 將外部標誌、閾值或計數器寫入,以影響 Node-RED 中的邏輯

OV10i → PLC

  • 返回計算值、測量值、時間戳或條件輸出

自定義資料位於裝配的擴充套件部分,在核心訊號和配方資訊之後開始。

ROI 結果分解(Classification Recipes 僅適用)

對於分類配方,您可以使用 Overview 的自定義 Node-RED 節點:Format data for PLC,將每個 ROI 的結果暴露給 PLC。

工作原理:

  • 在 Node-RED 流中,位於 All Blocks Output Data 與 Send Data to PLC 之間

Format Data for PLC Node-RED Flow Example

  • 自動填充一個從輸入裝配位元組 16 開始的結構化 ROI 區域

  • 每次檢測最多支援 4 個 ROI

  • 每個 ROI 包含:

    • ROI ID
    • Pass/fail 位
    • 置信度分數
    • 供將來使用的保留位元組
注意

Format Data for PLC 節點僅適用於 Classification Recipes。

OV10i 輸出裝配的位元組與位佈局


預設 PLC 標籤參考

本節提供輸入與輸出裝配中每個標籤的完整參考資訊,包括位元組偏移、位位置、資料型別和預設值。將其作為配置 PLC 程式時的權威位對映。

在相機 UI 中檢視預設標籤的位置

  1. 開啟相機網頁介面(例如,http://192.168.1.100)。
  2. 在左側邊欄導航到 Industrial Ethernet
  3. 選擇您的活動協議 (EtherNet/IPPROFINET)。
  4. 該頁面顯示當前的組裝配置,包括輸入/輸出資料大小和連線狀態。
  5. 本頁顯示的預設標籤佈局對應下方表格。

輸入組裝標籤(相機 → PLC)

這些標籤由 PLC 讀取。相機在每個 I/O 週期寫入它們。

位元組 0 -- 狀態標誌

PLC 標籤地址標籤名資料型別描述預設值
0I.Data[0].0觸發就緒BOOL相機已準備好接受觸發。在傳送觸發請求之前必須處於高電平。0(啟動後變為高電平)
1I.Data[0].1觸發確認BOOL相機已接收並接受觸發請求。0
2I.Data[0].2配方切換確認BOOL相機已接收並完成配方切換請求。0
7I.Data[0].7線上 / 啟動完成BOOL相機已完成引導並上線。0(啟動後變為高電平)

位元組 1 -- 錯誤與狀態標誌

PLC 標籤地址標籤名資料型別描述預設值
0I.Data[1].0觸發錯誤BOOL觸發週期中發生錯誤。錯誤會持續保持,直到清除。0
1I.Data[1].1配方切換錯誤BOOL配方切換期間發生錯誤。錯誤會鎖存直至清除。0
6I.Data[1].6忙碌BOOL相機當前正在處理(檢查處理中或配方切換中)。高電平時請勿傳送新命令。0

位元組 2 -- 檢查結果標誌

PLC 標籤地址標籤名資料型別描述預設值
0I.Data[2].0曝光完成BOOL影象曝光已完成。0
1I.Data[2].1檢查完成 / 結果可用BOOL檢查處理已完成,結果有效。0
2I.Data[2].2檢查透過BOOL最終透過/失敗結果。高電平 = 透過,低電平 = 失敗。僅在結果可用為高電平時有效。0

位元組 3--7 -- 保留

位元組PLC 標籤地址標籤名資料型別描述預設值
3I.Data[3]保留BYTE為將來使用保留。0x00
4I.Data[4]保留BYTE為將來使用保留。0x00
5I.Data[5]保留BYTE為將來使用保留。0x00
6--7I.Data[6]--I.Data[7]保留BYTE為將來使用保留。0x00

位元組 8--9 -- 當前配方 ID

位元組PLC 標籤地址標籤名資料型別描述預設值
8--9I.Data[8]--I.Data[9]當前配方 IDUINT (16-bit)當前活動配方的 ID。與 O.Data[4] 進行比較以驗證配方切換已完成。0

位元組 10--11 -- 保留

位元組PLC 標籤地址標籤名稱資料型別描述預設值
10--11I.Data[10]--I.Data[11]ReservedBYTE供將來使用的保留。0x00

位元組 12--13 -- 檢驗 ID

位元組PLC 標籤地址標籤名稱資料型別描述預設值
12--13I.Data[12]--I.Data[13]Inspection IDUINT (16-bit)隨每次檢驗遞增的滾動 16 位計數器。用於將結果與特定觸發事件相關聯。0

位元組 14--15 -- 保留

位元組PLC 標籤地址標籤名稱資料型別描述預設值
14--15I.Data[14]--I.Data[15]ReservedBYTE供將來使用的保留。0x00

位元組 16--256 -- ROI 結果組裝 / 來自 Node-RED 的自定義資料

位元組PLC 標籤地址標籤名稱資料型別描述預設值
16--256I.Data[16]--I.Data[256]ROI Results / Custom DataBYTE[]當使用 "Format Data for PLC" Node-RED 塊時,本區域將填充結構化的 ROI 結果。否則,可從 Node-RED 流獲取自定義資料。0x00

輸出組裝標籤(PLC → 相機)

這些標籤由 PLC 寫入。相機在每個 I/O 迴圈中讀取它們。

位元組 0 -- 控制標誌

PLC 標籤地址標籤名稱資料型別描述預設值
0O.Data[0].0Trigger RequestBOOL將 HIGH 設定以觸發一次檢查。鎖存直到 Trigger Acknowledge (I.Data[0].1) 變為 HIGH,然後解除鎖存。0
1O.Data[0].1Recipe Switch RequestBOOL將 HIGH 設定以請求切換到 O.Data[4] 中的配方 ID。鎖存直到 Recipe Switch Ack (I.Data[0].2) 變為 HIGH,然後解除鎖存。0

位元組 1--3 -- 保留

位元組PLC 標籤地址標籤名稱資料型別描述預設值
1O.Data[1]ReservedBYTE供將來使用的保留。0x00
2O.Data[2]ReservedBYTE供將來使用的保留。0x00
3O.Data[3]ReservedBYTE供將來使用的保留。0x00

位元組 4--5 -- Recipe ID

位元組PLC 標籤地址標籤名稱資料型別描述預設值
4--5O.Data[4]--O.Data[5]Recipe IDUINT (16-bit)要切換到的配方 ID。請在設定 Recipe Switch Request 位之前,將所需的配方編號寫入此處。0

位元組 6--256 -- Node-RED 的自定義資料

位元組PLC 標籤地址標籤名稱資料型別描述預設值
6--256O.Data[6]--O.Data[256]Custom Data for Node-REDBYTE[]Node-RED 流可讀取的使用者定義資料。使用此區域向相機傳遞序列號、閾值、部件 ID 或其他任意引數。0x00

位對映圖

以下基於文字的圖表展示兩個元件的完整位元組/位佈局。每行表示一個位元組(或位元組範圍),每列表示一個位位置(左邊為位 7,右邊為位 0)。

輸入元件位對映圖(相機到 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 → Camera)

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)

當使用帶有分類配方的 Format Data for PLC Node-RED 塊時,輸入裝配的位元組 16 及以上將填充為結構化的對齊器資料和每個 ROI 的資料,具體如下:

對齊器區段(位元組 16--23)

位元組PLC 標籤地址標籤名稱資料型別描述
16, bit 0I.Data[16].0對齊器透過情況BOOL當對齊器成功定位到工件時為 HIGH。
17--18I.Data[17]--I.Data[18]對齊器置信度UINT (16-bit)對齊度量的置信分數(0--65535)。
19--20I.Data[19]--I.Data[20]對齊器角度INT (16-bit, signed)相對於模板的匹配角度。
21--23I.Data[21]--I.Data[23]保留(對齊器)BYTE供未來對齊器資料使用的保留欄位。

ROI 結果塊(位元組 24--55)

每個 ROI 佔用 8 位元組。最多支援 4 個 ROI(ROI 0 至 ROI 3)。

ROI 塊結構(每 8 位元組重複一次):

偏移量(塊內)標籤名稱資料型別描述
+0ROI IDUINT8 (8-bit)ROI 的唯一數字識別符號。
+1, bit 0ROI PassBOOLHIGH = 此 ROI 透過,LOW = 此 ROI 失敗。
+2 到 +3ROI ConfidenceUINT (16-bit)此 ROI 分類的置信分數(0--65535)。
+4 到 +7保留BYTE供未來每 ROI 資料使用的保留欄位。

ROI 起始地址:

ROI起始位元組PLC 地址範圍ID 地址Pass 地址Confidence 地址
ROI 024I.Data[24]--I.Data[31]I.Data[24]I.Data[25].0I.Data[26]--I.Data[27]
ROI 132I.Data[32]--I.Data[39]I.Data[32]I.Data[33].0I.Data[34]--I.Data[35]
ROI 240I.Data[40]--I.Data[47]I.Data[40]I.Data[41].0I.Data[42]--I.Data[43]
ROI 348I.Data[48]--I.Data[55]I.Data[48]I.Data[49].0I.Data[50]--I.Data[51]

緩衝區配置

在相機 UI 中檢視預設標籤

預設標籤佈局由相機韌體定義,並對應上方的表格。若要檢視當前配置,請執行以下步驟:

  1. 開啟相機網頁介面。
  2. 在左側選單中點選 Industrial Ethernet
  3. 選擇你的協議 (EtherNet/IPPROFINET)。
  4. 頁面顯示:
    • 連線狀態和裝置資訊
    • 輸入和輸出程式集大小(每個方向最多 256 位元組)
    • EDS 或 GSDML 檔案下載連結(它們也編碼了預設的彙編結構)

EDS 檔案(用於 EtherNet/IP)與 GSDML 檔案(用於 PROFINET)均定義了預設資料大小。當你在 Studio 5000 或 TIA Portal 中新增相機模組時,這些描述符檔案中的程式集大小決定每個迴圈中交換的位元組數。

建立自定義資料緩衝區

要在相機與 PLC 之間傳送自定義資料(超出預設的狀態/結果標籤),請使用 "Format Data for PLC" 的 Node-RED 塊:

  1. 從相機網頁介面開啟 Node-RED(導航至 Node-RED 編輯器)。
  2. 在你的配方流程中,將 "Format Data for PLC" 節點放在 "All Blocks Output Data" 節點和 "Send Data to PLC" 節點之間。
  3. 配置位元組序:
    • Little-endian 對於 Allen-Bradley / Rockwell PLC
    • Big-endian 對於 Siemens PLC
  4. 該塊會自動把分類 ROI 結果格式化為從 Input Assembly 的位元組 16 起的結構化佈局(見上方 ROI Results Assembly Detail 小節)。

對於完全自定義的資料緩衝區(不使用預設 ROI 格式):

  1. 在你的 Node-RED 流中,使用 Function 節點來構造一個 msg.payload 緩衝區,按你希望的位元組佈局。
  2. 將其連線到 "Send Data to PLC" 節點。
  3. 你的自定義位元組將從位元組 16 開始填充 Input Assembly。
  4. 在 PLC 端,讀取相應的 I.Data[16]I.Data[256] 地址。

更改標籤分配

核心標籤(Input Assembly 的位元組 0--15 與 Output Assembly 的位元組 0--5)由相機韌體固定,無法重新分配。這些是系統級訊號(觸發、配方開關、狀態、錯誤、配方 ID 與檢測 ID)。

可配置區域為:

  • Input Assembly bytes 16--256: 由 Node-RED 填充。你可以透過配置 Node-RED 流來控制要放入此處的資料。預設情況下,Format Data for PLC 塊將 ROI 結果填充至此,或你也可以使用 Function 節點寫入任意資料。
  • Output Assembly bytes 6--256: Node-RED 讀取。你可以將 PLC 的任意資料寫入這些位元組,然後在你的 Node-RED 流中使用相應的輸入節點讀取它們。這對於從 PLC 向相機傳送序列號、批次 ID、閾值或其他引數很有用。

從 PLC 向相機傳送自定義資料(Output Assembly)

要把自定義資料從 PLC 傳遞到 Node-RED:

  1. 在 PLC 程式中,將值寫入 O.Data[6]O.Data[256]
  2. 在相機的 Node-RED 中,使用 PLC 輸入資料節點讀取那些位元組。
  3. 在你的流邏輯中使用這些值(例如閾值、序列號、條件引數)。
提示

有關從 PLC 向相機傳送字串資料的逐步指南,請參見 Send Custom Data from PLC to Camera.

快速參考:標籤地址速查表

下表彙總了在 PLC 程式設計中最常用的標籤,集中展示以便快速查詢:

PLC 地址方向訊號名稱用途
I.Data[0].0相機 → PLC觸發就緒在觸發前進行檢查
I.Data[0].1相機 → PLC觸發確認在此訊號變為 HIGH 後解除鎖存觸發
I.Data[0].2相機 → PLC配方切換確認在此訊號變為 HIGH 後解除鎖存配方請求
I.Data[0].7相機 → PLC線上 / 啟動完成確認相機已啟動
I.Data[1].0相機 → PLC觸發錯誤監控觸發故障
I.Data[1].1相機 → PLC配方切換錯誤監控配方切換故障
I.Data[1].6相機 → PLC忙碌HIGH 時請勿傳送命令
I.Data[2].0相機 → PLC曝光完成影象已捕獲
I.Data[2].1相機 → PLC結果就緒可讀取透過/不透過結果
I.Data[2].2相機 → PLC檢查透過HIGH = 透過, LOW = 失敗
I.Data[8]--I.Data[9]相機 → PLC當前配方 ID切換後驗證配方
I.Data[12]--I.Data[13]相機 → PLC檢查 ID將結果與觸發條件相關聯
O.Data[0].0PLC → 相機觸發請求鎖存 HIGH 以觸發
O.Data[0].1PLC → 相機配方切換請求鎖存 HIGH 以切換配方
O.Data[4]--O.Data[5]PLC → 相機配方 ID設定所需的配方編號
O.Data[6]+PLC → 相機自定義資料用於 Node-RED 的使用者自定義資料
I.Data[16]+相機 → PLCROI 結果 / 自定義資料ROI 結果或自定義 Node-RED 輸出