上周刚交完学校的毕设小项目——三菱FX5U+MCGS的药品自动生产线装药工位,折腾了快俩礼拜,终于把坑都踩完了,今天把干货整理出来唠唠
No.1118 三菱PLC和MCGS组态药品自动生产线的装药 我们主要的后发送的产品有,带解释的梯形图接线图原理图图纸,io分配,组态画面
首先得明确咱们这个工位是干啥的:就是流水线把空瓶送到装药位,检测到瓶子到位就自动喷药粉/药液,装够量之后送往下一个工位,缺料了还要报警,基本就是药厂流水线最基础的一环。
先从最基础的IO分配说起,毕竟接线接错了后面全白搭,我整理的分配表都是贴合实际需求的,没瞎凑点数:
| 输入点 | 对应设备/功能 | 输出点 | 对应设备/功能 |
|---|---|---|---|
| X0 | 瓶子到位光电开关 | Y0 | 装药电磁阀 |
| X1 | 料仓缺料传感器 | Y1 | 输送带推进电机 |
| X2 | 手动启动按钮 | Y2 | 红色报警灯 |
| X3 | 急停按钮 | Y3 | 绿色运行指示灯 |
| X4 | 封盖到位检测(配合整条线的) | - | - |
当然这个是装药工位的核心IO,整条线的话还要加别的,但今天主要唠装药部分哈。
接下来是梯形图,我用的GX Works3写的,贴一段核心的装药逻辑,我尽量用大白话解释,别整那些论文式的套话:
// 自动装药主逻辑 LD X0 // 瓶子碰到光电,到位了 AND M0 // M0是自动启动继电器,按了启动按钮就激活 OUT Y0 // 触发装药电磁阀 LD X1 // 料仓缺料了 OUT M10 // 触发报警内部继电器 AND Y0 // 要是缺料还在装药的话 OUT Y0 // 直接把装药停了,别瞎喷 LD X3 // 急停按钮常闭点 AND M0 // 串在自动回路里 OUT M0 // 急按了就把自动启动给断了其实这段就是最基础的互锁+触发逻辑,一开始我忘了加料仓缺料的互锁,结果料空了还在喷,差点把电磁阀烧了,后来加了X1串到Y0的回路里才踏实。对了,我还加了个3秒的延时定时器T0 K30,就是装药不能一直喷,装3秒就停,不然药量超标了药品不合格。
No.1118 三菱PLC和MCGS组态药品自动生产线的装药 我们主要的后发送的产品有,带解释的梯形图接线图原理图图纸,io分配,组态画面
然后是MCGS组态的部分,这个才是跟用户交互的门面,我没搞那种花里胡哨的工业大屏,够用就行,做了三个主要画面:
- 首页总控:放了个进度条显示当前流水线走到哪一步了,还有启动/停止/急停的按钮,实时显示料仓的料量百分比,还有运行灯和报警灯的状态,直接跟PLC里的Y2、Y3绑定就行。
- 工位详情:放大了装药的实时画面,比如有个模拟的料仓,用滑块显示料量,还有个装药的动画,当Y0触发的时候就会弹出“正在装药”的提示框。
- 报警记录:存一下最近的报警,比如缺料、急停这种,方便后期排查问题。
我还加了个小脚本,就是料仓低于10%的时候自动弹报警窗口,不用守着灯看,代码超简单:
!Delay(1000) // 延迟1秒再查,避免误触发 local var = !ReadData("设备1.D0", 0) // 从PLC的D0寄存器读料位计数 IF var < 10 THEN !ShowWindow("报警提示") !SetOutput("设备1.Y2", 1) // 点亮报警灯 ENDIF这里的D0寄存器我是提前在PLC里写了计数程序,每装一次药就减1,料仓满的时候会被光电充到100,这样就能实时显示料量了。一开始我连通讯都没搞定,老是显示“设备未连接”,后来才知道FX5U的RS485口波特率要设成9600,数据位8停止位1,奇偶校验关掉,跟MCGS里的串口配置对上就好了,折腾了我一晚上。
接线图这块我画的是极简版,毕竟是学校实训项目,没搞那种工业控制柜,就是把PLC的X端接传感器和按钮,Y端接电磁阀和电机,特别要注意COM端的电压!我一开始把输入COM接成了24V正,结果所有按钮按了都没反应,查了半天才发现是COM端应该接0V,血的教训啊。
对了,我还把所有的图纸、带注释的梯形图、IO表还有组态源文件都整理好了,需要的小伙伴评论区留个言就行,我有空发网盘链接。整体下来这个小项目其实不算难,就是细节特别多,从接线到调试一步步抠下来就顺了,比对着课本死记硬背有用多了。
