No.1081 基于三菱PLC和组态王组态智能车库控制系统
深夜加完班走到车库门口,车牌识别自动开启栏杆,车位指示灯精准引导到空位------这样的智能车库系统背后藏着工控老司机的硬核操作。今天咱们就扒开PLC控制柜的金属外壳,看看三菱FX3U和组态王这对黄金搭档怎么玩转智能车库。
先看车库门口的车辆检测逻辑。在PLC程序中,我们用X0接收地感线圈的触发信号:
ladder
LD X0 // 地感线圈触发
OUT M0 // 置位车辆到达标志
MOV K100 D0 // 设定10秒等待时间
这段代码的精髓在MOV指令后的K100(十进制100对应10秒)。当车辆压在地感线圈上超过10秒还没完成识别,系统就会触发异常警报,防止道闸被长时间占用。
组态王这边对应的监控画面更直观。在画面编辑器中拖个矩形控件绑定M0寄存器,颜色动画设置成M0=1时变红色。调试时发现个坑:三菱PLC的位寄存器在组态王里要换算成字地址,比如M0对应的是4x00001,这个地址映射表得随身带着。
说到核心的升降杆控制,这段梯形图藏着安全机制:
ladder
LD X1 // 红外防砸信号
AND M10 // 车牌识别成功标志
OUT Y0 // 升起道闸
TIMER T0 K50 // 5秒后自动降杆
LD T0
OUT Y1 // 执行降杆动作
Y0输出道闸电机正转时,必须同时满足车牌识别成功(M10)和防砸信号正常(X1)。T0定时器确保无人车通过时自动落杆,这个时间参数要根据实际道闸速度调整,太快容易砸车,太慢影响通行效率。
在组态王的趋势图里,我们实时监控着车流量数据。脚本里写了个统计逻辑:
vb
If \本站点\CarIn = 1 Then
\本站点\DayCount = \本站点\DayCount + 1
\本站点\TotalCount = \本站点\TotalCount + 1
EndIf
这个简单的计数器在项目验收时被甲方疯狂点赞。不过要注意组态王的变量刷新周期,曾经遇到过统计数量比实际少三分之一,最后发现是PLC数据寄存器的更新速度没跟上。
调试时最头疼的是PLC与车牌识别机的Modbus通讯。三菱的RS指令配置参数差点让我头秃:
ladder
MOV H0C81 D8120 // 设置通讯格式:19200,8,N,1
RS D100 K8 D200 K5 // 从D100发送8字节,接收至D200
这个配置要和识别机的协议完全匹配,特别是校验位和停止位。有次参数设错导致接收到的车牌号变成乱码,显示屏上出现"京A·SB250"这种神车牌,现场运维小哥笑到扶墙。
现在走进车库,看着指示灯矩阵精准引导,其实背后是PLC里这段移位寄存器的功劳:
ladder
LD X10 // 新车入库信号
SFTL D30 D31 K32 1 // 左移车位状态寄存器
D30-D61这32个寄存器对应着32个车位,每个bit代表车位占用状态。组态王画面上用32个圆形指示灯绑定这些位状态,调试时拿着磁铁挨个触发车位传感器,活像在玩工控版扫雷。
项目上线后最实用的还是手机端的组态王Web发布功能。老板在马尔代夫度假都能随时查看车库状态,有次半夜打电话说看到C区12号车位持续占用48小时,结果发现是保洁大姐把拖把桶放在传感器上了------果然智能系统最大的敌人永远是人类的蜜汁操作。
这套系统跑了大半年,最惊喜的是PLC的电池居然还没报低电量警告。三菱的硬件确实抗造,倒是组态王的运行日志把硬盘撑爆过两次,后来加了定期清理脚本才算消停。下次升级准备试试用PLC的SD卡存故障记录,毕竟老司机的经验之谈:稳定的系统都是被异常数据喂出来的。
