1. 项目背景与核心需求
去年参与的一个物流自动化改造项目让我对PLC控制系统产生了浓厚兴趣。当时客户需要将传统人工分拣升级为自动化系统,要求处理速度达到每小时2000件,准确率99.9%以上。经过方案对比,最终选择了三菱FX5U PLC搭配组态王Kingview的方案组合。
这套系统的核心挑战在于:
- 需要实时处理多种传感器信号(光电、重量、尺寸检测)
- 同步控制5条分拣传送带和8个机械臂
- 与上层MES系统进行数据交互
- 操作人员需要直观的监控界面
2. 硬件架构设计
2.1 PLC选型与配置
选择三菱FX5U-64MT/ES主要考虑:
- 32点输入/32点输出满足当前需求
- 内置以太网接口方便与组态王通信
- 支持结构化文本编程
- 扩展模块槽位充足
关键硬件连接:
- 输入模块:FX5-16EX/ES(接光电传感器)
- 输出模块:FX5-16EYR/ES(控制电磁阀)
- 模拟量模块:FX5-4AD(接重量传感器)
- 通信模块:FX5-ENET(与上位机通信)
2.2 传感器系统
- 光电传感器(E3Z-T61):检测货物到达
- 称重传感器(ZSF-20KG):检测货物重量
- 尺寸检测(KEYENCE IL-030):测量外廓尺寸
- 条码阅读器(Datalogic QD2430):识别货物信息
3. 软件系统实现
3.1 PLC程序设计(GX Works3)
采用结构化文本(ST)编程,核心逻辑包括:
st复制// 主控制程序
PROGRAM Main
VAR
bStart : BOOL; // 启动信号
bEmergency : BOOL := FALSE; // 急停信号
iCurrentPos : INT; // 当前位置
END_VAR
IF NOT bEmergency THEN
// 传送带控制逻辑
IF bStart AND Sensor_In THEN
Motor_Forward(TRUE);
iCurrentPos := Get_Position();
// 分拣判断
CASE Get_Goods_Type() OF
1: Route_To_Line1();
2: Route_To_Line2();
// ...其他分拣线路
END_CASE;
END_IF;
END_IF;
3.2 组态王界面开发
关键界面元素:
-
主监控画面:
- 实时传送带状态动画
- 分拣数据统计面板
- 设备状态指示灯
-
参数设置画面:
- 分拣规则配置
- 速度调节滑块
- I/O测试工具
-
数据记录画面:
- 分拣历史记录表格
- 异常报警日志
- 产量统计图表
重要脚本示例:
vb复制' 数据记录脚本
Sub OnDataArrival()
Dim sData As String
sData = ReadPLC("D100") ' 读取PLC数据
' 写入数据库
SQLInsert "INSERT INTO Log VALUES('" & Now & "','" & sData & "')"
' 更新界面
TextBox1.Text = sData
UpdateChart()
End Sub
4. 通信配置要点
4.1 PLC与组态王通信
采用MC协议以太网通信:
-
PLC侧设置:
- IP地址:192.168.1.10
- 端口号:5002
- 通信参数:9600,8,N,1
-
组态王配置:
ini复制[Device1]
Type=MITSUBISHI_FX
IP=192.168.1.10
Port=5002
Timeout=3000
4.2 数据映射关系
建立的关键变量链接:
| PLC地址 | 组态王变量 | 说明 |
|---|---|---|
| D100 | Weight | 当前货物重量 |
| M10 | RunStatus | 运行状态 |
| Y0 | Motor1 | 传送带1控制 |
5. 调试经验与问题解决
5.1 典型问题排查表
| 现象 | 可能原因 | 解决方案 |
|---|---|---|
| 通信中断 | IP冲突/网线松动 | 检查网络配置和物理连接 |
| 分拣错误 | 传感器灵敏度不足 | 调整传感器位置和阈值 |
| 界面数据不同步 | 通信周期设置过长 | 将轮询周期从1s改为200ms |
| PLC程序卡死 | 扫描周期超时 | 优化程序结构,减少循环嵌套 |
5.2 重要调试技巧
-
使用GX Works3的在线监控功能时:
- 设置触发条件捕获特定状态
- 利用趋势图观察模拟量变化
- 对关键变量添加书签方便快速定位
-
组态王调试建议:
- 先测试单个变量通信再扩展
- 使用"通信测试"工具验证连接
- 启用详细日志记录排查问题
6. 系统优化方向
在实际运行三个月后,我们做了以下改进:
- 增加缓冲机制:在分拣前增加暂存区,解决瞬时高峰问题
- 优化数据库:将Access改为SQLite,提高记录查询速度
- 添加视觉检测:整合工业相机进行二次校验
- 完善报警系统:分级报警(警告/严重/紧急)
这套系统最终实现了:
- 分拣速度:2200件/小时
- 准确率:99.93%
- 故障率:<0.5次/周
- 操作人员培训时间:<2小时
对于想尝试类似项目的工程师,我的建议是:
- 先做好详细的信号流程图
- 分模块测试再整体联调
- 预留20%的I/O余量
- 文档记录每个修改版本
