基于22三菱PLC与MCGS组态的饮料灌装自动化控制系统设计与实现
22三菱PLC和组态MCGS的饮料灌装自动控制系统最近在饮料厂蹲了半个月总算把三菱FX5U和MCGS Pro的灌装线联调通了。这套系统最骚的操作在于用485通讯把PLC的实时灌装数据怼到触摸屏上还能随时修改配方参数。今天咱们就拆开看看这套自动化灌装系统的代码怎么写。先看PLC这边灌装阀控制用了个简单的步进梯形图。这里有个关键点——灌装量的PID调节必须跟传送带速度联动不然瓶子还没到位就开始灌装直接水漫金山。LD M8000 // 主运行标志 MOV K500 D100 // 默认灌装量500ml CALL P0 // 执行灌装程序 // 灌装子程序P0 STL S20 OUT Y0, T0 K50 // 开启电磁阀定时5秒 LD T0 SET S21 STL S21 OUT Y1, T1 K30 // 开启震动消泡 LD X001 // 液位检测信号 RST S21 SET S20这段代码里的MOV指令是灵魂D100寄存器里的值直接决定灌装时长。现场调试时发现个坑震动消泡时间得根据液体粘度动态调整后来在MCGS界面加了个滑动条后面会说到怎么实现的。MCGS这边更带劲做了个配方管理系统。重点看这个串口通讯配置 通讯协议配置 Sub OnConnect() SetComPort COM2, 9600, N, 8, 1 SetProtocol MODBUSRTU, 1 End Sub 读取灌装量 Sub GetData() SendData Chr(H1) Chr(H3) Chr(H0) Chr(H64) Chr(H0) Chr(H1) Chr(H45) Chr(HCF) SendComData SendData End Sub这个MODBUS RTU帧结构要特别注意CRC校验有次因为校验位没选对数据全乱码产线小哥差点把我当骗子。后来在调试窗口加了十六进制显示才发现是字节顺序问题。22三菱PLC和组态MCGS的饮料灌装自动控制系统界面交互部分有个骚操作——用脚本实现参数动态调整。这个滑动条控件的事件代码贼关键// 灌装量设置滑动条事件 OnValueChanged: IF 当前用户权限 2 THEN SendModbus 1, 6, 100, $THIS.Value 记录操作日志(修改灌装量为: $THIS.Value) ELSE PopupMessage(权限不足!) ENDIF这里埋了个权限验证的坑不同级别的操作工能调整的参数范围不一样。有次夜班工人误触参数导致产线停机后来加了这个权限验证就稳了。最后说下联调时发现的魔鬼细节PLC的485通讯模块必须用三菱原厂的FX-485BD第三方模块虽然便宜但响应时间会飘导致MCGS界面数据刷新延迟。有次灌装量突然抽风查了三天才发现是通讯模块过热引起的丢包后来加了个散热风扇彻底解决问题。这套系统跑起来之后产能从每小时2000瓶飙到3500瓶。不过最让我得意的还是那个异常报警功能——当检测到连续3个瓶子灌装量超标时自动触发急停并发送微信通知这个用MCGS的报警推送功能加上PLC的统计指令就能实现下回可以单独开篇讲讲。