跳到主要内容

AI 驱动文档

您想了解什么?

PLC 握手

PLC 与 OV Spark Pro 之间的每次交互都遵循握手机制:PLC 发起请求,相机确认,PLC 在看到确认后撤销请求。共有四种握手:触发、读取结果、程序切换 和 命令。

本页面面向编写 PLC 逻辑的控制工程师。EtherNet/IP 和 PROFINET 下工作方式相同。

简而言之
  • 发起请求前始终等待相机的 ready 位,并保持请求直到看到 ack
  • 根据 Results Valid 和 变化的 Inspection ID 读取结果,切勿仅依赖切换信号
  • 必须确认每个结果,否则不会呈现新结果
本页使用信号名称,字节偏移以生成的文件为准

本页特意使用信号名称而非地址。字节和位的布局是按固件生成的,请从相机固件对应的 EDS 或 GSDML 文件中获取,或从相机工业以太网页面上的参考章节中获取。手动输入偏移是导致更新后读取错误位的常见原因。

触发​

  1. 检查 Online = 1、Trigger Ready = 1 以及 Trigger Ack = 0。写入 Part ID,如果使用 User Data 也一并写入,然后拉高 Trigger 并保持
  2. 相机在上升沿接受:Trigger Ready 降为 0,Trigger Ack 升为 1,Part ID 和 User Data 被锁存。如果拒绝触发,Trigger Error 升高,Error ID 说明原因
  3. 当看到 Trigger Ack = 1 时,拉低 Trigger
  4. 相机拉低 Trigger Ack。曝光结束时 Exposure Complete 置位,下一次采集可以开始时 Trigger Ready 返回 1
注意事项
  • 保持 Trigger 高电平不会重新触发。 相机仅响应上升沿
  • Trigger Error 报告的是来自任何来源的最近一次触发,不仅是你的触发。请读取 Error ID 获取原因,而不是臆断触发过快
  • Trigger Ready = 1 时 Busy = 1 是正常的,这说明图像缓冲区正在使用中。相机可以在当前检测完成前接受下一次触发。不要将此锁存为故障

读取结果​

一个握手机制同时覆盖两种模式。当 Buffer Results Enable = 0 时,结果是实时的,每个新结果都会覆盖上一个。当 Buffer Results Enable = 1 时,最多可排队 10 个结果。

  1. 等待 Results Valid = 1
  2. 在一个扫描周期内读取所有结果字段,同时读取 Inspection ID
  3. 拉高 Inspection Results Ack 并保持。相机出队,Results Valid 以及通过和失败位降为 0
  4. 当看到 Results Valid = 0 时,拉低 Ack。如果队列中还有更多结果,下一个将在该下降沿呈现

将 Results Valid 从 0 到 1 并伴随 Inspection ID 变化 视为新结果。

注意事项
  • Inspection Completed 是切换信号,不是电平。 在缓冲模式下它标志完成而非呈现,因此在结果字段保持不变时它也可能翻转。切勿仅依据切换读取结果
  • 实时模式可能隐藏某次检测。 一个数据包周期内发生的两次完成可能看起来只是一次翻转。缓冲模式不受此影响
  • 更改 Buffer Results Enable 会丢弃队列和当前呈现的结果,任一边沿都是如此
  • Inspection ID 中出现间隔意味着某次已接受的触发未产生结果:被中止、丢弃或抑制
  • 当 Ack 保持高电平时,不会呈现任何新内容,无论完成多少次检测

总体判定在 Inspection Pass 和 Inspection Fail 中。两者均为 0 表示没有结果。按工具的详细信息来自你在 步骤 5:输出 中分配的槽位。

程序切换​

  1. 检查 Recipe Switch Ack = 0,写入 Recipe ID,然后拉高 Recipe Switching Request
  2. 若接受:Recipe Switch Ack 升高,Trigger Ready 降低,Online 降低且 Offline Reason = 3(正在加载程序)。若拒绝:Recipe Switch Error 升高,报告未知程序或忙错误
  3. 加载完成时:Current Recipe ID、Recipe Version 和 Tool Count 更新,Recipe Load Complete 升高,Online 返回 1
  4. 拉低 Recipe Switching Request。相机清除 Ack 和 Recipe Load Complete
注意事项
  • 从请求的上升沿到 Ack 期间 Recipe ID 保持不变
  • 正在处理中的部件按旧程序完成判定。 它们在 Recipe ID During Judgment 中携带旧的程序 ID,因此解读结果时请使用该字段,而不是 Current Recipe ID
  • 队列中的结果在切换后保留,并保留对其判定的程序
  • 如果加载失败,之前的程序仍保持加载状态
  • Recipe ID 是在 步骤 5:输出 中设置的 PLC 程序 ID。复制或导入一个程序会赋予它一个新的 ID

命令​

  1. 检查 Command Ready = 1,写入 Command ID 和 Command Arg 0 到 3,然后拉高 Execute Command 并保持
  2. 相机锁存 ID 和参数:Command Ready 降低,Command Executing 升高
  3. 执行完成时,一次更新中会同时携带 Command Response 0 到 3、Command Result Code、Command Executing = 0、Command Complete = 1,以及失败时的 Command Failed = 1。这些永远不会跨扫描周期拆分
  4. 读取响应并拉低 Execute Command。相机清除 Command Complete 并将 Command Ready 返回为 1

命令列表和结果代码位于相机工业以太网页面的 Command reference 和 Codes 章节中。

稳健的 PLC 序列​

对于典型产线,能在生产中可靠运行的逻辑如下:

  1. 部件到位时,等待 Trigger Ready,然后触发
  2. 等待 Results Valid 并伴随新的 Inspection ID
  3. 读取判定、所需的槽位,以及 Recipe ID During Judgment
  4. 确认
  5. 根据判定执行动作,通过 Part ID 或 Inspection ID 将结果与部件匹配
通过 ID 而不是时序将结果与部件匹配

假设下一个结果属于下一个部件,这在第一次触发丢失之前都有效。为每次触发写入 Part ID 并检查它随结果返回,这样即使漏掉一个部件,也不会使其后的每个判定错位。

返回入门路径连接到您的 PLC