1. 项目概述:智能售货机控制系统开发实录
去年接手了一个社区智能售货机的改造项目,需要将老旧的机械式售货机升级为支持电子支付的智能设备。经过多方对比,最终选择了MCGS 7.7组态软件搭配三菱FX3U PLC的方案。这个组合在工业控制领域堪称经典——MCGS提供友好的人机界面,三菱PLC负责稳定可靠的底层控制。本文将详细记录整个开发过程,包括硬件接线、PLC编程、HMI设计等核心环节。
这个项目最让我自豪的是实现了完整的闭环控制:从用户界面操作到机械执行,再到库存管理,全部通过PLC程序精确控制。为了便于同行参考,我会分享CAD格式的电气接线图、经过实际验证的PLC梯形图程序,以及展示系统运行效果的实拍视频。这些资料都是经过三个月实际运行检验的可靠方案。
2. 系统架构设计解析
2.1 硬件选型与配置方案
控制系统核心采用三菱FX3U-48MT/ES-A PLC,这款PLC具有24点输入和24点晶体管输出,完全满足四商品售货机的控制需求。输入点用于连接:
- 4个商品选择按钮(X0-X3)
- 纸币器信号(X4)
- 硬币器信号(X5)
- 4个光电传感器(X10-X13)用于检测商品是否正常出货
输出点分配:
- 4个电磁阀(Y0-Y3)控制商品出货
- 找零电机控制(Y4)
- 显示屏背光控制(Y5)
人机界面选用MCGS TPC7062KX触摸屏,这款7寸屏支持MCGS 7.7组态软件,通过RS422接口与PLC通信。在实际应用中,这个组合的通信稳定性令人满意,连续运行30天未出现通信中断情况。
2.2 通信协议选择与配置
MCGS与三菱PLC通信采用三菱专用协议(Melsec-FX协议),这是经过验证的最可靠方案。在MCGS中配置通信参数时需要注意:
- 波特率设置为9600bps(实测19200bps在长距离传输时不够稳定)
- 数据位7位,停止位1位,偶校验
- PLC站号设置为0(FX系列默认站号)
通信测试阶段发现一个关键点:必须在MCGS的"设备窗口"中正确设置"数据采集周期",建议设为300ms。设置过短会导致通信拥堵,设置过长则界面响应迟钝。
3. PLC程序开发详解
3.1 主控制逻辑实现
PLC程序采用结构化设计,主要包含以下功能块:
- 投币金额处理
- 商品选择逻辑
- 出货控制
- 找零计算
- 库存管理
核心出货控制程序如下(梯形图逻辑):
code复制LD M8000 // 运行监控常ON触点
OUT M0 // 系统运行标志
LD X0 // 商品1选择按钮
AND C0 // 商品1库存判断
OUT Y0 // 商品1电磁阀
OUT T0 K50 // 电磁阀动作时间0.5秒
LD X1 // 商品2选择按钮
AND C1
OUT Y1
OUT T1 K50
每个商品出货控制都包含三个关键环节:
- 按钮信号检测(X点输入)
- 库存判断(C计数器状态)
- 电磁阀控制(Y输出)配合定时器
3.2 库存管理方案设计
库存管理使用PLC的数据寄存器(D寄存器)和计数器(C计数器)双重保障:
- D寄存器存储各商品理论库存量(断电保持型)
- C计数器记录实际出货数量
每天营业结束时,通过MCGS界面执行"库存校准"操作,将C计数器值写入D寄存器。这种设计解决了因传感器误判导致的库存偏差问题。
4. MCGS人机界面开发
4.1 主界面设计与功能实现
MCGS界面采用分层设计:
- 主销售界面:显示商品图片、价格、库存
- 管理菜单:密码保护,包含库存设置、销售统计等功能
- 系统设置:通信参数、时间设置等
商品选择按钮的脚本代码如下:
vb复制Sub btnProduct1_Click()
Dim currentStock As Integer
currentStock = MCGS.DataDriver("MitsubishiFX").Read("D100")
If currentStock > 0 Then
MCGS.DataDriver("MitsubishiFX").Write("M100", 1) '触发出货信号
MCGS.DataDriver("MitsubishiFX").Write("D100", currentStock - 1)
MCGS.ShowMessage("出货成功!", 1)
Else
MCGS.ShowMessage("该商品已售罄", 2)
End If
End Sub
4.2 数据记录与报表功能
利用MCGS的历史数据记录功能,实现了以下数据统计:
- 各商品日销量曲线
- 销售额统计
- 库存变化趋势
数据存储周期设置为每日一个文件,避免单个文件过大影响系统性能。报表导出支持Excel格式,方便管理人员分析。
5. 电气安装与调试要点
5.1 接线图关键细节
CAD接线图中需要特别注意的部分:
- 电磁阀必须加装续流二极管(型号1N4007)
- 光电传感器采用独立电源供电,避免干扰
- 所有输入信号线采用屏蔽双绞线
电源配置方案:
- PLC主电源:AC220V转DC24V开关电源
- 触摸屏电源:直接从PLC的24V输出取电
- 电磁阀电源:单独一路DC24V(峰值电流较大)
5.2 现场调试经验
调试过程中总结的几个重要经验:
- 电磁阀响应时间需要根据商品重量调整,较重商品需要延长出货时间(通过修改T定时器值)
- 光电传感器灵敏度调节方法:先顺时针调至最大,然后逆时针慢慢回调直到刚好能检测到商品
- 通信干扰排查步骤:检查接地→检查终端电阻→检查波特率设置
常见故障处理:
- 商品卡住不出货:检查电磁阀电压是否达到24V
- 误检出货:调整光电传感器位置,避免环境光干扰
- 通信中断:检查RS422接线是否松动,A/B线是否接反
6. 系统优化与扩展
6.1 性能优化措施
经过实际运行后实施的优化:
- 增加出货完成确认延时:在电磁阀关闭后增加0.3秒延时,确保商品完全落下
- 改进库存检测逻辑:只有当光电传感器信号从ON变OFF时才减少库存计数
- 添加电机保护程序:连续5次出货失败自动锁定并报警
6.2 移动支付集成方案
最新扩展了微信支付功能,硬件上增加了:
- 工业级4G路由器
- 串口通信的支付模块
软件修改包括:
- PLC增加支付成功信号处理程序
- MCGS界面添加支付二维码显示区域
- 支付状态监控程序
这套系统目前已在12个社区稳定运行超过6个月,平均故障间隔时间达到180天以上。最让我意外的是,通过销售数据分析,我们还帮助运营商优化了商品配置,使销售额提升了30%。