在工业自动化领域,物料分拣是最基础却至关重要的环节。去年我们车间那条服役十年的老式分拣线频繁卡料,维修单堆起来有半人高。最终决定用三菱FX2N-32MT PLC搭配组态王软件,打造一套金属/塑料件自动分拣系统。这套系统运行半年以来,分拣准确率稳定在99.8%以上,故障率降低90%,成为车间智能化改造的标杆案例。
这个项目完整涵盖了PLC控制的三大核心要素:硬件组态(传感器选型与接线)、逻辑编程(梯形图设计)、人机交互(组态画面开发)。不同于教科书上的理想化案例,本文将重点分享实际工程中那些"踩坑才能学会"的实战经验——比如如何避免气缸卡死、传感器误触发等典型问题,以及组态画面中那些提升操作效率的"隐藏技能"。
金属检测选用欧姆龙E2E-X5ME1电感式接近开关,其核心参数需要特别关注:
光电传感器选用基恩士PS-25反射型,安装时需注意:
FX2N-32MT的输入输出分配遵循"功能分区"原则:
| 信号类型 | 地址 | 设备 | 备注 |
|---|---|---|---|
| 输入 | X0 | 启动按钮(NO) | 带绿色指示灯 |
| X1 | 停止按钮(NC) | 急停串联回路 | |
| X2 | 光电传感器 | 需加1ms软件去抖 | |
| X3 | 金属检测传感器 | 屏蔽线接地处理 | |
| 输出 | Y0 | 气缸1(金属) | 电磁阀配续流二极管 |
| Y1 | 气缸2(塑料) | 气路加快速排气阀 | |
| Y2 | 传送带电机 | 变频器控制启停 |
关键经验:所有数字量输入信号必须通过中间继电器隔离,避免PLC输入点直接带负载。我们曾因电机干扰导致X2误触发,加装OMRON MY2N-J继电器后问题彻底解决。
推料气缸选用SMC CDQ2B50-50D:
气管布局要避免直角弯折,使用尼龙扎带每隔30cm固定一次。曾因气管震动导致传感器信号异常,后来改用PU管并加装防震支架。
采用"状态机+子程序"结构:
code复制主程序OB1
├─ 初始化子程序P0
├─ 手动模式P1
├─ 自动运行P2
│ ├─ 传送带控制P20
│ ├─ 材质判断P21
│ └─ 气缸动作P22
└─ 故障处理P3
关键指令说明:
原始检测程序存在"竞争冒险"问题:
ladder复制|--[X002]--[MOV K1 D0]--| (金属)
|--[X003]--[MOV K2 D0]--| (塑料)
改进方案:
ladder复制|--[X002]--[MPS]--[X003]--[MOV K1 D0]--[MPP]--[MOV K2 D0]--|
增加MPS/MPP指令堆栈处理,确保在光电传感器(X2)触发后的一个扫描周期内完成材质判断。实测显示误判率从3%降至0.2%。
标准气缸动作时序:
关键陷阱:
我们通过以下程序避免双气缸同时动作:
ladder复制|--[Y000]--[INHIBIT Y001]--|
|--[Y001]--[INHIBIT Y000]--|
传送带动画制作步骤:
报警弹窗高级设置:
vb复制Sub OnAlarm()
If {PLC.M8000} = 1 Then
PopupMessage "电池电压低", 2
PlaySound "alert.wav"
End If
End Sub
创建密码保护调试界面:
vb复制Dim debugMode
If {PLC.D100} = 1234 Then
debugMode = True
SetVisibility "DebugPanel", True
End If
调试参数保存方案:
vb复制Sub SaveParams()
WriteIni "C:\Config.ini", "Timing", "Cylinder1", {PLC.D200}
WriteIni "C:\Config.ini", "Timing", "Cylinder2", {PLC.D201}
End Sub
| 故障现象 | 可能原因 | 解决方案 |
|---|---|---|
| 气缸动作迟缓 | 气路压力不足 | 调节减压阀至0.4MPa |
| 金属件误判为塑料 | 传感器检测距离过大 | 调整至3mm并加屏蔽环 |
| 组态画面数据刷新慢 | 通讯波特率设置不当 | 修改为19200bps并启用RTS/CTS |
| PLC输入点频繁误触发 | 未接消噪继电器 | 加装MY2N-J继电器 |
| 气缸中途卡死 | 磁性开关未校准 | 重新调整开关安装位置 |
我们遭遇过最棘手的干扰问题:
开发了三级维护体系:
通过以下PLC程序实现权限管理:
ladder复制|--[M100]--[MOV K1 D100]--| (操作员)
|--[M101]--[MOV K2 D100]--| (工程师)
|--[M102]--[MOV K3 D100]--| (专家)
组态王画面根据D100值动态切换界面元素显示状态。
通过以下改进将节拍时间从1.2s缩短至0.8s:
添加SQL数据库记录:
vb复制Sub LogData()
If {PLC.Y0} = 1 Then
SQLInsert "INSERT INTO Log VALUES('" & Now & "','Metal')"
ElseIf {PLC.Y1} = 1 Then
SQLInsert "INSERT INTO Log VALUES('" & Now & "','Plastic')"
End If
End Sub
预留以下扩展能力:
在PLC程序中预留了D500-D599作为扩展功能寄存器区,组态王画面也相应保留了20%的空白区域用于后续功能添加。