☰
基于PLC的立体车库自动存取系统:从硬件选型到调试全解析
2026/10/3 19:37:31 网站建设 项目流程

1. 项目的三板斧:这套立体车库系统到底在做什么

1.1 为什么毕业设计选PLC而不是单片机

很多学生拿到"基于PLC的立体车库自动存取系统设计"这个题目,第一反应是想:这个东西用单片机做不是更简单吗?51单片机、STM32,便宜又灵活,网上教程一抓一大把,为什么偏要上PLC?

我用一个我曾辅导过的学生案例说。他最初想用STM32模拟一个立体车库模型,功能全做出来了,但答辩的时候被老师问了几个问题:工业现场抗干扰怎么保证?梯形图程序在哪?你的系统怎么跟组态软件联调?一问一个不吭声。不是他做得差,而是题目叫"基于PLC",评审老师默认你要体现PLC方案的价值——可编程逻辑控制器强在稳定、强在可视化、强在工业现场规范。

PLC在这个项目里的位置,打个比方,它就像一个车间的老班长:认死理、按流程走、出了故障立刻报警,虽然不花哨,但可靠。单片机更像是个聪明但毛躁的年轻人,功能强大,可一到震动、干扰、高温的环境就状态不稳。立体车库这种设备,电机频繁启停,接触器吸合释放,如果没有PLC这种抗干扰能力和互锁保护,系统早乱了。

另外一个现实原因是:PLC方案在毕设答辩中的成功率确实更高。梯形图程序、I/O分配表、接线图、组态监控画面,每一项都是评委会看、会问、会给分的点。你用单片机,程序写在C文件里,老师没法直观看到控制逻辑;你用PLC,打开GX Works或者STEP 7,梯形图一页一页展开,存车流程、取车流程、互锁条件一目了然。

1.2 升降横移式,这个结构选得聪明

立体车库的机械结构有很多种:升降横移式、垂直升降式、巷道堆垛式、平面移动式。毕设题目里最常见的是升降横移式,没有之一。为什么?因为这个结构刚好踩在所有加分点上。

先把这个结构的逻辑讲透。升降横移式车库,我习惯用"格子+滑板"来理解:每一层都有一排车位,每个车位上有一块载车板。底层车位能横向移动,上面几层能升降。存车的时候,系统先把目标车位下方腾空,然后把载车板降下来,等车开上去之后,再把板升回原位。取车的逻辑反过来。

以3×3的车库为例,底层有3个车位,2层有2个可用车位(因为自动存取需要留一个空位给底层横移),3层只有1个可用车位。听起来车位利用率好像不高,但你细品:实际存车数量是下面横移层加上面升降层的组合。这种结构最大的好处是——机械装置只需要两类动作:横向平移和垂直升降。对应的控制对象就两种电机,控制逻辑的复杂度被控制在一个既能展示水平、又不会把自己写死的范围。

我见过不少学生一上来就想搞垂直升降式,也就是一个升降平台加一个机械手叉臂,看起来高级,实际做起来,定位精度、防摆控制、机械结构加工,哪个都是大坑。毕设是在有限时间内做出一个能稳定演示的系统,不是搞科研样机。升降横移式,机构和控制都成熟,视频资料多,出问题的概率低,这就是"聪明"的地方。

1.3 存车和取车,完整流程拆给你看

不要一上来就写梯形图,先把流程想清楚。我习惯用两条时间线来描述这套系统的工作过程。

存车的完整链路:系统空闲→用户按下存车按钮(或者刷卡/扫码)→PLC扫描车位状态表,找出一个空车位→如果目标车位下方被占,底层横移电机先动作,把障碍车位挪开→提升电机启动,把空载车板降到底层→PLC通过限位开关确认载车板到位,亮起"请驶入"指示灯→用户把车开上去→红外/光电传感器检测到车已停稳→PLC再次启动提升电机,把载车板升回原来的层→系统更新车位状态表,存车完成。

取车的完整链路:用户输入车位号(比如"203"表示2层3号位)→PLC解析车位号→底层横移机构腾出通道→提升电机把载车板连同车降到底层→载车板到位,指示灯提示用户驶出→传感器检测到车已离开→载车板归位→车位状态表清空,取车完成。

