每年到这个季节,总有不少学弟学妹来问我毕业设计选什么课题好。电气自动化、机电一体化方向绕不开一个经典题目——立体车库控制。我手头这个“基于三菱PLC的3×4立体车库控制设计”项目,就是标准的三菱PLC + MCGS画面仿真组合,带视频操作演示和详细论文文档,从选题到答辩全流程走下来,三周时间基本上是够了。这篇文章把我实际做这个东西的过程原原本本写清楚:为什么选这套方案、3×4车库的运行逻辑怎么定、I/O怎么分配、程序怎么落、MCGS仿真画面怎么搭、视频和论文怎么准备,每个环节都会讲明白。准备做同类课题的朋友,可以拿这份东西当一个完整的参考路线图。
1. 为什么选三菱FX3U + MCGS这套组合:课题选择的底层逻辑
立体车库这种控制对象,大学阶段做控制设计是再合适不过的载体。它的控制规模不大不小:十几个开关量输入、十几个开关量输出,有电机正反转控制、限位检测、故障报警、手动自动切换,逻辑上既不会简单到让人学不到东西,又不会复杂到毕业设计阶段根本啃不下来。从教学和实践的角度看,兼具工程完整性和工作量可达性,这也是为什么它在各类工控课题里常年占据经典位置。
1.1 三菱FX3U系列选型的理由
PLC这块,我选的是三菱FX3U系列,这个选择可以展开说说。市场上能选的可编程控制器很多,西门子S7-200 SMART、欧姆龙CP1H、台达DVP系列都是常见选项,但为什么三菱FX系列在高校课题里出镜率这么高?一个核心原因在于它上手门槛低、资料极其丰富,中文教材、视频教程、论坛案例一抓一大把,遇到问题很容易找到参考。FX3U是FX家族里的主流型号,程序容量、指令集、扩展能力对这个小项目来说是绰绰有余的。
具体到硬件配置,我用的主机是FX3U-32MR/ES,这是一款继电器输出型的基本单元,内置16点输入16点输出,对3×4立体车库来说数量刚好。继电器输出型的好处是负载能力强,直接带小型接触器或中间继电器毫无压力,成本也低,虽然响应速度不如晶体管型,但立体车库的升降横移电机对这种速度完全没有要求。如果只做纯仿真不做实物接线,那有个FX3U的仿真器就够,比如GX Works2自带的GX Simulator,后面会讲到怎么用它和MCGS联动调试。
1.2 MCGS组态画面在课题里的角色
MCGS(Monitor and Control Generated System)是昆仑通态的组态软件,在国内工控市场占有率很高。这套课题里,MCGS的画面仿真承担的任务很明确:把PLC程序的运行逻辑用二维动画的方式直观呈现出来。说白了就是做一个虚拟的立体车库界面,把车库框架、车位状态、车辆模型、横移升降动作全部画出来,然后通过变量关联,让画面跟着PLC程序的状态实时变化。这样哪怕没有物理设备,老师也能通过屏幕看到你的控制逻辑在“真跑”,这是答辩演示时最有说服力的部分。
MCGS在高校里流行的另一个原因是它和主流PLC的通信驱动做得很成熟,尤其是三菱FX系列,通过串口或以太网都能很方便地对接。你先在GX Works2里写完梯形图程序,用MCGS建立工程、添加设备驱动、配置串口参数,再在画面里做动画连接,程序启动后画面就会实时联动。这个流程是这套课题的标准动作,做熟练了以后换其他PLC也万变不离其宗。
1.3 硬件清单和整体造价参考
纯仿真版的课题主要花钱在软件和资料上,如果要做实物,情况就完全不一样了。我列了一下比较完整的硬件清单,给打算搭实物或者做实验室的小伙伴一个参考:
- 三菱FX3U-32MR/ES PLC主机 × 1
- 开关电源(DC24V,给传感器和PLC输入供电)
- 限位开关或接近开关(用于横移、升降到位检测)
- 光电传感器(用于检测车位上是否有车)
- 小型继电器或接触器(用于驱动电机正反转)
- 三相或单相电机(升降电机和横移电机,实训台一般用小型减速电机)
- 按钮、指示灯、急停开关
- 端子排、线材、导轨等辅料
如果用实训台做,整套硬件学校基本都有,如果是自己采购做一套小型演示模型,材料连带3D打印的车库框架,预算大概在两千到三千元。不过大多数本科课题做到MCGS仿真这一层已经能拿一个不错的成绩,实物部分视学校要求和时间安排来定。
2. 3×4立体车库的运行逻辑:从车位编号到存取车流程设计
任何一个PLC控制程序,代码只是表象,真正决定程序好坏的是对控制流程的理解。立体车库的控制流程,本质上可以抽象成“车从门口进去,通过横移和升降两个动作,把车送到指定车位;取车时反向操作,把车从车位运回门口”。逻辑听起来简单,稍微展开就会遇到车位定位、空位查找、优先策略、限位保护这些细节问题。
2.1 车位编号规则和物理模型
3×4立体车库,这里需要解释清楚,它代表的是3列4层,一共12个车位。底层(第1层)是地面层,车辆可以直接开进开出,不需要升降动作;第2层到第4层需要先提升再横移,或者先横移再提升,具体取决于存取车的位置。车位编号我建议用“列-层”的二维编号方式,例如1-1表示第1列第1层(底层落位),2-3表示第2列第3层,依此类推。
这个二维编号方式在后期的程序设计和MCGS画面制作中会非常受用,因为一个车位在物理上和画面上都对应一个唯一的坐标。程序中可以用数据寄存器来记录每个车位的状态,比如用D100到D111这12个寄存器分别对应12个车位,数值0表示空位,1表示有车,这样查找空位就变成了一个简单的区间扫描动作。
2.2 存车流程和中途优先级策略
存车动作的起点是车辆驶入车库入口,入口处设置一个光电开关检测车辆是否到位。检测到有车后,系统要做的第一件事不是手忙脚乱地移动,而是先确认入口层(也就是第1层)有没有空位。如果第1层有空位,直接让车辆进入第1层对应的空位,不用升降,效率最高;如果第1层满了,就得去上层找空位,这时才启动升降和横移机构。
上层存车的动作流程可以拆成这么几步:
- 系统扫描12个车位寄存器,按顺序找到第一个空位。
- 根据空位的列号,启动横移电机,将载车板移动到该列对应的井道位置。
- 到位后由横移限位开关确认,启动升降电机,将载车板提升到目标层。
- 升降到位后由该层的层限位开关确认,停止升降。
- 载车板平移进入车位,放车到位,车位状态寄存器置1,存车完成。
这套流程里面有一个优先级问题值得在设计时专门考虑:为什么先横移再升降,或者先升降再横移?我当时的处理方式是:如果目标车位在1层我就直接横移入位;如果目标车位在上层,一律采用先横移后升降的方式。因为横移是在低层进行的,横移完成后提升,整个运动轨迹比较简洁,也不容易与相邻车位产生干涉。你完全可以在程序里采用相反的流程,但关键是逻辑要统一,不能这次先横移下次先升降,否则调试的时候会被自己绕晕。
2.3 取车流程和“倒车”动作的展开
取车流程比存车要稍微复杂一点,因为用户输入的不是“当前车在哪”,而是“我要取哪号车位的车”。操作时先通过触摸屏或者按钮输入车位号,比如“3-2”,程序就会把载车板移动到3列2层,将车运回出口层。
这里有一个容易被忽视的细节:取上层车时,升降机构要先带着空载车板下去还是直接升上去?我最初设计时直接让车板去目标车位接车,后来发现这样在目标车位本来就有车的情况下,车板根本无法进入,所以正确的逻辑是先让车板回到初始位置(复位到1层),再按空位模式去目标车位,到位后将车辆接出,再降到1层出口。也就是整个过程要拆成“空载定位—接载—返回”三个阶段,每个阶段都要有对应的到位检测和状态标志位,这样程序结构才清晰,处理异常时也方便定位问题。
为了让大家更直观理解这些状态,我贴一段当时的PLC指令表风格的逻辑片段,用的是三菱的STL语言风格:
; 取车启动条件:取车按钮X10按下,目标车位号存储在D200 LD X10 ANI M50 ; 不在运行中 OUT M60 ; 取车启动标志 ; 空载移位阶段:目标列号与当前列号比较,决定横移方向 LD M60 LD D200 ; 目标车位号装载 SUB D210 ; 与当前列号比较 OUT M61 ; 列定位完成标志当然真实程序中要比这复杂,在梯形图里分网络逐个写更直观,这里只展示逻辑片段帮大家理解状态机思想。核心思路是:每个动作阶段用独立的M继电器作标志,前一个动作完成且限位到位才置位下一个动作,绝不允许多个运动动作同时成立。
2.4 安全联锁和异常处理:立体车库程序的重中之重
立体车库涉及升降和横移两组运动机构,最怕的就是两组机构同时动作,这在物理上会造成机械干涉甚至严重事故。所以程序里必须做硬性互锁和软性互锁双重保障。硬件层面,在继电器控制回路里,升降正转接触器和升降反转接触器的常闭触点要互相串联,横移正反转同理;软件层面,梯形图里升降输出和横移输出要互锁,升降正转和升降反转两个线圈不能同时为ON。
异常处理也是程序的重要组成。常见的异常场景包括:升降超时(电机运行了设定时间还没到位,说明卡阻或限位失效)、限位开关被破坏、急停按下。我当时的处理逻辑是:程序里用定时器给升降和横移动作设定一个最长运行时间,一旦超过时间限位还没到位,马上切断所有输出,置位报警继电器,同时触摸屏画面上弹出报警信息并点亮报警灯。复位按钮按下后,先清除报警状态,再让机构回到初始位置,之后才能重新进入自动模式。
3. I/O分配与硬件配套:接线前必须想清楚的几件事
很多第一次接触PLC项目的人都急着写程序,忽略了硬件I/O设计,结果到接线调试的时候才发现输入点不够用或者输出点接错了极性,返工成本极高。立体车库的I/O点数其实不算多,但分配逻辑和硬件配套里有几个坑值得提前说清楚。
3.1 输入输出点分配方案参考
我当时的I/O分配方案是这样的,拿给大家做一个参考:
| 输入点 | 功能说明 | 输出点 | 功能说明 |
|---|---|---|---|
| X0 | 启动按钮 | Y0 | 横移电机正转 |
| X1 | 停止按钮 | Y1 | 横移电机反转 |
| X2 | 急停按钮 | Y2 | 升降电机正转(提升) |
| X3 | 1列限位 | Y3 | 升降电机反转(下降) |
| X4 | 2列限位 | Y4 | 运行指示灯 |
| X5 | 3列限位 | Y5 | 报警指示灯 |
| X6 | 一层到位限位 | Y6 | 蜂鸣器 |
| X7 | 二层到位限位 | Y7 | 备用 |
| X10 | 三层到位限位 | ||
| X11 | 四层到位限位 | ||
| X12 | 入口光电检测 | ||
| X13 | 1列1层车位检测 | ||
| X14 | 1列2层车位检测 | ||
| X15 | 1列3层车位检测 |
这里需要说明一下,FX3U的16点输入是X0到X17,但因为八进制编号规则,X8和X9实际上是不存在的,所以16点输入的编号直接跳到X10之后,这一点很多新手会搞混。同样,输出Y编号也是八进制规则,Y0到Y7是一组,Y10到Y17是第二组。分配I/O的时候千万别想当然按十进制连续编号去写,否则程序下载进去监控地址对不上,排查半天找不到问题。
3.2 传感器选型和接线要规避的共性问题
限位检测这一块,很多实训台用的是机械式限位开关,工作可靠但容易被撞击损坏,另一个方案是电感式接近开关,检测金属挡块,寿命更长,价格也不贵。对于立体车库这种反复运动的机构,我建议优先选电感式接近开关。光电传感器主要用于入口和车位检测,因为是检测车辆的遮挡状态,选对射式或反射式都可以。需要注意的是,光电开关的输出极型有NPN和PNP之分,三菱FX3U的输入是漏型(NPN)接法,也就是公共端接24V正极,传感器提供一个低电平信号到输入点。如果买成PNP型的传感器,信号电平恰好反过来,接上去输入点永远检测不到信号。买传感器之前先确认极型,这是最基础的常识,也是最容易出的坑。
另外,接近开关的检测距离也要注意,通常选4mm检测距离的型号就够了,安装时支架要留出调节余量,因为机械装配有公差,如果检测距离调得太极限,运行过程中稍微有点震动就会丢信号或者误触发。我调试时就遇到过横移到位后偶尔检测不到的情况,后来排查发现是接近开关支架松了,重新调整距离并紧固后才稳定。
3.3 主回路和动力线配置的实操建议
动力回路方面,横移电机和升降电机一般选用小型三相异步电机,功率不大,几百瓦即可。PLC的输出点不能直接驱动电机,必须通过接触器或中间继电器转接。我这里用的是接触器控制电机正反转,接线方式就是标准的两个接触器换相接法,再配合热继电器做过载保护。若实训台用的是直流电机,同样通过中间继电器切换方向。
还有一点,PLC的24V直流电源带载能力有限,如果传感器比较多,建议单独用一个DC24V开关电源给传感器供电,不要全部挂在PLC自带的24V端子上,否则电流超出后PLC电源发热严重,甚至会导致程序重启。这是一个很有价值的小经验——很多新手项目莫名出现“程序跑飞”的现象,排查到最后往往是供电出了问题,而不是程序问题。
4. 控制程序分模块设计:手动、自动、报警三大部分的关键细节
立体车库程序部分,我的整体思路是两个模式,手动和自动,用模式选择开关或触摸屏按钮切换。每个模式下再细分为若干模块,为了方便调试,所有动作都有对应的状态指示灯。程序结构上,我把它划分成初始化、手动控制、自动存取、报警处理、复位逻辑五个模块,每个模块在梯形图里用独立的程序段编写,并加上注释。这样做的好处是后期查错时直接按注释跳到对应网络,不用在一大坨逻辑里大海捞针。
4.1 手动模式的程序框架和调试价值
手动模式的核心用途其实是调试。在写自动流程之前,必须先把手动动作跑通,确认每个电机方向对不对、每个限位信号能不能可靠触发。手动模式下我设置了独立的按钮控制横移正转、横移反转、升降提升、升降下降,每个动作都带限位互锁:比如在1列限位已经触发的情况下,横移继续向1列方向的输出就会被封锁。这样做是为了防止按钮误操作导致机械撞击。
手动模式的梯形图逻辑相对简单,核心就是一个输出线圈配合多个串联的常闭限位条件。例如横移正转输出Y0的条件是:横移正转按钮按下、横移反转没有输出、1列限位没有触发、急停没有按下。这里最关键的互锁条件,保证任何时刻横移电机只有一个方向导通。这种互锁逻辑虽然简单,但它是自动模式能够安全运行的基础,手动调试阶段不把方向都确认正确,自动模式下电机反方向运行很容易造成设备损坏。
4.2 自动存取车程序的模块化展开
自动模式是这个项目程序部分的核心。它由存车流程和取车流程两个子程序组成,分别用SFC(顺序功能图)的风格设计。SFC最大的优势是把一系列按顺序执行的动作变成“步”,每一步有独立的启动条件、动作内容和转移条件。比如存车第一步是“查找空车位”,转移条件是“找到目标车位号并存储”,第二步是“横移机构启动”,转移条件是“列限位触发”,以此类推。三菱GX Works2支持SFC编程,也可以用梯形图实现相同的步进逻辑,我为了便于在论文里截图展示梯形图,采用的是梯形图+状态继电器M的方式:M100表示第一步,M101表示第二步……每个M之间通过转移条件串联。
这个“用M继电器模拟步进”的方法是很多教材里都会讲的标准做法,具体展开一下:
; 步1:查找空车位,找到后置位M101 LD M100 AND M8000 ; 运行监视常ON OUT M100 LD M100 AND X12 ; 入口有车检测 ANI M50 ; 非报警状态 ANI M101 SET M101 RST M100每一“步”的转移条件完成后,复位前一步状态继电器并置位下一步状态继电器。这比用“置位/复位”满天飞的做法要规范得多,在论文的梯形图说明部分也更好向老师解释。所有步进动作完成后,用一个“完成”M继电器触发输出复位和指示灯亮起。存取车完成后系统自动回到待机状态,等待下一次操作指令。
4.3 报警与复位:程序调试时的“伙伴”
报警模块很容易被当成配角,但在答辩和演示环节它反而很出彩。我设计了三种报警类型:超时报警、限位故障报警、急停报警。超时报警是用定时器实现的,比如横移动作超过8秒,说明横移机构卡住或者限位失效,此时立即断开所有动力输出并置位报警。限位故障报警检测的是多限位同时触发这样的矛盾信号,比如1列和3列限位同时为ON,这显然是不可能的,说明开关损坏或接线错误,系统会报故障而不是继续运行。急停报警最简单,X2触点断开时,程序跳到报警处理段,维持报警状态直到手动复位。
这个报警模块在调试阶段帮了我大忙。因为机械结构偶尔会出现限位没有触发的情况,如果没有超时报警,电机就会一直转下去,直到撞到机械限位或者烧毁电机。有了超时报警之后,一旦超时立即断电,可以保护设备,也方便我做故障重现,快速定位是限位安装位置不对还是接线松动。
4.4 程序调试的实战顺序:先模拟后实物
程序写完不急着接设备,先用GX Works2里的仿真工具GX Simulator跑一遍逻辑。把程序下载到仿真器里,用“软元件测试”窗口手动触发X点,比如强制X12为ON模拟入口有车,然后监控M100到M110的状态变化,看看是不是按设计的顺序切换。这一步能解决80%的逻辑错误,而且不会损坏任何硬件。
跑通仿真之后再接实物或实训台。实物调试阶段要特别注意“先手动后自动”的顺序,先把每个电机方向、每个限位信号都确认一遍,再切自动模式试运行。我遇到过的两个典型的坑是第一,接好线后发现横移正转和反转方向反了,结果是电机接线端子的相序不对,需要在接触器出线端调换两相;第二,程序里用了常闭的限位信号,但实际接的是常开触点,导致程序一启动就误判限位触发。这类问题在手动模式下很快就能暴露出来,如果直接上自动很容易烧电机。
5. MCGS画面组态:从数据对象到动画连接,仿真调试怎么跑通
MCGS画面仿真是这个课题和纯程序设计最大的区别所在。它把你看不到的PLC内部继电器状态,用看得见的动画表达出来——车位上有车就是一个深色车辆图形,没车就是空白;横移机构在动,画面上的车板就左右移动;升降机构在动,车板就上下移动。答辩的时候这一块的演示效果直接拉满。
5.1 MCGS工程搭建和设备连接配置
MCGS的工程结构分几个部分:设备窗口、用户窗口、实时数据库、运行策略。设备窗口负责和PLC通信,用户窗口是画动画的地方,实时数据库是画面和程序之间的“桥梁”,运行策略可以做一些比较特殊的逻辑,比如定时刷新、条件显示。刚入门的人很容易只关注用户窗口的绘制,忽略了设备窗口和实时数据库的配置,结果就是画面画得很漂亮但动不起来。
设备连接的配置逻辑是这样的:先新建一个MCGS工程,然后在设备窗口里添加“通用串口父设备”和“三菱FX系列编程口”两个子设备,串口父设备里设置COM口号和波特率,子设备里设置PLC站号。如果PLC和电脑之间用的是USB转串口线,那么COM口号一定要在设备管理器里查清楚,波特率和PLC编程口默认一致,通常是9600。这里最容易错的是COM口号选错,或者把PLC和MCGS的站号搞混,导致通信失败。
为了让MCGS在没有实物PLC的情况下也能演示,可以这样操作:先打开GX Simulator运行PLC仿真程序,然后MCGS仍然走串口通信,这时需要一个虚拟串口工具(比如VSPD)创建一对互联的虚拟串口,把GX Simulator和MCGS分别绑定到这一对虚拟串口的两端。这样就实现了PLC仿真器和MCGS画面的联动,即使没有物理PLC也能跑通全套演示。如果学校用的是FX3U实物PLC配合USB编程线,可以用MX Component组件连接,配置相对复杂,建议优先考虑串口方式。
5.2 实时数据库的数据对象设计与变量映射
实时数据库里定义的数据对象,本质上是MCGS在内存中维护的变量。它需要和PLC内部的软元件一一对应。比如我用到的几个典型数据对象是:
- GX0:对应PLC的X0(启动按钮)
- GY0:对应输出Y0(横移正转)
- GM100:对应M100(第一步状态)
- GD200:对应D200(目标车位号)
定义好数据对象后,在设备窗口的“设备属性”里建立通道连接,把PLC的X、Y、M、D软元件映射到刚才定义的数据对象上。这个过程有点像给变量起“外号”,MCGS画面里只认这些数据对象的名字,不认PLC原始的地址。所以命名一定要规范,方便自己后期调整画面时一眼看懂。
5.3 画面绘制和动画连接的具体操作
画面绘制这一步比较考验耐心,但难度不大。我用MCGS的图元工具依次画出了车库的立体框架:3列4层,每列画成独立的矩形区域,每层用不同的透明度区分,底层画成深色表示地面。车位里用矩形和圆角矩形组合成小车的轮廓,放一个“满”的文字标签,空位只显示车位编号。横移机构是一个可以移动的矩形框,升降机构是一个可以上下移动的细长条。
动画连接的设置在MCGS里叫“动画连接属性”。选定一个物体后,在属性面板里找到“位置变化”,然后关联到对应的数据对象。比如横移机构的水平移动,关联到一个数值型数据对象,这个对象的数值由PLC里的当前列号寄存器决定。更直观的做法是关联开关型数据对象:横移正转输出Y0为ON时,物体向右移动动画;Y0为OFF时停止。用开关量驱动动画最省事,也不用在PLC里额外算位置,直接在画面上叠加一组位移条件就行。这个方法在小项目里完全够用,而且答辩时老师问到“怎么做动画”,你可以直接回答“通过开关量触发动画组”,简单清晰。
5.4 联调的常见问题:通信失败和变量不刷新
MCGS和PLC联调,最常见的报错就是通信失败。处理这个问题的排查顺序是:先看设备窗口里设备管理器状态是否是“运行中”,如果显示“初始值”或“故障”,说明通信没有建立;然后检查串口号、波特率;再检查PLC侧的通信协议设置,三菱FX系列编程口默认协议是RS232,不要错选成RS485。这些地方都核对过之后,把PLC程序和MCGS工程同时重新运行,在MCGS的调试页面里看数据对象的实时值能不能跟着PLC的软元件变化。
另一个常见现象是数据对象不刷新。检查方向是实时数据库里的采集周期,MCGS默认的采集周期是1000毫秒,如果嫌弃动画有延迟感,可以把周期改成100毫秒,肉眼就感觉不到卡顿了。我当时为了演示流畅,把这个值调到100毫秒,画面确实顺滑了很多。还有一点,PLC里使用的M和D软元件,必须在程序中实际被驱动或写入,否则MCGS读到的永远是初始值,这不是通信问题而是PLC程序本身没有让这些软元件动作起来。我的经验是先在GX Works2里用软元件测试手动强制M和D的值,再去MCGS里看对应变量是否变化,这样能快速区分是PLC侧的问题还是MCGS侧的问题。
6. 视频操作演示录制、论文文档整理和答辩准备的经验
最后一个部分,是很多只搞技术的同学容易忽略的,视频操作演示和论文文档。这个课题的完整描述里特别强调了“视频操作演示√ 论文详细说明文档”,说明这两样东西在最终评分和展示环节占的权重并不低。甚至可以说,程序是灵魂,视频和论文是让灵魂被看见的窗户。
6.1 操作演示视频怎么录才专业
录视频之前先把演示流程写成一个脚本,按照“硬件介绍—程序展示—仿真运行—MCGS联动—故障演示”的顺序组织。不要一上来就打开软件乱点,那会让评审老师看得一头雾水。我的脚本大致是这样的:
- 开场旁白简要说明课题名称和控制要求。
- 展示GX Works2里的梯形图程序结构,每个模块停留几秒,重点说明I/O分配和步进逻辑。
- 切换到GX Simulator仿真,在线监控模式运行自动存车流程,视频里能看到M继电器的状态切换,配合旁白“启动存车”、“横移到位”、“升降到位”等关键状态。
- 切换到MCGS画面,展示画面布局,说明数据对象设计,然后运行联动,让PLC仿真和MCGS画面同步演示一个完整的存车和取车过程。
- 演示报警:故意不触发限位,让超时报警生效,画面弹出报警信息,蜂鸣器动作,突出系统安全性。
- 最后用一段话总结设计特色和创新点。
录制软件我用的是OBS Studio,免费且支持双源录制,可以把屏幕和麦克风同时录进去,分辨率设成1920×1080,帧率30就够用,文件不会太大。剪辑用剪映或者Premiere都可以,加一些标注文字和箭头,把操作位置圈出来。视频里要控制节奏,总时长控制在5到8分钟,太长没人看,太短又讲不清楚。旁白的声音要清晰,嘈杂环境建议用麦克风录制,不要用电脑自带的麦克风,否则电流声会很明显。
6.2 论文文档的结构安排和重心分配
论文的结构大概分成6章:绪论、总体方案设计、硬件设计、软件设计、MCGS监控界面设计、总结与展望。这个结构是毕业设计论文的标准套路,但不同课题的重心分布是不一样的,立体车库的重心显然是落在“软件设计”和“MCGS界面设计”两章。
写论文的时候有几个容易被老师挑刺的点,提前做好就能省很多返工时间。第一,I/O分配表要放在硬件设计章,并配上接线图和元件选型表,不能光写程序不写硬件。第二,梯形图截图要清晰,建议在GX Works2里用放大比例截图,每条网络的注释都要展开,这样老师看着不费力。第三,流程图要用规范的绘图软件(比如Visio)画,不要用Word里的文本框拼,容易错位而且显得不专业。第四,仿真结果要有对比,比如“同一控制逻辑,实物调试结果和MCGS仿真结果一致”这个结论要有依据,建议附上实物运行照片或者仿真运行截图。
6.3 答辩环节最容易问到的问题和应对思路
我在答辩前把常用的问题进行了一轮梳理,整理出以下几类高频问题:
- 问:为什么选三菱PLC而不是西门子?回答思路:兼顾教学资源丰富性和工程应用广泛性,FX3U指令简单、扩展方便,适合中小型自动化设备,立体车库属于典型中小型控制对象。
- 问:横移和升降是怎么防止同时动作的?回答思路:先讲软件互锁(梯形图中Y0和Y1、Y2和Y3互锁,横移和升降组之间也互锁),再讲硬件互锁(接触器常闭触点串联),双保险。
- 问:如果车位上已经有车,系统怎么防止重复存车?回答思路:车位状态寄存器的判断逻辑,入口检测到有车时先扫描空位,如果没有空位则拒绝存车并提示“车库已满”。
- 问:MCGS的画面和PLC是怎么通信的?回答思路:从设备窗口、串口参数、通道连接到数据对象映射,把整个过程讲清楚,顺带展示实时数据库截图。
这些问题的回答不需要背稿,关键在于把程序设计时的每个决定背后的“为什么”想透。我答辩时最深的体会是,只要程序是自己一行一行写的,硬件接线是自己一根一根理的,任何问题都好回答,因为你真的懂这套系统。如果平时不动手,临时抱佛脚背稿子,老师随便追问一个细节就露馅了。
6.4 从这套课题里收获的通用能力
把整套东西做下来之后回头看,“3×4立体车库控制设计”这个课题真正的价值不只是学会了按几个按钮、写几段梯形图、画一个动画界面。它更像是一套完整工程思路的入门训练:从需求分析开始,到方案选型、硬件设计、软件实现、仿真验证、文档输出,最后再通过演示和答辩把工作成果表达出来。这套流程放到任何工控项目里都成立,不管以后做流水线控制、恒压供水、温度控制还是机器人工作站,方法完全通用。
尤其是“PLC逻辑+组态画面”这一对组合,在整个工业自动化行业里的使用频率极高。你把立体车库的升降横移抽象成“位置控制+状态判断+顺序执行”,MCGS的动画连接抽象成“数据可视化+人机交互”,未来工作里遇到AGV调度、自动仓储、电梯控制这些更大型的系统,底层逻辑还是这些东西,只是点位规模更大、算法更加复杂而已。
最后再分享一个当时我很难忘的细节。程序联调完成的那个晚上,我在实训台上按下启动按钮,横移机构带着车板缓缓移向目标车位,MCGS画面上的小车图元同步滑过屏幕,那一刻还是挺有成就感的。做自动化就是这样,写一万行代码的满足感,可能不如亲眼看到一个机械动作被程序精确地支配来得强烈。希望这份分享能让正在做、准备做这个课题的人少走几步弯路,顺利跑通属于你的那一套立体车库。