跳到主要内容

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 输出