
1. 先说点实在的这个选题为什么值得做每年到了一定时候总有人问我“毕设到底做什么好”。平台开发烂大街爬虫又撑不起篇幅搞深度学习没机器。我一直觉得基于PLC的立体车库自动存取系统是数一数二的好选题。它硬核但难度可控工程量足但边界清楚有硬件有软件有上位机有通信还能扯上物联网和智慧停车答辩的时候东西够讲工作量考官也看得见。这个系统说白了就是用PLC当大脑控制电机、传感器、限位开关这些部件把车自动停进立体车库的指定车位取车的时候再自动把车调出来。整个过程不靠人刷卡或者按键一触发PLC按预置的逻辑把横移、升降、定位这些动作一串起来完事。从我实际带过学生的经验看这个题目最大的优势在于不需要真的造一个库用组态软件可以虚拟仿真学校有条件就加一套小型实训台没有也能出效果。源码能跑、文档能写、界面能看、逻辑能讲四件套齐了这就是一个非常合格的计算机类或自动化类毕业设计。而且无论你学的是三菱PLC、西门子S7-200 SMART还是用组态王、MCGS做上位机方法论是通用的换品牌也只是换个编程工具而已。这篇文章我把从硬件选型到软件调试的完整链路拆开讲把我在实际调试中踩过的坑、学生最容易犯的错误、答辩时老师最爱问的点全部整理出来。不管你是正在为选题发愁还是程序跑到一半卡住这篇文章应该都有你需要的答案。2. 整体设计思路先把车库的“骨架”弄清楚2.1 立体车库的种类与选型逻辑立体车库不是只有一种。常见的有升降横移式、垂直循环式、巷道堆垛式、平面移动式等。毕业设计里最常见、最适合用PLC来控制的是升降横移式没有之一。为什么选它原因很朴素结构直观三言两语能讲清楚控制逻辑清晰不外乎“载车板横移—升降机上下—定位—存取车”这几个动作I/O点数适中选一台小型PLC完全够用不会因为点位不够被评审老师质疑制造成本低实训台做得起即便只做仿真方案也不丢工作量。举个例子一个典型的3层5列升降横移式立体车库地上三层一排5个车位底层留一个空位作为车辆移动的“空档”中层和上层各5个顶层车位固定不动中下层车位可以横移。总共能停11辆车。这样一个车库用一台三菱FX3U或西门子S7-200 SMART就能全部搞定I/O点数大概就在40到70个之间根据你预留的传感器余量不同有浮动性价比非常高。你要是用垂直循环式也行但那个结构复杂涉及连续旋转定位和编码器反馈对本科毕设来说有点过深了调试难度大我一般不推荐。一是程序写起来费劲二是真出问题排查要花太久时间三是答辩时很难把原理讲得让老师满意。除非你特别想挑战自己否则不碰。2.2 系统组成不只是“写个PLC程序”的事这个系统拆开来看分四层。第一层是传感检测层。包括车辆检测传感器用来判断车位有没有车、限位开关用来确定载车板和升降机是否到了位、位置编码器用来精确读取横移和升降的行程位置。在简易设计里前两个已经够用编码器看预算和实际需求加。第二层是执行控制层。就是PLC这是整个系统的大脑。PLC接收传感器信号按照用户预先写好的程序调用电机的启停、方向切换等动作实现存取车逻辑。第三层是执行机构层。也就是电机和传动系统。横移电机负责载车板在水平方向的移动升降电机负责让载车板在垂直方向上到达对应楼层电磁抱闸负责电机断电后锁住位置防止滑落。第四层是人机交互层。最常见的方式是触摸屏或工控机组态画面操作人员按“存车”或“取车”按钮系统自动完成后续动作同时在组态界面上显示车位占用情况、设备运行状态、故障报警等。这四层就是整个物理架构。对于毕业设计而言硬件层不一定要真的全部搭出来用组态软件做仿真用指示灯模拟电机状态也行。但逻辑上必须完整这一点在写文档时要特别注意否则论文结构会很单薄。2.3 控制流程存车和取车到底经历了什么我建议所有做这个题目的同学第一步先把控制流程图手动画出来。不要一上来就写程序你逻辑不通后面全得推倒重来。存车流程是这样的车辆驶入入口入口对射传感器检测到车到位。这时你按“存车”按钮系统先判断哪里有空车位。找空车位的逻辑是从离入口最近的底层车位开始找找不到就找中层的可横移车位再找不到就找顶层车位。因为顶层车位需要升降机配合所以它优先级最低。确定目标车位后如果是底层空位且正好在入口位直接开进车位传感器确认车停好存车结束。如果要借助升降机这就有讲究了先把目标车位所在层清空说白了就是把当前层挡住路径的载车板全部横移让开让升降机有通道能够到达目标车位再把载车板移动过来或把车开上升降机升降机上升到目标层横移入位传感器确认到位停车。系统更新车位状态存车完成。取车流程是反过来用户输入车位号或扫码系统先判断目标车位是否在某层非顶层。如果目标车位在底层可横移位置PLC直接控制横移电机把对应的载车板移到出入口位置用户把车开走完成取车。如果目标车在顶层或中层PLC需要先把目标车位那一层的载车板横移让出升降通道然后升降机上升到指定层把载车板平移到升降机上再降到入口层横移出库车辆开走。这里有一个经常被忽略的点取车跟存车用的优先级逻辑恰恰相反。取车找路径的时候要找的是“让出通道的最优方案”不是“直接奔着目标去”。这个顺序写错了程序在特定布局下就会卡死。很多同学做仿真时发现某个车位取不出来十有八九就是这里出了问题。2.4 为什么核心控制选PLC而不是单片机有人会问我学的是计算机/电子方向用STM32做控制不是显得更“高级”吗我先说结论再用实际经验打脸。用PLC做毕业设计是性价比最高的选择。PLC的梯形图编程对电气控制的表达是天然的学起来一个礼拜就能上手。老师不用花大量时间看你代码直接看图可读性极强这对答辩是极大的加分项。第二个核心原因是抗干扰能力。立体车库的现场环境里电机启停会产生很强的电磁干扰PLC比单片机在这种环境下稳定得多。虽然你做的是仿真实验但这个论点写进论文里依然是成立的而且是站得住的工程判断。第三个原因是工时可控、出错率低。使用单片机做系统你得另外设计电路排查掉通讯问题再缕一下传感器信号处理时间可能得翻一倍。而PLC有现成的编程软件有仿真有组态接口基本上一个人两个月能搞完整个项目。当然单片机路线也不是不行如果你有一个自动化比赛的项目基础里面用了STM32作为控制核心电机驱动、编码器反馈都有现成代码可以改那用单片机也是可以的。但对于绝大多数人来说PLC这个方案容错率高得多。3. 硬件选型要点与参数配置别在这个环节给自己埋雷3.1 PLC选型I/O点数怎么算才不浪费这是很多同学第一次接触工程选型最容易犯迷糊的地方。I/O点数不是拍脑袋定的有一个基本的估算套路。我以最常见的3层5列、共11个车位的升降横移式方案为例来算一遍。输入信号方面每个车位需要一个车辆检测信号用来检测该车位是否有车底层5个车位各需要一个横移限位信号中层5个车位各需要一个横移限位信号升降机需要上限位、下限位以及每个楼层的中位定位信号3个入口需要一个对射传感器紧急停止至少1个手动操作的时候可能还要预备几个按钮。算下来输入点大约在11 10 3 1 1 3 29个左右再加上冗余余量凑40个输入点比较稳妥。输出信号方面每个横移电机需要正转和反转两个方向控制底层和中层各有5个横移电机这就是20个点。升降电机有升、降两个方向控制加2个点电磁抱闸需要2个点声光报警需要1个点三色指示灯红黄绿各一个3个点。再加上PLC和上位机通讯预留输出点位约30个左右加冗余留32~40个。所以选型的时候输入40点、输出40点的组合完全够用还带有一点余量。三菱FX3U-64MR或者西门子S7-200 SMART SR60这种级别的完全能胜任。如果你是纯仿真没有实体I/O你可以在组态软件和PLC仿真器里把点数照样配齐按同一套分配表来走这样仿真做出来的逻辑跟实物是一致的逻辑上完全说得通。3.2 传感器选型别小看限位开关的作用定位问题在整个系统中是“生死线”。横移没到位就启动升降或者升降没到位就开始横移轻则卡住链条重则车辆滑落损坏设备。所以传感器的选型和安装位置是绝对不能马虎的环节。实践中最保险的组合是“限位开关主定位 光电传感器辅助判断”。限位开关机械式/接近式用于硬定位。机械式结构简单价格便宜环境适应性强接近式无接触磨损使用寿命更长误差小。用在升降机上时建议优先选用接近开关因为升降台的震动比较大机械式的容易松动。光电传感器对射型用于车辆存在检测。装在车位入口两侧车停到位挡住光路输出电平翻转PLC据此判断“车已就位”。在程序设计上我会做“双重确认”先看限位开关是否动作再看对应车位光电信号是否正常两个条件都满足才认为定位成功。有些调试场景里只有一个信号也会出现偶然触发双确认能显著降低误动作的概率。另外要提一点传感器接线时必须做屏蔽和接地处理尤其是接近开关和电机驱动线不要走在同一个线槽里。我在实训台上被这个坑过一次电机一启动接近开关的信号乱跳差点以为PLC坏了后来把线分开走就正常了。这个经验你如果做实体系统一定会用得上。3.3 电机驱动和执行机构设计要点立体车库里最怕的事情是“溜车”。电机断电后如果刹车不好载车板会缓缓下溜轻则定位不准重则砸车。所以设计的时候一定要选择带电磁抱闸的电机或者额外配置独立的抱闸装置。焊车板到位后PLC先启动电磁抱闸锁住电机轴再切断电机电源这样即便载车板上停了车辆也不会因为重力下溜。关于电机功率的选择我提供一个常用经验值供参考。升降电机建议1.5kW及以上具体看你载车板加车辆的总重量和升降速度。横移电机功率可以小一些0.75kW通常够了因为横移主要是克服滚动摩擦跟升降克服重力是两码事。变频器可选可不选如果选用了变频器建议加装制动电阻以吸收电机在减速或下降时产生的再生电能避免变频器过压保护触发。如果你是纯组态仿真这个逻辑同样体现在程序里每次升降动作结束后先输出“抱闸锁止”信号再停电机。仿真程序里没有真实的物理惯性但这个顺序一定得保持答辩时被问到“如何防止溜车”你答“抱闸先于电机断电生效”就是标准答案。3.4 上位机组态与通信方式用组态王还是MCGS组态监控是毕业设计展示环节的大杀器。画面美观、数据实时刷新、故障弹窗醒目答辩现场一亮相印象分就上来一大截。常见的上位机有两种选择组态王或MCGS嵌入版。我的建议是选MCGS。界面配置上手快和三菱PLC通信稳定资料多、教程多出了问题容易搜索到解决方案。组态王功能强一些但配置稍复杂对初学者不太友好。通信方式优先选串口通信或以太网通信。三菱FX3U系列用FX3U-ENET模块支持以太网通信通过MCGS新建工程设置设备IP为PLC的IP地址端口号默认就行变量连上就能跑。S7-200 SMART自带以太网口组态时也走TCP/IP协议配置更简单。要注意的坑是PLC程序里对应寄存器地址必须跟组态里绑定的变量地址完全一一对应。比如你PLC程序里存车状态用的是D100那组态画面上“车位状态”这个变量的通道地址就要绑定D100。对不上的话画面上的数据永远纹丝不动你半天找不到原因最后发现只是地址写错了。这种低级错误在实验室里时不时就来一回。4. 软件设计核心从梯形图到组态画面的实现路径4.1 I/O分配表一张表治百病写程序之前先把I/O分配表做好。这个是整个软件设计的根一张表写清楚后面写梯形图时不容易出错调试时排查故障也快写文档时还能直接搬进论文。我见过太多同学上来直接撸程序I/O号混乱最后引脚对不上、信号冲突项目差点烂尾。I/O分配表的意义就像建筑图纸的建筑坐标轴先定了位置才谈得上施工。以三菱FX3U为例我常给学生一个参考分配信号名称地址信号类型功能说明入口车辆检测X0输入检测入口车辆是否到位底层1号车位检测X1输入底层1号载车板是否有车底层2号车位检测X2输入底层2号载车板是否有车中层1号车位检测X3输入中层1号载车板是否有车1号横移左限位X10输入1号横移电机左行到位1号横移右限位X11输入1号横移电机右行到位升降上限位X20输入升降机升至最高层到位升降下限位X21输入升降机降至最低层到位一层定位信号X22输入升降机在一层到位二层定位信号X23输入升降机在二层到位三层定位信号X24输入升降机在三层到位急停按钮X26输入紧急停止回路1号横移电机正转Y0输出控制1号横移电机正转1号横移电机反转Y1输出控制1号横移电机反转升降电机上升Y20输出升降电机上升接触器升降电机下降Y21输出升降电机下降接触器抱闸锁止Y22输出电磁抱闸动作声光报警Y23输出故障报警运行指示灯绿Y24输出系统正常运行指示故障指示灯红Y25输出系统故障指示这张表不是死板不变的你完全可以根据自己的方案调整。但分配的逻辑要合理输入端、输出端分别归类信号功能标注清楚留有空余点位备用。这张表做好后写进论文里老师一眼就能看出你系统设计能力和工程意识是实打实的加分点。4.2 梯形图程序设计思路状态机才是最稳的写PLC程序我最推荐的方式是“用状态机的思路来组织梯形图”。什么意思不要一上来就堆一大堆M继电器和定时器而是先把整个系统的工作过程划分成一个个状态空闲状态、存车执行状态、取车执行状态、故障急停状态、复位状态。每一个状态对应一段梯形图逻辑。状态之间通过“转换条件”来跳转。比如存车的时候状态的迁移顺序就是空闲→检测到入口有车→搜索空车位→空位确认→横移让位如需→升降到位→横移入位→车辆就位确认→恢复空闲。每个转换都绑定一个或多个条件比如“空位已找到”这个条件就是扫描车位状态寄存器的结果和逻辑判断的结果为真。这种写法的好处太多了。第一思路清晰不会逻辑越写越乱第二调试时能准确定位“现在卡在哪个状态”第三答辩的时候你用状态流转图一讲老师马上能get到你的设计能力。单靠一个梯形图堆几百行老师看着也头疼你还不好解释。在三菱PLC里常用M系列中间继电器来表示当前所处的状态位比如M100代表“空闲”、M101代表“执行存车中”。每次状态切换就是把M100状态断开、置位M101。用SET/RST指令来操作状态位避免输出线圈在其他地方被重复赋值导致双线圈错误。4.3 核心控制逻辑拆解找车位、让位、升降、取车剥开来看整个程序其实就四块核心逻辑。第一块找车位逻辑。我在文档里列了个“空车位优先表”底层优先、中层次之、顶层最后。扫描顺序在程序中体现为一串比较和跳转指令。比如底层车位的状态寄存器值是0表示空那就选它全是1再查中层中层也满了只能选顶层。用梯形图写起来就是一个个“是否为空”的判断分支。第二块横移让位逻辑。这是最容易写错的地方。核心原则是“让出升降通道”。如果目标车位在高层那么当前层所有挡在升降路径上的载车板都要先移到旁边空位。这个空位哪里来循环左移或右移找个空位。移动的时候要确保不会撞上位。所以在让位程序里必须把限位信号和相邻位占用信号交叉互锁程序一旦检测到冲突立即停车报警。第三块升降定位逻辑。升降机的上升和下降依赖每层定位信号来停止。从1层到3层程序判断当前层和目标层的差值决定电机运行时间策略或碰到中间层信号时继续启动直到碰到目标层定位信号才停车同时启动抱闸。这一块逻辑不难但最容易因为“抖动”或“信号干扰”导致误停车。所以我在程序里加了时间滤波也就是定位信号要持续一个扫描周期以上才承认。第四块取车调度逻辑。跟存车动作是镜像对称的。核心复杂点在于取高层车时得先判断升降机停在哪个位置如果不在入口层得先主动把升降机降到入口层再让车辆进入。很多同学在这里偷懒结果程序跑起来“卡死”必须手动复位。4.4 手动模式与自动模式一定要做两种模式别忘了加手动模式。一是方便调试二是方便写应急操作文档三是答辩老师很可能问“如果自动系统出故障怎么办”。有手动模式兜底回答就有底气。手动模式下每个电机都由按钮直接控制启停传感器只做限位保护不参与自动调度。自动模式下所有动作由程序自动完成。手动/自动的切换用M1000这个中间继电器做总开关。切换时注意必须确保所有电机处于停止状态防止切换瞬间误动作。程序里加一条“切换前必须无运行信号”的条件这个细节虽然小但很体现工程素养。自动模式下存车按钮、取车按钮都会触发完整的状态链。手动模式下直接用对应的输入点去控制Y输出仅在限位到位的条件下允许动作。4.5 组态画面设计让你的系统“看得见”MCGS组态画面建议按以下几块来布局。停车库平面示意区画一个3层5列的网格每个格子用颜色表示状态绿色表示空红色表示占用灰色表示载车板正在移动。组态脚本里轮询PLC的D寄存器车位状态值刷新对应图形的颜色属性。设备运行状态区显示升降机当前楼层、横移电机动作方向、抱闸状态。这些通过读取M寄存器状态位来实现。操作按钮区存车按钮、取车按钮、急停按钮、复位按钮。这些按钮对应向PLC的M寄存器写状态或触发置位。故障报警区把PLC的故障代码对应到文字描述显示出来比如“1号横移电机过载”“升降机定位超时”。MCGS的报警事件在“运行策略”里配置把PLC的D寄存器故障代码映射到报警文本。动画效果上最简单的办法是将每个载车板做成一个“图形对象”通过脚本改变它的位置坐标来实现“移动动画”的模拟效果。虽然不如专业3D渲染那么炫酷但配合颜色变化和文字信息提示在答辩现场演示的效果已经足够抓人眼球。毕竟毕业设计最重要的是合逻辑、能演示、可解释。5. 仿真环境搭建与实操演示路径5.1 无硬件情况下如何做出“真实感”很多学校的实验室不具备搭实体立体车库的条件但这不意味着你就做不了仿真。仿真分两层一层是PLC逻辑仿真一层是组态画面动态仿真。三菱PLC用GX Works2或GX Developer自带仿真模式写完梯形图可以直接软元件测试模拟外部信号的变化观察输出响应。你可以在仿真中人为给X0置ON模拟入口检测到车看PLC有没有进入存车状态。用这种方法把状态链全部跑一遍逻辑有没有BUG一目了然。组态画面部分用MCGS模拟运行模式配合PLC仿真器做数据交互。MCGS把设备通信指向“模拟PLC”的通讯地址这样组态画面就能读到你仿真程序里的寄存器值变化。画面上的按钮也能写寄存器触发程序状态切换。这套全软路线做出来的效果除了没有电动机实际转动的声音其他和真实系统几乎一样。我建议在文档中要把仿真验证部分写细例如哪些信号是通过人为强制置位来模拟的、哪些寄存器是用来模拟车辆位置的、动作时序如何。老师看到这部分内容就知道你没糊弄是真做了东西。5.2 基于实训台或三菱FX3U的调试全流程如果你有条件接触实物那更有优势。实际的调试流程通常分成三轮。第一轮是空载调试PLC通电程序下载手动模式下逐个测试每个电机动作是否正常、方向是否正确、限位是否灵敏。第二轮是逻辑调试自动模式下用手按压传感器来代替车辆存在信号触发存车流程看整个状态链是否按预想执行。这里强烈建议用PLC的监控功能边单步执行边看M状态的变化效率远高于盲调。第三轮是带载调试在载车板上放置模拟配重重复多次存取过程观察升降电机的抱闸和定位情况。带载状态下可能暴露空载时发现不了的问题比如负载偏载引发的限位失灵或定位偏差。调试过程中最常见的现象就是程序看着没问题但实际一跑升降机走到一半就停了。排查步骤是打开监控画面检查目标层定位信号是否常闭或常开位置接反用万用表量传感器输出以及加滤波时间消除抖动。这些排查思路我放在后面常见问题章节里详细列举。5.3 通信调试PLC和MCGS之间到底怎么连通信是让很多同学头痛的环节其实本质上就几步接线或网络配置、参数约定、变量绑定。用三菱FX3U-232-BD或FX3U-ENET模块做通信串口参数要给波特率、数据位、停止位和校验位。MCGS设备窗口里选好设备驱动填好通信参数后记得在PLC程序里把D寄存器地址规划好。我提供一个实用建议在PLC程序的最前面加一段专门用于上位机通信的寄存器映射区把状态集中的核心变量都搬运到这个映射区。比如D100存当前状态编号D101到D110存车位占用状态D120存报警代码。这样组态画面只需要绑定这一小段地址不会乱调试的时候开着监控看这些寄存器相当于“板载仪表盘”。MCGS通信不上时大部分原因是串口参数不一致、地址类型选错或者物理链路接触不良。先看PLC的通信指示灯是否在闪烁再用串口调试工具发送手动的读命令来测链路能收到响应就说明链路通问题在配置。6. 毕业设计源码与文档的整理技巧6.1 源码工程怎么整理才显得“专业”源码不是堆在文件夹里就完了评阅老师和答辩专家会看你的组织能力。我建议工程目录结构如下PLC_Project/ │ ├── PLC_Program/ │ ├── 立体车库_V1.0.gxw # GX Works2或对应工程文件 │ ├── 程序结构说明.txt │ └── 变量表.xlsx │ ├── HMI_Project/ │ ├── 立体车库监控.mcg # MCGS工程文件 │ ├── 画面截图/ # 关键界面截图 │ └── 报警配置说明.doc │ ├── DOC/ │ ├── 开题报告.doc │ ├── 毕业论文.doc │ ├── 任务书.doc │ └── 中期检查.doc │ ├── Simulation/ │ ├── 仿真视频.mp4 # 实录的组态演示视频 │ └── 仿真说明.doc │ └── README.md # 整个项目的说明文件README里写清楚项目简介、运行环境、复现步骤。写一句“在GX Works2环境下打开工程文件先下载到PLC或启动仿真模式再打开MCGS运行工程即可”别人拿到手能复现这个就很加分。还有一些细节值得注意源文件里不要有未使用的工程碎片和临时文件关键程序段注释写明白程序版本号规范比如V1.0表示完整可用版本V0.1表示初稿有多个方案比较时另开一个文件夹放废弃方案不要混在一起。很多学生毕业之后拿着自己的源码去面试面试官不看程序本身先看你的文档组织这一关过了才有后面的事我跟你讲这真的会影响工作机会。6.2 论文文档如何把“逻辑”写成“亮点”毕业设计文档的质量直接决定你是良还是优。有几个章节我建议重点发力。系统总体设计部分把“电气控制系统结构图”“控制流程图”“I/O分配表”用Visio画好这是全文核心拿得出手。需求分析部分不要只写一堆概念把每个功能需求的输入输出条件写清楚比如“存车请求”这个功能前置条件是“入口有车且有空位”结果输出是“存车完毕且车位状态置位”。这种写法看起来就有工程味。“软硬件调试与结果分析”这一章最容易被写成“故障记录流水账”。我的建议是挑选两到三个有代表性的调试场景展开比如“升降机定位抖动导致程序误判”或“取车时路径冲突”每个场景按照“故障现象→原因分析→排查过程→解决措施→验证效果”来组织。这种写法能让老师看到你的分析能力而不仅仅是调试的结果。文末附录里放上关键程序段的梯形图或指令表、I/O分配总表、电气原理图。尤其是梯形图打印出来至少能占好几页答辩时方便翻阅。这部分内容多的同学论文页数轻松破100。6.3 答辩汇报中的展示要点与常见的答辩追问答辩时间通常控制在10到20分钟。汇报PPT建议按这个顺序组织选题背景与意义1-2页言简意赅系统总体方案设计3-4页放系统框图、设计方案对比硬件设计和I/O分配2-3页重点说你的计算过程软件程序设计4-5页上状态流图、梯形图讲核心逻辑上位机组态与仿真成果3-4页放组态画面截图、演示视频总结与未来展望1页点到即止演示视频是最好的答辩道具提前录制好一段从存车到取车的完整流程视频用时控制在60到90秒内这样现场即使设备出故障也不慌。老师最爱问的几个问题是为什么选PLC而不是单片机答可靠性、编程直观、便于维护上面的分析都用得上如何防止升降机溜车电磁抱闸加逻辑联锁怎么判断当前是哪个车位在横移看对应输出点状态和限位信号系统故障时如何人工接管手动模式。把这些都准备充分答辩状态自然就稳了。7. 调试阶段常见问题与解决办法实录7.1 通信连不上PLC和组态画面“各跑各的”现象PLC程序运行正常梯形图里状态在跳MCGS画面你点按钮没反应状态数字也不动。排查步骤先确认PLC程序有没有实际运行。很多人下载程序后忘了RUNPLC是STOP状态当然响应不了。确认运行后看通信参数串口号选对没有、波特率是否一致、PLC站号是否匹配。再用MCGS自带的设备调试窗口发送一条测试指令读一个寄存器试试返回值。如果返回正常那问题在变量绑定上检查画面按钮连接的通道地址和PLC寄存器地址是否对上了。地址错一位全白搞这是最常见的坑。7.2 升降机定位抖动状态偶尔乱跳现象升降机到达目标层后定位信号短暂闪断程序误认为未到位重新启动电机导致来回振荡。在继电器频繁动作时这种情况特别容易复现。原因分析限位开关在动作临界点存在机械抖动信号在几毫秒到几十毫秒内反复跳变。PLC扫描周期通常10毫秒左右如果抖动恰好发生在扫描期间程序可能读到错误状态。解决方案有两层。硬件上选用带滚轮杠杆臂的限位开关增加触点压力软件上写一个延时滤波程序定位信号持续10到50毫秒稳定才被确认抖动干扰就滤掉了。我通常用定时器指令来写这个滤波程序省事又可靠。这个实用技巧同样适用于横移限位信号。7.3 横移让位时突然急停没撞到东西却报警现象横移过程中PLC报警但现场看载车板没有碰到任何物理障碍。排查关键看报警代码。在组态里报警区显示了哪路信号出了问题。如果是横移限位信号提前触发大概率是限位开关安装位置离车位边界太近载车板启动时的微小位移就碰到开关误判为到位。也可能是相邻车位的限位信号接反了调试时把两个车位的中继线混在一起。解决建议检查限位开关的档片位置确保只有载车板真正运动到对应停车位边界时才触发开关另外在程序里对每个限位信号都做互锁比如“左限位有效时右行输出必须为OFF”这样即使传感器信号有误PLC不会同时给出矛盾的方向控制指令也能大幅降低误动作风险。7.4 存车流程跑了一半卡住状态位不动了现象自动存车过程中PLC的状态位停在一个中间状态后续动作不再触发。排查方法打开PLC在线监控查看当前M状态位同时看当前状态对应需要满足的转换条件。最常见的原因是行程限位不到位载车板还没到指定位置条件不成立程序就“挂起”。如果是急停按钮被误触发程序进入故障状态后没有自动复位需要手动按复位按钮。在程序里我习惯加一个“超时保护”逻辑每一步执行的时间超过预设值比如升降30秒、横移20秒就自动触发超时报警并停住。这个逻辑正常情况下永远不会触发但一旦设备卡住至少能及时报警不至于老师看演示时整个系统无响应干瞪眼。7.5 论文查重与源码查重这个坑很多人踩毕业设计的文档查重是硬指标。系统架构图、流程描述、技术原理这类内容容易被判定重复。注意几点不要大段复制教材或网上论文的原文图纸和表格尽量自己画技术方案描述保持自己的语言风格。写功能需求用“输入—处理—输出”表格化整理设计部分用模块化拆解文风这样既结构新颖又不会和别人的套路重叠。源码查重不一样它只关注代码相似度。你要把程序注释写清楚但不要刻意为了降重去改变量名造成逻辑混乱。更重要的是设计思路上的差异化比如在程序中加入了手动测试模式、超时保护、互锁逻辑等别人不会去做的细节。哪怕源码结构相似这些独有设计的痕迹也是你独立完成的实证。8. 从毕业设计到项目落地这个系统还能怎么扩展很多做到一半的同学会有一种感觉这个题目是不是有点“简单”控制逻辑似乎一眼望到底了。其实往深了做扩展空间非常大而且答辩和文档里加一段“后续展望”也是有实际内容的。你可以在现有系统上增加车牌识别功能结合OpenCV或云端API实现车辆身份绑定到车位号取车时输入车牌号而不是车位号这套流程在程序设计里相当于增加了一个“预约取车”的新状态链。还可以加手机App远程查询车位状态、提前预约存取车PLC端增加通信协议解析模块本质上就是把上位机从组态软件替换成网络服务端。更进一步的做法是引入变频器和编码器闭环让横移和升降都变成调速控制而不是简单的启停。这样系统在运行时更平稳定位精度更高论文的技术含量能上一个台阶。另外多组车库之间的联合调度也可以拓展两个或三个独立库共用一个出入口优先调度哪一组库的车位这背后就是一个简单的资源调度算法。对基础薄弱一点的同学我不建议一上来就扩展太多模块容易失控。先把主流程做透至少留出接口寄存器地址映射后期有时间和精力再加一个“分层调车”功能或“应急模式”就够了。想要把课题做深关键在于把现有主线打磨到位扩展功能反而是锦上添花。9. 写在最后一点掏心窝子的建议做这个课题我最深的体会是“进度管理远比技术细节重要”。很多同学前期不紧不慢到了最后两周期限快到了才开始熬夜赶程序结果程序改出了Bug文档也没时间润色答辩前一晚还在复制粘贴图表。而那些顺利走完整个流程的人往往是前期把框架架构和时间节点控制得好第一周做方案第二周做选型第三、第四周写程序第五周调通信最后两周集中写文档。还有一句话是我常跟学生说的不要老想着“老师会不会觉得这个太简单”而要多想“我是否真的把一个完整的工程做出来了”。你交出来的是一台逻辑自洽、能演示、有文档、有源码的完整系统这本身就是专业能力的证明。关于毕业设计它的价值在于完整走通一个工程项目的闭环。从需求到设计再到实现、验证、表达这个过程本身就是最好的学习。如果你正在为这个毕设焦头烂额先把文里提到的I/O分配表做出来再把状态转移图画出来。这两件事做完你的项目就已经完成了一半。剩下的就是按部就班地往前推进。稳住心态一步步来这个项目真的不难。