跳到主要内容

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

OV10i 输入组件的字节和位布局

输出组件 (PLC → OV10i)

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

OV10i 输出组件的字节和位布局

时序和握手行为

EtherNet/IP 触发时序图

自定义数据支持

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 之间

Format Data for PLC Node-RED 流程示例

  • 自动填充从输入组件中第 16 字节开始的结构化 ROI 区域

  • 每次检查最多支持 4 个 ROI

  • 每个 ROI 包括:

    • ROI ID
    • 通过/失败位
    • 置信度分数
    • 保留字节,供将来使用
注意

Format Data for PLC 节点仅适用于分类程序。

OV10i 输出组件的字节和位布局


默认 PLC 标签参考

本节提供输入和输出组件中每个标签的完整参考,包括字节偏移量、位位置、数据类型和默认值。在配置 PLC 程序时,请将此作为权威的位映射使用。

在相机 UI 中查看默认标签的位置

  1. 打开相机 Web 界面(例如 http://192.168.1.100)。
  2. 在左侧边栏中导航至 Industrial Ethernet
  3. 选择您当前使用的协议(EtherNet/IPPROFINET)。
  4. 该页面显示当前的程序集配置,包括输入/输出数据大小和连接状态。
  5. 此页面上显示的默认标签布局与下表对应。

输入程序集标签(相机 → PLC)

这些标签由 PLC 读取。相机在每个 I/O 周期写入它们。

Byte 0 -- 状态标志位

PLC 标签地址标签名称数据类型描述默认值
0I.Data[0].0Trigger ReadyBOOL相机已准备好接受触发。在发送触发请求之前必须为 HIGH。0(启动后变为 HIGH)
1I.Data[0].1Trigger AcknowledgeBOOL相机已接收并接受触发请求。0
2I.Data[0].2Recipe Switch AcknowledgeBOOL相机已接收并完成程序切换请求。0
7I.Data[0].7Online / Startup CompleteBOOL相机已完成启动并处于在线状态。0(启动后变为 HIGH)

Byte 1 -- 错误和状态标志位

PLC 标签地址标签名称数据类型描述默认值
0I.Data[1].0Trigger ErrorBOOL触发周期中发生错误。锁存直至被清除。0
1I.Data[1].1Recipe Switch ErrorBOOL程序切换过程中发生错误。锁存直至被清除。0
6I.Data[1].6BusyBOOL相机当前正在处理(运行检测或切换程序)。当为 HIGH 时不要发送新命令。0

Byte 2 -- 检查结果标志位

PLC 标签地址标签名称数据类型描述默认值
0I.Data[2].0Exposure CompleteBOOL图像曝光已完成。0
1I.Data[2].1Inspection Completed / Result AvailableBOOL检测处理已完成,结果有效。0
2I.Data[2].2Inspection PassBOOL最终的通过/失败结果。HIGH = 通过,LOW = 失败。仅当 Result Available 为 HIGH 时有效。0

Bytes 3--7 -- 保留

字节PLC 标签地址标签名称数据类型描述默认值
3I.Data[3]ReservedBYTE保留供将来使用。0x00
4I.Data[4]ReservedBYTE保留供将来使用。0x00
5I.Data[5]ReservedBYTE保留供将来使用。0x00
6--7I.Data[6]--I.Data[7]ReservedBYTE保留供将来使用。0x00

Bytes 8--9 -- 当前程序 ID

字节PLC 标签地址标签名称数据类型描述默认值
8--9I.Data[8]--I.Data[9]Current Recipe IDUINT (16-bit)当前活动程序的 ID。与 O.Data[4] 比较以验证程序切换已完成。0

字节 10--11 -- 保留

字节PLC 标签地址标签名称数据类型描述默认值
10--11I.Data[10]--I.Data[11]ReservedBYTE保留供将来使用。0x00

字节 12--13 -- Inspection ID

字节PLC 标签地址标签名称数据类型描述默认值
12--13I.Data[12]--I.Data[13]Inspection IDUINT (16 位)每次检查时递增的 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 位)要切换到的程序 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

位映射图

以下基于文本的图表展示了两个 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 0I.Data[16].0Aligner SuccessBOOL如果对齐器成功定位部件,则为 HIGH。
17--18I.Data[17]--I.Data[18]Aligner ConfidenceUINT (16-bit)对齐的置信度分数 (0--65535)。
19--20I.Data[19]--I.Data[20]Aligner AngleINT (16-bit, signed)相对于模板的匹配角度。
21--23I.Data[21]--I.Data[23]Reserved (Aligner)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 to +3ROI ConfidenceUINT (16-bit)此 ROI 分类的置信度分数 (0--65535)。
+4 to +7ReservedBYTE保留供未来每个 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. 打开相机 Web 界面。
  2. 在左侧菜单中前往 Industrial Ethernet
  3. 选择您的协议(EtherNet/IPPROFINET)。
  4. 页面显示:
    • 连接状态和设备信息
    • 输入和输出 assembly 大小(每个方向最多 256 字节)
    • EDS 或 GSDML 文件下载链接(其中也编码了默认的 assembly 结构)

EDS 文件(用于 EtherNet/IP)和 GSDML 文件(用于 PROFINET)均定义了默认数据大小。当您在 Studio 5000 或 TIA Portal 中添加相机模块时,这些描述符文件中的 assembly 大小决定了每个周期交换的字节数。

创建自定义数据缓冲区

要在相机和 PLC 之间发送自定义数据(超出默认的状态/结果标签),请使用 "Format Data for PLC" Node-RED 模块:

  1. 从相机 Web 界面打开 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 结果格式化为从输入 Assembly 第 16 字节开始的结构化布局(请参见上方的 ROI Results Assembly Detail 部分)。

对于完全自定义的数据缓冲区(不使用默认的 ROI 格式):

  1. 在您的 Node-RED 流中,使用 Function 节点构建一个具有您所需字节布局的 msg.payload 缓冲区。
  2. 将其连接到 "Send Data to PLC" 节点。
  3. 您的自定义字节将从第 16 字节开始填充到输入 Assembly 中。
  4. 在 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:

  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].0Camera → PLCTrigger Ready触发前检查
I.Data[0].1Camera → PLCTrigger Acknowledge此位变为 HIGH 后解除触发锁存
I.Data[0].2Camera → PLCRecipe Switch Ack此位变为 HIGH 后解除程序切换请求锁存
I.Data[0].7Camera → PLCOnline / Startup Complete确认相机已启动
I.Data[1].0Camera → PLCTrigger Error监测触发故障
I.Data[1].1Camera → PLCRecipe Switch Error监测程序切换故障
I.Data[1].6Camera → PLCBusy此位为 HIGH 时不要发送命令
I.Data[2].0Camera → PLCExposure Complete图像已捕获
I.Data[2].1Camera → PLCResult Available可安全读取 pass/fail
I.Data[2].2Camera → PLCInspection PassHIGH = 通过,LOW = 失败
I.Data[8]--I.Data[9]Camera → PLCCurrent Recipe ID切换后验证程序
I.Data[12]--I.Data[13]Camera → PLCInspection ID将结果与触发关联
O.Data[0].0PLC → CameraTrigger Request锁存 HIGH 以触发
O.Data[0].1PLC → CameraRecipe Switch Request锁存 HIGH 以切换程序
O.Data[4]--O.Data[5]PLC → CameraRecipe ID设置目标程序编号
O.Data[6]+PLC → CameraCustom Data用于 Node-RED 的用户自定义数据
I.Data[16]+Camera → PLCROI Results / Custom DataROI 结果或自定义 Node-RED 输出