这两条链路中暗藏了三个所有PLC项目通用的核心要素。第一是状态判断,系统每走一步都要确认"我到底到没到位",靠的全是传感器信号。第二是互锁保护,电机正反转不能同时动作,载车板上有车的时候升降电机不能空转。第三是异常处理,任何一个环节卡住,系统必须停下来报警,而不是傻乎乎地继续执行。

这个流程不仅用于写控制逻辑,也是论文里软硬件设计章节的骨架。很多同学的论文看起来空洞,就是因为没有把流程写具体,通篇只有一个大框。

2. 硬件选型与I/O规划:先把地基打牢,后面不返工

2.1 主控选型:三菱FX3U还是西门子S7-200 SMART

毕业设计选PLC型号,我的建议很简单:你学校实验室用哪个你就选哪个,不用纠结性能。

如果非要给一个推荐,我建议多数人用三菱FX3U或者FX3G系列,占市场保有量的大头,配套教材多,网上案例多得吓人。另外一个选项是西门子S7-200 SMART,它自带以太网口,在做上位机组态的时候可以用S7协议和触摸屏通信,调试方便程度比RS485线的方案舒服不少。

一个容易被忽略的选型思路是:看你的库房和实验室有什么周边设备。学校如果有一堆旧的三菱FX系列,那就选三菱,接线端子、扩展模块、编程线缆都能借到。S7-200 SMART虽然新,但如果你需要给PLC程序截图写论文,界面确实更现代,而且它的仿真和调试功能对新手更友好。

型号定了就别再换。我见过一个学生,程序写了一半,发现实验室没有对应编程线,临时换型号,I/O分配、程序结构全部推倒重来,多花了整整一周时间。选型这件事,稳比新更重要。另外要注意,实物PLC如果太旧,固件版本低,可能不支持你电脑上的编程软件版本,这个在下载程序之前先确认一遍。

2.2 I/O点数怎么规划,一张表说清楚

我按一个两层两列的小型升降横移车库模型来规划(实际毕设中常见规模),给出的一份典型I/O分配表:

PLC地址信号名称类型作用说明
X0急停按钮输入常闭触点,串联在所有输出回路中,紧急情况下切断全部动力
X1自动/手动切换输入手动模式用于调试,自动模式用于演示
X2存车请求按钮输入触发存车流程
X3取车确认按钮输入取车流程的第一步确认
X4车位1(下层左)检测输入接近开关/光电开关,判断是否已有车
X5车位2(下层右)检测输入同上
X6车位3(上层左)检测输入同上
X7车位4(上层右)检测输入同上
X10提升电机上限位输入行程开关,检测载车板是否升到顶
X11提升电机下限位输入行程开关,检测载车板是否降到底
X12横移机构左限位输入检测横移支架是否左移到位
X13横移机构右限位输入检测横移支架是否右移到位
X14载车板有车检测输入光电传感器,确认车辆是否上/下载车板
Y0提升电机正转输出上升动作,通过继电器/接触器控制
Y1提升电机反转输出下降动作
Y2横移电机正转输出左移动作
Y3横移电机反转输出右移动作
Y4运行状态指示灯输出绿灯,表示系统空闲可操作
Y5报警蜂鸣器/红灯输出故障报警
Y6"请驶入"指示输出提示车主把车开上载车板

这样算下来,输入14点、输出7点,一台FX3U-32MR(16入16出)刚好覆盖,还留了2个输入和9个输出的余量。千万别卡着点数上限选PLC,一定要预留15%~20%的余量,否则调试时想加一个急停回路或者一个传感器,只能干瞪眼。

如果做的是3层3列甚至更大的车库,I/O估算方法一样:输入=按钮数+传感器数+限位数,输出=电机控制数+指示灯数+报警数。把这两个数算清楚再选机型,比到时候手忙脚乱扩模块靠谱得多。

2.3 传感器选型和安装,别在这省钱

传感器是PLC的眼睛,这话真不是白说的,而且这个位置恰恰是很多毕设翻车的重灾区。

有车检测,推荐用光电传感器或者接近开关。在模型车库上,接近开关用得更普遍,因为它体积小、接线简单、检测金属物体。实物车库的话用光电对射或者超声波更贴合实际,但这里要提醒一下:安全第一,实物场景建议在地面划出车辆到位标志,不能用传感器直接测量人体。

