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 细分。

输出装配 (PLC → OV10i)
输出装配包含从 PLC 发送到 OV10i 的控制数据。可用于触发检测、修改配方,或传入自定义参数。

定时与握手行为

自定义数据支持
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 之间

-
自动填充一个从输入装配字节 16 开始的结构化 ROI 区域
-
每次检测最多支持 4 个 ROI
-
每个 ROI 包含:
- ROI ID
- Pass/fail 位
- 置信度分数
- 供将来使用的保留字节
Format Data for PLC 节点仅适用于 Classification Recipes。

默认 PLC 标签参考
本节提供输入与输出装配中每个标签的完整参考信息,包括字节偏移、位位置、数据类型和默认值。将其作为配置 PLC 程序时的权威位映射。
在相机 UI 中查看默认标签的位置
- 打开相机网页界面(例如,
http://192.168.1.100)。 - 在左侧边栏导航到 Industrial Ethernet。
- 选择您的活动协议 (EtherNet/IP 或 PROFINET)。
- 该页面显示当前的组装配置,包括输入/输出数据大小和连接状态。
- 本页显示的默认标签布局对应下方表格。
输入组装标签(相机 → PLC)
这些标签由 PLC 读取。相机在每个 I/O 周期写入它们。
字节 0 -- 状态标志
| 位 | PLC 标签地址 | 标签名 | 数据类型 | 描述 | 默认值 |
|---|---|---|---|---|---|
| 0 | I.Data[0].0 | 触发就绪 | BOOL | 相机已准备好接受触发。在发送触发请求之前必须处于高电平。 | 0(启动后变为高电平) |
| 1 | I.Data[0].1 | 触发确认 | BOOL | 相机已接收并接受触发请求。 | 0 |
| 2 | I.Data[0].2 | 配方切换确认 | BOOL | 相机已接收并完成配方切换请求。 | 0 |
| 7 | I.Data[0].7 | 在线 / 启动完成 | BOOL | 相机已完成引导并上线。 | 0(启动后变为高电平) |
字节 1 -- 错误与状态标志
| 位 | PLC 标签地址 | 标签名 | 数据类型 | 描述 | 默认值 |
|---|---|---|---|---|---|
| 0 | I.Data[1].0 | 触发错误 | BOOL | 触发周期中发生错误。错误会持续保持,直到清除。 | 0 |
| 1 | I.Data[1].1 | 配方切换错误 | BOOL | 配方切换期间发生错误。错误会锁存直至清除。 | 0 |
| 6 | I.Data[1].6 | 忙碌 | BOOL | 相机当前正在处理(检查处理中或配方切换中)。高电平时请勿发送新命令。 | 0 |
字节 2 -- 检查结果标志
| 位 | PLC 标签地址 | 标签名 | 数据类型 | 描述 | 默认值 |
|---|---|---|---|---|---|
| 0 | I.Data[2].0 | 曝光完成 | BOOL | 图像曝光已完成。 | 0 |
| 1 | I.Data[2].1 | 检查完成 / 结果可用 | BOOL | 检查处理已完成,结果有效。 | 0 |
| 2 | I.Data[2].2 | 检查通过 | BOOL | 最终通过/失败结果。高电平 = 通过,低电平 = 失败。仅在结果可用为高电平时有效。 | 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-bit) | 当前活动配方的 ID。与 O.Data[4] 进行比较以验证配方切换已完成。 | 0 |
字节 10--11 -- 保留
| 字节 | PLC 标签地址 | 标签名称 | 数据类型 | 描述 | 默认值 |
|---|---|---|---|---|---|
| 10--11 | I.Data[10]--I.Data[11] | Reserved | BYTE | 供将来使用的保留。 | 0x00 |
字节 12--13 -- 检验 ID
| 字节 | PLC 标签地址 | 标签名称 | 数据类型 | 描述 | 默认值 |
|---|---|---|---|---|---|
| 12--13 | I.Data[12]--I.Data[13] | Inspection ID | UINT (16-bit) | 随每次检验递增的滚动 16 位计数器。用于将结果与特定触发事件相关联。 | 0 |
字节 14--15 -- 保留
| 字节 | PLC 标签地址 | 标签名称 | 数据类型 | 描述 | 默认值 |
|---|---|---|---|---|---|
| 14--15 | I.Data[14]--I.Data[15] | Reserved | BYTE | 供将来使用的保留。 | 0x00 |
字节 16--256 -- ROI 结果组装 / 来自 Node-RED 的自定义数据
| 字节 | PLC 标签地址 | 标签名称 | 数据类型 | 描述 | 默认值 |
|---|---|---|---|---|---|
| 16--256 | I.Data[16]--I.Data[256] | ROI Results / Custom Data | BYTE[] | 当使用 "Format Data for PLC" Node-RED 块时,本区域将填充结构化的 ROI 结果。否则,可从 Node-RED 流获取自定义数据。 | 0x00 |
输出组装标签(PLC → 相机)
这些标签由 PLC 写入。相机在每个 I/O 循环中读取它们。
字节 0 -- 控制标志
| 位 | PLC 标签地址 | 标签名称 | 数据类型 | 描述 | 默认值 |
|---|---|---|---|---|---|
| 0 | O.Data[0].0 | Trigger Request | BOOL | 将 HIGH 设置以触发一次检查。锁存直到 Trigger Acknowledge (I.Data[0].1) 变为 HIGH,然后解除锁存。 | 0 |
| 1 | O.Data[0].1 | Recipe Switch Request | BOOL | 将 HIGH 设置以请求切换到 O.Data[4] 中的配方 ID。锁存直到 Recipe Switch Ack (I.Data[0].2) 变为 HIGH,然后解除锁存。 | 0 |
字节 1--3 -- 保留
| 字节 | PLC 标签地址 | 标签名称 | 数据类型 | 描述 | 默认值 |
|---|---|---|---|---|---|
| 1 | O.Data[1] | Reserved | BYTE | 供将来使用的保留。 | 0x00 |
| 2 | O.Data[2] | Reserved | BYTE | 供将来使用的保留。 | 0x00 |
| 3 | O.Data[3] | Reserved | BYTE | 供将来使用的保留。 | 0x00 |
字节 4--5 -- Recipe ID
| 字节 | PLC 标签地址 | 标签名称 | 数据类型 | 描述 | 默认值 |
|---|---|---|---|---|---|
| 4--5 | O.Data[4]--O.Data[5] | Recipe ID | UINT (16-bit) | 要切换到的配方 ID。请在设置 Recipe Switch Request 位之前,将所需的配方编号写入此处。 | 0 |
字节 6--256 -- Node-RED 的自定义数据
| 字节 | PLC 标签地址 | 标签名称 | 数据类型 | 描述 | 默认值 |
|---|---|---|---|---|---|
| 6--256 | O.Data[6]--O.Data[256] | Custom Data for Node-RED | BYTE[] | 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 0 | I.Data[16].0 | 对齐器通过情况 | BOOL | 当对齐器成功定位到工件时为 HIGH。 |
| 17--18 | I.Data[17]--I.Data[18] | 对齐器置信度 | UINT (16-bit) | 对齐度量的置信分数(0--65535)。 |
| 19--20 | I.Data[19]--I.Data[20] | 对齐器角度 | INT (16-bit, signed) | 相对于模板的匹配角度。 |
| 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-bit) | ROI 的唯一数字标识符。 |
| +1, bit 0 | ROI Pass | BOOL | HIGH = 此 ROI 通过,LOW = 此 ROI 失败。 |
| +2 到 +3 | ROI Confidence | UINT (16-bit) | 此 ROI 分类的置信分数(0--65535)。 |
| +4 到 +7 | 保留 | BYTE | 供未来每 ROI 数据使用的保留字段。 |
ROI 起始地址:
| ROI | 起始字节 | PLC 地址范围 | ID 地址 | Pass 地址 | Confidence 地址 |
|---|---|---|---|---|---|
| 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 中查看默认标签
默认标签布局由相机固件定义,并对应上方的表格。若要查看当前配置,请执行以下步骤:
- 打开相机网页界面。
- 在左侧菜单中点击 Industrial 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" 节点之间。
- 配置字节序:
- Little-endian 对于 Allen-Bradley / Rockwell PLC
- Big-endian 对于 Siemens PLC
- 该块会自动把分类 ROI 结果格式化为从 Input Assembly 的字节 16 起的结构化布局(见上方 ROI Results Assembly Detail 小节)。
对于完全自定义的数据缓冲区(不使用默认 ROI 格式):
- 在你的 Node-RED 流中,使用 Function 节点来构造一个
msg.payload缓冲区,按你希望的字节布局。 - 将其连接到 "Send Data to PLC" 节点。
- 你的自定义字节将从字节 16 开始填充 Input Assembly。
- 在 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:
- 在 PLC 程序中,将值写入
O.Data[6]至O.Data[256]。 - 在相机的 Node-RED 中,使用 PLC 输入数据节点读取那些字节。
- 在你的流逻辑中使用这些值(例如阈值、序列号、条件参数)。
有关从 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].0 | PLC → 相机 | 触发请求 | 锁存 HIGH 以触发 |
O.Data[0].1 | PLC → 相机 | 配方切换请求 | 锁存 HIGH 以切换配方 |
O.Data[4]--O.Data[5] | PLC → 相机 | 配方 ID | 设置所需的配方编号 |
O.Data[6]+ | PLC → 相机 | 自定义数据 | 用于 Node-RED 的用户自定义数据 |
I.Data[16]+ | 相机 → PLC | ROI 结果 / 自定义数据 | ROI 结果或自定义 Node-RED 输出 |