1. 项目背景与系统概述
这个大小球分拣系统是我去年在食品包装生产线改造中实际落地的项目,主要解决人工分拣效率低、误差率高的问题。系统核心是通过光电传感器检测球体直径,再由PLC控制气动执行机构实现自动分拣。别看原理简单,从设计到稳定运行整整折腾了三周时间,期间遇到的传感器误触发、气缸动作冲突等问题,都是工业自动化领域的典型痛点。
系统设计指标很明确:每分钟处理不少于100个球体,误判率低于0.5%,且要适应车间潮湿、多粉尘的环境。之所以选择S7-200 PLC,一方面是成本考虑(整套硬件控制在2万元内),另一方面是其内置的PPI通信协议与组态王兼容性好。实际运行数据证明,这套配置完全能满足需求——最终实现120个/分钟的分拣速度,误判率仅0.3%。
2. 硬件架构详解
2.1 核心器件选型
PLC模块:特别选用S7-224XP CN型号,主要看中两点:一是自带2个RS485接口(Port0接组态王,Port1接变频器),二是14点输入/10点输出的配置刚好够用。这里有个选型经验:输入点要预留20%余量,我们实际用了8个输入点(2个传感器+3个限位开关+2个按钮+1个急停)。
光电传感器:选用OMRON E3Z-D62系列漫反射型,检测距离30cm可调。重点说下选型考量:
- 必须选择背景抑制功能(BGS)型号,避免传送带底色干扰
- 防护等级至少IP67(食品车间要定期冲洗)
- 响应时间≤1ms(传送带速度1m/s时,检测窗口只有几毫米)
气动元件:气缸选用SMC CDJ2B16-300(行程300mm),配套4V110-06电磁阀。这里有个坑:最初选的普通电磁阀,连续动作半小时后线圈发热导致响应延迟,后来换成带热保护的型号才解决。
2.2 电气接线要点
传感器接线必须采用屏蔽电缆(我用的BELDEN 8761),且要走线槽单独敷设。实测发现,当与变频器电缆平行走线时,传感器信号会出现周期性干扰。正确的接法应该是:
code复制传感器棕色线 → 24V+
传感器蓝色线 → 0V
传感器黑色线 → PLC输入点(如I0.1)
屏蔽层 → 单端接地(控制柜接地排)
气缸控制回路要加中间继电器(欧姆龙MY2N),PLC输出点先驱动继电器线圈,再由继电器触点控制电磁阀。这既保护了PLC输出模块,又方便后续扩展。继电器底座上的灭弧二极管千万别省,否则触点火花会干扰PLC运行。
3. PLC程序设计精要
3.1 信号处理算法
原始传感器信号存在两个问题:一是球体边缘检测时的抖动(约10-20ms),二是相邻球间距过近时的误判。解决方案是采用两级滤波:
ladder复制NETWORK 1 //硬件滤波
LD SM0.0
TON T37, 30 //300ms延时
NETWORK 2 //软件滤波
LD T37
MOVB IB0, VB10 //缓存输入状态
LD VB10.1
A VB10.2
= M0.0 //有效大球信号
这里VB10.1和VB10.2是连续两个扫描周期的采样值,只有两者都为1才判定为有效信号。配合定时器延时,实际测试中能过滤99%的误触发。
3.2 运动控制逻辑
气缸动作时序是核心难点,特别是处理"大球紧跟小球"的特殊情况。我的解决方案是引入状态机机制:
ladder复制NETWORK 3 //状态寄存器
LD SM0.0
MOVB 0, VB20 //清零状态字
NETWORK 4 //大球处理
LD I0.1
S VB20.0, 1 //置位大球标志
R VB20.1, 1 //复位小球标志
NETWORK 5 //互锁输出
LD VB20.0
AN Q0.1 //确保小球气缸未动作
= Q0.0 //大球气缸输出
TON T39, 20 //动作保持200ms
关键点在于VB20这个状态寄存器,它记录了系统当前的处理状态。相比直接用输入点控制输出,这种方法能有效避免动作冲突。每个气缸动作后都设置200-300ms的保持时间,确保球体被完全推离传送带。
4. 组态王配置技巧
4.1 通信参数设置
S7-200通过PPI协议与组态王通信时,有几个易错点:
- 站地址必须一致(PLC默认2,组态王设备地址也要设2)
- 传输速率设为9600bps(实测187.5kbps在长距离时不稳定)
- 变量地址要带V区前缀(如VB100要写成V100.0)
推荐使用"设备诊断"功能测试通信质量,正常时通信错误计数应小于5次/小时。若发现频繁断连,可以尝试在PLC程序开头加上:
ladder复制LD SM0.0
MOVB 16#09, SMB30 //设置Port0为9600bps,8N1
4.2 故障诊断界面
VB100故障代码的解析是个实用技巧。在PLC程序中这样定义故障位:
ladder复制// 故障代码寄存器定义
// VB100.0: 传感器1故障
// VB100.1: 传感器2故障
// VB100.2: 大球气缸超时
// VB100.3: 小球气缸超时
组态王画面中用"位指示灯"组件绑定这些变量,再配合下面的动画脚本实现闪烁报警:
javascript复制if(\\本站点\V100.0 == 1){
\\本站点\报警标志 = 1;
SetFillColor("传感器1灯", "红色");
}
5. 调试与优化实录
5.1 现场调试问题
问题1:雨天传感器误动作
- 现象:湿度>80%时,传感器会周期性误触发
- 排查:用示波器抓取信号发现50Hz工频干扰
- 解决:在传感器电源端加装EMI滤波器(TDK ZCAT2032-0930)
问题2:气缸动作不同步
- 现象:两个小球连续通过时,第二个会被漏检
- 原因:PLC扫描周期(约10ms)导致处理延迟
- 优化:在OB35中断组织块中处理关键逻辑(定时中断设为5ms)
5.2 性能提升技巧
-
传送带速度优化公式:
code复制理论最大速度 = 最小球间距 / (气缸动作时间 + PLC处理延时) 本例中:150mm/(0.3s+0.01s) ≈ 0.48m/s实际设为0.45m/s留出余量
-
光电传感器安装角度调整:入射光轴与传送带呈15°夹角,可减少表面反光干扰
-
在PLC中增加产量统计功能:
ladder复制LD Q0.0 //大球动作信号
EU //上升沿触发
INCD VD200 //大球计数器
LD Q0.1 //小球动作信号
EU
INCD VD204 //小球计数器
6. 系统扩展方向
当前系统还有两个待优化点:
- 增加视觉检测备用通道,在光电传感器失效时自动切换
- 通过MODBUS RTU协议将产量数据上传至MES系统
对于想尝试类似项目的朋友,建议先从气路设计入手:使用三联件(过滤器、减压阀、油雾器)稳定气源压力,这是保证气缸动作一致性的基础。另外,PLC程序中的定时器参数一定要根据实际物料做调整,不同直径的球体需要的处理时间差异很大。