核心内容摘要
告别“大扔子”,拥抱“小确幸”:一次关于告别的深情与洒脱
18位垂直升降立体车库西门子200Smart程序与组态王通讯可随意选择存取。
立体车库的PLC程序调试现场永远充满惊喜。
那天刚啃完最后一口煎饼果子监控屏上的组态王突然弹出个车位未复位的报警——得又得跟西门子200Smart PLC来场深入交流了。
这个18层垂直车库的硬件配置相当实在升降机构用S
Smart SR40带两个EM DR32扩展四台
5kW变频器负责升降动作旋转编码器实时反馈轿厢位置。
重点在于存取策略设计车主按下按钮后系统需要自动计算最优路径这活儿全靠PLC里的移位寄存器配合指针寻址。
看这段存取车核心逻辑//车位状态寄存器初始化 MOV_B 16#FF, VB2000 //16#FF表示空车位 MOV_B 16#00, VB2001 //保留位 //自动分配车位程序 LD SM
0 EUO VB
2
0 //检测第一个空闲位 MOVW 1, VW100 //目标层数存储 RLB VB2000, 1 //移位更新状态 MOVB 16#FE, VB2000 //置位该车位为占用状态寄存器VB2000的每个bit对应
层状态VB2001对应
层。
用移位指令找首个0位比FOR循环快三倍不止实测扫描周期从15ms降到5ms。
组态王那边用Modbus TCP协议直接读V区数据记得在系统块里勾选允许PUT/GET通信。
18位垂直升降立体车库西门子200Smart程序与组态王通讯可随意选择存取。
通讯配置有个坑必须注意组态王的设备地址要和PLC的IP网段一致。
有次调试死活连不上最后发现子网掩码设成
255.
255.
0导致跨网段通信失败。
正确的设备定义应该是[Device1] DeviceTypeModbus_TCP IPAddress
192.
168.
100 Port502 Timeout3000 DataBit8 StopBit1存取车动作的联动逻辑才是精髓。
当车主在触摸屏选择存车时PLC先检测当前轿厢位置与目标层的差值通过高速计数器HSC0读取编码器脉冲数。
这里用到了PID位置环控制但把积分时间设长些避免震荡MOVR
8:VD500 //比例系数 MOVR
05:VD504 //积分时间 MOVR
0:VD508 //微分项禁用 BTI HC0, AC0 //当前脉冲转存累加器 SUB VW100, AC0, AC1 //计算位置偏差 MULR AC1, VD500, VD520 //比例输出调试时发现个有趣现象当车库运行超过4小时后定位精度会漂移约3mm。
后来在升降机轨道加了温度补偿算法读取环境温度传感器AIW0的值做动态修正这才保证±1mm的定位精度。
最实用的还是故障诊断设计。
我们在VW300开始预留了20个字的状态寄存器组态王画面上用指示灯矩阵显示各传感器状态。
有次光电开关误触发就是通过监控V
3
5位的异常变化快速定位到E03传感器故障。
项目交付前夜业主临时要求增加VIP车位优先分配功能。
灵机一动在状态寄存器前加了优先级掩码VB1998存储VIP车位位图分配算法里先与操作VB2000轻松实现不修改主逻辑的功能扩展——这大概就是PLC编程的魅力所在。
凌晨三点的调试车间看着车架平稳地停在第17层定位卡槽里突然觉得这些天熬的夜都值了。
顺手在触摸屏上加了个彩蛋连续点击五下左下角会弹出俄罗斯方块小游戏——反正组态王的脚本系统闲着也是闲着。