ARTICLE DETAIL

资讯详情

深耕网站建设、视觉设计与SEO优化的一线实战洞察。

PLC全自动洗衣机控制系统设计:从梯形图到状态机的完整实战解析

PLC全自动洗衣机控制系统设计:从梯形图到状态机的完整实战解析 做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计时到转移S22S22用T1设定暂停时间比如3秒计时到转移S23S23用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按下后跳转到进水状态S20STL S0 LD X0 SET S20进水状态S20打开进水阀Y0等待高水位X2动作STL S20 OUT Y0 LD X2 SET S21洗涤状态S21正转15秒T0计时到后切到暂停状态S22STL S21 OUT Y2 OUT T0 K150 LD T0 SET S22上面这四段就是整个程序的最小骨架每个状态由STL开头状态内部输出要动作的输出用LD加载转移条件条件满足用SET激活下一个状态。暂停、反转、排水、脱水等状态的结构完全一样只是输出地址和定时器编号不同。程序写完结尾必须有RET和ENDRET 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连接不上网络模式该选什么”如果用的是VMwarePLC仿真或者与实机通信时虚拟机和电脑之间建议使用桥接模式这样虚拟机里的编程软件和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分配从状态划分到程序实现从仿真调试到报告展示每个环节都练到了。在做的时候有个小建议状态转移图一定要亲手画一画再写程序哪怕画得不好看这个思考过程本身就是最大的收获。另外多啰嗦一句答辩时的事。老师看过太多人程序能跑但讲不清楚所以基本都会挑安全相关的点提问比如“开盖保护你是怎么实现的”“正反转如果同时吸合会怎样”。调试的时候一定要亲手验证这两个动作真到答辩现场能直接演示、能讲清楚原理的那才是真的把知识装进脑子里了。这个项目做完别急着把工程文件丢到文件夹深处以后做毕业设计或者找工作面试时它就是你动手能力最直接的证明。
返回列表