事情是这样的
上个月一个做电子元件的客户找到我,说他们被下游客户逼着搞产品追溯。下游是个做汽车电子的,要求每个产品都有唯一的追溯码——从原材料批次、生产时间、检测数据到出货记录,扫码一扫全出来。
不搞?那行,明年订单就别想了。
老板急得不行,给了我一周时间出方案。说实话,做产品追溯这件事,听起来高大上,核心就是三样东西:扫码枪、PLC、上位机。难点在怎么把这三样串起来,在流水线上不卡顿、不出错、不掉数据。
搞了一个月,总算跑通了。今天把过程中的干货和坑都倒出来。
硬件选型:扫码枪不是随便买一个就行
以前我总觉得扫码枪嘛,超市收银那种几十块钱一个就行了。但工业产线用,完全不是一回事。
产线扫码的三个硬指标:
- 读码距离:产线上产品不停地在动,扫码枪得有一定的景深和距离。一般需要15到30厘米的读取距离。超市那种接触式扫码枪根本不行。
- 运动容差:产品在流水线上不是静止的,扫码枪要能捕捉移动中的条码。好的工业扫码枪支持每秒几十次的扫描频率。
- 条码类型:产品上打的可能是激光刻码(DM码)、喷码(二维码)、或者贴标(一维码)。你选的扫码枪得都能读。
我最后选了国产的一款工业固定式扫码枪,支持以太网输出,价格一千二,支持读取QR码、Data Matrix码和常见的一维码。性价比还行,比进口的便宜了三分之二。
对了,条码内容怎么定义也是个坑。我跟客户商量后定了编码规则:产品型号(4位)+ 生产日期(8位)+ 流水号(6位)+ 校验码(2位),一共20位数字。这样二维码一扫,PLC拿到这20位编码,通过型号就能自动调取对应的工艺参数。
PLC编程:梯形图里处理字符串是最大的坎
搞PLC的兄弟都知道,梯形图处理数值——PID、计数、定时——那是拿手好戏。但处理字符串?头疼。
S7-1200 TIA Portal其实支持字符串数据类型了,但你要把一个20位的条形码从扫码枪读进来、拆开、拼接、存储、上传,这一套用梯形图写下来,逻辑复杂到你怀疑人生。
我最终的通讯方案:
扫码枪通过以太网以TCP Client模式连接PLC。扫码成功后,条码数据以ASCII字符串格式发送到PLC的接收缓冲区。PLC里建了一个20字节的数组,每收到一个字符存一个字节。
然后通过MOVE指令把数据搬运到DB块里的字符串变量。这一步看似简单,但有个坑:扫码枪发过来的字符串结尾没有终止符,你得在梯形图里判断数据长度,手动加结束标志。
从扫码到追溯完成,全程不到500毫秒。
考虑到产线每分钟跑30个产品,每个产品2秒的节拍,这个速度绰绰有余。但如果你的产线每分钟跑100个以上的产品(比如食品饮料线),那就要考虑用高速计数器配合中断来处理了,不然扫描周期太长会漏产品。
让扫码触发自动化——这才是真正省人的地方
单纯把条码读进来存起来,那只是信息化的第一步。真正的价值在哪?码一扫,机器自动切换配方。
举个例子:一条产线跑A型号和B型号两种产品。以前换型要人工在触摸屏上选型号、调参数,换一次型至少耽误5分钟,一年下来几百次换型,浪费的时间想想都心疼。
我这么搞的:
- 产品过来,扫码枪读码
- PLC解析条码前4位(型号代码)
- 根据型号代码,从配方DB块里调出对应的工艺参数(速度、温度、压力等)
- 自动写入到当前运行的参数区
- 如果当前产线上还有上一个型号的产品没跑完,PLC会等最后一个产品通过后再换型
这件事最让我得意的是——整个换型过程不用任何人工干预。产品自己告诉机器它是什么型号,机器自动调整。老板看到这个功能的时候眼睛都亮了。
数据上抛:MES系统的对接
扫码的数据最终要传到MES系统(制造执行系统)做全链路追溯。PLC作为数据采集的前端,需要把扫码结果、检测结果、生产时间戳一起打包发给上位机。
PLC和MES的通讯我是走的标准OPC UA协议。S7-1200从固件版本4.0开始就内置了OPC UA Server,配置一下就行。MES系统通过OPC UA Client订阅PLC里DB块的数据变化,每次扫码成功就收到一条完整的生产记录。
不过这里有个坑要提醒你们:OPC UA的数据刷新频率别设太快。我把Server的采样间隔设成了100毫秒,MES那边订阅频率也是100毫秒,结果PLC的通讯负载太高,扫描周期从10ms飙到了25ms。后来把采样间隔改到500毫秒,通讯正常了,产线扫描周期也回到了12ms。
产线控制永远是第一位。数据采集要为控制让路。
生产中真实遇到的几个坑
- 条码污损读不出来:产品上有油污或者标签被蹭花了,扫码枪死活读不到。解决办法是增加了三次重读机制——第一次读不到,PLC触发输送带上的产品再多转一圈,给扫码枪第二次机会,三次都不行才报警。加了重读后,扫码成功率从92%提高到了99.5%。
- 扫码枪和PLC通讯断连:出现过两次扫码枪掉线,PLC不知道怎么恢复通讯。后来在程序里加了个心跳检测——PLC每5秒给扫码枪发一个测试指令,如果连续3次没回应,就自动触发扫码枪的TCP重连。这个机制后面再也没出过问题。
- 产品间距不均匀:有些产品挨得太近,扫码枪扫到了产品A的条码却触发了产品B的剔除动作。解决办法是在扫码工位前后各加一个光电传感器,两段传感器都检测到产品通过了,才确认扫码和剔除的对应关系。
最后说两句
搞一物一码追溯这个项目,技术上其实没什么高深的。说穿了就是把扫码枪、PLC、MES三样东西接在一起,中间改改通讯协议、写写字符串处理逻辑。真正值钱的是两样:一是对产线流程的理解——怎么扫码不会漏、数据不会乱、追溯不会断;二是对人性的理解——操作工说扫码太麻烦,你就得把扫码做得比不扫还方便。
项目验收的时候,客户拿了一个产品从产线头扫到尾,全程追溯数据在MES里一条不差,他们质量经理直接签字验收了。
你们做过产品追溯的项目吗?条码定义规则怎么定的?PLC端字符串处理有什么好经验?评论区交流交流。
(一个在工控行业摸爬滚打10年的老工程师,记录真实项目中的得与失。文章首发于16fl.cn 一路福利)