ARTICLE · INTELLIGENCE

战地情报 · 详情页

来自尧图项目组的一线实战观察与深度解析

基于PLC的4x4双层立体车库控制系统设计与调试实践

基于PLC的4x4双层立体车库控制系统设计与调试实践 先说说这个项目吧。我去年给一个老旧小区做过一套4x4双层立体车库的电气改造16个车位两层四列下层四个车位可以直接存取车上层十二个车位得靠横移和升降把车挪出来。整个系统的核心就是一套PLC接线、梯形图、调试前前后后折腾了将近一个月。这项目最有意思的地方在于它看着简单就是横移加升降两个动作但真正做起来逻辑互锁、定位精度、安全保护任何一个环节没想清楚都会让你在调试现场怀疑人生。这个项目其实特别适合刚入门的PLC工程师练手也适合做自动化项目的老手参考。因为立体车库的控制逻辑不算复杂但麻雀虽小五脏俱全——数字量输入输出、电机控制、传感器检测、手动/自动切换、故障报警PLC编程的基础知识点几乎全用上了。我写这篇文章就是把当时从零搭建这套系统的完整思路和实操过程拆开来讲硬件选型、I/O分配、梯形图怎么写、调试时踩过哪些坑都放在里面。你要是正准备做类似的项目直接照着这个思路走能省不少弯路。1. 设计方案拆解4x4车库为什么一定要用PLC先理清机械结构。4x4立体车库说直白点就是四列、两层的钢结构框架每列上下两个车位一共16个车位。下层车位因为车辆可以直接开进去不需要任何动作真正需要控制的是上层车位的存取。上层车位想要取车得先把目标车位下方的下层车位移开腾出空位然后把上层车板降下来车辆开上去或开下来再升回去。这就引出了两个核心动作横移下层车位左右平移让位和升降上层车板垂直升降。这套系统的控制需求非常明确横移电机和升降电机各一台加上到位检测传感器、操作按钮、指示灯和报警器输入输出点一共不到20个。用继电器逻辑也能实现但我从一开始就定了用PLC原因很实际——继电器控制电路一旦逻辑需要调整改线能改到你崩溃而PLC只需要改程序、下载、运行逻辑修改就是几分钟的事。而且立体车库对安全互锁的要求非常高比如升降动作时横移绝对不能动这种互锁用PLC做简直不要太轻松。1.1 控制对象与工艺流程分析我先把整个存取车流程列出来后面编程全靠这张流程图。存车流程以上层3号位为例系统检测3号位对应的下方7号位是否有车如果7号位没有车直接跳到第4步。如果7号位有车横移电机启动把7号车位向左或向右平移一个空位。横移到位后限位开关反馈信号横移停止。升降电机启动3号位的车板下降到地面层到位后停止。司机把车开上车板离开按确认按钮。升降电机反转车板回升到二层到位后停止存车完成。取车流程是上面的逆过程唯一的区别是取车时升降电机先下降车辆开出后车板回位到二层同时如果之前移动过下层车位需要把下层车位归位。这里就有个很关键的设计点系统必须记住下层车位移位前的原始位置取完车之后能自动回位否则车库用几次就会乱套。这个流程看着不复杂但有一个难点横移电机怎么精准停在目标位置机械结构上我在每个下层车位的轨道尽头装了限位开关横移车板走到对应位置时撞块会压住限位开关PLC收到信号就切断电机。所以本质上用的是开关量定位而不是编码器闭环定位。对于一个民用的简易立体车库来说这种方案成本和可靠性是最平衡的。1.2 为什么选PLC而不是单片机或继电器我遇到不少做机械设计的同行一上来就问“这东西用单片机做行不行”。行是行但立体的车库不是玩具涉及人身安全和车辆安全单片机方案的开发周期长、抗干扰能力弱、故障排查困难。PLC这边梯形图逻辑直观现场改程序方便而且有成熟的IO隔离和工业级抗干扰设计在车间这种电磁环境复杂的场所更稳。继电器方案我也认真考虑过毕竟成本最低。但问题在于继电器逻辑一旦要增加互锁条件、延时、计数这些功能触点数量根本不够用比如升降电机启动前要确认横移已经锁死横移启动前要确认升降已经在顶层——这些条件组合起来继电器硬接线会非常庞大后期的维护成本远超PLC的差价。所以最后选了一款国产汇川PLC来当控制核心性价比高调试软件也好用再加上一个7英寸触摸屏做操作界面。2. 硬件选型与I/O分配方案硬件选型是整个项目里最看经验的部分。我踩过的坑是这样的一开始图省事电机用了普通的单相电容启动电机结果带负载启动时频繁过载后来全部换成带刹车装置的三相减速电机。为什么一定要带刹车因为升降机构在断电或停机的瞬间如果电机没有抱闸车板会因为重力自己滑下来这是绝对不能出现的情况。所以升降电机必须选带失电制动功能的断电自动抱紧。2.1 关键硬件参数与计算过程我用的电机和传感器清单如下参数都是根据实际车重和结构算过的升降电机三相380V功率2.2kW带失电制动器减速比1:60输出转速约25rpm配链条提升机构。这里有个计算过程车板加车辆总重按2吨算链条提升速度按0.1m/s算需要的功率约为PF×v2000kg×9.8N/kg×0.1m/s≈1.96kW考虑传动效率0.85取整后选2.2kW电机。横移电机三相380V功率0.75kW减速比1:30输出转速约50rpm配齿条传动。横移只需要推着一个空车板水平跑负载比升降小得多0.75kW足够。PLC汇川H1U系列16点输入、16点继电器输出。选继电器输出的原因是电机启停频率不高继电器输出成本低带负载能力强。限位开关欧姆龙滚轮式限位开关每组车位装2个横移左到位、横移右到位升降机构装2个上限位、下限位。光电开关漫反射式安装在地面层每个车位入口用于检测车位内是否有车辆占用。I/O分配表我整理如下编程时照着这个表写地址不会乱PLC地址功能说明PLC地址功能说明X0复位按钮Y0横移电机正转左移X1急停按钮Y1横移电机反转右移X2自动/手动切换开关Y2升降电机正转下降X3存车确认按钮Y3升降电机反转上升X4取车确认按钮Y4横移运行指示灯X51号下层车位限位Y5升降运行指示灯X62号下层车位限位Y6故障报警灯X73号下层车位限位Y7蜂鸣器X104号下层车位限位X11横移左到位限位X12横移右到位限位X13升降上限位X14升降下限位X15光电11号位有车检测X16光电22号位有车检测X17光电33号位有车检测2.2 接线注意事项与抗干扰处理接线这块有几个细节新手特别容易忽略。首先PLC的DC24V电源最好不要和电机动力线走同一个线槽我这次就是线槽走线时图省事结果一启动横移电机PLC偶尔会误动作。后来把所有模拟量开关信号线单独穿管走线和动力线拉开30厘米以上问题立刻消失。其次所有限位开关的公共端最好用同一个24V电源负极也就是“共阴接法”这样PLC输入公共端只要接一个负极内部回路简单排查故障也方便。要是现场有两种不同电压等级的输入信号一定得分组隔离不然烧输入点是分分钟的事。再有就是电机接触器的灭弧问题。电机频繁启停时接触器触点会产生电弧虽然不至于影响PLC但会对旁边的传感谢器信号造成干扰。我建议在接触器线圈两端并接一个RC阻容吸收器或者反向并联一个续流二极管直流线圈场合这个细节能省掉日后很多“幽灵故障”——就是那种你查了半天查不出原因但它就是偶尔犯病的干扰问题。3. 控制逻辑设计从流程图到梯形图到了最核心的部分——逻辑设计。立体车库的PLC程序核心就三块横移控制逻辑、升降控制逻辑、安全保护逻辑。如果没有一个清晰的流程图直接上手写梯形图写着写着就会乱。我的习惯是先在纸上把所有状态和转移条件列出来确认无误后再翻译成梯形图。3.1 让位逻辑与位置记忆先说横移让位逻辑。以“3号位上层存车”为例因为3号位下方是7号位所以系统要判断7号位有没有车。如果有车需要把7号位的车板横移到旁边的空位去。这里我用了移位寄存的思路四个下层车位的状态用一个数据寄存器保存哪一位是1就代表该位有车。每次横移动作完成后程序自动更新这个寄存器保证PLC永远知道每个位置的状态。这一步初学者特别容易出错的是横移车板的数量和车位编号不是固定对应的。比如7号位车板左移到6号位的位置那么横移左到位限位触发时程序要记录“7号位的车板当前在6号位位置”。所以我在程序里用了一个“当前横移位置编号”的寄存器横移到位后按方向加减来更新。整个横移逻辑的核心就是不断问自己现在车板在哪要去哪到了没有。梯形图实现横移定位的核心段我简化下是这样// 横移启动条件自动模式 正在执行存取流程 目标位有车需要让位 // 当前车板在7号位需要移到6号位左移一个位 LD 自动模式 AND 存取流程进行中 AND 当前横移位置7 AND 7号位有车 AND 目标空位6 AND 横移左限位未触发 OUT 横移电机正转(Y0) // 左移到位停止 LD 横移电机正转(Y0) AND 横移左到位限位(X11) RST 横移电机正转(Y0) MOV 6, 当前横移位置寄存器 SET 让位完成标志3.2 升降控制与安全联锁升降控制比横移简单但安全要求却高一个等级。升降电机的正反转控制我用了两个接触器切换相序在PLC输出端做了硬互锁同时在程序里也做了软互锁。这个“双重互锁”是安全关键点——万一接触器触点粘连程序互锁能拦住下一次动作万一程序逻辑错乱硬件互锁能拦住接触器同时吸合。两套保险缺一不可。升降动的启动条件必须包含以下全部条件少一个都不行横移电机停止运行且横移车板在目标位置升降机构的上限位或下限位未被触发防止在极限位置继续运行升降机构下方的地面区域没有人员或车辆由地面光电开关检测急停按钮未按下升降到位后的制动也是个关键点。虽然电机带失电制动器但PLC程序里我还是让升降电机在到位前提前200~300毫秒切断输出让系统靠惯性缓慢停下再由制动器锁死。这样既减小了冲击又避免因为惯性冲过头导致限位开关撞坏。这个延时时间需要现场实测我最初写了500毫秒结果车板在到位前就停了距离不够后来调到250毫秒才正好。3.3 故障报警与状态复位任何商业化的设备故障处理机制都是重中之重。这套系统的报警我设计了以下几种故障代码故障描述触发条件处理方式E01横移超时横移启动10秒内未到位停止电机报警灯亮蜂鸣器响E02升降超时升降启动15秒内未到位停止电机制动器抱闸报警E03光电异常存车流程中光电信号持续为1停止流程报警提示检查传感器E04急停触发急停按钮按下立即停止所有输出锁存状态报警以后要能复位。我在程序里加了一个“报警锁存”寄存器任何故障发生后置位它同时断开所有输出操作人员排除故障后按复位按钮程序才能重新开始。我还专门在触摸屏上做了一页历史故障记录方便售后维护时查看之前发生过什么。这个功能看着不起眼但在实际运营中特别有用——很多时候故障是偶发性的现场人员说不清发生了什么翻历史记录就能一目了然。4. 梯形图编程实操程序架构与关键代码段4.1 程序整体架构规划写PLC程序和我写其他代码的习惯一样不喜欢把所有逻辑堆在一个主程序里。我的架构是主程序OB1负责整体流程调度判断当前处于哪个状态调用对应的子程序。横移控制子程序包含横移方向选择、到位检测、超时报警。升降控制子程序包含升降方向选择、到位检测、制动延时、超时报警。位置记忆与状态更新子程序每次动作完成后更新车位状态寄存器。手动操作子程序调试时使用直接按钮点动控制横移和升降不经过自动流程。为什么要拆这么多子程序因为拆开之后调试每一部分都很清晰。先单独手动模式验证横移、升降电机是否正常再单独验证传感器反馈最后再整合到自动流程里。如果你全写在一个程序里出了问题你很难定位是传感器问题、逻辑问题还是执行机构问题。4.2 核心梯形图段示例我用汇川的AutoShop软件写程序编程语言主要是梯形图以下把关键段落的逻辑用文本方式描述第一段自动模式下的流程状态机// S0空闲状态 // 条件收到存车请求 - 切换到S1收到取车请求 - 切换到S4 LD 自动模式 AND 存车请求按钮 AND 状态寄存器S0 SET 状态寄存器, S1 // S1判断是否需要横移让位 // 如果目标下层车位无车直接跳到S3升降有车则启动横移 LD 状态寄存器S1 AND 目标下层位有车 AND 横移左到位未触发 AND 横移右到位未触发 SET 横移启动标志 RST 状态寄存器, S1 SET 状态寄存器, S2 // S2横移让位等待 // 横移到位信号触发后切换到S3 LD 状态寄存器S2 AND 横移到位信号 RST 横移启动标志 RST 状态寄存器, S2 SET 状态寄存器, S3 // S3升降下降/上升 // 升降下限位触发后存车流程中应等待人工确认 LD 状态寄存器S3 AND 升降下限位 RST 升降启动标志 SET 人工确认等待标志第二段安全互锁输出控制// 升降电机输出必须满足横移未运行且反馈无异常 LD 升降启动标志 AND NOT 横移运行标志 AND NOT 横移反馈异常 AND NOT 急停触发 AND NOT 升降上限位(下降时) AND NOT 升降下限位(上升时) OUT 升降电机接触器 // 横移电机输出必须满足升降未运行且已在上层回位状态 LD 横移启动标志 AND NOT 升降运行标志 AND NOT 急停触发 AND NOT 横移左到位(右移时) AND NOT 横移右到位(左移时) OUT 横移电机接触器第三段超时报警计数器// 横移超时检测启动后10秒用特殊寄存器M80131秒脉冲计数 LD 横移启动标志 AND M8013 INC 横移计时寄存器 LD 横移计时寄存器 10 AND 横移未到位 SET 报警E01 RST 横移启动标志 // 到位后复位计时 LD 横移到位 RST 横移计时寄存器上面这些代码段看着不复杂但堆在一起时初学者最容易搞混的是各状态的转换条件。我提供一个小技巧程序写完后自己把每个流程完整跑一遍边跑边画状态表记录每一步的状态寄存器、输出线圈、计时器数值再对照梯形图检查。这个“纸上调试”的方法我用了十年基本能提前发现八成以上的逻辑漏洞。5. 常见问题与现场调试实录调试阶段永远比设计阶段更折磨人。我这次在现场遇到了三个印象特别深的问题拿出来分享下算是给后来者排雷。5.1 问题一光电传感器在强光下误触发安装在车库入口的漫反射式光电开关在下午阳光直射的时候会偶发误信号。这个问题最坑因为白天调试正常一到下午两三点就抽风。排查了半天最后发现是阳光里的红外线成分触发了光电接收器。解决方法和经验把漫反射式换成对射式光电开关抗自然光能力大幅增强或者在传感器上方加装遮阳罩成本最低更根本的办法是在程序里加延时滤波要求信号持续稳定100毫秒以上才认定为有效5.2 问题二升降到位信号偶发丢失升降车板降到地面后下限位开关会触发但偶尔会碰到下限位信号还没稳定程序就切走了的情况。刚开始以为是开关质量问题换了一个还是老样子。后来用万用表一测发现车板到位瞬间有冲击振动限位开关的滚轮在振动中会瞬间断开再闭合导致PLC收到一个“到位-离开-到位”的信号。解决办法是在梯形图里加了一个“到位确认计时器”// 下限位信号需持续0.5秒才算真正到位 LD 下限位输入 OUT 暂存中间继电器 AND M8013 INC 到位计时器 LD 到位计时器 5 AND 下限位输入 SET 真正到位标志这招立竿见影从此再没出过到位信号丢失的问题。这个思路其实就是常说的“软件滤波消抖”在工业现场非常实用。5.3 问题三横移车板定位偏差越来越明显运行了大概两周后售后反馈横移车板停的位置开始偏移有时候偏了三四厘米导致升降车板放下来对不准接口。一开始我怀疑是传感器松动检查后一切正常。最后发现问题出在机械传动上——横移链条逐渐松弛导致每次停车的位置都在慢慢变偏。这个问题的本质是开环定位系统对机械磨损非常敏感。解决思路有两个方向每个月定期检查并张紧链条维护到位就没问题在升降动作之前增加一道“角度校准”如果横移偏差超过阈值就自动微调长远看可以把开环定位升级成编码器闭环定位虽然成本高一些但精度和稳定性都好很多对于这个民间小项目我建议就用第一条方案定期维护就够了。但不代表开环定位是错的——这种方案简单、成本低、调试方便对于定位精度要求不高的场合非常合适。5.4 故障排查速查表给经常被问到的售后问题做了一张速查表现象可能原因排查方法解决措施按下按钮无任何反应急停未复位检查急停按钮状态松开急停按复位键横移电机启动但很快停限位开关误触发观察PLC输入指示灯调整限位开关位置升降中途停止报警E02超时保护触发检查电机是否过载、制动器是否卡死排除机械卡阻复位程序运行但电机不转接触器损坏或接线松脱用万用表测接触器线圈电压更换接触器重新压线系统偶发乱动作干扰或接地不良检查传感器线是否与动力线同槽强弱电分离可靠接地6. 从调试完成到运营维护的经验项目交付以后我还跟进了一段时间的运营维护。这期间最大的体感是立体车库这种设备硬件的可靠性很重要但真正决定用户使用体验的往往是控制逻辑的细节和现场调试的水平。同样是16个车位有的车库三天两头报警有的车库一年到头安静运行差别就在程序的逻辑严密程度和抗干扰设计上。个人建议PLC选国产品牌完全可以胜任这类项目汇川、台达、信捷我都用过稳定性都没问题。调试软件方面汇川的AutoShop、台达的ISPSoft、信捷的XDPPro上手都不难关键是先弄懂梯形图的基本指令结构。另外程序里一定要写好注释命名规范一点别觉得自己写的程序自己肯定能看懂——三个月后你自己都未必看得懂当年写的东西。关于远程运维如果你经常要跑现场可以考虑给PLC加一个远程模块通过4G或以太网连接在手机上就能监控运行状态、看报警记录、甚至改参数。我第一次用远程监控是客户凌晨打电话说车库卡住了我躺在床上五分钟就定位到是哪个限位开关出了问题让现场人员直接处理省了一趟来回三个小时的路程。现在很多新出的PLC都自带以太网口配远程模块的成本也不高强烈建议做项目的时候顺手就加上。这套4x4立体车库的控制系统做下来最深的体会是千万别嫌控制逻辑简单就轻视它。越是看似基础的项目越考验工程师对细节的把控——接线布线的抗干扰、传感器信号的滤波消抖、软硬双重互锁、报警复位机制每一个细节事先想清楚能避免后面无数个加班的夜晚。你要是也正在捣鼓类似的自动化项目希望这篇文章里的一些思路和踩坑经验能对你有点帮助。
RELATED READING

延伸阅读

更多一线实战笔记与深度复盘,助您持续精进