三年前我带学生做了一套三层五列升降横移式立体车库的PLC控制系统,题目就是简简单单几个字:基于PLC的立体车库自动存取系统设计。很多计算机专业的学生看到“PLC”三个字就发怵,觉得这是电气专业的东西,跟自己的毕设不搭。实际上这个题目的核心不是PLC语法,而是自动控制系统的设计思路——车位怎么调度、传感器怎么布置、程序怎么防碰撞,这些才是选题的价值所在。
这篇博文就围绕这个毕设题目,把我在实际项目中踩过的坑、总结出的经验、以及可以直接“抄作业”的硬件方案、梯形图逻辑和文档写作思路全部梳理一遍。适合两类人看:一类是正在纠结毕设选题的学生,另一类是打算自己上手做一套小型立体车库控制系统的工程师。看完之后你会发现,这个题目其实并不难,难的是把“车库怎么运行”这件事想清楚。
1. 项目思路拆解:先想清楚车库怎么动,再谈PLC
1.1 升降横移式车库的机械逻辑
立体车库类型很多,最常见也最适合毕设的就是升降横移式。它的原理可以用“华容道”来理解:车位分多层多列,底层留一个空位,每个载车板既能横向平移,也能升降。存取车时,系统通过把阻挡路径的车板平移让开,再把目标车板降到地面层,实现车辆进出。
以三层五列为例,车位编号建议这样做:一层A1~A5,二层B1~B5,三层C1~C5,其中A5固定为空位。为什么留空位?因为底层车位之间必须有一个空位作为横移缓冲,否则横移车板没有落脚的“空槽”。这个细节经常被新手忽略,画图时把底层铺满,结果运动学上根本不成立。
每个载车板对应一个横移电机和一个升降电机。横移电机通过链条或齿轮驱动车轮,带动整个载车板在轨道上平移;升降电机则通过钢丝绳或链条提升载车板。为了简化机械结构,通常只有需要存取的那块板才动作,其他板保持静止。动作顺序必须严格按“先腾位、后升降、再平移”来,顺序错了轻则卡死,重则拉坏机械结构。
1.2 存车、取车的完整动作序列
很多学生一上来就写梯形图,写着写着就乱了。正确做法是先画出动作序列,再翻译成PLC程序。拿“存车到B3车位”举例,完整流程如下:
- 车辆驶入入口光电检测区,系统判断车位B3是否空闲。
- 若B3下方A3有车,则先将A3向右平移至空位A5。
- B3载车板从二层下降至地面层。
- 车辆驶入B3载车板,前轮压到定位传感器后停车。
- 系统确认车辆停稳,载车板上升回二层。
- B3横移归位,同时把A3横移回原位置(如果之前腾挪过),存车结束。
取车流程正好相反:先把目标车板降下来,或者把目标车板横移到出入口通道再降下来。出入口位置也会影响流程设计,我建议把出入口固定在某一个列位,比如A1列,这样上位机编程和调试都方便,不用考虑“任意列都能直接取车”的情况。
这里有个关键细节:动作序列不是写给人看的,而是要细化成“每个电机从启动到停止的完整闭环”。每一步都必须有对应的到位信号,否则程序就不知道下一步该不该走。这套“动作-检测-确认”的机制,是后面PLC编程的骨架。
1.3 从机械动作到IO信号的转化
理清流程之后,就可以统计IO点数了。升降横移式车库的输入信号主要包括:
- 每层载车板的上升限位、下降限位
- 每个横移电机左限位、右限位
- 每个车位的光电占用检测
- 入口车辆检测、出口车辆检测、防人员误入检测
- 急停按钮、手/自动旋钮、复位按钮
- 检修用点动按钮
输出信号则包括每台电机的正转、反转、变频器接点,以及状态指示灯和蜂鸣器。三层五列、每层5块板、每块板2个限位输入,光限位就有30个。实际做下来数字量输入点一般在50~70个,数字量输出在20~30个。选PLC型号时建议留出20%~30%的余量,别卡得刚刚好,调试时加功能是常有的事。
2. 控制方案选型:PLC型号、传感器、电机驱动怎么选
2.1 为什么是PLC而不是单片机
这个题目叫“基于PLC”,但答辩时几乎一定会被问“为什么不用单片机?”标准答案有三层:可靠性、开发效率、项目演示效果。立体车库是载人载车的设备,对稳定性和抗干扰要求高。PLC本身是专为工业环境设计,输入输出隔离、看门狗、掉电保持这些机制都是现成的,单片机想要达到同等可靠性,外围电路和软件容错的工作量远超取用,适合作大作业,不适合做控制系统的核心。
另外,毕设答辩时间有限,PLC梯形图可视化程度高,评委一眼能看懂逻辑。你用单片机写C语言,讲座上半小时还不一定讲清楚状态机;梯形图一贴,哪一步触发什么输出,清清楚楚。所以选PLC不是因为“题目要求”,而是因为它是这个场景下的最优解。
2.2 三菱FX3U与西门子S7-200 SMART的取舍
我在实际项目中两种都用过。如果你选三菱FX3U,软件用GX Works2或GX Developer,指令风格偏日系,STL步进梯形图非常直观,很适合做顺序控制类项目。如果选西门子S7-200 SMART,用STEP 7-MicroWIN SMART,指令风格偏德系,线圈和置位复位指令的用法更灵活,尤其是面对复杂逻辑时,用S(置位)和R(复位)能节省大量编程时间。
学生选型我一般给这个建议:谁更熟悉就选谁,但课程里学的是三菱,就选三菱;课程里学的是西门子,就选西门子。不要为了“显得高级”选一个从没用过的品牌,调试时间会被无限拉长。
从性价比看,S7-200 SMART CPU SR40和FX3U-64MT价格接近,功能上都能满足这个项目。真正的差别在扩展性:集成了以太网口,通信配置更方便;需要单独配通信模块或开对应的软元件映射。另外,很多高校实验室现有设备以三菱为主,借用方便,这个问题你在选型前最好先问清楚导师。
2.3 传感器与限位开关的实际选型
限位开关是立体车库最关键的传感器。载车板升到顶、降到底、横移到左端、右端,全靠它给出“到位”信号。对于毕设项目,我用的是欧姆龙或国产正泰的滚轮型行程开关,二线制机械触点,接线简单,故障排查容易。
不建议用接近开关做升降限位,因为升降到位时载车板会有一个冲击,机械行程开关的滚轮能吸收一部分冲击,接近开关感应距离短,安装不当容易被撞坏。但在车位占用检测这个位置,可以改用对射式光电开关。理由是:车辆停放后,车板底面和上层板之间的距离很有限,限位挡块位置不一定能准确反映“有没有车”,光电开关只要检测车板上方有没有遮挡物就行。
电机的驱动方面,升降电机一般使用带失电制动的锥形转子电机,停车瞬间能抱死刹车,防止载车板溜车。横移电机则用带减速箱的电机,转速不需要太高,但要保证左右行程的重复定位精度。变频器前后各装一个接触器,主电路再加热继电器做过载保护。这些基础保护在毕设里可能不被强制要求,但答辩评委一定会抽查,所以必须画进电气原理图。
3. 从梯形图到状态机:核心程序怎么编
3.1 用辅助继电器M做顺序控制
PLC的梯形图虽然叫“图”,但本质上是在写顺序逻辑。最经典的写法是用辅助继电器M做“步标志”,一个M代表一个状态,状态之间用触点互锁衔接。这种方式相当于手写状态机,逻辑清楚,容易排故。
举个例子,假设定义M100为“B3下降前等待状态”,M101为“B3下降中”,M102为“B3下降到位”。那么M101的置位条件是M100接通并且A列横移已让位;M101的复位条件是B3下降限位接通。写成梯形图的思路就是:
- 网络1:当M100闭合,且“A列让位完成”信号闭合,则输出置位M101,同时复位M100。
- 网络2:当M101闭合,输出升降电机下行接触器。
- 网络3:当B3下降限位闭合,置位M102,复位M101,同时停止下行输出。
这套方法比直接写电机线圈逻辑要清晰得多。每个状态做什么、从哪个状态来、条件是啥,都一目了然。调试时如果车卡在半路,看哪个M没有跳动,就能定位是哪一步没满足。
3.2 互锁与防碰撞逻辑的实现
立体车库一旦做出格动作,轻则撞车,重则砸坏设备。梯形图里必须加上以下几类保护:
正反转互锁。每个电机的正转接触器和反转接触器不能在同时得电,程序上要用常闭触点互锁,硬件上也可以用接触器的辅助触点做二次互锁。
升降与横移互锁。同一时刻只能有一个载车板存在升降动作,或者同轨道上横移动作只能有一个。用区域占用辅助继电器控制,比如M200是“横移区域忙碌”,任何横移启动前先检查M200,启动后立即置位,动作结束后复位。
安全联锁。所有限位信号没有到位的状态下,禁止启动下一步动作。例如升降电机启动前,对应载车板的锁销必须处于释放位置,这个信号没有,程序就直接锁定输出。
超时保护。每个动作设置一个定时器。比如横移动作最多运行30秒,如果30秒后仍然没有到达限位开关,考虑机械卡死或者限位失灵,系统立刻停止输出并报警。这个保护极其实用,我在实车调试时遇到过链条脱扣,就是靠这个定时器避免了发呆。
3.3 手动、自动与故障急停的程序框架
毕设库里通常会有手动/自动切换,这是凑功能点,但对工程来说也是必须的。手动模式下,操作员通过界面上的按钮直接点动每个电机,主要用于检修和初始对位;自动模式下,系统按存取流程自己跑。
急停回路一定用硬接线串入所有接触器控制回路,不能只靠PLC程序处理。理由很简单:PLC程序有可能跑飞、死机、被干扰误动作,硬接线的急停是最底层的保障。按下急停时,所有主回路切断,同时把急停信号送进PLC,让PLC进入“故障锁定状态”,只有旋转复位按钮才能恢复。
这三块内容最好分成三个子程序区,手动程序、自动程序、故障处理,互相之间用模式标志隔离开,不要写在一个大程序里,不然后期维护会疯掉。
4. 上位机、触摸屏与通信设计
4.1 触摸屏与组态王界面布局
立体车库需要操作员能实时看到车库状态,所以上位机有人机界面。毕设中常见的选择是:用组态王做PC端监控画面,或者用威纶通/Kinco触摸屏直接挂在柜门上。我更推荐触摸屏方案,因为调试时移动方便,而且触摸屏和PLC之间的通信配置比组态王简单。
页面上至少要三块区域:顶部是车位状态指示区,用一个个小车图标显示每层每列有没有车;中部是操作区,包含存车/取车按钮、车位号输入框,这些按钮要对PLC的内部M和D寄存器读写;底部是报警区,显示当前报警代码和急停状态。
车位状态指示不是靠上位机算的,而是直接读取PLC里每个车位的“占用标志”软元件。比如把一个车位占用标志映射到触摸屏的一个位灯,灯亮表示有车。这样的好处是逻辑源头只有一个,不会出现PLC里已经判定了,上位机画面却对不上的情况。
4.2 Modbus RTU通信参数配置
如果用的是三菱FX3U,可以用FX3U-485-BD扩展板走Modbus RTU。若用西门子S7-200 SMART,直接支持Modbus RTU协议,需要初始化主站或从站功能。通信参数建议设为:波特率9600,数据位8,无校验,停止位1,站号区分上位机和PLC。
接线时A+/B-两根线一定要弄清楚,A接A、B接B,很多项目第一次通信不上,就是因为A/B反接。通信参数不一致,或者PLC站号没设置对,也会导致“PLC与上位机连接不上”的经典报错。另外,触摸屏的通信设置里要选择正确的驱动,例如三菱FX3U对应选“Mitsubishi FX3U”,西门子S7-200 SMART对应选“Siemens S7-200”。
调试小技巧:先用PC串口调试助手发一条03功能码读寄存器指令,确认PLC有响应,再连上位机。这样能把问题缩小到“PLC通信模块还是上位机配置”这个范围,不用两边同时瞎猜。
4.3 调试时如何监控PLC内部寄存器
在线监控功能是PLC调试的第一生产力。三菱GX Works2的“软元件监控”窗口可以直接看M、D、T的值变化;西门子STEP 7-MicroWIN SMART的状态图表也可以实时监控。调试时我习惯把几个关键状态标志排在一屏,比如:
- 当前存取流程步号(M标志组)
- 各轴限位开关状态(X输入)
- 各车位占用标志
- 各超时定时器的剩余时间
- 故障代码寄存器
这几项监控一开,程序跑到哪里、卡在哪个条件,立刻就能看到。很多新手不习惯开着监控看,写完程序就下载,然后直接按按钮试动作,结果动作没反应就瞎猜线头问题,这样效率太低。正确做法是先把PLC程序用强制置位/复位的方式单独验证每个限位输入点、输出点,确认硬件通道无误后再跑整体流程。
5. 源码工程与LW文档(论文)怎么组织
5.1 源码目录结构建议
毕设的“源码”不只是PLC工程文件,还包括上位机工程、电气图纸、说明书文档。建议按下面的目录整理,方便导师查看和答辩现场演示:
PLC立体车库项目/ │ ├── PLC程序/ │ ├── FX3U_GXWorks工程/ // 三菱PLC源工程 │ │ ├── 主程序.sfx │ │ ├── 自动存取流程.st │ │ └── 报警处理程序.st │ ├── S7-200SMART工程/ // 西门子PLC源工程 │ └── 梯形图截图/ │ ├── 上位机/ │ ├── 触摸屏工程/ │ └── 组态王工程/ │ ├── 电气图纸/ │ ├── 主电路图.dwg │ ├── 控制电路图.dwg │ └── IO分配表.xlsx │ └── 设计文档/ ├── 系统设计说明书.docx ├── 答辩PPT.pptx └── 答辩问题整理.mdPLC程序文件建议同时保留“源码工程”和“PDF打印版梯形图”。源码工程方便老师直接打开看,PDF版防止工程损坏打不开的尴尬。
5.2 LW文档(设计说明书)的核心章节
LW文档就是毕业设计说明书,它是整个毕设的“门面”,重点部分必须写得有工程味。我的习惯是分六章:
- 第一章绪论。写清楚研究背景和意义,重点是“为什么立体车库是城市停车难的可行解法”,不要写成一本书的百科全书,两到三页即可。
- 第二章系统总体方案设计。画系统结构图,写功能需求,并提出几种方案(PLC、单片机、继电器控制)的对比,最后说为什么选PLC。
- 第三章硬件设计。把IO分配表、电气原理图、元器件选型表都放在这里,这是分值最高的部分,也是很多学生写流水账的部分。最好加入每台电机的功率、额定电流、电缆参数的计算,让方案可信。
- 第四章软件设计。放工作流程图、程序结构图、每段核心状态机的梯形图截图,并配文字说明每一步的逻辑。
- 第五章系统调试。记录调试过程中遇到的问题和解决方案,比如“横移电机过流保护动作,将热继电器整定值从2A调整到2.8A后正常”这类真实的调试记录,比写满乐观结论要有说服力。
- 第六章总结与展望。简要总结工作,提两到三个可以改进的方向,比如增加车牌识别、接入手机APP,点到为止即可。
5.3 答辩演示的现场注意事项
答辩现场不让讲太久,所以演示要抓重点。我的经验是:PPT控制在15页以内;现场演示时最好用一个预先录好的视频作为“保底”,因为真实系统在答辩现场容易出现接触不良、通信不上、限位抖动这些意外。视频里把存车、取车、报警、手动模式操作都录全,万一设备不配合,你放视频也比站在那里排查故障要体面得多。
模拟盘的学生,可以在电脑上直接运行组态王,画面和真实系统同步演示。一定要提前检查笔记本的通信端口,组态王和USB转485适配器有兼容性问题,答辩前最好在实验室先连续运行一整天不出错,再去答辩现场。
6. 常见问题与排查技巧实录
6.1 定位不准、限位误动作的处理
最典型的问题是“载车板明明到位了,程序就认为没到位”。排查步骤先看输入指示灯,PLC面板上有X输入灯,如果到位时灯没有亮,先查行程开关是否被撞坏或者挡块偏离;如果灯亮了但程序不动作,则是梯形图中限位触点写错地址。
有时限位开关本身正常,但机械振动导致瞬时断开又接通,程序就会误判。解决方法是梯形图里给限位信号加个0.1秒左右的D10-D20定时滤波,或者选用带滚轮自锁功能的行程开关。电气噪声干扰也可能造成限位误动作,这种情况优先检查屏蔽层接地和布线。
6.2 电机启动过流、变频器参数设置
横移电机和升降电机启动瞬间电流冲击大,热继电器选小了一启动就跳闸。经验值:横移电机按额定电流的1.5~1.8倍整定,升降电机因为瞬间负载大,按额定电流的2倍整定。如果用了变频器,加减速时间建议设在2~4秒,太短会造成大电流冲击,太长则影响存取车效率,3秒左右是最常用的起点。
如果电机通电后无法启动或发出嗡嗡声,先确认主电路相序,尤其是接触器和变频器直通的回路,相序反了电机不转。再检查制动线圈是否一直处于制动状态,带失电制动器的电机如果在停机状态制动线圈没有断电,离合没松开,电机就会卡死。
6.3 通信掉线、下载失败时的排查顺序
PLC程序下载失败,八成是通信参数或者电缆问题。先说USB转接线,很多USB转RS422/RS232线是免驱的,但兼容性不可靠,强烈建议用原厂USB-SC18或西门子原装编程电缆。通信参数选择必须与微机设置一致,端口号在设备管理器里确认好,PLC的内置编程口和触摸屏通信地址不能冲突。
在线调试时出现上位机监控值不动,先看PLC是否在RUN状态,有些情况下下载程序时PLC会跳到STOP,需要重新切到RUN,并在触摸屏侧重新连接。如果通信偶尔掉线,考虑现场变频器产生干扰,PLC这边要采用屏蔽双绞线做通信线,且屏蔽层单端接地。
6.4 程序逻辑上的经典坑
最后一个经典坑是:“输出已经置位,电机却没有动作”。排查时别急着怀疑PLC坏了,先看输出负载电压够不够,DC24V的驱动电源是不是掉压了,再查接触器线圈是AC220V还是DC24V。经常有学生把DC24V的设备接到AC220V回路里,把PLC输出点烧毁。
同样经典的是“某动作卡在中间态,时好时坏”。这种情况大概率是状态步“跳”乱了,比如M标志位没有被正确复位。梯形图里一定要在每一步置位前,把同组其他步标志全部复位。这也是为什么推荐用“置位/复位”指令而不是单纯用线圈,否则会出现多步同时接通,机械结构就会乱动作。
如果让我第一次做这个题目时能提前知道所有坑,我可能还会义无反顾地选它。因为这套系统麻雀虽小五脏俱全,从机械运动到电气控制再到上位机通信全链路都覆盖,做完之后对工业自动化系统的认知完全不一样。工程上用得顺手的方案往往不是最复杂的,而是逻辑最清晰的。遇到动作不对、程序卡住,先回到动作序列图上重新走一遍流程,远比在梯形图里盯着某个触点发呆有效得多。这个思路同样适用于你之后做的任何控制类项目。