做PLC这行久了,经常会被问到一个问题:新人到底拿什么题目练手最合适?我的答案里永远有一个位置留给“全自动洗衣机控制系统”。这个项目在课程设计、毕业设计里的出现频率非常高,题目看起来平平无奇,但它把PLC最核心的逻辑运算、定时计数、状态切换、安全保护全部覆盖了一遍。做透这个题目,基本等于把PLC从入门到进阶的主干走了一遍。我见过不少同学对着三菱FX3U的编程软件先写几百行梯形图,再慢慢改,最后发现“写得越多,错得越多”——问题往往出在没把需求和控制思路拆解清楚。这篇就从一个完整可落地的角度,把全自动洗衣机控制系统的设计思路、I/O分配、梯形图逻辑、仿真调试和报告整理一起讲透。正在做课设或毕设的同学,可以把它当成一份能直接参考又不会只抄了个空壳的完整方案来看。
这个课题适合谁?三类人最值得看:一是正在写PLC课程设计、但对着题目不知道从哪下手的同学;二是已经写完程序但调试总出问题的同学,这篇里的排查思路能帮你快速缩小问题范围;三是想从“会写小程序”过渡到“能独立设计一个小型控制系统”的初学者。全自动洗衣机虽然家用电器里不起眼,可它背后那个“按顺序干活、出问题能自己停、流程能重复跑”的逻辑,跟工业产线上的分拣、搬运、包装控制是一模一样的思路。把这个项目吃透,再看别的顺控项目就不会发怵了。
1. 先把项目拆明白:PLC到底要管洗衣机的哪几件事
1.1 从洗衣机的工作流程反推控制需求
拿到“基于PLC的全自动洗衣机控制系统”这个题目,先别急着开编程软件。很多新手上来就写梯形图,结果写到一半发现流程错了,又全部推倒重来,这是最浪费时间的方式。正确做法是先回答一个问题:一台全自动洗衣机,到底按什么顺序干活?
以最常规的波轮洗衣机为例,一次完整的洗衣流程是:启动后先进水,水位到了高水位后停止进水,开始洗涤;洗涤时电机正转一会儿、停一会儿、再反转一会儿,循环若干次;洗涤结束开始排水,排空后进入脱水;脱水完成后开始第二次进水进行漂洗,漂洗完再排水、再脱水,最后结束并报警提示。如果老师要求的是“单洗单漂”方案,那就是进水→洗涤→排水→脱水→结束;如果要求更完整,就是进水→洗涤→排水→脱水→进水→漂洗→排水→脱水→结束。这个流程就是整个控制系统的主线。
把这条主线拆开看,PLC需要管理的实物对象就清晰了:进水电磁阀负责往桶里注水;排水电磁阀负责把水排掉;洗涤电机负责带动波轮正反转;脱水时电机通过离合器切换到脱水桶高速旋转。水位信号由水位开关(压力式或浮球式)反馈给PLC——这是输入信号;盖板安全开关用于脱水时的紧急保护——这也是输入信号;启动和停止按钮是人机交互的输入。把这些对象列全了,控制需求就出来了:根据启动/停止指令、水位状态、安全开关状态,按顺序控制进水阀、排水阀、电机正反转和报警蜂鸣器。
这里有一个容易忽略的点:进水这个动作并不是只管一次。第二次漂洗进水也要靠同一套进水阀,所以程序里不能只写“进水一次就结束”,应该把进水逻辑设计成一个可以被多次调用的“状态”,每次流程进到需要注水的环节时,就切到这个状态去执行。这也是为什么建议用状态机而不是用一堆串联定时器来写流程的原因,后面第2节会展开讲。
1.2 硬件方案选型:为什么这个项目用PLC最合适
有的同学可能会问:洗衣机控制用单片机不就行了,为什么课程设计偏偏指定用PLC?这里面其实有很现实的教学考虑,也有工程上的合理性。
单片机方案确实便宜,一片几块钱的单片机加几个继电器就能实现,但单片机的I/O驱动能力弱,外部要加驱动电路、隔离电路、电源电路,程序跑飞了没有看门狗就容易出安全事故,而且接线密密麻麻,对初学者并不友好。继电器控制方案就更传统了,纯用中间继电器和时间继电器搭一个控制柜,能实现但体积大、接线复杂、逻辑改起来要重新拆线,调试周期特别长。
PLC在这个项目里的优势非常直白:输入输出接口自带隔离和驱动能力,梯形图写逻辑直观,改功能只需要改程序不需要改硬线,而且自带定时器、计数器、辅助继电器,洗衣流程里需要的正转延时、暂停延时、循环次数计数全部内置,不需要外接一堆时间继电器去拼。从教学角度讲,PLC可以把注意力集中在“控制逻辑怎么设计”这件事上,而不是耗在电路焊接和调试上。
具体选哪款PLC,一般以学校实训室的设备为准。最常遇到的是三菱FX系列(FX3U、FX3G、FX3SA)和西门子S7-200 SMART / S7-1200。三菱FX系列在院校里占有率很高,原因在于它的指令系统直观、GX Works2编程软件普及率高、仿真功能也顺手。做这个项目,I/O点数大约需要6个输入、5~6个输出(不含备用点),选一款16点的小型PLC完全够用,比如FX3U-16MR/ES或FX3G-24MR。如果是西门子路线,S7-200 SMART的CPU SR20也足够。选择时记得留10%~20%的I/O余量,这是工程习惯,后面想加触摸屏或者故障指示灯时不用换PLC。
1.3 I/O地址分配与电气接线思路
I/O分配是整个设计里最不能省的一步。一个清晰的总表,既方便后面写程序时对照,也是报告里老师必看的核心内容。下面以三菱FX3U为参考,给出一套常用的分配方案。
| 输入信号 | 地址 | 功能说明 | 对应器件 |
|---|---|---|---|
| 启动按钮 | X0 | 上升沿启动洗衣流程 | 常开按钮 |
| 停止/复位 | X1 | 紧急停止,结束当前流程 | 常闭按钮或旋钮 |
| 高水位开关 | X2 | 水位达到设定值时接通 | 水位开关/压力开关 |
| 低水位开关 | X3 | 水位低于设定值时断开(用于排水检测) | 水位开关 |
| 盖板安全开关 | X5 | 开盖时断开,用于脱水保护 | 磁控门开关 |
| 手动/自动切换 | X6 | 调试时使用,可选配 | 选择开关 |
| 输出信号 | 地址 | 功能说明 | 负载类型 |
|---|---|---|---|
| 进水电磁阀 | Y0 | 启动注水 | 220V交流电磁阀经继电器 |
| 排水电磁阀 | Y1 | 启动排水 | 220V交流电磁阀经继电器 |
| 洗涤电机正转 | Y2 | 控制接触器KM1,波轮正转 | 接触器→电机 |
| 洗涤电机反转 | Y3 | 控制接触器KM2,波轮反转 | 接触器→电机 |
| 脱水接触器 | Y4 | 控制离合器切换及脱水高速运转 | 接触器→电机 |
| 蜂鸣器 | Y5 | 洗衣结束报警 | 蜂鸣器/指示灯 |
这里有一个初学者经常踩的坑:三菱FX3U的晶体管输出和继电器输出型号不一样,如果选的是继电器输出型(MR),负载端可以直接接220V交流接触器线圈或电磁阀,但要注意PLC输出点容量一般只有2A,直接驱动大功率接触器有烧点风险。稳妥做法是PLC输出点先驱动24V中间继电器,再用中间继电器触点去控制220V接触器线圈。虽然多了一道环节,但保护了PLC的输出点,这也是工程现场的标准做法。报告里画I/O接线图时,把这层关系画清楚,老师会看出你是真懂而不是只会照抄。
电气接线还有一条重要原则:正转接触器KM1和反转接触器KM2,除了在PLC程序里做软件互锁之外,接触器的主触点回路里必须再加硬件互锁。也就是KM1的常闭触点串进KM2的线圈回路,KM2的常闭触点串进KM1的线圈回路,防止两个接触器同时吸合造成相间短路。软件互锁防的是程序逻辑错误,硬件互锁防的是接触器卡死或PLC输出点故障,两者都要有,缺一不可。这个点很多人忽略,但实际运行中如果电机正反转切换频繁,接触器机械卡死的情况并不少见,没有硬件互锁就是事故隐患。
2. 控制系统总方案:从流程图到状态机
2.1 用状态机思维搭控制框架
理清硬件之后,接下来是整个设计中最核心的一步:如何把洗衣流程转化为PLC能执行的逻辑。我见过最失败的写法是把整个流程串成一条超长的梯形图,进水定时、洗涤定时、排水定时挨个往下排,程序看起来很长,但一旦流程中间出一点意外,比如水位不到位、排水堵了,整个逻辑就乱套了。
正确的做法是用状态机的思路来组织程序。状态机在一句话里说清楚就是:任何时候系统只处于一个状态,满足条件就切换去下一个状态。具体到洗衣机项目,可以划分成这些状态:S0待机、S20进水、S21洗涤正转、S22洗涤暂停、S23洗涤反转、S24排水、S25脱水、S26漂洗进水、S27漂洗正转、S28漂洗暂停、S29漂洗反转、S30漂洗排水脱水、S31结束报警。其中S0是三菱FX系列STL步进指令里规定的初始状态地址,S20以后是通用状态地址,这是在写程序前先画状态转移图时就得定好的。
为什么状态机写法更适合这个项目?因为洗衣流程本质上就是“一个状态干完一件事再切下一个状态”。进水状态只管进水,水位到了就切洗涤;洗涤状态只管正反转和计数,次数够了就切排水。每个状态之间互不干扰,整个程序的逻辑清晰,调试时定位问题也快——卡在哪个状态,就直接看那个状态的转移条件为什么不满足。这比在一大堆串联定时器里找哪一步的时间没到要高效得多。
画状态转移图时,我习惯把每个状态画成一个方块,箭头标上转移条件,旁边注上这个状态下哪些输出动作。这个图画完,程序基本就完成了一半,剩下的是把图翻译成STL指令动作。报告里放这张状态转移图,也是整个设计里最亮眼的部分,比贴几页梯形图更能体现设计思路。
2.2 核心控制逻辑设计:水位、定时、计数与保护
状态框架搭好后,逐个看每个状态的关键逻辑。
进水逻辑:在S20进水状态,输出Y0打开进水电磁阀,水位信号不到就一直进水;高水位开关X2动作后,切断进水输出,转移到S21洗涤。这里有个细节,X2如果是常开触点,高水位到达时X2接通;不同水位开关的常开常闭逻辑不一样,写PLC程序前最好先用万用表确认一下实际动作逻辑,否则会出现“水位到了还在进水”的bug。
洗涤逻辑:洗涤时电机要正转、暂停、反转循环。三菱FX里实现方式很简单,在S21状态用定时器T0设定正转时间(比如15秒),T0计时到转移S22;S22用T1设定暂停时间(比如3秒),计时到转移S23;S23用T2设定反转时间(15秒),计时到转移回S21,同时用计数器C0累计循环次数。流程是:每完成一次“正转→暂停→反转→暂停”,计数器加1;当C0计到设定值(比如3次),就不再跳回S21,而是转移到S24排水。
这个“洗涤次数”参数,我建议不要直接写死在程序里,而是用一个数据寄存器D0来存储设定值。好处是调试时可以直接在监控模式下改D0的值,不用每次改完重新下载程序;如果后续加触摸屏,也可以直接通过屏修改D0,不需要动PLC程序。同样,T0、T1、T2这些定时器的设定值,也建议用D寄存器间接指定而不是直接用K常数,这样后期调整非常方便。
排水和脱水逻辑:S24排水状态打开Y1排水阀。排水完成的判断有两种方式,一种是用低水位开关X3当信号,水位低于低位就认为排空;另一种是直接用定时器T4延时120秒。我的建议是有条件就用水位开关做判断,更真实可靠。如果只能用定时器,要考虑如果排水管路堵塞,定时器到了时间但水没排完,脱水时电机会带水负载启动,容易过载。更稳妥的做法是“水位开关判断为主、定时器超时报警为辅”:正常水位低了正常切换,如果超时水位还没降下来就触发报警停机。这个逻辑加进去之后,整个系统的安全性和工程完整度会明显上一个档次。
脱水安全联锁是全程序里最关键的一条逻辑。脱水状态S25时,输出Y4动作前必须串联X5盖板安全开关的常闭点,也就是只有盖板闭合,X5接通,Y4才能得电;脱水过程中如果开盖,X5断开,Y4立刻掉电,脱水电机停止。这条逻辑必须做到“硬件和软件同时生效”:程序里串X5只是一层软件保护,实际接线时X5对应的门开关还应该串在脱水接触器KM3的线圈回路里,开盖直接切断接触器电源,这才是彻底的安全保障。千万不要觉得程序里有了保护,硬件就可以省。
2.3 两种编程思路的取舍:STL步进指令还是辅助继电器移位
实现状态机的具体编程方式有两种主流选择:三菱FX系列用STL步进指令,或者用普通辅助继电器M配合置位复位指令来模拟状态切换。两种写法各有适用场景。
STL步进指令是三菱专门为顺控程序设计的功能。它把一个状态写在STL S20和下一个STL之间,状态里放这个状态要做的动作和转移条件。程序结构跟状态转移图一一对应,可读性极强,老师看程序时能很直观地看出流程走向,答辩时讲起来也轻松。缺点是指令格式和普通梯形图思路不太一样,新手要稍微适应一下,而且STL的编程区域里一般不允许从其他线圈直接并行输出到非状态区,需要熟悉规则。
辅助继电器M移位法更适合那种“状态数不多、但需要每个状态里同时处理很多独立逻辑”的场景。用M0表示待机、M1表示进水、M2表示洗涤……通过置位SET、复位RST来实现状态切换。这种写法自由度高,不受STL规则限制,但状态多了以后程序会变得很乱,尤其是一个状态忘记复位时,会出现两个状态同时为ON的致命问题。
我的建议是:如果用的是三菱FX系列,优先用STL。原因很实在:这个项目的流程本身就是教科书级的顺控示例,STL写出来结构天然清晰,调试时通过监控S20、S21这些状态地址一眼就能看出当前机器处于什么阶段。如果是西门子S7系列,思路不变,只是把“STL状态”替换为“中间变量M加置位复位”,或者直接用SCL写CASE语句的状态机,逻辑是共通的。判断一个状态机写得好不好有一个很简单的标准:能不能看着状态地址就知道当前机器在干什么。能做到这一条,程序基本就成功了。
3. 实操环节:程序编写、仿真调试与报告整理
3.1 关键程序段怎么写:助记符与梯形图对照
定好状态分配后,就可以在GX Works2里开始写程序。下面用三菱FX3U的助记符格式,把几个最核心的程序段写出来,大家可以对照自己的梯形图检查。注意这只是关键片段示意,不是完整程序,完整工程还需要补充每个状态之间的所有转移和输出。
初始化段,PLC上电时用初始脉冲M8002把S0置为初始状态:
LD M8002 SET S0初始状态S0等待启动指令,X0按下后跳转到进水状态S20:
STL S0 LD X0 SET S20进水状态S20:打开进水阀Y0,等待高水位X2动作:
STL S20 OUT Y0 LD X2 SET S21洗涤状态S21正转15秒,T0计时到后切到暂停状态S22:
STL S21 OUT Y2 OUT T0 K150 LD T0 SET S22上面这四段就是整个程序的最小骨架:每个状态由STL开头,状态内部输出要动作的输出,用LD加载转移条件,条件满足用SET激活下一个状态。暂停、反转、排水、脱水等状态的结构完全一样,只是输出地址和定时器编号不同。程序写完结尾必须有RET和END:
RET END这里有一个新手常犯的错误:一个STL状态内部同时需要两个输出动作时,不能像普通梯形图那样随便并联。例如S25脱水状态既要输出Y4脱水接触器,又要计时T5,这两个输出在STL块内部可以一起写,但要确保都在STL S25和下一个STL之间的区域内。如果状态切换后发现上一个状态的输出没有复位,大概率是输出线圈放在了STL指令外面,导致状态离开后输出还保持接通。我在帮同学检查程序时,这种问题至少遇到过十几次。
3.2 仿真调试流程:先人工验证I/O,再跑全自动
程序写完不急着上真机,先用GX Works2的仿真功能跑一遍,把明显的逻辑错误筛掉。仿真调试我建议按下面这个顺序来,能省大量时间。
第一步,梯形图逻辑测试启动后,用强制ON/OFF功能逐点验证输入对应的输出。比如强制X0为ON,观察状态是否进入S20、Y0是否动作;强制X2为ON,观察是否从S20切到S21。这一步先把每个状态的转移条件是否有一条完整通路跑通。很多人跳过这一步,上来就全自动跑,结果程序卡死在一个状态里,还要从头一点一点查,反而更慢。
第二步,用软元件监视确认定时器和计数器的动作是否符合预期。启动仿真后打开软元件批量监视窗口,同时监控T0、T1、T2、T3和C0,洗涤过程中观察定时器是否按顺序计时、计数器是否按次数增加。在这一步调整时间参数特别方便,比如正转15秒觉得太长,直接把T0的设定值改成K100重新测试,不用改梯形图下载,仿真环境里改参数立竿见影。
第三步,按完整流程跑一遍全自动模拟。从X0启动开始,依次手动强制X2高水位、等待洗涤完成、强制X3排水完成、等待脱水、再次手动强制X2进行漂洗进水,观察整个流程是否闭环。在这个阶段特别注意两件事:一是所有流程结束后,状态能否回到S0,也就是能否二次启动;二是运行中强制X5断开模拟开盖,确认Y4立即掉电,脱水停止。这两条是答辩时老师最可能现场验证的功能。
关于仿真软件的另一个常见问题是:“我装了GX Works2,但虚拟机里PLC连接不上,网络模式该选什么?”如果用的是VMware,PLC仿真或者与实机通信时,虚拟机和电脑之间建议使用桥接模式,这样虚拟机里的编程软件和PLC的IP在同一个局域网段,通信才不会时通时断。如果你只是用电脑上已经装好的GX Works2自带的仿真功能,不涉及虚拟机和实机网口,那就完全不需要考虑网络连接问题,直接离线仿真就行。
3.3 万字报告的结构建议与图表清单
报告是整个课程设计成绩的另一半,很多同学程序功能正常但报告写得像流水账,照样拿不到高分。这里分享一个经过验证的报告结构和图表组织方式。
报告目录建议按六章组织:第一章课题背景与研究意义,说明洗衣机自动控制的发展现状和PLC在其中的应用价值;第二章控制方案总体设计,用总体框图展示“启动指令→PLC→执行部件”的结构;第三章硬件选型与I/O分配,放PLC型号、I/O分配表、外部接线图;第四章软件程序设计,放状态转移图、梯形图关键程序段并逐段注释;第五章系统仿真与调试,记录仿真过程、遇到的典型问题和解决方法;第六章总结与展望,写本设计的创新点和可扩展方向。
图表是整个报告的加分项,至少有四张图是必须的。第一张是系统总体框图,画出PLC在输入输出之间的核心位置;第二张是控制流程图,用简单的方框箭头串起“启动→进水→洗涤→排水→脱水→结束”的流程;第三张是I/O接线原理图,这张图一定要把PLC输出经过中间继电器再驱动接触器的关系画出来;第四张是时序图,把水位、电机正反转、进水阀、排水阀在一段时间内的动作关系画成波形图,这张图最能体现专业度。手里有这些图,报告再怎么排版都不会太空。
还有一个写报告的心得:梯形图不要全贴,选2~3段最能体现设计要点的贴出来,每段下面配300字左右的文字说明,解释这段实现了什么功能、为什么这么写。老师翻报告时最反感的就是几十页全是梯形图没有文字解释,看着像打印的源程序,完全没有设计思考的过程。把“为什么这么设计”写出来,比贴十段梯形图都有用。
4. 常见问题排查与项目扩展方向
4.1 五个高频故障及排查方法
调试这个项目的同学遇到的问题其实高度集中在几类。这里整理一个故障速查表,按出现频率排序,每条都对应我实际调试中看到过的真实情况。
| 故障现象 | 可能原因 | 排查方法 |
|---|---|---|
| 启动后一直进水不停 | 高水位开关常开/常闭逻辑接反;程序里水位转移条件写错 | 用万用表测水位开关动作前后的通断状态,确认后修改程序或接线 |
| 正转能转但反转不动作 | 输出点Y3损坏或接线松动;程序里互锁逻辑写死导致Y3无法置位 | 强制Y3为ON看外接接触器是否吸合;检查程序互锁触点是否常闭接反 |
| 洗涤中正反转切换接触器火花明显 | 软件互锁漏写;切换间隔时间太短 | 检查程序Y2/Y3是否互锁;增大T1暂停时间到3秒以上 |
| 脱水时开盖电机仍在转 | 安全开关X5没串进程序,或接线时没接到PLC输入,或只做了软件保护没做硬件保护 | 程序里脱水输出必须串联X5常闭点;外接线路里把门开关串进接触器线圈回路 |
| 第一次运行正常,第二次按启动没反应 | 结束状态没复位,S0没有重新激活;输出状态未全部复位 | 在结束报警状态里加回S0的转移条件;检查Y0~Y5是否都已复位 |
4.2 提高程序可靠性的几个实操习惯
除了排查具体故障,更值得养成的是几个能从根本上减少问题的编程习惯。
第一个习惯:所有输出都加互锁。Y2正转和Y3反转互锁,这是明摆着的;但Y4脱水输出和Y3反转输出之间也要互锁。因为波轮洗衣机的脱水是通过离合器把电机切换到脱水桶的,如果程序逻辑混乱,出现洗涤反转和脱水同时动作,机械结构会出大问题。程序里凡是有可能同时动作的输出,都要通过常闭触点互相锁住,这是PLC编程的通用安全习惯。
第二个习惯:状态切换用单脉冲触发,不用电平触发。比如S0到S20的转移条件是X0启动按钮,如果用LD X0直接转移,按钮按住不放时X0维持接通,状态机可能连续跳变;正确做法是按下按钮瞬间产生一个上升沿脉冲,只触发一次。三菱里常见做法是用PLS M或者直接使用X0的上升沿触点,这样即使按钮按了很久,也只进入一次下一个状态。
第三个习惯:报警输出不能自锁到天荒地老。洗衣结束蜂鸣器长响不停,会让人觉得系统出了故障。实际上结束报警只需要响一定时间就够了,比如用T10定时10秒,时间到自动关闭Y5,同时返回S0状态等待下一次启动。这个细节看起来小,但直接影响用户对系统可靠性的感受,报告里也可以作为“人性化设计”的一个亮点来写。
4.3 这个项目还能往哪些方向升级
如果把这个项目做完,还有余力想拿更好的成绩,或者是做毕业设计想延伸,有几个很自然的升级方向。
第一个方向是加触摸屏。选一块威纶通或昆仑通态的7寸触摸屏,通过串口或以太网和PLC连接,在屏上做启动、停止按钮,还能实时显示当前运行的阶段(进水、洗涤、排水、脱水)和剩余时间。触摸屏的画面和组态设计本身就是一个加分项,而且答辩时演示起来非常有现场感。程序不需要大改,只是把原来接在X0、X1上的按钮对应的操作搬到屏的按钮上,把D0的洗涤次数、D1~D3的定时参数用屏上的数值输入元件在线修改。做完这一步,系统就从“按钮控制”升级成了“人机界面控制”。
第二个方向是变频驱动。现在很多洗衣机项目会选择用变频器控制洗涤电机,实现软启动和调速。用三菱FX3U的脉冲输出或485通信控制变频器,通过改变频率实现轻柔洗、标准洗、强力洗。这个升级除了涉及PLC的通信指令,还涉及变频器参数设置和电机保护,内容比单纯开关量控制提升了一个档次,适合想挑战更全面知识的同学。
第三个方向是运行监控。用组态王或力控等上位机组态软件,通过以太网与PLC通信,在电脑上实时显示洗衣机的运行状态、水位信号和电机电流等数据。这个方向更偏向工业化和智能化方向,做完后不仅PLC部分有料,上位机部分也为简历上多添一项技能。
写在最后
我个人实际带过的项目中,凡是把这个洗衣机题目认真做完的,后续再看传送带分拣、机械手流程控制这类题目,普遍比没做过顺控项目的人上手快得多。究其原因,是这个题目把PLC项目最重要的一整套思路完整训练了一遍:从设备需求到I/O分配,从状态划分到程序实现,从仿真调试到报告展示,每个环节都练到了。在做的时候有个小建议:状态转移图一定要亲手画一画再写程序,哪怕画得不好看,这个思考过程本身就是最大的收获。
另外多啰嗦一句答辩时的事。老师看过太多人程序能跑但讲不清楚,所以基本都会挑安全相关的点提问,比如“开盖保护你是怎么实现的”“正反转如果同时吸合会怎样”。调试的时候一定要亲手验证这两个动作,真到答辩现场能直接演示、能讲清楚原理的,那才是真的把知识装进脑子里了。这个项目做完别急着把工程文件丢到文件夹深处,以后做毕业设计或者找工作面试时,它就是你动手能力最直接的证明。