1. 项目背景与核心需求
在工业自动化领域,物料分拣一直是生产线上的关键环节。特别是对于形状相似但尺寸不同的物体(如大小球体),传统人工分拣方式效率低下且容易出错。这个基于PLC的大小球分拣系统正是为解决这一痛点而设计。
我十年前第一次接触这类项目时,产线上的工人需要目不转睛地盯着传送带,凭肉眼判断球体大小然后手动分拣——不仅劳动强度大,而且到了下午疲劳时,错误率会明显上升。现在的自动化方案完全改变了这种状况。
这个系统的核心需求很明确:
- 实时检测传送带上球体的直径
- 准确区分"大球"(假设直径>50mm)和"小球"
- 通过气动装置将不同球体分拣到对应收集箱
- 整个过程要求分拣准确率≥99.5%
- 系统需24小时连续稳定运行
2. 系统整体设计方案
2.1 硬件架构解析
整个系统采用模块化设计,主要包含以下几个关键部分:
-
传感检测模块:
- 选用欧姆龙E3Z系列光电传感器作为位置检测
- Keyence激光测距仪用于精确测量球体直径(精度±0.1mm)
- 特别在传感器安装位置设计了45°倾斜支架,避免球体表面反光影响测量
-
执行机构:
- 采用SMC气动分拣装置
- 大球通道使用CDQ2B系列气缸(推力50N)
- 小球通道使用CJ2系列紧凑型气缸
- 每个气缸前端加装缓冲器,减少冲击噪音
-
控制核心:
- 西门子S7-1200 PLC作为主控制器
- 选用CPU 1214C型号(14输入/10输出)
- 扩展一个SM1223数字量模块(16输入/16输出)
-
人机界面:
- 西门子KTP700 Basic触摸屏
- 设计了两级操作界面:标准模式和维护模式
2.2 控制逻辑流程图
系统工作流程可以分解为以下几个关键步骤:
code复制[传感器就位] → [球体到达检测位] → [激光测径] → [大小判断]
→ [对应气缸动作] → [分拣完成] → [返回待机状态]
这个看似简单的流程在实际实现时需要处理很多细节问题。比如球体在传送带上的位置偏差、两个球体距离过近时的处理、传感器异常时的应急方案等。
3. PLC程序设计详解
3.1 关键变量定义
在TIA Portal中建立了以下核心变量表:
| 变量名 | 数据类型 | 地址 | 注释 |
|---|---|---|---|
| Ball_Dia | REAL | MD100 | 当前球体直径(mm) |
| Ball_Type | BOOL | M10.0 | 0=小球,1=大球 |
| Sensor_Ready | BOOL | I0.0 | 测位传感器信号 |
| Laser_Valid | BOOL | I0.1 | 激光测量有效信号 |
| Big_Cylinder | BOOL | Q0.0 | 大气缸控制信号 |
| Small_Cylinder | BOOL | Q0.1 | 小气缸控制信号 |
3.2 主控制程序(OB1)
使用SCL语言编写的主控制逻辑:
scl复制IF "Sensor_Ready" THEN
// 启动激光测量
"Laser_Trig" := TRUE;
// 等待测量完成(超时500ms)
#Timer(IN := TRUE, PT := T#500ms);
IF "Laser_Valid" THEN
"Ball_Dia" := "Laser_Value";
// 大小球判断
IF "Ball_Dia" > 50.0 THEN
"Ball_Type" := TRUE;
"Big_Cylinder" := TRUE;
#Timer2(IN := TRUE, PT := T#200ms);
"Big_Cylinder" := FALSE;
ELSE
"Ball_Type" := FALSE;
"Small_Cylinder" := TRUE;
#Timer3(IN := TRUE, PT := T#200ms);
"Small_Cylinder" := FALSE;
END_IF;
ELSE
// 测量超时处理
"Error_Count" := "Error_Count" + 1;
END_IF;
END_IF;
3.3 异常处理程序(OB35)
在循环中断组织块中实现的状态监控:
scl复制// 气缸动作超时检测
IF "Big_Cylinder" AND #Timer4.Q THEN
"Big_Cylinder" := FALSE;
"Alarm_101" := TRUE; // 大气缸卡死报警
END_IF;
// 连续错误计数
IF "Error_Count" > 5 THEN
"System_Stop" := TRUE;
"Alarm_001" := TRUE; // 系统急停报警
END_IF;
4. 关键技术与实现难点
4.1 高精度分拣的实现
要实现99.5%以上的分拣准确率,必须解决几个关键问题:
-
测量补偿算法:
- 球体在传送带上可能存在的偏心问题
- 开发了直径补偿算法:实际直径 = 测量值 / cos(θ)
- 通过实验确定了θ角的经验值为5°
-
动态响应优化:
- 传送带速度与气缸响应时间的匹配
- 通过公式计算最佳触发位置:
code复制提前量 = 传送带速度 × (PLC扫描周期 + 气缸响应时间) - 实测传送带速度1m/s时,提前量设置为120mm
-
抗干扰措施:
- 所有数字量输入信号加装RC滤波电路
- 模拟量信号采用4-20mA传输
- PLC接地单独引至接地桩
4.2 双球紧邻处理策略
当两个球体距离过近时,系统需要特殊处理:
-
在PLC中实现了一个先进先出(FIFO)缓冲区,可以暂存最多3个球体的测量数据
-
采用时间分割控制:
- 第一个球触发气缸后立即进入200ms锁定状态
- 在此期间检测到的球体存入缓冲区
- 锁定解除后按顺序处理缓冲球体
-
特殊情况下(如连续5个紧邻球)会触发降速处理,自动降低传送带速度
5. 系统调试与优化
5.1 调试步骤实录
-
单步测试模式:
- 通过HMI强制传感器信号
- 手动触发各个气缸动作
- 使用激光测距仪校准测量基准
-
空跑测试:
- 不放置球体,运行系统24小时
- 监测误动作次数(要求<3次/24h)
-
负载测试:
- 按最大设计容量1200个/小时连续运行
- 统计分拣准确率和设备温升
5.2 参数优化经验
通过大量实验获得的优化参数:
| 参数名称 | 初始值 | 优化值 | 优化效果 |
|---|---|---|---|
| 气缸动作时间 | 300ms | 200ms | 吞吐量提升15% |
| 激光采样次数 | 1次 | 3次取中 | 准确率提升0.3% |
| 传送带速度 | 1.2m/s | 1.0m/s | 能耗降低20% |
| FIFO缓冲区大小 | 2 | 3 | 紧邻处理成功率提升 |
重要提示:气缸动作时间不能低于180ms,否则会出现活塞未完全伸出就收回的情况,导致分拣失败。
6. 常见问题与解决方案
6.1 典型故障排查表
| 故障现象 | 可能原因 | 解决方案 |
|---|---|---|
| 测量值波动大 | 激光传感器镜面脏污 | 清洁镜面,加装防护罩 |
| 气缸动作迟缓 | 气压不足(<0.4MPa) | 检查气源压力,排查管路泄漏 |
| 小球误入大球通道 | 气缸行程末端未到位 | 调整气缸限位螺丝,校准传感器 |
| HMI显示通讯中断 | PROFINET接头松动 | 重新压接网线,检查交换机状态 |
| 系统频繁急停 | 接地不良引入干扰 | 单独敷设接地线,加装隔离变压器 |
6.2 维护保养要点
根据三年实际运行经验总结的维护计划:
-
日常维护:
- 每班次清洁传感器镜面
- 检查气源处理三联件油雾器油位
- 确认传送带张力适中
-
月度保养:
- 气缸活塞杆润滑(使用SMC专用润滑脂)
- 检查所有电气连接端子紧固度
- 备份PLC程序到外部存储
-
年度大修:
- 更换所有气管(预防老化破裂)
- 校准激光测距仪精度
- 更新PLC固件版本
7. 系统扩展与改进方向
7.1 现有系统升级
-
视觉辅助系统:
- 增加工业相机进行二次校验
- 使用OpenCV实现表面缺陷检测
- 与现有PLC通过OPC UA通信
-
能耗优化:
- 加装气动系统流量计
- 实现按需供气控制
- 预计可节能25%
7.2 新型分拣方案探索
-
并联机器人分拣:
- 测试Delta机器人分拣方案
- 最高速度可达200次/分钟
- 需要重新设计传送带布局
-
机器学习分类:
- 收集不同球体的振动特征
- 训练LSTM网络实现声音分类
- 可作为现有系统的冗余校验
在实际产线环境中,我们最终选择了相对成熟的PLC控制方案而非更先进的机器人方案——主要出于系统稳定性、维护便利性和成本综合考虑。这个选择也印证了一个道理:在工业自动化领域,最适合的方案不一定是技术最先进的,而是综合评估可靠性、可维护性和经济性的最优解。