
直接开门见山。前阵子接了一个多层升降横移式立体停车库的控制系统设计单子甲方点名要求用西门子200系列因为现场运维熟悉这套东西备件库里也囤了不少库存。项目交付后顺手把控制方案、PLC程序思路、组态设计以及配套的技术文档整体梳理了一遍刚好把整条链路从头到尾走完。这篇内容适合刚接触自动化立体车库项目的电气工程师、PLC程序员以及需要写类似设计方案的工科学生参考我尽量把设计决策背后的“为什么”也讲清楚。1. 项目背景与整体设计思路1.1 为什么选多层升降横移式立体车库市面上常见的自动化立体车库形态不少有巷道堆垛式、垂直升降式、平面移动式还有多层升降横移式。这次项目选择多层升降横移式核心原因有三个第一停车密度和土建成本的平衡。升降横移式车库可以在两三个车位的地面面积上叠出五层甚至更多的车位结构以钢结构为主托板加链条或者丝杠传动土建要求远低于垂直升降塔库那种深基坑方案。第二控制系统的复杂度适中。相比巷道堆垛式需要三维定位的堆垛机升降横移式本质上是“横移动作 升降动作”的组合PLC程序上就是状态机切换加上定位判断逻辑清晰、便于调试也很适合作为教学或者毕业设计课题展开。第三运维友好。机械结构模块化某层某列的车位出现故障时可以单独锁定该车位而整库不停运。这一点实际运营中非常重要甲方特别看重。1.2 西门子S7-200选型的真实考量可能有朋友会问都什么年代了为什么还选S7-200S7-1200甚至S7-1500不香吗这里必须说明白S7-200确实是一款老产品但它在小型自动化项目中的生态基础非常扎实。选择它有几个实际的理由项目预算有限S7-200 CPU加扩展模块的总体成本远低于同点位的S7-1200方案使用单位电气维护人员对STEP 7-Micro/WIN编程软件非常熟悉备件里屯了大量S7-200的模块不希望引入新的平台增加学习成本升降横移式车库的I/O点数一般在一百点以内逻辑控制为主、没有复杂运动控制和高速计数需求S7-200的性能完全够用STEP 7-Micro/WIN对计算机配置要求低调试电脑甚至可以用老旧的笔记本现场便捷性很好。当然也要认清S7-200的短板它的通信接口只有PPI/MPI和自由口以太网需要额外加CP243-1模块。组态触摸屏如果选国产屏通常走RS485串口即可问题不大。如果上位机要用以太网做远程监控要么加模块要么升级S7-200 Smart系列这个后面再细说。1.3 系统整体框架整个车库控制系统的层次结构可以归纳为三层管理层是触摸屏HMI负责操作指令下发、车位状态显示、报警监控控制层是S7-200 PLC负责逻辑运算、电机启停控制、定位判断、安全互锁执行层是各个电机、限位开关、光电传感器、防坠落装置。三者之间通过RS485总线连接HMI与PLC之间走PPI协议PLC通过输出继电器控制接触器进而驱动三相异步电机。从功能模块上拆系统又分成存取车操作模块、横移控制模块、升降控制模块、定位检测模块、安全保护模块、手动维护模块。整个程序的主框架就是围绕这些模块展开的。2. 系统硬件架构与电气设计2.1 机械结构对控制需求的约束在写PLC程序之前必须先摸清机械结构这是很多项目翻车的根源。升降横移式车库的典型布置是这样的假设做三层五列的库底层五个车位可以横向移动二三层车位固定在钢结构框架上通过载车板升降动作实现存取。具体运行逻辑是如果需要存取上层某个车位的车辆系统先要把目标车位垂直下方的那一列空出来让下层载车板横移让位形成一个升降通道然后上层载车板带着车辆下降到地面层驾驶员完成存取后载车板再回到原来的层位。这是一个“先让位、再升降、后复位”的动作链。这个机械逻辑直接决定了I/O点表的规划每个载车板需要检测横移左限位、横移右限位、升降上限位、升降下限位、载车到位检测再加上库内人员检测用的光电传感器和紧急停止按钮。2.2 PLC及扩展模块的选型与I/O点表规划我先用一个具体案例来算点表。三层五列共十五个车位实际底层有五个载车板二三层各五个载车板。底层载车板只横移二三层载车板只升降但是为了安全检测每个载车板都需要一组限位信号。输入点方面横移限位底层五个载车板每个两个方向限位共10个点升降限位二三层共十个载车板每个升降上限和升降下限共20个点载车到位检测用于确认车辆已完全停在载车板上每层共用一个或者每列独立布置取15个点安全光栅或光电检测库前地面入口处设置一个检测区2个点急停信号、运行允许信号、手动/自动切换开关约6个点总输入点数约为53个点。输出点方面横移电机正反转控制底层五组每个方向一个输出共10个点或者用正反转接触器加互锁输出点不变升降电机正反转控制二三层共用升降电机需要10组控制点每组两个方向约20个点防坠落电磁阀/电机抱闸控制每个升降载车板一个输出点10个点报警指示、运行指示灯、蜂鸣器等约8个点总输出点数约为48个点。这个规模用S7-200 CPU22624输入/16输出加两个EM223数字量扩展模块16输入/16输出完全可以覆盖且留有一定余量。点表规划时务必预留15%-20%的备用点现场调试追加信号是大概率事件。2.3 电气主回路与安全电路设计主回路设计相对常规每台电机由接触器控制接触器线圈由PLC输出点驱动中间继电器再通过中间继电器触点控制接触器。不要直接用PLC输出点驱动接触器线圈虽然继电器型PLC输出点有隔离但感性负载关断时的反向电动势和触点磨损会影响PLC使用寿命加一级中间继电器是工程常识。安全电路上必须把以下内容硬接线到急停回路中库内紧急停止按钮多点串联上下限位开关的硬件常闭触点防止PLC程序跑飞时冲顶或冲底防坠落装置的机械锁止反馈信号。这里有一条血泪教训安全回路不能只靠程序。PLC程序扫描周期存在一旦程序跑飞或者I/O模块故障软件互锁会失效。硬件回路必须直接切断接触器线圈电源这是设计底线。2.4 输入信号类型选择的经验限位开关选用机械式行程开关还是接近开关我的建议是以机械式行程开关为主关键位置加接近开关双确认。机械式行程开关抗干扰能力强、成本低、更换方便缺点是寿命有限。升降横移式车库动作频率不算高正常使用三五年没问题。接近开关电感式响应快、无机械磨损适合需要频繁动作的位置但是对安装间隙敏感金属碎屑环境容易误动作。在载车板升到位的检测上我更推荐“行程开关上限位 接近开关冗余确认”的组合行程开关负责动作链的触发逻辑接近开关作为到位后的硬件确认信号。这样即使行程开关因为机械抖动提前闭合接近开关没到位时程序也不认为升降到位可以有效降低误判风险。3. PLC程序架构设计与核心逻辑3.1 程序整体框架与模块划分STEP 7-Micro/WIN里的程序结构大体分成主程序OB1、子程序和中断程序。我在这个项目里将主程序组织成以下几个功能块系统初始化子程序设置寄存器初值、恢复掉电前的车位状态、复位所有电机输出状态采集子程序读取所有限位、传感器、按钮状态统一刷新到V存储区操作解析子程序解析触摸屏下发的指令区分存车、取车、复位、手动操作动作调度子程序根据目标车位号计算当前各个载车板的目标位置规划动作序列安全监控子程序实时检测急停、超限位、防坠落异常、人员闯入任何异常都会中断当前动作并触发报警通信处理子程序处理与HMI的PPI通信数据交换。这种模块化划分的好处是调试的时候可以单独强制一个子程序不会因为一个功能的问题而干扰其他功能。3.2 核心控制逻辑存取车动作链的状态机设计升降横移式车库的PLC程序核心是“状态机”每个载车板相当于一个状态节点整个系统是一个多状态协同的状态机族。我以“取三层的第三个车位”为例拆解状态转移系统空闲状态检测到取车指令解析出目标车位号是3-3然后执行以下动作链第一步检测3-3车位对应的正下方2-3和底层1-3车位是否空闲。如果被占用向对应载车板下发横移让位指令让它们移动到空位直到3-3车位所在列从上到下形成空通道。第二步确认空通道后启动3-3载车板的升降电机下降。下降过程中实时监测升降下限位到达地面层后停止解除防坠落装置。第三步驾驶员驶入载车板取车完成后按下“取车完成”按钮载车板上升回到3层原位置升到位后防坠落装置锁定。第四步所有让位载车板复位到原位系统返回空闲状态。状态机的实现用M位寄存器加SM0.0扫描脉冲每一个环节是一个M位状态转移条件是前一个状态的完成反馈限位信号。不要试图在一个大程序里用大量串联线圈实现动作链那样逻辑可读性极差。3.3 关键程序设计升降定位与横移让位的判断定位逻辑是这个项目的技术难点。载车板横移和升降的最终停止位置由限位开关决定限位开关的安装位置直接决定停车精度。设计时需要注意以下几点限位开关的安装必须考虑机械惯性。电机制动后载车板还会有一段惯性滑行距离所以限位开关的触发位置要提前于最终停止位置。具体提前量要根据现场实测确定通常预留30到50毫米的余量。同时电机控制回路选用带断电制动的电机可以缩短滑行距离降低定位误差。横移让位的判断逻辑要做到“够用即可”。编程时不需要计算最优路径只要按固定顺序逐个排查目标车位下方的列通道找到第一个空闲列就执行让位。算法简单、逻辑清晰、现场调试方便。堆垛机才需要最短路径规划升降横移式库用贪心顺序就能满足效率要求。3.4 安全互锁程序的设计要点安全互锁绝对是这个项目里最重要的部分没有之一。我总结了以下几类必须做的互锁第一横移电机与升降电机的互锁。同一时刻绝不允许横移动作和升降动作同时发生这是机械结构本身不允许的程序上必须将两个动作域完全隔离。实现方式是设置一个“动作域标志位”横移动作开启时置位横移域标志升降动作必须检查该标志位是否为零。第二升降方向的极位互锁。升降上限位触发后程序必须禁止上升输出升降下限位触发后禁止下降输出。同时正反转接触器必须硬件互锁防止两个接触器同时吸合造成相间短路。第三防坠落装置与升降电机的互锁。升降电机启动前必须收到防坠落装置解锁到位信号升降到位后必须先锁定防坠落装置才能允许横移动作。这部分在编程时容易遗漏我在实际调试中被这个坑过——防坠落装置解锁机构有机械延迟如果PLC认为解锁到位但机械机构实际没有完全动作直接启动升降电机会有危险所以解锁到位反馈信号必须取机械机构的实际状态传感器而不是取电磁阀线圈的输出本身。3.5 PLC程序代码片段示例下面给出横移让位判断的核心代码示意使用梯形图语言的指令风格描述关键逻辑便于理解整个控制思路。// 网络1检测底部横移车板2当前位置是否为空 LD I0.0 // 读取横移车板2左限位状态 LD I0.1 // 读取横移车板2右限位状态 NOT // 取反得到“车板2不在左位也不在右位”的状态 A M0.1 // 车板2的“无车空闲”标志 S M10.0, 1 // 置位“车板2允许横移让位”标志 // 网络2让位电机正转输出控制 LD M10.0 // 允许让位标志 A M0.0 // 系统自动模式 AN M10.5 // 未触发紧急停止 AN M10.6 // 未触发横移超时报警 Q0.0 // 横移电机正转接触器输出这段代码的核心逻辑是只有当车板处于空闲状态、系统处于自动模式、没有急停报警的情况下横移电机输出才允许动作。其中M10.6横移超时报警是一个必要的保护措施如果横移指令发出后30秒内没有收到目标限位信号程序自动切断输出并报警防止电机堵转烧毁。3.6 掉电保持与状态恢复自动化立体车库最怕掉电。车停到一半电没了载车板悬在半空怎么恢复这部分设计不能省用断电保持寄存器V区保存当前动作状态和目标车位号恢复供电后程序检测到“动作未完成”标志自动进入恢复流程载车板悬在中间位置时恢复流程只允许手动操作模式由操作人员在触摸屏上确认现场安全后手动把载车板移动到最近的限位位置再切换到自动模式继续执行未完成的动作。这个恢复策略很保守但绝对安全。千万不要设计成“自动恢复到掉电前的动作链继续执行”因为掉电瞬间机械状态、车辆位置都可能发生变化自动恢复可能会造成二次事故。4. HMI组态与监控界面设计4.1 组态软件选型HMI选型这块我的经验是优先考虑与PLC同品牌的西门子触摸屏搭配WinCC flexible组态。但实际项目中受成本控制最终选了一款国产触摸屏采用MCGS组态软件硬件成本比西门子屏低不少而且对S7-200的PPI协议支持很成熟。如果项目预算充足选西门子Smart Line触摸屏质量更稳定通信更顺畅兼容性零门槛。两条路都走得通看预算。组态软件的关键是要实现对S7-200内部V存储区和M存储区的直接读写触摸屏上显示的就是PLC程序的逻辑状态。通信参数设置上波特率统一为187.5 kbpsPLC地址为2触摸屏地址为1RS485接线采用双绞线屏蔽电缆。4.2 监控界面布局与交互设计界面布局上我一般分成四类画面主监控画面显示车库整体侧视图。用图形元素模拟三层五列车位每个车位一个色块绿色表示空闲、红色表示占用、黄色表示正在动作。操作人员在主画面上直接点击目标车位号弹出存车或取车菜单。操作画面主要用于自动模式下的存取车操作。设置“存车”和“取车”两个大按钮操作人员选择车位号后画面显示当前执行动作步骤例如“正在横移让位”、“正在下降”、“请驶入载车板”等。关键是要有醒目的步骤提示因为现场操作人员不一定懂PLC他们要的是清晰直观的操作指引。手动维护画面必须单独设计供维护人员在检修时单点控制某个电机动作。手动画面里每个电机都有独立的正转、反转、停止按钮同时显示各个限位状态和防坠落状态。报警画面记录报警类型、报警时间、当前状态区分故障等级。紧急停车、防坠落异常是最优先级限位开关失效是中间优先级通信故障和电机过载属于一般报警。4.3 状态刷新机制与通信抗干扰HMI与PLC之间的数据刷新推荐两种方式按位读取和按块读取。按块读取效率更高把连续V区数据一次性读入HMI画面显示直接映射。我这里将车库状态字全部集中存放在VW100开始的连续地址段HMI每次按块读取60个字刷新周期设置为300毫秒足够流畅。通信抗干扰方面要注意RS485的接地问题屏蔽层要单端接地通常在PLC侧接地总线上首尾两端各加一个120欧终端电阻。现场如果电焊机、变频器较多通信可能会偶发错误此时程序里要增加通信超时重试机制HMI侧也要启用通信监控数据连续三次接收异常就弹报警提示“通信中断”而不是显示错误数据。5. 调试过程与实际问题排查5.1 调试前的检查清单程序下装之前必须做一遍完整的静态检查这一步我建议宁可慢一点也不能跳过去。重点检查项包括所有PLC输入点接线与点表是否一一对应用万用表逐个确认限位开关的触发位置是否与机械行程范围匹配确认常开常闭类型接触器互锁是否可靠手动按下正转接触器时反转接触器不能吸合急停回路是否能直接切断接触器线圈电源防坠落装置的机械锁止与解锁动作是否顺畅反馈信号是否准确触摸屏与PLC的通信参数是否匹配先单独做通信测试再联调。5.2 空载调试与带载调试空载调试阶段不加车辆手动逐个电机动作确认机械动作方向与PLC输出逻辑方向一致这一步要特别留意电机相序接反了正转变反转限位逻辑就全乱了。然后转入自动模式空跑。把车库模拟成车辆已停放的状态用信号模拟器代替车辆检测信号跑完全部存取车流程。这个阶段重点检查动作链状态机的跳转是否正确每个状态的进入和退出条件是否严格匹配是否存在“卡状态”的情况。带载调试才真正用真车进场。我建议先用一辆车从底层车位开始测逐步扩展到二三层车位。带载调试主要观察三个问题升降电机带载电流是否在额定范围内定位是否因为机械负载变化出现偏差防坠落装置在载车板下降到位后是否有机械冲击。5.3 常见问题排查表我在这个项目调试中遇到并解决的问题如下整理成速查表供参考问题现象可能原因排查与处理方法横移电机不动作行程开关常闭点断开、急停回路未复位、通信指令未解析用万用表查PLC输入状态逐个排除外部信号检查触摸屏是否下发对应指令升降定位过冲限位开关安装位置靠后、电机制动时间过长前移限位开关安装位置30至50毫米或者调整制动单元载车板下降时异响机械导轨润滑不足、链条张紧度不够停机加注润滑脂调整链条张紧轮通信频繁中断屏蔽层未接地、终端电阻缺失、波特率不匹配单端接地屏蔽层总线两端加120欧终端电阻统一波特率触摸屏显示状态与实际不符V区地址映射错误、缓存数据未刷新对照点位表检查地址映射刷新周期适当缩短车辆不到位报警车长传感器安装角度不当、车辆停放歪斜调整光电传感器角度增加两道检测对射光幕5.4 调试中容易忽略的细节有几个细节是新手特别容易栽跟头的我单独拎出来说。防坠落装置的解锁反馈信号一定要取机械机构的实际状态不能取电磁阀线圈的输出去判断。我之前接过一个电磁阀输出信号当做解锁反馈结果电磁阀通电了机械机构卡住没解锁PLC以为解锁成功就启动了升降电机差一点出大事。机械机构反馈可以用接近开关直接检测锁止机构的实际位置这个信号不能省。光电传感器安装在车库门口检测人员是否处于动作区域。我建议装两道一道在门前地面检测驾驶员是否站在载车板上或库内另一道在库内深处防止人员从侧面进入库区。两道光幕任何一个被遮挡所有自动动作都要立即停止。每一个载车板电机都建议加装热继电器保护热继电器辅助触点接入PLC输入程序里检测到过载信号要立即锁定该电机的动作并报警。不要以为有了空气开关就够热继电器对电机堵转、过载的响应要可靠得多。6. 技术方案文档的规划与撰写经验6.1 一份完整设计方案的章节结构这个项目标题里提到“12000字查重率”这其实是技术方案文档写作层面的问题。很多工科同学或刚入行的工程师拿到一个设计题目不知道从哪里下手写出来要么像设备说明书要么像流水账。我以自己的习惯来谈谈一份合格的自动化立体车库设计方案应该怎么搭骨架以及如何在保证原创性的前提下把内容写得扎实。一份12000字左右的设计方案我一般规划成六个章节第一章绪论或项目背景重点写立体车库的发展现状、城市停车难背景、升降横移式方案的优势这一部分容易写得空泛建议控制在1500字左右点到为止。第二章总体方案设计包括系统组成架构、控制对象分析、设计指标确定。控制对象分析就应该把三层五列车位布局图和动作流程描述清楚最好配一张自己画的系统结构示意说明不要从网上抄图。第三章机械部分设计简述包括钢结构框架、载车板结构、升降传动机构、横移传动机构、防坠落装置。这部分对电气专业是弱项但是必须写因为控制系统是服务于机械结构的描述清楚传动方式才能解释控制逻辑的来源。第四章电气与控制系统硬件设计包括PLC选型、I/O点表、主回路设计、安全电路设计、元器件选型表。这是方案的技术核心字数占比要最大约3000到3500字。第五章软件程序设计包括程序功能框图、状态机设计、关键逻辑时序说明、安全互锁程序设计。建议配上程序流程说明和核心梯形图/语句表片段再辅以文字分析。第六章组态监控系统设计包括触摸屏选型、通信配置、界面功能、报警管理。如果设计了上位机监控再加上上位机组态的内容。最后加上总结和参考文献。6.2 怎么写才能降低“查重率”同时保证质量标题里“查重率”三个字本质上反映的是学术写作原创性的要求。我见过很多方案写得机械照搬把某本教材的段落大段复制查重率极高。这里抛开投机取巧的手段不提说几个能真正提高原创性同时保证写作品质的办法。第一用自己的工程实例说话。方案里所有的参数、选型、步骤都可以结合你自己做过的实验、课程设计、实训项目来写。哪怕只有一个模拟项目你把它拆开揉碎写出设计过程中踩过什么坑、解决了什么问题这部分内容是任何数据库里都查不到的因为它是真实的经验。第二重新绘制自己的图表。不要直接截图网上的资料图自己用画图工具或者专业软件重新绘制系统框图、程序流程图、I/O接线图。图表重绘不仅提高原创性也强迫你真正理解系统结构。第三避免模板化的表述句式。常见的“随着社会的快速发展”“近年来我国汽车保有量持续增长”一类话能少写就少写。用具体数据代替空泛描述用逻辑分析代替套话用第一人称的工程决策过程代替第三人称的说明文腔调。第四参考文献要真实引用且合理标注。凡是引用了别人文献中的观点、数据、图表在正文中标注引用序号在文末列入参考文献列表。合理引用加标注意味着查重系统可以识别并排除合法的引用部分。6.3 方案文档中的“技术亮点”如何提炼很多方案写得平铺直叙看不出设计者的思考深度。我建议在方案里专门用一节写“关键技术问题的解决措施”把自己在控制逻辑设计中最重要的几个决策点写清楚。例如为什么横移让位采用顺序排查而非最优路径规划为什么安全互锁采用硬件电路加软件双重保障为什么防坠落反馈信号取机械位置传感器而非电磁阀输出为什么掉电恢复策略设计成手动确认而不是自动续跑。这些“决策理由”写出来之后方案立刻就显得有设计感了不再是说明书式的罗列也让评阅老师或客户看出你是真的思考过而不是抄了一篇现成的东西。7. 运行效果与实际心得设备交付后我在现场蹲了一周观察整个车库的日常运行情况。自动模式下完成一次取车动作的平均时间是85秒左右其中横移让位约20秒、升降下降约25秒、驾驶员操作时间约30秒、复位时间约10秒。根据实际运行反馈将横移让位的等待时间缩短了接近一半。调试结束后有个小细节值得一提触摸屏上的状态色块最初用的是“绿色空闲、红色占用、黄色动作”的配色现场观察员反馈黄色在强光下不太明显后来把动作状态换成高对比度的橙色视觉上清晰很多。这种现场细节问题写在方案里是写不出来的真要自己跑现场才会遇到。还有一个运行中的优化方向后续如果有扩展需求可以考虑增加车辆长度检测功能。现在车库对车辆尺寸没有智能判断如果司机开着大型SUV硬停进为轿车设计的车位可能会刮蹭。后续计划在每个入口加装超声波测距传感器PLC判断车辆尺寸是否匹配目标车位不匹配就拒绝进库同时由上位机提示司机更换指定的车位。这个功能在程序上并不复杂本质上就是模拟量采集加比较判断但实际运营体验会好很多。根据我个人体会做这种综合性的自动化系统设计最大的收获不是程序本身而是打通了“机械结构去理解控制逻辑、控制逻辑来反推机械设计”这条链路。很多PLC程序设计的问题根源其实在机械结构理解不到位反过来机械设计人员如果不理解控制逻辑也容易设计出难以控制的机构。这个项目让我对这类系统化设计的理解更深了一层希望这篇梳理也能帮到正在做类似项目或者正在憋设计文档的朋友。