上个月去一个饮料厂做售后,老板拉着我说:”兄弟,你知不知道现在我们换一次口味要多长时间?”
我说:不就是改几个参数吗?温度、灌装量、封口时间,调一调十来分钟够了。
老板苦笑了一下,带我去了车间。我一看就明白了——他车间里有8条灌装线,每条线生产3到6种不同口味。换口味的时候,操作工要拿着纸质的工艺卡,一台一台设备去改参数。改PLC的配方参数、调触摸屏上的灌装量、改封口温度设定、调输送带速度……搞下来至少40分钟。而且经常改错——温度设高了把瓶烫变形了,灌装量设少了被质检打回来。
我问他:一共有多少种口味?他给了我一张表:32种。
我说:做个配方管理系统吧,一键切换,再也不用操工一张纸一张纸对着改了。
什么PLC配方管理
说白了,配方管理就是把你这台设备要干的”活”提前存好。比如生产”冰糖雪梨”的时候,PLC要知道灌装量是500ml、封口温度是180度、输送速度是2.5m/s、杀菌时间是15秒……这一整套参数打包成一个”配方”。下次要生产冰糖雪梨了,操作工在触摸屏上点一下,PLC自动把所有参数都设好。
好多兄弟可能会说:这不就是在HMI上做个数据块吗?
对了一半。小项目确实可以在触摸屏里存几组数据,但饮料厂有32种口味、8条线、每条线有6个工艺站,参数总量超过500个。如果用HMI的数据块硬存,维护起来能让你崩溃。
我用的方案:S7-1200 + 数据块 + HMI配方视图
这次用的是西门子S7-1200系列。主要三个部分:
第一部分:PLC里的配方数据块
建一个UDT(用户自定义数据类型),把每个工艺站的参数都放进去:
TYPE "Recipe_Data" STRUCT Product_Name : String[20]; // 产品名称 Fill_Volume : Real; // 灌装量(ml) Seal_Temp : Int; // 封口温度(℃) Seal_Time : Real; // 封口时间(s) Conveyor_Speed : Real; // 输送速度(m/s) Sterilize_Temp : Int; // 杀菌温度(℃) Sterilize_Time : Real; // 杀菌时间(s) Label_Length : Real; // 标签长度(mm) Capping_Torque : Real; // 旋盖扭力(N·m) END_STRUCT
然后在DB块里建一个数组,存32个配方。每个配方就是一个Recipe_Data的实例。
第二部分:HMI(西门子精智面板)上的配方视图
用西门子WinCC的配方功能,把PLC里的DB块和HMI的配方视图绑定起来。操作工在触摸屏上能看到一个列表:
[冰糖雪梨] 灌装500ml 封口180℃ 杀菌121℃ 当前生产 <选择> [蜜桃乌龙] 灌装500ml 封口175℃ 杀菌118℃ 当前生产 <选择> [柠檬绿茶] 灌装450ml 封口185℃ 杀菌120℃ 当前生产 <选择> ...
操作工只需要按”一键切换”,PLC就会:
1. 等当前瓶型走完最后一瓶
2. 把灌装阀切换到新配方量
3. 调整封口温度到新设定值(这个慢一点,加热有个过程)
4. 调整输送带速度
5. 等所有参数到位后,发出”切换完成”信号
6. 开始新口味的生产
第三部分:上位机管理系统
我还加了个小功能——在办公室的工控机上装了个上位机软件(用的C#写的小工具),生产主管可以在电脑上编辑配方、新增口味、下发到PLC。这样就不用每次改配方都跑车间去捅触摸屏了。
调试中遇到的两个大坑
方案看着简单,实际调试的时候还是差点翻车。
坑一:切换过程中的”过渡段”处理
第一次调试的时候,我写的是”操作工点切换→所有参数同时改”。结果封口温度从180℃降到了175℃,但加热管降温需要时间,中间有几十瓶的封口温度是178℃左右,封得很不牢,质检过不去。
后来改成了分段切换:先把灌装量和输送速度改了(这两个可以瞬间变),封口温度等它自然降到目标值再加一个”稳定30秒”的延时,然后才把封口部分切换过去。杀菌段同理,温度变化慢,给足缓冲时间。
坑二:配方数据的掉电保持
S7-1200的DB块默认是掉电保持的,但我在测试的时候发现一个问题——如果操作工在触摸屏上改了某个配方的参数,还没保存就断电了,改动的数据丢了。这是因为WinCC配方视图的修改是先缓存在HMI里的,确认保存才写回PLC。
后来我加了个”未保存提示”:如果配方参数被修改但没保存,HMI右上角会弹一个黄色条提示。同时每次保存操作都会记录到操作日志里,谁、什么时候、改了哪个配方的哪个参数,都能追踪。
上线后的实际效果
这个系统上线跑了两个月,我特意回去问了数据:
换产时间:从平均45分钟降到了3分12秒(统计了52次换产的平均值)。这还是因为封口温度冷却和加热有物理延迟,如果不考虑温度变化,理论上20秒就能切完。
换产失误:之前每个月平均有3-4次因参数设错导致的废品,上线后两个月一次都没有。操作工从”对着纸质工艺卡一项一项核对”变成了”点一下按钮然后等机器自己切”,人出错的机会少了很多。
培训成本:之前新操作工要学一周才能独立换产,现在半小时教会了。老板说最大的收获是夜班的时候,老员工少,之前经常换产出错,现在基本不用操心。
配方的进阶玩法
做完这个项目之后我还琢磨了几个可以继续优化的方向:
1. 配方版本管理。目前的配方改了就直接覆盖了,没有历史记录。老王改了个参数觉得不合适,想回到上周版本,没辙。后面准备在数据库里存配方快照,每次保存生成一个新版本。
2. 工艺参数自动优化。既然PLC能采集到每批产品的质量数据,能不能自动调整配方参数来优化工艺?比如发现”冰糖雪梨”的次品率偏高,系统自动微调封口温度+2℃,看看效果如何。
3. MES对接。如果厂里上了MES系统,配方切换其实应该由MES来触发的——ERP下了一个”明天生产5000瓶蜜桃乌龙”的工单,MES自动把对应配方下发到产线PLC,连人工点按钮都省了。
这次的项目让我觉得,配方管理看起来是个”小功能”,但用好了对工厂运营效率的提升非常明显。特别是产品种类多的食品饮料、日化、制药行业,换产时间每缩短一分钟,都是实实在在的产能。
你们的项目里做过配方管理吗?遇到过什么坑?来评论区聊聊。