基于S7-200 PLC与MCGS的FMS物料分拣系统实战解析
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分拣系统的朋友一点参考少走几步弯路。