限位开关,也就是行程开关,用来确定载车板升降和横移的物理到位。安装位置很关键:不是随便装在框架上就行,要装在运动的极限位置+工作到位位置两个点。什么意思?就是载车板不仅需要一个"降到最底不许再降"的保护限位,还需要一个"降到取车高度刚好到位"的工作限位。这两个信号在程序里的用途完全不同:一个是保护条件,一个是流程推进条件,混在一起写,程序逻辑就会乱掉。

我踩过一个很具体的坑:某个学生把上下限位开关装在同一个导轨的两端,结果载车板升降的中途状态完全没有传感器反馈,程序只能靠时间来判断"应该到位了"——这种时间推断极其不靠谱,电机老化了、阻力大了,到位时间会漂移,写着写着就出事故。正确的做法是:除了极限保护,每个工作位置都要有独立的检测点。

模型级项目,直流减速电机+继电器(或者L298N驱动模块)是标配,注意电机驱动电源和PLC电源要完全分开,共用一个电源时,电机一启动,PLC就经常莫名其妙复位。实物级的工业系统,用的是三相异步电机+接触器,电气上更复杂,但这个选题下大多数学校用模型就足够支撑论文了。

3. 控制程序与上位机:让车库"会思考"的代码长什么样

3.1 梯形图程序结构,按这三个层次搭

写PLC程序,很多新手上来就从头写到底,最后整出一个几百行的大杂烩,看着眼花,改起来更崩溃。正确思路是分层次组织,即使是用梯形图,也要有模块化的思想。

我的建议是把程序拆成四块。

第一块是初始化程序,PLC上电后执行一次,完成车位状态表清零、所有输出复位、系统进入空闲状态。这一步不能省,否则一个意外停电再上电,系统可能顶着上次的半截状态继续运行。

第二块是主控流程,对应存车和取车的状态机。这一块用步进指令来写最清晰,每执行完一个动作,根据到位信号跳转下一状态。三菱的步进梯形图指令,每个状态就是一个Step,状态转移条件就是传感器信号,直观又好调试。

第三块是手动调试程序,通过手动模式下按不同的按钮,分别控制升降电机和横移电机动作。这块别觉得多余,它在硬件调试阶段是最重要的:传感器有没有装歪,电机转向对不对,全部靠手动模式先验证一遍,才敢上自动流程。

第四块是报警与互锁处理。急停、上下极限、电机过载这些条件,用常闭触点串联在输出回路中,保证任何异常出现的第一时间切断输出。同时程序里也要做软件互锁,比如Y0和Y1绝对不能同时为ON,即使在梯形图里忘了写互锁,电气回路里还要再放一层接触器互锁。这就是常说的双重保护。

我用一个简洁的流程来描述自动模式下的主控循环:上电初始化→空闲等待指令→判断存车/取车→执行对应流程(每一步都要等待位确认)→完成后复位流程变量→回到空闲。每一步的等待位确认,就是读取对应限位开关或者传感器信号,信号没到,程序就停在那里,而不是靠延时猜过去。

3.2 车位管理:编号、状态表、空位搜索的逻辑

立体车库的核心除了动作控制,还有数据管理,就是跟踪每个车位到底是空还是有车。这部分用PLC的寄存器写,逻辑并不复杂,但要想清楚。

先定义车位编号。假设车库是3层3列,我习惯用两位编码:第一位表示层,第二位表示列。比如"12"就是1层2列,"23"就是2层3列。用一个数据寄存器D0来管理车位状态,每一位对应一个车位,0表示空,1表示有车。这样PLC在搜索空位的时候,直接按位运算就能快速得到一个空车位的编号。

"车位实际数量"这个概念要拎清楚。升降横移式有一个强制规则:升降动作的位置必须留一个空位给载车板周转,所以并不是所有格子都能存车。这会导致顶层有效车位数量比底层少。写论文的时候,把这个约束写清楚,不仅显得你懂,还能让答辩老师知道你是真正理解了机械结构和控制需求的关系。

