AI 驅動文件
您想了解什麼?
MES 與 PLC 整合模式
本頁面是控制工程師的參考文件,介紹相機如何融入實際工廠環境。它與 Integration Builder(用於生成 Node-RED 流程)和 IO Helper(用於生成接線方案和 API 呼叫序列)配合使用。
標準架構
在 90% 的安裝場景中,路徑是 MES → PLC → 相機,而不是 MES → 相機直連。
Per-part decisions (ms) Aggregate decisions (sec)
------------------------ --------------------------
Barcode scan ----+
Operator HMI ----+--> PLC --recipe ID--> Camera
MES work order --+ ^ |
| <--pass/fail-- |
| <--defect class--+
Reads result,
fires reject gate
in 10-50ms PLC packages event
{WO, lot, serial, recipe,
+----------------------------> result, defect, timestamp}
|
v
MES
(OEE, quality, traceability,
hold-the-order decisions)
|
v
ERP
關鍵要點:
- PLC 負責單個零件的剔除決策。它必須在毫秒級內響應。MES 無法勝任此任務(速度太慢、非確定性)。
- 相機 將 pass/fail 結果上報給 PLC,而不是直接上報給 MES。
- 程式選擇 透過 PLC 進行。MES 可以決定 應該 執行哪個程式,但由 PLC 將程式 ID 寫入相機(透過 EtherNet/IP
O.Data[4-5]或等效的 PROFINET 字)。 - MES 從 PLC 接收帶上下文的事件(工單、批次、序列號、工位、程式、透過/失敗、缺陷類別),並做出聚合決策(若廢品率超過閾值則暫停工單、提醒質量工程師、更新 OEE)。
- PLC 移位暫存器 根據編碼器脈衝索引,將檢測結果與下游剔除閘門的位置進行同步。
三種模式
A. PLC 向 MES 上報(標準模式)
預設模式。PLC 處理實時剔除。PLC 將結果與工單上下文一起打包,透過 OPC UA 或 MQTT 轉發到 MES。
適用場景: 任何帶 PLC 的生產線。常見於汽車、包裝、食品飲料、製藥行業。
Endpoint 呼叫序列(除錯時一次性配置):
| 步驟 | 方法 | 路徑 | 用途 |
|---|---|---|---|
| 1 | GET | /edge/download/industrial_ethernet/ethernet_ip_eds | 下載 EDS 檔案(與韌體匹配)。提供給 PLC 程式設計人員。 |
| 2 | POST | /edge/recipe/change_plc_recipe_id | 將相機程式對映為與 MES SKU 程式碼匹配的 PLC 友好 ID(1、2、3...)。 |
| 3 | POST | /edge/environmental_variables | 為 Node-RED 流程持久化工廠上下文(線體程式碼、MES URL)。 |
| 4 | GET | /edge/nodered/flow | 讀取當前活動程式的 Node-RED 流程。 |
| 5 | POST | /edge/nodered/flow | 部署已更新的流程,包含 OPC UA / MQTT 釋出器。 |
B. 相機與 PLC 並行釋出(現代並行模式)
PLC 仍負責剔除操作。相機同時將更豐富的資料負載(image_ref、缺陷類別、置信度)直接釋出到 MQTT 或 OPC UA,供歷史資料庫、儀表板和 AI 訓練使用。與 PLC 路徑並行執行,而非替代它。
適用場景: 採用統一名稱空間(Unified Namespace)方案的工廠(HiveMQ + Ignition + Grafana、Litmus Edge、HighByte)。新建的工業 4.0 站點。
端點呼叫順序:
| 步驟 | 方法 | 路徑 | 用途 |
|---|---|---|---|
| 1 | GET | /edge/nodered/flow | 讀取當前活動的流程。 |
| 2 | POST | /edge/nodered/flow | 部署包含 mqtt-out(或 sparkplug-out)並指向您的 broker 的流程。 |
| 3 | GET | /edge/capture_result | 可選:在初始同步期間回填歷史結果。 |
| 4 | GET | /edge/capture_result/{capture_id}/heatmap | OV80i:為失敗的檢查拉取缺陷熱力圖 PNG。 |
相機內建 MQTT broker,地址為 ws://{camera_ip}:9001/mqtt,因此小型部署無需外部 broker。
C. 獨立模式(無 PLC)
無生產 PLC。操作員應用程式或雲端 MES 透過 REST 直接與相機通訊:拉取工單、切換程式、觸發檢查、獲取結果。操作員充當執行器。
適用場景: 返工臺、實驗室檢查、來料檢查、使用平板電腦的 Tulip 風格雲端 MES、退貨/逆向物流。
不推薦用於: 高速輸送線(無實時剔除)、需要認證 PLC 安全邏輯的受監管環境。
端點呼叫順序(每次檢查):
| 步驟 | 方法 | 路徑 | 用途 |
|---|---|---|---|
| 1 | POST | /edge/api/recipes/{plc_recipe_id}/activate | 切換到與掃描的條形碼 / 工單匹配的程式。 |
| 2 | POST | /edge/camera/capture | 透過 REST 觸發單次檢查。 |
| 3 | GET | /edge/capture_result | 輪詢最新結果(或訂閱 MQTT 以獲取推送)。 |
| 4 | POST | /edge/v2/capture/{capture_id}/notes | OV80i:為捕獲附加工單上下文以便追溯。 |
| 5 | POST | /edge/camera/do | 可選:從 MES 應用程式觸發指示燈柱某一段。 |
標準檢查結果架構
無論採用何種模式或傳輸方式,以下是通用的資料負載。將其作為相機與 MES 之間的契約使用。
| 欄位 | 型別 | 必需 | 示例 |
|---|---|---|---|
timestamp | ISO 8601 | 是 | 2026-04-13T14:23:51.234Z |
part_id | string | 是 | SN-A7841 |
lot_id | string | 否 | L-2026-04-13-A |
work_order | string | 否 | WO-78451 |
station_id | string | 是 | STA-INSP-3 |
recipe_name | string | 是 | Bottle 330ml v3 |
result | enum (PASS / FAIL / INCONCLUSIVE) | 是 | PASS |
defect_class | string[] | 否 | ["scratch", "dent"] |
confidence | float (0.0 到 1.0) | 否 | 0.987 |
image_ref | URI | 否 | s3://acme-vision/2026/04/13/cap-12345.jpg |
operator_id | string | 否 | op.jane.doe |
cycle_time_ms | integer | 否 | 187 |
常見誤區
"MES告訴相機使用哪個程式。" 在標準PLC架構中是錯誤的。MES告訴PLC。PLC告訴相機。唯一的例外是模式C(無PLC)。
"MES做出剔除決策。" 錯誤。由PLC做出。MES僅做出聚合決策,例如"如果廢品率超過2%則暫停訂單"。
"相機直接向MES報告。" 在標準架構中是錯誤的。相機向PLC報告。PLC打包上下文資訊並轉發給MES。例外情況是模式B的並行路徑,其中相機還會將更豐富的有效負載釋出到MQTT/UNS以用於分析,但這與PLC路徑並行執行。
下一步
- 使用 IO Helper 連線相機 + PLC + 感測器,並生成EDS檔案、位對映和MES整合腳手架。
- 使用 Integration Builder 根據自然語言描述生成實際的 Node-RED 流程(MQTT釋出者、OPC UA寫入器、REST POST到MES等)。