AI 驱动文档
您想了解什么?
MES 与 PLC 集成模式
本页是控制工程师参考手册,描述相机在实际工厂中的集成方式。它与 Integration Builder(用于生成 Node-RED 流)以及 IO Helper(用于生成接线+ API 调用序列)配套。
标准架构
在 90% 的安装场景中,路径为 MES → PLC → Camera,而不是直接从 MES → Camera。
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 做不到这一点(太慢、不可确定)。
- 相机 将通过/失败的结果报告给 PLC,而不是直接报告给 MES。
- Recipe selection 通过 PLC 流转。MES 可能决定 which recipe 应该运行,但 PLC 将 recipe ID 写入相机(通过 EtherNet/IP
O.Data[4-5]或等效的 PROFINET 字)。 - MES 从 PLC 接收上下文化事件(work order、lot、serial、station、recipe、pass/fail、defect class),并做出聚合决策(当 scrap rate 超过阈值时暂停工单、通知质量工程师、更新 OEE)。
- PLC shift register 将检验结果与下游拒绝门位置同步,时间以编码器脉冲为索引。
三种模式
A. PLC 向 MES 汇报(标准模式)
默认模式。PLC 处理实时拒绝。PLC 将带有工单上下文的结果打包并通过 OPC UA 或 MQTT 转发至 MES。
适用场景: 任何带 PLC 的生产线。在汽车、包装、食品/饮料、制药等行业常见。
端点序列(在调试/投产时仅设置一次):
| 步骤 | 方法 | 路径 | 目的 |
|---|---|---|---|
| 1 | GET | /edge/download/industrial_ethernet/ethernet_ip_eds | 下载 EDS 文件(固件匹配)。交给 PLC 程序员。 |
| 2 | POST | /edge/recipe/change_plc_recipe_id | 将 camera 的 recipe 映射到 PLC 友好 ID(1、2、3…),以匹配 MES SKU 代码。 |
| 3 | POST | /edge/environmental_variables | 将 plant context(产线代码、MES URL)持久化,用于 Node-RED flow。 |
| 4 | GET | /edge/nodered/flow | 读取活动的 Node-RED flow。 |
| 5 | POST | /edge/nodered/flow | 部署更新后的 flow,搭载 OPC UA / MQTT 发布器。 |
B. 相机与 PLC 并行发布(现代并行架构)
PLC 仍然处理不合格件的判定。相机也直接向 MQTT 或 OPC UA 发布更丰富的有效载荷(image_ref、defect class、confidence),用于历史数据库、仪表板和 AI 训练。与 PLC 路径并行运行,而非取代它。
使用场景: 实施 Unified Namespace 的工厂(HiveMQ + Ignition + Grafana、Litmus Edge、HighByte)。新建的工业4.0 站点。
端点序列:
| Step | Method | Path | Purpose |
|---|---|---|---|
| 1 | GET | /edge/nodered/flow | 读取当前活动流程。 |
| 2 | POST | /edge/nodered/flow | 部署一个 flow,使用 mqtt-out(或 sparkplug-out),指向你的代理服务器。 |
| 3 | GET | /edge/capture_result | 可选:在初始同步期间回填历史结果。 |
| 4 | GET | /edge/capture_result/{capture_id}/heatmap | OV80i:获取失败检查的缺陷热图 PNG。 |
相机内置 MQTT 代理服务器,地址为 ws://{camera_ip}:9001/mqtt,因此小型部署无需外部代理服务器。
C. 独立模式(无 PLC)
没有生产 PLC。操作员应用程序或云 MES 通过 REST 直接与相机通信:拉取工单、切换配方、触发检查、获取结果。操作员即执行器。
使用场景: 返工工位、实验室检查、来料检验、带平板的 Tulip 风格云 MES,以及退货/反向物流。
不推荐用于: 高速传送线(无法实现实时拒绝)、需要具备认证 PLC 安全逻辑的受监管环境。
端点序列(每次检查):
| Step | Method | Path | Purpose |
|---|---|---|---|
| 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 to 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 告诉相机。唯一的例外是 Pattern C(没有 PLC)。
"MES 做出拒绝决定。" 错误。是 PLC 做的。MES 只做聚合决策,例如“如果废品率超过 2% 则暂停工单。”
"相机直接向 MES 汇报。" 在标准架构中这是错误的。相机汇报给 PLC。PLC 将数据打包并带上上下文后转发给 MES。唯一的例外是 Pattern B 的并行路径,其中相机 也向 MQTT/UNS 发布更丰富的有效载荷用于分析,但这条路径与 PLC 路径并行运行。
下一步
- 使用 IO Helper 将相机 + PLC + 传感器连线并生成 EDS 文件、位映射,以及 MES 集成脚手架。
- 使用 Integration Builder 基于自然语言描述生成实际的 Node-RED 流(MQTT 发布器、OPC UA 写入器、向 MES 发送 REST POST 请求 等)。