第二个要注意的数据关联点是:车位的物理位置坐标。PLC执行存车动作时,要知道目标车位在哪个层、哪个列,也就是编号拆成层和列两个数字。层决定升降电机动作,列决定横移电机动作。这两个动作是有时序的,不能同时乱动作,必须由流程状态机控制:如果目标车位和当前空位不在同一列,先横移腾道,再升降到位。

3.3 电机控制的几个细节,老手和新手的分水岭

电机控制部分的代码,最能看出一个人是真正调试过还是在瞎写。

第一,正反转切换必须有延时,不能直接从一个方向跳到另一个方向。电机在高速旋转时瞬间反向,电流冲击极大,继电器触点很容易打火烧蚀。我通常会在程序里加一个0.5~1秒的延时状态,先停,再启动反向动作。这个在实物上叫"电机换向安全延时",在论文里可以写,答辩时候加一句"为了避免反接制动电流冲击",老师对你的加分是肉眼可见的。

第二,到位信号要加去抖逻辑,不能直接用一个裸的限位信号做跳变触发。限位开关的动作过程会有机械抖动,第一次碰到、弹开、再次碰到,可能连续产生几个脉冲。用定时器做一个50ms~100ms的稳定区间判断,确认信号持续稳定后再认为到位,从此传感器误触发少一大半。

第三,输出触点驱动的不是电机,而是继电器/接触器的线圈,这是最容易被忽略的接线知识。PLC输出端的容量,驱动指示灯和蜂鸣器没问题,直接驱动接触器线圈就可能烧输出端子。中间加一层继电器隔离,PLC端子只控制继电器线圈,继电器触点再控制接触器,接触器主触点再控制电机。层层隔离,安全性完全不同。

3.4 触摸屏和组态上位机:负责让老师说"不错"

毕设的系统要演示给老师看,光有PLC和一堆指示灯是不够的。一个漂亮的监控界面,能让演示效果上一个台阶。实际操作中有两个方案可选。

第一个方案是接一块触摸屏(比如MCGS昆仑通态、威纶通),触摸屏跟PLC通过串口或者以太网通信。界面上画一个车库的俯视图,每个车位格子里用一个色块表示空/有车,下方放"存车""取车"按钮和一个车位号输入框。存车流程开始后,界面上的小车图标跟着流程移动,数据变化、传感器信号状态全部可视。现场演示效果特别直观。

第二个方案是用组态软件在电脑上做监控界面,组态王、WinCC、LabVIEW都行。这个的好处是写论文的时候截图方便,还能顺手把报警记录、数据曲线导出来放论文里当图表素材。

不论哪个方案,有一个通信参数要提前约定好,那就是站号、波特率、数据格式。PLC这边设置和触摸屏那边设置要完全一致,否则通信连不上。我记得有学生调试了一下午,最后发现是PLC的通信端口地址设成了站号0,而触摸屏对面配置的站号是1,两边互相看不见。先把通信参数表核对一轮,能省掉很多无意义的时间消耗。

这里有点要补充:真正做工业项目时,用OPC UA协议把PLC和上位机做数据通信越来越普遍。论文中可以把Modbus RTU/OPC UA两种方案都提一下作为扩展对比,内容更有层次,但程序主体不用动。

4. 源码交付与LW文档:怎么把手里的东西变成能过答辩的成果

4.1 源码包的目录结构,老师一眼看明白是加分项

毕设的交付物从来不只是"程序能跑",而是源码+LW文档打包成完整成果。我在项目交付时,要求结构一定要清爽:

03_立体车库PLC控制系统/ 1_PLC程序/ FX3U_garage.gxw (PLC工程文件,用GX Works打开) 程序注释说明.txt 2_组态工程/ MCGS_touchscreen.mcg (触摸屏工程) 画面设计说明.docx 3_仿真与演示/ 调试录像.mp4 运行截图/ 4_论文文档/ 毕业设计论文.docx 答辩PPT.pptx

这个结构有个好处:PLC工程是主程序,组态工程是辅助界面,仿真演示是证明程序真的跑起来了,论文文档是理论设计依据,四个文件夹覆盖了毕设评审中老师主要看的四个方面。

不少同学最后的交付物是一堆散乱的文件,PLC程序一个文件夹,论文一个单独的没编号的文件,截图插在word里,视频没有。老师想看的时候要自己翻找,体验很差。把目录规范好,就是告诉老师一个信息:这个学生是懂项目管理的。

