85三菱组态王基于PLC的药片装瓶自动控制系统
三菱FX3U系列PLC的绿色指示灯在控制柜里规律地闪烁着,面前的组态王监控屏幕实时跳动着药片计数数据。这套看起来平平无奇的自动化系统,每天却能精准完成12万瓶药品的包装任务。咱们今天就来拆解这个药片装瓶系统的核心控制逻辑。
硬件架构简单粗暴:震动送料盘负责把药片排好队,光电传感器当会计数,伺服电机带着传送带跑,气缸推杆负责最后的装箱动作。重点在于怎么让这些设备像交响乐团般默契配合。来看段实际的梯形图程序:
LD M8000 // 系统运行总开关 OUT Y002 // 启动震动送料机 LDI X001 // 检测料斗空信号 ANB OUT Y004 // 触发缺料报警 LD X003 // 光电传感器信号 PLSY D200 K500 // 以D200寄存器速度发送500个脉冲这段代码藏着两个彩蛋:PLSY指令的脉冲输出直接关联着伺服电机的转速,而D200寄存器里的数值会根据HMI界面设置的包装速度自动计算。实际调试时发现,当脉冲频率超过20kHz时步进电机会丢步,后来在指令后面加了段加减速曲线才解决。
85三菱组态王基于PLC的药片装瓶自动控制系统
组态王的脚本才是真正的灵魂画手。这个统计当日产量的脚本,在每天0点自动把数据写入SQLite数据库:
If \本站点\分钟 == 0 And \本站点\小时 == 0 Then SQLConnect(连接句柄, "Provider=MSDASQL.1;DSN=PackData"); SQLExecute(连接句柄, "INSERT INTO OutputLog VALUES('" + StrDate("%Y-%m-%d") + "'," + Str(\本站点\当日产量) + ")"); \本站点\当日产量 = 0; EndIf调试时踩过的坑绝对值得说道:某次突然出现每第37瓶就会漏装3粒药片,查了三天才发现是光电传感器的安装角度导致两个药片偶尔会叠罗汉通过检测区。最后用了个土办法——在传感器后方5cm处加装了个不锈钢挡片,强制打散药片队列。
这套系统最妙的是它的应急处理机制。当检测到连续5瓶装量不足时,会自动切换到备用送料通道,同时通过OPC协议往中控室发送预警信息。看看这个异常处理梯级:
LD X005 // 主送料通道故障 MOVP K1 D10 // 切换标志位写入D10 ALT Y010 // 交替切换备用通道 ZCP K5 D20 K10 // 比较装量误差值 OUT M102 // 触发质量报警现在这套系统已经在药厂跑了三年没出过大乱子,倒是经历过几次有趣升级:去年加了视觉检测模块,用OpenCV做药片缺损检测;今年上了物联网模块,包装数据直接推送到厂长微信。不过最核心的控制逻辑,还是那几段经历过百万次考验的梯形图程序在撑着场子。