基于S7-200 PLC和组态王大小球大小分拣
最近在厂里折腾了个有意思的项目——用S7-200 PLC和组态王搞了个大小球自动分拣系统。别看原理简单,调试过程真是踩了不少坑。今天就把核心代码和配置要点整理出来,给大伙儿唠唠这个系统的实现过程。
硬件配置清单先扔这儿:
- S7-224XP CN控制器(带两个485口简直救命)
- 漫反射光电传感器x2(别省这点钱,抗干扰得选好的)
- 电磁阀控制气缸x3
- 传送带电机(带变频器调速)
梯形图编程有个关键点:传感器信号处理得做滤波。之前没加延时直接翻车,小球偶尔会被误判成大球。来看这段输入信号处理程序:
NETWORK 1 LD SM0.0 TON T37, 30 //50ms滤波延时 NETWORK 2 LD T37 = M0.0 //有效检测信号这个定时器相当于给传感器信号加了"防抖",实测能过滤掉95%的误触发。注意定时器基时是10ms,30就是300ms延时,具体参数得根据传送带速度调整。
气缸控制逻辑才是重头戏,特别是大小球同时出现时的互锁:
NETWORK 3 LD I0.1 //大球信号 AN I0.2 //非小球信号 = Q0.0 //推大球气缸 NETWORK 4 LD I0.2 //小球信号 AN Q0.0 //大球气缸未动作 = Q0.1 //推小球气缸 NETWORK 5 LD I0.3 //复位信号 O T38 AN I0.1 AN I0.2 = Q0.2 //复位气缸 TON T38, 50 //复位保持时间这里用了两个关键技巧:1.用输出点做互锁防止同时动作 2.复位气缸加了5秒自动收回(T38设置50对应5秒)。调试时发现不加手动复位的话,气缸偶尔会卡在伸出位。
组态王这边主要做两件事:状态监控和手动干预。数据词典配置时记得PLC地址要填对,S7-200的寄存器对应关系老容易搞混:
[设备] PLC=西门子S7-200PPI,D,9600,8,1,0 [变量] 小球检测=PLC,BOOL,I0.2 气缸状态=PLC,BOOL,Q0.0 故障代码=PLC,INT,VB100重点说下那个VB100故障代码,这是我们在PLC里自定义的状态寄存器。用移位指令把各个故障标志位打包上传,组态王这边用画面上的指示灯组来显示具体故障位置。
最后分享个调试小技巧:在组态王画面里埋个隐藏按钮,写个这样的命令语言:
if(\\本站点\手动模式 == 1){ \\本站点\强制复位 = 1; Delay(200); \\本站点\强制复位 = 0; }配合PLC里的手动复位程序,遇到卡料时直接后台点一下就能重置系统,比跑现场按急停方便多了。不过千万别让操作工知道这个隐藏功能,别问我怎么知道的...
这个系统跑起来之后分拣效率能到每分钟120个球,误判率控制在千分之三以内。下次准备试试用高速计数器做速度同步,应该还能再优化下节拍时间。有同样在做分拣系统的兄弟欢迎交流,我这还有几个没解决的玄学问题——比如阴雨天传感器偶尔抽风,估计得在硬件上加屏蔽层了。