4.2 论文(LW文档)怎么写:每章该写多少字都给你列好

LW文档,也就是LunWen文档,毕业设计里它是主角。很多学生程序做完了,却不知道该写什么。我基于指导经验,给一个普遍的章节字数参考:

章节建议字数核心内容
摘要300~500项目背景一段、系统方案一段、成果总结一段
第1章 绪论1500立体车位的背景与意义、国内外现状、论文主要工作
第2章 系统总体方案设计1500机械结构选型、控制方案选型、PLC选型理由、I/O总体规划
第3章 硬件设计2000接线图、元件选型、电气原理图、安全保护设计
第4章 软件设计3500程序结构、I/O分配表、控制流程图、关键梯形图分析、触摸屏画面设计
第5章 系统调试与运行1500调试步骤、遇到的问题和解决方案、运行效果验证
第6章 总结与展望800总结已完成工作和不足、改进方向
参考文献20篇+含期刊论文、教材、设计手册

需要提醒的是,每个学校的论文模板不一样,打印要求、各部分顺序可能不同,先到学院拿一份最新的写作规范,跟着模板框架来。"

论文中最有价值的内容是第3章和第4章。硬件设计不要只写一个清单,要把电气原理图画出来,哪怕是用CAD或者其他工具画的简化图,也要有一张能让老师看懂的图。软件设计里每个关键流程(存车、取车、报警管理)最好各画一张流程图,再配一段梯形图截图做分析。

4.3 答辩十个高频问题,提前准备好不会翻车

我经常问毕设学生十个问题,答好了就直接过了:

  1. PLC为什么比单片机更适合工业控制现场?——从抗干扰、可靠性、程序可读性、维护性来回答。
  2. 你的I/O点是怎么算出来的?——说出输入输出各有哪些信号,还要留了多少余量。
  3. 系统在存取车过程中的安全保护措施有哪些?——急停、电机换向延时、正反转互锁、极限限位、软件互锁。
  4. 如果存车过程中提升电机卡住,系统怎么处理?——超时判断加报警停机。如果你的程序没有超时设计,现在就去补一个。这是万能答案。
  5. 车位状态表存在哪里?怎么做到掉电不丢失?——存在PLC的保持型寄存器或者用断电保持数据区,并在论文里说明。
  6. 为什么选升降横移式而不是其他结构?——成本低、结构成熟、控制典型、占地要求低。
  7. 触摸屏怎么和PLC通信?——说清楚协议、通信参数、数据映射方式。
  8. 系统有哪些扩展空间?——加车牌识别、语音提示、APP远程查看、可视化调度算法等。
  9. 你的程序有多少步?每个子程序的作用是什么?——要把项目结构背下来,防止老师细问。
  10. 调试中遇到的最大困难是什么?——挑一个传感器干扰或通信问题的案例,完整说出排查过程。

5. 调试实录:那些踩过的坑和排查套路

5.1 六个高频故障,按症状、原因、解法给你列全

调试阶段的挫折感是真实的,聪明的项目设计者都会提前准备一份故障排查表。下面是六个我亲身经历过的高频故障,写成症状+原因+解法的形式:

故障1:程序下载不进去。现象是GX Works提示通信失败。常见原因是COM口驱动没装对,或者编程电缆要选"MITSUBISHI FX-USB-AW"驱动模式。另一个坑是PLC型号选错了,软件里选成FX3U但实际是FX3G,会报"CPU型号不匹配"。排查思路:先看设备管理器里USB转串口芯片是什么型号,装对应驱动,再看软件中PLC型号是否和面板完全一致。

故障2:到位传感器信号忽有忽无。现象是程序走到某一步突然停住,状态不跳转。原因是限位开关安装位置有松动,或者有外界信号干扰。解法:先用手去按压开关,观察输入指示灯是否稳定;如果指示灯闪,说明机械位置问题;如果不闪,可能就是接线松动或者传感器坏了。这种故障十有八九是机械安装问题,不是程序问题,别一上来就怀疑程序。

