4. PLC判定逻辑基础
视觉检测系统给出的是“结果数据”,而PLC要执行的是“动作指令”。两者之间必须经过一层判定逻辑,把检测结果翻译成PLC能理解的开关量、数值比较结果和时序条件。本节围绕输入输出点分配、布尔逻辑、比较指令、定时器与计数器四个基础要素,说明它们在联动判定中各自承担什么角色,以及如何组合成一条可落地的判定链。
一、输入输出点分配:先定义“谁说什么、谁做什么”
PLC联动判定的第一步不是写程序,而是分配I/O点。视觉检测系统与PLC之间的信号通常分为三类:触发类(PLC告诉相机“可以拍了”)、结果类(相机告诉PLC“OK/NG/数据值”)、状态类(相机就绪、通信正常、急停等)。分配时必须明确每个点的方向、有效电平和含义。
以一个典型检测工位为例,假设使用三菱FX系列或西门子S7-1200这类常见小型PLC,I/O分配可参考下表。注意:以下为教学示例参数,实际项目需按设备手册和电气图确认。
| 信号名称 | 方向 | 地址示例 | 有效电平 | 含义 |
|---|---|---|---|---|
| 相机触发 | PLC→相机 | Y0 | 高电平脉冲 | 启动一次拍照 |
| 检测完成 | 相机→PLC | X0 | 上升沿 | 结果已就绪 |
| OK结果 | 相机→PLC | X1 | 高电平 | 判定合格 |
| NG结果 | 相机→PLC | X2 | 高电平 | 判定不合格 |
| 测量值(模拟量) | 相机→PLC | AIW0 | 0~10V对应0~27648 | 尺寸/位置数值 |
| 剔除气缸 | PLC→执行 | Y1 | 高电平 | NG时推出工件 |
| 报警灯 | PLC→执行 | Y2 | 高电平 | NG或故障指示 |
分配时要注意:结果类信号建议用上升沿或脉冲,避免电平长期保持导致重复判定;模拟量输入要确认量程与相机输出一致,否则比较阈值会整体偏移。I/O分配表一旦确定,后续布尔逻辑和比较指令都基于这些地址编写,不能随意更改。
二、布尔逻辑:把多个条件组合成一个判定
布尔逻辑解决的是“多个条件同时满足才动作”或“任一条件满足就动作”的问题。在联动判定中,最常见的组合是:检测完成 AND 结果为NG AND 工件到位 → 剔除。用梯形图表达就是串联触点;如果是“NG或超差”则用并联。
实际编程时,建议把“结果有效”和“结果内容”分开处理。例如:
// 教学示例:NG判定与剔除输出
// X0: 检测完成上升沿
// X2: NG结果
// X3: 工件到位
// Y1: 剔除气缸
LD X0 // 检测完成
AND X2 // NG结果
AND X3 // 工件到位
OUT Y1 // 剔除气缸动作
这段逻辑的含义是:只有“检测完成”且“结果为NG”且“工件到位”三个条件同时成立,Y1才输出。如果缺少X3,可能在工件还没到位时就剔除,造成误动作;如果缺少X0,可能重复使用上一次结果。布尔逻辑的价值就在于把“什么时候用结果”和“结果是什么”严格区分开。
三、比较指令:处理数值型检测结果
视觉检测不仅输出OK/NG,还经常输出尺寸、角度、偏移量等数值。PLC用比较指令判断这些数值是否在允许范围内。以西门子S7-1200为例,比较指令包括CMP >=、CMP <=、CMP ==等;三菱FX系列则用<、>、=等比较触点。
假设相机输出“孔位偏移量”,模拟量通道AIW0对应0~27648,实际偏移范围-5.0~+5.0mm,则换算关系为:偏移量 = (AIW0 - 13824) / 27648 × 10.0。若允许偏差为±0.5mm,则对应模拟量阈值约为13824±1382,即下限12442、上限15206。程序中可写:
// 教学示例:偏移量超差判定
// AIW0: 偏移量模拟输入
// M10: 超差标志
LDW>= AIW0 15206 // 超过上限
ORW<= AIW0 12442 // 低于下限
= M10 // 超差标志置位
比较指令的关键是阈值来源:可以写死在程序里,也可以从HMI或配方中读取。写死适合固定产品,配方适合多品种切换。无论哪种方式,都要在调试时用已知标准件验证阈值是否对应正确,避免“数值对了但判定反了”。
四、定时器与计数器:处理时间和次数条件
定时器和计数器在联动判定中解决两类问题:持续时间和累计次数。例如:NG信号需要保持200ms以上才确认,避免相机抖动误报;连续3个工件NG则触发报警并停机;剔除气缸动作后需要延时500ms再复位,确保工件被推走。
以三菱FX系列为例,定时器T0设定值K200表示20秒(100ms时基),若需要200ms则用K2。计数器C0设定K3表示计满3次。典型逻辑如下:
// 教学示例:连续NG计数与报警
// X0: 检测完成上升沿
// X2: NG结果
// C0: 连续NG计数器,设定值K3
// Y2: 报警灯
LD X0
AND X2
OUT C0 K3 // 每次NG计数一次
LD C0
OUT Y2 // 计满3次报警
LD X1 // OK结果
RST C0 // OK时清零计数器
这里要注意:计数器必须在OK时复位,否则“连续NG”会变成“累计NG”。定时器则要注意时基选择,100ms时基适合几百毫秒级延时,10ms时基适合更短的精确定时。定时器和计数器的组合还能实现“NG持续超过2秒且累计超过5次”这类复合条件,但逻辑会变复杂,建议拆成中间标志位再组合。
五、四要素如何串成一条判定链
把上述四要素串起来,一条完整的联动判定链是:I/O分配定义信号入口和出口 → 布尔逻辑组合“何时判定”和“判定什么” → 比较指令处理数值型结果 → 定时器/计数器处理持续时间和累计次数 → 最终输出到执行机构。任何一个环节定义不清,都会导致误判、漏判或重复动作。
最后强调三个容易出错的点。第一,结果有效信号和结果内容信号要分开:X0表示“结果来了”,X1/X2表示“结果是什么”,两者不能混用。第二,比较阈值必须用标准件验证:模拟量换算容易在量程和偏移上出错,建议先用已知尺寸的标准件跑一遍,确认AIW0读数与显示值一致后再投入判定。第三,计数器复位条件要明确:连续NG计数必须在OK时清零,否则会变成累计NG,导致报警逻辑与预期不符。把I/O分配、布尔逻辑、比较指令、定时器与计数器四者按信号链顺序理清,PLC联动判定就有了可靠的基础。