1. FMS物料分拣系统的整体思路拆解
1.1 这套分拣系统的硬件构成与选型参考
FMS(柔性制造系统)里的物料分拣,说白了就是让生产线根据物料的材质、颜色、形状等特征,自动把不同的物料送进不同的料仓或下一道工序。我做过的这套系统,核心硬件包括一条直流减速电机驱动的传送带、三个检测工位、三套气动推料机构、三个料仓,再加上S7-200 PLC作为控制大脑,MCGS触摸屏作为人机交互窗口。
物料识别这块,我用的方案是组合检测:第一工位是电感式接近开关,专门识别金属物料;第二工位是光纤传感器配颜色识别模块,区分物料颜色;第三工位是一个对射式光电传感器,用于精确测量物料在传送带上的到位时刻,同时也作为计数和物料跟踪的基准点。之所以不搞视觉识别,是因为现场的光线环境不太稳定,相机加光源的成本也高,用传统的传感器组合在这个分拣场景里已经绰绰有余。
气动推料机构选择的是双作用气缸加电磁阀,每个气缸对应一个料仓,推料气缸的行程控制在80mm到120mm之间,速度可以通过气缸上的节流阀调整。这套硬件的选型思路是:结构简单、维护方便、响应速度足够。你不需要在这类项目上追求什么高精尖设备,稳定可靠才是第一位的。
1.2 为什么选S7-200配MCGS这套经典组合
你可能觉得S7-200这个型号有点老了,但说句实在话,在小型FMS分拣系统里,它依旧是能打的那个。S7-200的编程软件STEP 7-Micro/WIN上手快,梯形图逻辑清晰,定时器和计数器的性能在这个场景下完全够用。而且它的I/O点数配置灵活,CPU 226加上扩展模块,二十来个输入输出点轻松覆盖。
MCGS这边,它的嵌入版组态软件是免费的,触摸屏型号我用的TPC7062系列,价格亲民,画面上手难度低,工程人员用一两天就能学会。MCGS的组态方式跟WinCC那些大型组态软件比,更加直观,变量定义、画面连接、报警显示这些功能都是鼠标拖拽的事。
这套组合能长期存在还是有道理的:S7-200的PPI通信协议非常成熟,MCGS原生支持,串口一接,变量一对应,通信就通了,不需要额外写协议帧。再加上S7-200的二手市场和备件供应充足,很多学校实验室、小型生产线的FMS分拣设备至今还在用这套方案。对于学习FMS或者搞小型自动化改造的工程师来说,这套组合性价比确实高。
2. 精准分拣的核心逻辑与PLC编程实现
2.1 物料识别与定位的关键设计
精准分拣的前提是准确知道“来了什么料”和“料到了哪里”。我在这套系统里的做法是:传送带启动后保持匀速运行,物料从入料口落下,首先经过第一工位的电感传感器,如果检测到金属信号,M0.1置位;接着物料到达第二工位的光纤传感器,这时根据颜色识别结果,M0.2或M0.3置位;最后物料到达第三工位的对射光电,触发一个到位脉冲,这个脉冲就是分拣动作的触发开始信号。
这里面有个容易踩坑的地方:传感器的安装位置必须考虑物料在传送带上的滑动。尤其是圆柱形物料,可能会在皮带上滚动,导致到达第三工位的时间飘忽不定。我的解决方法是把第三工位的对射光电安装位置尽量靠近推料气缸,缩小物料从检测到被推之间的物理距离。同时在传送带两侧加上简易导向挡条,限制物料跑偏。
定位时间的数据我实测过:传送带线速度设定在12m/min,从第三工位检测到物料到气缸推料完成的窗口期大约在300ms。S7-200的扫描周期通常在10ms以内,完全可以在物料到达推料位置之前完成逻辑判断和输出动作。
2.2 分拣执行机构的时序协调
分拣动作的时序是整个项目最需要反复调试的部分。我的程序里把分拣动作分成三步:第一步是到位检测,第三工位的传感器上升沿触发一个置位指令,把“分拣允许”标志位置1;第二步是条件判断,程序检查这个物料对应的特征标志位和对应的目标料仓计数;第三步是推料气缸伸出,同时启动一个定时器,气缸到位保持400ms后自动缩回。
为什么强调气缸到位要保持一段时间?因为我发现如果推料时间太短,物料可能只被推了一半,卡在传送带边缘和料仓之间;时间太长又会影响下一个物料的处理节奏。400ms这个值是现场调出来的,你如果换了一个气缸或者改了气压,这个值需要重新标定。
对于需要分拣到两个不同料仓的物料,我用了一个比较指令配合两个不同的输出点去控制两个气缸,逻辑上完全独立,互不干扰。而不需要分拣的物料,直接从传送带末端进入尾料收集箱,逻辑上表现为所有条件都不满足,不做任何推料动作。
2.3 梯形图程序的核心模块写法
S7-200的梯形图编程里,我用到了几个核心模块,这里写一下关键逻辑:
物料跟踪模块:这是精准分拣的命门。由于三个检测工位在传送带上有物理间距,我使用了一个基于定时中断的移位寄存器思路。当第三工位检测到物料时,程序把前两个工位的检测结果组合成一个特征字(VB10),根据物料经过了几个工位来移位。因为三个工位的间距是固定的,传送带速度已知,所以通过定时器计算物料从第一工位到第三工位的时间,再把特征值按时间轴传递。
// 特征字定义示意 // VW10: 物料特征字 // V10.0 = 金属材质标志 // V10.1 = 白色物料标志 // V10.2 = 黑色物料标志 // M0.5 = 第三工位检测到物料的上升沿脉冲分拣条件判断模块:当M0.5触发时,用一组比较指令判断VW10的值,对应不同的目标料仓。这里我用了一个经验法则:先用综合特征判断,把“金属且黑色”“金属且白色”“非金属且黑色”等组合全部枚举出来,然后对每个组合安排优先级。因为在分拣系统里,优先级高的物料种类要优先处理,否则两个物料连续到达时会冲突。
计数器模块:每个料仓设置一个计数器,当对应的推料完成信号到来时,计数器加1,显示在MCGS触摸屏上。这个功能看着简单,但非常实用,是班组统计产量和计算分拣准确率的基础数据。
急停与复位模块:这个模块必须单独写。MCGS上有急停按钮对应PLC的I0.0输入,接到常闭触点,急停触发时立即停止传送带电机、缩回所有气缸,同时把运行状态标志位全部复位。我做项目时坚决不用软件强制复位代替急停按钮,这是安全红线。
3. MCGS组态界面的设计与现场交互
3.1 组态画面的规划与数据绑定
MCGS嵌入版组态软件的使用流程,简单概括就是:建工程、连设备、建变量、画画面、绑表达式。我设计的画面分四块:主监控画面、参数设置画面、报警画面、产量统计画面。
主监控画面是操作工每天盯得最多的。我在画面上用图形元件画了传送带、三个传感器工位、气缸和料仓的示意图,每个元件绑定PLC里的状态变量。比如气缸伸出时,画面上的气缸图形就变成绿色并标出“伸出中”,传感器检测到物料时对应位置闪黄色指示灯。这些都是MCGS的“动画”功能,拖动元件关联变量就行,不需要写脚本。
参数设置画面放的是定时器预置值、计数器的当前值和手动测试按钮。为什么要单独做这个画面?因为现场调试时,我不想每次改一个定时值都重新下载PLC程序,通过MCGS写定时器的预设值寄存器,触摸屏上直接改,方便太多。
3.2 通信参数的配置与联机调试
S7-200和MCGS触摸屏之间的通信,用的是串口PPI协议。硬件连接很简单:触摸屏的COM口和S7-200的编程口之间用一根USB-PPI电缆或者专用的串口线连起来。在S7-200上不需要额外写通信程序,因为PPI协议是S7-200固件里自带的。
MCGS这边,在“设备窗口”里添加一个“西门子_S7-200_PPI”的父设备,然后配置串口参数:波特率9600、数据位8位、停止位1位、偶校验。我建议你在组态软件里把设备调试窗口打开,先用“采集测试”按钮验证能不能读到PLC的变量值,确认通信正常后再开始做画面绑定,这样会把问题范围缩小很多。
一个很常见的坑是:电脑上已经用了编程电缆连着S7-200,这时PLC的编程口同时被电脑占用,触摸屏在PLC的编程口上就通信不上。我的做法是S7-200的编程口走一根一分二的转接电缆,一头接触摸屏一头接电脑编程口,现场调试和监控两不误。
3.3 触摸屏程序的备份、上传与下载
关于MCGS触摸屏程序的上传和下载,这里要特别注意一个概念:MCGS下载到触摸屏的是工程文件,而上传回来的是“组态环境备份”或者运行工程的运行包,不能直接把上传的文件当成可编辑的源工程来改。如果你想改画面,手头必须有原始的组态工程文件。
我维护设备的习惯是:每次去现场之前,先确认电脑里的MCGS组态工程和触摸屏上运行的版本一致,下载前做一次全量备份。使用MCGS的“工程下载”功能时,选择包含所有画面、脚本和配方数据的完整下载,速度虽然慢一点,但能避免“画面有了,脚本没更新”这种诡异问题。
MCGS触摸屏还支持FTP功能,这在维护多台设备时特别实用。我在一台设备上配置了FTP服务器地址,触摸屏工程可以通过FTP上传到服务器上指定的目录,现场人员定期触发一次“上传运行记录”按钮,我在办公室就能拿到触摸屏里的报警历史和数据存储文件,不用专门跑现场取数。需要提醒的是,FTP功能的地址、用户名、密码都在触摸屏的系统参数里预留好了,但要注意触摸屏的网口要跟FTP服务器在同一个网段,防火墙要放行21端口。
4. 影响分拣精度的因素与调试提升技巧
4.1 传感器与机械环节的精度瓶颈
精准分拣这个“精准”两个字,在实战里会受到很多环节的拖累。第一个瓶颈是传感器响应时间。普通的电感式接近开关响应时间在1ms到2ms级别,如果传送带速度很快,物料在2ms内能前进差不多0.4mm,在定位要求高的场合就必须选择响应时间更短的传感器,比如高频电感式接近开关,响应时间可以压到0.2ms以内。
光纤传感器的响应时间跟放大器有关,我用的基恩士放大器能做到50微秒级,在这个场景下完全够用。但光纤头容易脏,特别是现场有粉尘或油雾的环境,每班看一次灵敏度,脏了就用酒精擦拭检测头,否则检测信号会越来越弱。
机械方面的精度瓶颈主要来自传送带跑偏和气缸运动晃动。传送带跑偏会导致物料横向位置变化,推料气缸如果从侧面推,物料可能偏移到料仓外。我加装了一对导轨定位块,把物料横向位置限制在允许误差±3mm的范围内。气缸运动晃动的解决办法是给气缸安装座加固,使用紧凑型气缸并增加导向杆。
4.2 节拍计算与参数整定的实操方法
分拣系统的节拍决定了产能上限,而节拍和精度是一对矛盾体。传送带跑太快,传感器检测和推料动作都容易出错;跑太慢,产能又上不去。
我的整定流程是这样的:先根据推料气缸的最短动作周期确定传送带的最高线速度。假设气缸伸出加缩回一共需要600ms,加上到位传感器检测和PLC输出的反应时间100ms,那么从物料触发到位信号到推料动作完全复位,至少需要700ms。传送带线速度乘以这700ms,就是两个物料之间允许的最小间距,线速度12m/min时最小间距是140mm。为了保证系统稳定,我实际把间距放宽到200mm,留出30%的余量,这样即使传送带速度有轻微波动也不会出问题。
定时器的数值标定方面,我没有直接按理论值写入,而是在现场做了三组测试:把推料保持时间设为200ms、400ms、600ms,分别观察分拣成功率。实测数据最能说明问题,200ms时成功率只有82%,400ms的时候提升到97%以上,再往上加到600ms成功率没有明显变化,所以最终取400ms。
4.3 常见故障速查表与排查思路
分拣系统在现场跑起来后,故障是难免的,关键是排查思路要清晰。下面是我整理的一份故障速查表,都是实测遇到过的:
| 故障现象 | 可能原因 | 排查方法与处理措施 |
|---|---|---|
| 触摸屏显示“通信失败” | 串口参数不一致、通信线松动、PLC编程口被占用 | 检查波特率和校验位设置;重新插拔通信线;暂时断开电脑编程线 |
| 有物料通过但气缸不动作 | PLC输出点损坏、电磁阀线圈故障、逻辑条件不满足 | 强制置位输出点判断PLC侧;测电磁阀通断电压;检查特征字判断是否漏条件 |
| 部分物料分拣错误 | 传送带打滑、传感器灵敏度漂移、物料间距过近 | 检查传送带张紧度;清扫传感器头并重新标定灵敏度;增加物料间距或降速 |
| 料仓计数不准确 | 计数器复位逻辑错误、推料信号抖动 | 检查计数器复位条件;在推料信号回路并联小电容或使用PLC内部的滤波功能 |
| 气缸推料无力 | 气压不足、气缸密封圈老化、节流阀开度过小 | 检查气源压力是否在0.5MPa以上;更换密封圈;重新调节流阀 |
排查分拣不准的故障,我的经验是先观察再动手。站在现场连续看十个物料的动作,基本能判断是检测环节的问题还是执行环节的问题,盲目改程序或者换硬件反而耗时。
5. 我的实操心得与扩展建议
5.1 现场踩坑记录
做这个项目我踩过最大的一个坑,是MCGS画面上的“停止”按钮逻辑。最初我把停止按钮直接对应PLC的急停输入点,结果操作工在设备正常运行的时候按了一下“停止”,整个系统立即急停,传送带上的物料全部堆在了一起,清理了半天。后来我改成了两段式停止:第一段是软停止,只停传送带电机,气缸保持当前状态;第二段才是急停,只有在异常情况下才允许使用。操作工按停止键后,系统会先进入软停止状态,再按一次才是急停。
另一个坑是计数器的重复计数。第三工位传感器在物料离开时会产生一个下降沿,如果PLC程序里把下降沿也当成到达信号处理,同一个物料就会计数两次。我的解决办法是只使用传感器信号的上升沿作为计数触发,同时把计数指令放在一个边沿检测指令后面,确保一个物料只触发一次。
还有一次调试的时候,触摸屏上的产量数据和PLC里看到的数据对不上,折腾了半天发现是MCGS的变量类型定义错了:PLC里的计数器是16位整数,我在MCGS里把它定义成了32位实数,数据类型不匹配导致显示异常。这类问题不太好查,建议大家在做变量连接时,严格对照PLC数据区地址和数据类型,一个一个检查,不要偷懒。
5.2 这套系统还能怎么升级
如果你想把FMS的分拣能力往上提一个档次,有几个升级方向是可以考虑的:
第一个方向是增加RFID标签识别。比传感器组合更进阶的方案是给每个物料工装板贴RFID标签,在传送带入口和分拣点设置读卡器。这样一套RFID模块下来,稳定性比光电传感器高得多,而且能存储物料的完整工艺信息。不过成本会高不少。
第二个方向是增加自动化调度逻辑。现在的系统是“来什么分什么”,如果再往上做一层MES对接,把生产工单下发到PLC,分拣系统就能按工单顺序筛选物料,把不合格的提前剔除,实现真正意义上的柔性制造。
第三个方向是数据采集和远程诊断。利用MCGS物联助手这类工具,把触摸屏的数据采集到云平台,远程查看产量趋势和设备状态。我在做这个功能时最先遇到的就是注册和配置问题,按照官方指引操作之后其实并不复杂,关键是确保触摸屏联网后能稳定连通到平台,剩下的数据报表和报警推送都是水到渠成的事。
做这套系统最大的体会是,精准分拣的核心不是某一个传感器或者某一段程序有多牛,而是整个链条的协调配合。电气设计考虑机械结构,机械结构影响传感器检测,传感器信号又决定PLC逻辑,PLC逻辑最终要让人在触摸屏上看得明白。一个环节掉链子,整个系统的“精准”就无从谈起。希望我这些实操记录能给正在做或者准备做FMS分拣系统的朋友一点参考,少走几步弯路。