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 则作为扫描器(或主站)运行。配置完成后,设备将在每个周期使用紧凑且可预测的格式交换结构化数据。
支持的功能
- 周期性 I/O 通信 - 支持 20–10,000 毫秒的周期时间
- 数据吞吐量 - 每个方向最多 256 字节
- 自定义数据处理 - 作为活动程序的一部分读取/写入 Node-RED 数据
输入组件 (OV10i → PLC)
输入组件包含每个周期从 OV10i 发送至 PLC 的数据。这包括系统状态、检查结果、程序信息和可选的 ROI 明细。

输出组件 (PLC → OV10i)
输出组件包含从 PLC 发送至 OV10i 的控制数据。您可以使用它来触发检查、更改程序或传入自定义参数。

时序和握手行为

自定义数据支持
OV10i 可以接受或返回额外的自定义数据,作为您的 Node-RED 流程的一部分。
PLC → OV10i
- 写入外部标志、阈值或计数器,以影响 Node-RED 中的逻辑
OV10i → PLC
- 返回计算值、测量值、时间戳或条件输出
自定义数据被填充到组件的扩展部分,从核心信号和程序信息之后开始。
ROI 结果明细(仅限分类程序)
对于分类程序,您可以使用 Overview 的自定义 Node-RED 节点 Format data for PLC 向 PLC 公开每个 ROI 的结果。
工作原理:
- 在 Node-RED 流程中放置在 All Blocks Output Data 和 Send Data to PLC 之间

-
自动填充从输入组件中第 16 字节开始的结构化 ROI 区域
-
每次检查最多支持 4 个 ROI
-
每个 ROI 包括:
- ROI ID
- 通过/失败位
- 置信度分数
- 保留字节,供将来使用
Format Data for PLC 节点仅适用于分类程序。

