1. 项目概述:PLC在自动售货机控制中的优势
作为一名在工业自动化领域摸爬滚打多年的工程师,我见证了PLC如何从简单的继电器替代品成长为现代自动化系统的核心大脑。自动售货机这个看似简单的设备,其控制系统设计却蕴含着不少门道。传统基于专用芯片的解决方案就像一台功能固定的老式收音机,而PLC方案则像一台可编程的智能音响——前者只能播放预设的几个频道,后者却能随时升级功能、适应各种新需求。
三菱FX1N系列PLC在这个项目中展现出了三大核心优势:首先是抗干扰能力,在商场、地铁站等电磁环境复杂的场所,普通单片机系统容易出现死机,而PLC能稳定运行;其次是模块化扩展性,当需要增加人脸识别支付或温度控制功能时,只需添加相应模块并扩展程序;最重要的是梯形图编程的直观性,维护人员即使没有高级语言基础,也能快速理解控制逻辑。我曾遇到过一台使用十年以上的老式PLC售货机,仅用半小时就通过梯形图诊断出故障点,这种可维护性是专用芯片无法比拟的。
2. 系统架构设计
2.1 硬件组成与信号流
这套系统的硬件架构就像人体的神经系统:PLC是大脑,各种传感器是神经末梢,执行机构则是肌肉组织。具体配置上,我们选用FX1N-24MR作为主控制器,其24个I/O点(14输入/10输出)刚好满足中型售货机需求。X0-X3接入支付模块的干接点信号,包括扫码成功(X0)、刷卡成功(X1)、现金检测(X2)和金额校验(X3)。Y0-Y7连接8个货道的驱动电路,每个货道采用带光电编码器的28BYJ-48步进电机,实现精确的1/64步进控制。
特别要强调的是信号隔离设计——所有与外部设备连接的I/O点都经过光耦隔离,这是保证系统稳定性的关键。我曾对比测试过,不加隔离的PLC在商场电磁环境下平均每周会出现1-2次误动作,而隔离后连续运行三个月零故障。货道末端的漫反射式光电传感器(E3F-DS30C4)安装在出货口上方5cm处,其NPN输出信号通过PLC的X10-X17输入,形成闭环检测。
2.2 软件模块划分
程序结构采用"主程序+功能块"的模块化设计,就像搭积木一样将不同功能解耦。主程序(MAIN)负责调度四个核心子程序:
- 支付处理(P_PAY):处理各种支付方式的信号解析
- 货道控制(P_DISPENSE):驱动对应货道电机
- 库存管理(P_STOCK):实时监控商品数量
- 故障处理(P_FAULT):处理各类异常情况
每个子程序都像独立的黑盒子,通过特定的M寄存器进行数据交换。例如支付成功标志M0被置位后,主程序才会调用货道控制子程序。这种设计使得后期增加NFC支付功能时,只需修改P_PAY子程序,其他模块完全不受影响。
3. 核心控制逻辑实现
3.1 支付验证流程
支付模块的可靠性直接关系到运营收益,我们的设计遵循"双重验证+超时保护"原则。以扫码支付为例,完整流程如下:
- 用户扫码后,支付平台先通过串口发送"金额校验"信号到X3
- PLC用比较指令[CMP K50 D0]核对商品价格(D0寄存器值)与支付金额
- 匹配成功后,等待支付平台发送"支付完成"信号(X0上升沿)
- 启动T0定时器(2秒超时),若超时未检测到X0信号则通过Y10触发报警
这里有个关键细节:支付信号必须采用上升沿触发(PLS M0),而不是简单的常开触点。实测发现,某些支付模块会在通信异常时持续输出高电平,采用边沿触发可避免误动作。我曾遇到过因采用常开触点导致单次支付触发多次出货的案例,边沿触发彻底解决了这个问题。
3.2 货道精准控制
货道电机控制是系统最精细的部分,需要平衡出货成功率和机械损耗。我们采用"加速启动-匀速运行-减速停止"的三段式脉冲控制:
- 通过PLSY指令发送脉冲序列,初始频率500Hz,100ms内线性加速至2KHz
- 维持2KHz频率发送200个脉冲(对应货道旋转180°)
- 最后400ms内线性减速至停止
这种控制方式相比固定频率脉冲,可将电机振动降低60%,同时保证出货力度适中。每个货道的脉冲参数存储在D100-D107寄存器中,方便针对不同商品调整。例如罐装饮料需要300脉冲,而小包装零食只需180脉冲。
关键技巧:在电机停止后延时200ms再检测光电传感器,避免因商品振动导致误判。这个参数是通过高速摄像机分析商品掉落轨迹后确定的优化值。
4. 异常处理机制
4.1 卡货检测与恢复
卡货是自动售货机最常见故障,我们设计了三级处理机制:
- 初级检测:出货指令发出后,T1定时器(2秒)开始计时,若超时未检测到光电传感器信号,则判定卡货
- 自动恢复:置位M10标志,触发电机反向转动(PLSY指令频率1KHz,50个脉冲)
- 二次尝试:再次正向转动,若仍失败则置位M11,触发Y11报警输出
实际测试发现,约85%的卡货可通过反向抖动解决。对于顽固性卡货,程序会锁定该货道(通过SET指令置位对应M20-M27标志),并在触摸屏显示故障信息。维修人员可通过强制复位(M8002)清除锁定状态。
4.2 库存预警策略
库存管理不仅仅是简单的计数器递减,我们实现了动态预警机制:
- 每个货道的库存值存储在D20-D27寄存器
- 每次出货执行DECP指令递减对应寄存器
- 当值≤2时,置位对应M30-M37预警标志
- 预警状态下,触摸屏对应商品图标显示黄色,并禁止该货道选择
这里有个实用技巧:在PLC上电初始化时(M8002),通过MOV指令将预设库存值批量写入D20-D27。我们还在每个货道增加了手动补货开关(X20-X27),补货时按下开关,对应库存直接加10(INCP指令)。
5. 系统调试与优化
5.1 时序优化技巧
通过GX Works2的监控功能,我们发现支付到出货的延迟主要来自三个方面:
- 支付模块通信延迟(平均300ms)
- PLC扫描周期(约5ms)
- 电机启动响应时间(约200ms)
优化措施包括:
- 在支付子程序中使用立即输入指令(LD X0→OUT M0)
- 将电机控制程序放在扫描周期前半段
- 预启动货道电机(输出保持脉冲维持扭矩)
经过优化,实测支付到出货响应时间从最初的1.5s降至0.8s,其中最大的提升来自支付模块通信协议的简化——将原有的多字节校验改为单信号触发。
5.2 抗干扰设计
现场环境中最大的干扰源是变频空调和电梯电机,我们采取了三重防护:
- 所有信号线采用双绞屏蔽线(ZR-RVSP 2×1.0)
- PLC接地单独引至建筑接地极(线径≥4mm²)
- 在数字量输入端口并联104瓷片电容
特别重要的是电源处理:PLC供电经过1:1隔离变压器后,再接入AC220V。实测显示,这种配置可将EFT/B抗扰度提升至4kV以上。曾有个案例,同一商场内未做隔离处理的控制器每月故障3-4次,而优化后的系统连续运行半年无异常。
6. 工程应用心得
在实际部署过程中,我总结了几个教科书上不会写的经验:
- 货道电机最好预留30%的扭矩余量,因为随着使用时间增长,机械阻力会逐渐增大
- 光电传感器要定期清洁(建议每月一次),灰尘积累会导致检测距离缩短
- 在PLC程序中添加运行时间计数器(用D8000配合INC指令),便于预测维护周期
- 对于高频操作的触点(如支付信号),在程序中添加防抖逻辑(用T192定时器实现20ms延迟)
这套系统目前已在本地30多台售货机上稳定运行超过两年,最长的单机无故障时间达到427天。期间进行过三次功能升级(增加语音提示、温度监控、远程查询),都得益于最初的模块化设计,每次升级平均只需2-3小时即可完成。