故障3:电机不停,到位后还继续转。这是最危险的故障。常见原因是限位开关的常开常闭接法搞反了,程序以为没到位,就一直输出。排查方法:先看PLC输入指示灯,载车板到顶时限位指示灯是否点亮。如果没亮,把行程开关接线重新调整。之前有个学生接的是常开触点,结果行程杆一压反而断开,逻辑全部反了,差点把模型电机烧掉。

故障4:触摸屏能连上PLC,但数据不刷新。现象是通信状态显示正常,但是车位的状态数据一直是初始值。原因通常是寄存器地址映射不一致。触摸屏里的编辑框关联的地址和PLC里实际存储的地址对不上,或者是数据格式不一致。解法:把屏幕上的每个变量地址和PLC软元件编号一一对照,写成表格贴在本子上,调试的时候能少掉一大半头发。

故障5:急停按下后重新启动,系统不恢复。现象是急停复位后,PLC恢复了,但整个自动流程卡死。原因是急停后,程序的步进状态没有回到初始化状态。解法:急停回路设计时,要让复位操作触发一次初始化流程,把所有的步进状态寄存器清零,让系统从头开始跑,而不是试图从上次断点继续。这点在论文中写出来会特别加分。

故障6:继电器烧蚀快,触点发黑。现象是继电器用一段时间就不行了,或者PLC输出点烧了。原因是驱动的感性负载没加续流保护,开关频率太高。解法:给继电器线圈并联一个续流二极管,触点加RC灭弧吸收回路。这是电工基本操作,很多学生会在这里栽跟头。

5.2 调试的通用方法论:先手动后自动,先单步后联调

所有PLC项目的调试都有一个万用流程:先手动后自动,先硬件后软件,先单步后连续。

我在调试每个车库项目时,管线基本是这样:

第一步,空载手动测试。直接把PLC切到手动模式,分别操作四个输出点,确认提升电机正转是上升、反转是下降,横移电机正转是左移、反转是右移,错了就交换两根电机线。同时把所有限位开关按压一遍,确认对应的输入点全部能反馈。

第二步,手动逻辑验证。程序中的手动子程序跑通了,载车板能上下、横移能左右,且限位保护都生效,再进行下一步。

第三步,自动流程单步验证。将自动程序的运行速度放慢,通过调试模式下强制赋值状态寄存器,手工跳转每个状态,确认每个状态的进出条件和输出动作都正确。这一步最耗时间,但也是出成果的关键,所有不确定的细节都在这里暴露。

第四步,连续自动循环测试。让系统连续存车取车10次以上,观察是否有偶发性问题,比如偶发的传感器丢失、偶发的互锁异常。如果连续运行稳定,再接入触摸屏一起测通信。

第五步,故障模拟测试。人为制造一些异常,比如按急停、挡住传感器、卡住电机,确认系统的报警机制和复位机制正常。这一部分是最能体现工程思维的部分,也是答辩老师喜欢追问的部分。

我多说一句关于调试记录的习惯:每次遇到问题,不仅在程序里改掉,还要在调试记录中登记:现象是什么、排查思路是什么、最终原因是什么、解决办法是什么。这份调试记录,最后整理出来会成为论文里第5章"系统调试"的素材,而且老师一看就知道这个项目是自己一步步调出来的,不是网上扒的。

个人体会:毕设交付之外,这套系统还能往下深挖什么

做完这套基于PLC的立体车库自动存取系统,我个人的最大收获,其实不是那几页梯形图,而是整个过程中被逼着养成的把大问题拆成小步骤的思考习惯。车库本身是一个机械、电气、软件、通信交叉的系统,任何一个环节掉链子,整个演示就黄了,所以你必须学会一套从具体故障现象倒推到根本原因的排查方法。这套方法放到任何工程岗位上都通用。

最后再分享一个小技巧:如果你还有精力,在系统后添加一个"超时保护"机制,也就是程序里定义一个最长的动作时间,比如升降电机运行超过15秒仍没碰到位信号,立刻切断输出并报警。这个功能麻雀虽小,却是整个系统从"能跑"跨到"安全可靠"的关键分水岭,论文里写一笔、答辩时讲两句,老师基本都会满意。

需要专业的网站建设服务?

联系我们获取免费的网站建设咨询和方案报价,让我们帮助您实现业务目标

立即咨询