默认 PLC 标签参考
本节提供输入和输出组件中每个标签的完整参考,包括字节偏移量、位位置、数据类型和默认值。在配置 PLC 程序时,请将此作为权威的位映射使用。
在相机 UI 中查看默认标签的位置
- 打开相机 Web 界面(例如
http://192.168.1.100)。 - 在左侧边栏中导航至 Industrial Ethernet。
- 选择您当前使用的协议(EtherNet/IP 或 PROFINET)。
- 该页面显示当前的程序集配置,包括输入/输出数据大小和连接状态。
- 此页面上显示的默认标签布局与下表对应。
输入程序集标签(相机 → PLC)
这些标签由 PLC 读取。相机在每个 I/O 周期写入它们。
Byte 0 -- 状态标志位
| 位 | PLC 标签地址 | 标签名称 | 数据类型 | 描述 | 默认值 |
|---|---|---|---|---|---|
| 0 | I.Data[0].0 | Trigger Ready | BOOL | 相机已准备好接受触发。在发送触发请求之前必须为 HIGH。 | 0(启动后变为 HIGH) |
| 1 | I.Data[0].1 | Trigger Acknowledge | BOOL | 相机已接收并接受触发请求。 | 0 |
| 2 | I.Data[0].2 | Recipe Switch Acknowledge | BOOL | 相机已接收并完成程序切换请求。 | 0 |
| 7 | I.Data[0].7 | Online / Startup Complete | BOOL | 相机已完成启动并处于在线状态。 | 0(启动后变为 HIGH) |
Byte 1 -- 错误和状态标志位
| 位 | PLC 标签地址 | 标签名称 | 数据类型 | 描述 | 默认值 |
|---|---|---|---|---|---|
| 0 | I.Data[1].0 | Trigger Error | BOOL | 触发周期中发生错误。锁存直至被清除。 | 0 |
| 1 | I.Data[1].1 | Recipe Switch Error | BOOL | 程序切换过程中发生错误。锁存直至被清除。 | 0 |
| 6 | I.Data[1].6 | Busy | BOOL | 相机当前正在处理(运行检测或切换程序)。当为 HIGH 时不要发送新命令。 | 0 |
Byte 2 -- 检查结果标志位
| 位 | PLC 标签地址 | 标签名称 | 数据类型 | 描述 | 默认值 |
|---|---|---|---|---|---|
| 0 | I.Data[2].0 | Exposure Complete | BOOL | 图像曝光已完成。 | 0 |
| 1 | I.Data[2].1 | Inspection Completed / Result Available | BOOL | 检测处理已完成,结果有效。 | 0 |
| 2 | I.Data[2].2 | Inspection Pass | BOOL | 最终的通过/失败结果。HIGH = 通过,LOW = 失败。仅当 Result Available 为 HIGH 时有效。 | 0 |
Bytes 3--7 -- 保留
| 字节 | PLC 标签地址 | 标签名称 | 数据类型 | 描述 | 默认值 |
|---|---|---|---|---|---|
| 3 | I.Data[3] | Reserved | BYTE | 保留供将来使用。 | 0x00 |
| 4 | I.Data[4] | Reserved | BYTE | 保留供将来使用。 | 0x00 |
| 5 | I.Data[5] | Reserved | BYTE | 保留供将来使用。 | 0x00 |
| 6--7 | I.Data[6]--I.Data[7] | Reserved | BYTE | 保留供将来使用。 | 0x00 |
Bytes 8--9 -- 当前程序 ID
| 字节 | PLC 标签地址 | 标签名称 | 数据类型 | 描述 | 默认值 |
|---|---|---|---|---|---|
| 8--9 | I.Data[8]--I.Data[9] | Current Recipe 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 -- Inspection ID
| 字节 | PLC 标签地址 | 标签名称 | 数据类型 | 描述 | 默认值 |
|---|---|---|---|---|---|
| 12--13 | I.Data[12]--I.Data[13] | Inspection ID | UINT (16 位) | 每次检查时递增的 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 位) | 要切换到的程序 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 |
位映射图
以下基于文本的图表展示了两个 assembly 的完整字节/位布局。每一行代表一个字节(或字节范围),每一列代表一个位的位置(bit 7 在左侧,bit 0 在右侧)。
输入 Assembly 位映射图(相机 → 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 → 相机)
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 | Aligner Success | BOOL | 如果对齐器成功定位部件,则为 HIGH。 |
| 17--18 | I.Data[17]--I.Data[18] | Aligner Confidence | UINT (16-bit) | 对齐的置信度分数 (0--65535)。 |
| 19--20 | I.Data[19]--I.Data[20] | Aligner Angle | INT (16-bit, signed) | 相对于模板的匹配角度。 |
| 21--23 | I.Data[21]--I.Data[23] | Reserved (Aligner) | 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 to +3 | ROI Confidence | UINT (16-bit) | 此 ROI 分类的置信度分数 (0--65535)。 |
| +4 to +7 | Reserved | 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 中查看默认标签
默认标签布局由相机固件定义,并与上述表格对应。要查看当前配置:
- 打开相机 Web 界面。
- 在左侧菜单中前往 Industrial Ethernet。
- 选择您的协议(EtherNet/IP 或 PROFINET)。
- 页面显示:
- 连接状态和设备信息
- 输入和输出 assembly 大小(每个方向最多 256 字节)
- EDS 或 GSDML 文件下载链接(其中也编码了默认的 assembly 结构)
EDS 文件(用于 EtherNet/IP)和 GSDML 文件(用于 PROFINET)均定义了默认数据大小。当您在 Studio 5000 或 TIA Portal 中添加相机模块时,这些描述符文件中的 assembly 大小决定了每个周期交换的字节数。
创建自定义数据缓冲区
要在相机和 PLC 之间发送自定义数据(超出默认的状态/结果标签),请使用 "Format Data for PLC" Node-RED 模块:
- 从相机 Web 界面打开 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 结果格式化为从输入 Assembly 第 16 字节开始的结构化布局(请参见上方的 ROI Results Assembly Detail 部分)。
对于完全自定义的数据缓冲区(不使用默认的 ROI 格式):
- 在您的 Node-RED 流中,使用 Function 节点构建一个具有您所需字节布局的
msg.payload缓冲区。 - 将其连接到 "Send Data to PLC" 节点。
- 您的自定义字节将从第 16 字节开始填充到输入 Assembly 中。
- 在 PLC 端,读取对应的
I.Data[16]到I.Data[256]地址。
更改标签分配
核心标签(输入 Assembly 的字节 0--15 和输出 Assembly 的字节 0--5)由相机固件固定,无法重新分配。这些是系统级信号(触发、程序切换、状态、错误、程序 ID 和检查 ID)。
可配置区域为:
- 输入 Assembly 字节 16--256:由 Node-RED 填充。您可通过配置 Node-RED 流来控制此处的数据内容。"Format Data for PLC" 模块默认使用 ROI 结果填充此区域,或者您可以使用 Function 节点写入任意数据。
- 输出 Assembly 字节 6--256:由 Node-RED 读取。您可以从 PLC 将任意数据写入这些字节,然后在 Node-RED 流中使用相应的输入节点读取它们。这对于从 PLC 向相机发送序列号、批次 ID、阈值或其他参数非常有用。
从 PLC 向相机发送自定义数据(输出 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 | Camera → PLC | Trigger Ready | 触发前检查 |
I.Data[0].1 | Camera → PLC | Trigger Acknowledge | 此位变为 HIGH 后解除触发锁存 |
I.Data[0].2 | Camera → PLC | Recipe Switch Ack | 此位变为 HIGH 后解除程序切换请求锁存 |
I.Data[0].7 | Camera → PLC | Online / Startup Complete | 确认相机已启动 |
I.Data[1].0 | Camera → PLC | Trigger Error | 监测触发故障 |
I.Data[1].1 | Camera → PLC | Recipe Switch Error | 监测程序切换故障 |
I.Data[1].6 | Camera → PLC | Busy | 此位为 HIGH 时不要发送命令 |
I.Data[2].0 | Camera → PLC | Exposure Complete | 图像已捕获 |
I.Data[2].1 | Camera → PLC | Result Available | 可安全读取 pass/fail |
I.Data[2].2 | Camera → PLC | Inspection Pass | HIGH = 通过,LOW = 失败 |
I.Data[8]--I.Data[9] | Camera → PLC | Current Recipe ID | 切换后验证程序 |
I.Data[12]--I.Data[13] | Camera → PLC | Inspection ID | 将结果与触发关联 |
O.Data[0].0 | PLC → Camera | Trigger Request | 锁存 HIGH 以触发 |
O.Data[0].1 | PLC → Camera | Recipe Switch Request | 锁存 HIGH 以切换程序 |
O.Data[4]--O.Data[5] | PLC → Camera | Recipe ID | 设置目标程序编号 |
O.Data[6]+ | PLC → Camera | Custom Data | 用于 Node-RED 的用户自定义数据 |
I.Data[16]+ | Camera → PLC | ROI Results / Custom Data | ROI 结果或自定义 Node-RED 输出 |