S7-200 PLC工业洗衣机控制系统设计与调试详解

发布时间:2026/10/11 9:18:12
S7-200 PLC工业洗衣机控制系统设计与调试详解
上次帮一家洗涤厂改造了一套50kg卧式工业洗衣机的控制系统原来柜子里全是老式继电器加时间继电器故障率实在高三天两头换接触器。后来整个换成PLC方案从IO分配、画接线图到梯形图调试项目做完后收获很大。这篇就把这套“基于S7-200 PLC的工业洗衣机控制系统”完整拆开讲从需求拆解、IO分配、接线图原理图到带解释的梯形图程序再到现场调试里踩过的坑一次说清楚。正在做PLC毕业设计或者准备接类似非标小项目的朋友可以直接参考这套思路。说实话工业洗衣机的控制逻辑并不复杂难的是怎么把顺序、互锁、定时、报警这些需求有条理地落到梯形图上还要保证现场接线不出问题。下面按我实际做项目的顺序来写。1. 项目到底是什么一个工业洗衣机的PLC控制需求1.1 从使用场景里拆出控制需求工业洗衣机不是家用波轮那个逻辑。这种卧式滚筒装料50kg起步洗涤、漂洗、脱水都是大功率电机和大口径电磁阀。它最核心的动作其实是六个进水、加热、洗涤、排水、脱水、停机。控制上要解决的问题是动作顺序怎么定、电机正反转怎么切换、每个阶段持续多久、什么时候进水什么时候排水、门没关能不能启动。我这个项目对应的工艺要求是这样的洗涤方式正转10秒停2秒反转10秒停2秒循环20次。加热要求水温到设定值比如80摄氏度才结束加热没到就一直加热。水位要求分高水位和低水位两档进水到高水位停排水到低水位以下才能进入脱水。安全要求门没关好不能启动任何动作运行中开门必须立即停止高速脱水时排水阀必须保持打开防止桶内积水。停止要求任何阶段按下停止按钮立刻切断所有输出。把需求拆开以后这其实就是典型顺序控制系统。继电器方案也能做但正反转互锁、循环计数、定时器串联这些会让控制柜变成一团乱麻。改用PLC后逻辑是软的改工艺只需要改程序不用动柜子。这也是客户愿意花钱改PLC的根本原因。1.2 为什么选用S7-200而不是其他方案S7-200已经停产很多年新项目更多人会选S7-200 SMART。但这个项目背景是旧设备改造客户柜子里有220V控制回路手里也有库存的CPU226选它完全合理。选S7-200有几个具体理由老设备改造里柜内电源和控制回路都是220V交流选AC供电版本的CPU226可以直接用不用额外加开关电源给PLC供电。STEP 7-Micro/WIN编程软件支持离线仿真梯形图写完可以先验证一遍逻辑。S7-200输入是双向光耦支持源型和漏型两种接法现场接线比三菱FX那种要灵活一些。指令集简单入门门槛低适合作为顺序控制的入门平台。需要提醒的是S7-200和S7-200 SMART的编程软件、程序文件都不通用仿真器也不是同一个。如果手里没有老设备完全新采购我更推荐直接上S7-200 SMART本篇文章的控制思路和绝大多数指令名可以直接移植过去差别很小。1.3 控制系统的总体框架整套系统由三块组成主回路部分断路器、接触器、热继电器、双速电机。工业洗衣机一般用双速电机洗涤时走低速绕组脱水时走高速绕组两个绕组通过接触器切换。控制回路部分PLC、中间继电器、指示灯、蜂鸣器、按钮、选择开关。PLC负责收集按钮和传感器信号输出逻辑结果去控制接触器和电磁阀。传感器部分水位开关、温度开关、门开关。这些开关量是PLC判断工艺阶段的关键依据。2. IO分配与硬件选型动工之前先把这些定死2.1 IO分配表这是整套图纸的“地图”控制柜还没开始接线前第一件事就是做IO分配。IO表定了后面接线图、原理图、梯形图全部跟着它走。我这次分配的IO地址如下。输入信号表地址名称说明I0.0启动按钮 SB1常开触点按下闭合I0.1停止按钮 SB2常闭触点按下断开I0.2手动/自动选择开关 SA1打到I0.2为手动I0.3门开关 SQ1常开触点门关好闭合I0.4高水位开关 SL1常开触点水位到位闭合I0.5低水位开关 SL2常开触点有水时闭合I0.6温度开关 ST1常开触点温度到闭合I0.7手动正转按钮 SB3点动带互锁I1.0手动反转按钮 SB4点动带互锁I1.1手动脱水按钮 SB5点动输出信号表地址名称说明Q0.0进水阀 YV1220V AC电磁阀Q0.1排水阀 YV2220V AC电磁阀Q0.2正转接触器 KM1洗涤低速正转Q0.3反转接触器 KM2洗涤低速反转Q0.4脱水接触器 KM3高速脱水Q0.5加热接触器 KM4控制加热管Q0.6运行指示灯 HL1自动运行指示Q0.7蜂鸣器 HA1流程结束/故障报警这里有个细节Q0.2和Q0.3在程序里必须互锁接触器KM1、KM2的主触点回路也必须硬件互锁。这是电机正反转控制的底线软件互锁和硬件互锁都要有单纯靠程序互锁一旦PLC输出口粘连就麻烦了。2.2 CPU选型和外围元器件CPU我选了CPU226 AC/DC/继电器也就是220V交流供电、24V直流输入、继电器输出。这台CPU有24个输入、16个输出本项目输入10点、输出8点。其实CPU224就够了但考虑到以后可能要加触摸屏或者扩展输入CPU226余量更足价格差距也不大。输出必须选继电器型这一点不用纠结。洗衣机现场控制的都是交流接触器和电磁阀继电器输出触点容量2A/220V可以直接带中间继电器省掉一大堆驱动电路。晶体管输出只能带24V直流负载带交流接触器还得加固态继电器或中间继电器反而增加故障点。外围元器件选型电机双速电机洗涤低速绕组脱水高速绕组。水位开关浮球式液位开关输出干接点。温度开关双金属温度开关到温度闭合带回差。接触器KM1、KM2、KM3选交流接触器KM4选加热接触器线圈电压220V。中间继电器PLC输出到接触器线圈之间加中间继电器便于隔离和更换。2.3 水位和温度信号的处理细节这个项目的温度和湿度信号都是开关量不用模拟量模块。水位用两个浮球开关一个高水位、一个低水位。这里有个容易理解反的地方低水位开关在“有水”时是闭合的排空后才断开。所以判断“水排空”要用低水位开关从闭合变成断开这个变化而不是常开到位。程序里我会用边沿检测来处理它避免排水阀提前关闭。温度控制我用的是双金属温控器本身带回差。如果只靠PLC的开关量判断温度到了就停、降下去就启动很容易在临界点震荡烧坏接触器。双金属温控器相当于在硬件层面做了回差PLC只做联锁和状态切换简单可靠。3. 接线图与原理图解析把IO分配落到端子上3.1 主回路与控制回路的配合主回路是这样安排的三相380V电源进断路器QFQF出来后分成两路。一路给双速电机供电洗涤低速绕组通过KM1和KM2实现正反转脱水高速绕组通过KM3通电。热继电器FR接在电机主回路中过载时它的常闭触点会断开控制回路强迫接触器释放。另一路给加热管EH供电通过KM4控制。控制回路从QF下口取220V给PLC的L/N端子供电同时给接触器线圈和中间继电器线圈供电。PLC的输出点不直接接接触器而是先接中间继电器再由中间继电器的触点去控制接触器线圈。这样做的原因很简单PLC继电器输出触点容量有限直接带接触器线圈吸合瞬间电流冲击大长期用容易拉弧烧蚀。加中间继电器既隔离了负载又降低了更换成本。控制柜里可以把主回路和控制回路分区布置PLC和中间继电器装在控制板上主接触器和断路器单独安装信号线和动力线尽量不要走同一个线槽否则变频器或接触器吸合时产生的干扰很容易串进PLC输入信号。3.2 输入端接线源型、漏型要看明白S7-200输入是双向光耦支持源型或漏型接法这一点比很多PLC灵活。我这次全部接成漏型公共端1M接24V电源正极L每个输入点通过开关触点接到24V负极M。接线示意如下L (24V) ── 1M I0.0 ── 启动按钮常开 ── M (0V) I0.1 ── 停止按钮常闭 ── M I0.3 ── 门开关常开 ── M实际现场最容易出现的问题是输入公共端没接好。S7-200的1M和2M内部并不连通如果输入点数超过一组必须把1M和2M并联接到L否则第二组输入点会乱跳或者完全没反应。用万用表量输入点对1M的电压正常应该在24V左右量到0V说明回路没形成。另外所有输入开关的信号电压直接从CPU本体的24V传感器电源取但如果输入点太多或者线缆太长就要考虑外接一个24V开关电源避免电压跌落导致信号时有时无。我在这个项目里就是外接开关电源单独供给输入回路。3.3 输出端接线公共端和负载容量要注意输出公共端1L、2L分别接220V火线L。Q0.0到Q0.3共用1LQ0.4到Q0.7共用2L两组公共端都要接L不能只接一组。S7-200继电器输出每点2A、每组总电流有限如果负载是380V线圈或者功率稍大的电磁阀务必加中间继电器转换。我这次Q0.0和Q0.1直接带进水阀和排水阀的220V交流线圈问题不大。Q0.2到Q0.5全部接中间继电器线圈再由中间继电器触点去控制接触器。输出接线端子侧的公共端一定要检查清楚火线接错会导致输出点一动作就跳闸。3.4 原理图里必须体现的安全回路除了PLC程序里的逻辑保护控制回路里我还加了一条硬线安全回路。急停按钮常闭触点、热继电器常闭触点、门锁触点串联在接触器线圈的供电回路里。无论PLC程序跑成什么样只要急停按下、电机过载、门打开接触器线圈直接掉电电机就停下来。这条硬线回路不依赖PLC是最后一道保险。我建议所有类似项目都加上不能只依赖PLC程序里的软互锁。4. 梯形图程序详解一个能落地的顺序控制写法4.1 程序总体结构程序分三部分主程序OB1、手动子程序SBR_0、自动子程序SBR_1。主程序里用I0.2选择开关做分支自动模式调用自动子程序手动模式调用手动子程序。千万不要把所有逻辑堆在一个程序里否则改工艺时找网络找到眼花。主程序调用结构网络1 自动模式调用 LD I0.2 CALL SBR_0 网络2 手动模式调用 LDN I0.2 CALL SBR_1手动和自动的互锁也很重要自动运行期间如果切换到手动必须把自动状态全部复位。我在主程序切换分支时加了状态复位逻辑防止两边同时输出。4.2 自动流程状态位置位复位自动流程我用M0.1到M0.6作为状态位M0.1 进水状态M0.2 加热状态M0.3 洗涤状态M0.4 排水状态M0.5 脱水状态M0.6 结束状态状态迁移用置位和复位指令实现。梯形图写出来非常直观而且不会出现多个输出状态同时占用的情况。核心转移逻辑如下启动进入进水自动模式M0.0为1门关I0.3为1按启动I0.0上升沿置位M0.1打开进水阀Q0.0。梯形图网络这样写LD M0.0 // 自动模式 A I0.0 // 启动按钮 A I0.3 // 门已关 AN M0.1 AN M0.2 AN M0.3 AN M0.4 AN M0.5 AN M0.6 EU // 上升沿 S M0.1, 1 // 进入进水状态 S Q0.0, 1 // 打开进水阀进水转加热高水位I0.4闭合复位M0.1和Q0.0置位M0.2打开加热输出Q0.5。LD M0.1 A I0.4 R M0.1, 1 R Q0.0, 1 S M0.2, 1 S Q0.5, 1加热转洗涤温度开关I0.6闭合复位M0.2和Q0.5置位M0.3。如果这台洗衣机不需要加热可以把I0.6用短接线强制闭合或者加一个旁路开关逻辑不变。洗涤结束转排水洗涤循环次数计满置位M0.4打开排水阀Q0.1同时复位M0.3和电机输出。LD M0.7 // 洗涤结束标志 R M0.3, 1 R Q0.2, 1 R Q0.3, 1 S M0.4, 1 S Q0.1, 1排水转脱水低水位开关I0.5从闭合变断开说明水已排空延时10秒让残水尽量流走然后置位M0.5开始脱水。脱水结束脱水定时3分钟到复位M0.5、Q0.4、Q0.1置位M0.6蜂鸣器响5秒后复位M0.6。4.3 洗涤正反转循环怎么实现洗涤阶段的难点在于“正转10秒、停2秒、反转10秒、停2秒、循环20次”的工艺。我建议不用单个定时器硬凑而是用四个子状态位M20.0到M20.3让洗涤状态内部再做一次小顺序控制M20.0正转阶段输出Q0.2T37计时10秒到时间复位M20.0置位M20.1。M20.1停2秒无电机输出T38计时2秒到时间复位M20.1置位M20.2。M20.2反转阶段输出Q0.3T39计时10秒到时间复位M20.2置位M20.3。M20.3停2秒无电机输出T40计时2秒到时间复位M20.3置位M20.0同时计数器C0加1。用状态位的办法每个阶段的定时器都是独立的互不干扰修改时间也非常方便。正转输出网络LD M20.0 AN Q0.3 // 软件互锁防止正反转同时输出 Q0.2 LD M20.0 TON T37, 100 // 100ms定时器100*0.1s10s反转输出网络LD M20.2 AN Q0.2 Q0.3 LD M20.2 TON T39, 100 // 10秒计数器C0在M20.3结束时加1LD M20.3 EU LD C0 CTU C0, 20当C0到20次时置位M0.7洗涤结束标志同时要把M20.0到M20.3全部复位并把C0复位准备下一次洗涤。计时器分辨率这里要特别提醒S7-200的TON定时器有1ms、10ms、100ms三种T37到T63这类是100ms分辨率。我写的T37预设值100代表100乘以0.1秒等于10秒。如果直接写10实际只有1秒这个坑很多人第一次用都会踩。4.4 进水、排水、脱水的条件控制进水阶段进水阀打开后不能一直等到高水位才管万一浮球开关故障水漫出来就麻烦了。我加了一个超时保护进水开始计时10分钟还没到高水位置位M2.0故障报警位关闭进水阀蜂鸣器报警。排水同样排水开始计时15分钟还没排空也要报警。这是程序里非常实用的小细节。脱水阶段排水阀Q0.1必须保持打开防止脱水时桶内积水。程序里在M0.5状态同时置位Q0.4和Q0.1并且在整个脱水过程中如果门开关I0.3断开立刻复位所有输出等待重新关门后手动复位报警。这也是安全要求。热保护和过载方面电机的过载由热继电器FR的常闭触点串在硬线安全回路里处理程序里只需要监控一个输入点做报警提示。不要指望PLC程序去替代热继电器那是硬件该干的事。4.5 手动模式程序手动子程序相对简单主要给维修和调试用。I0.7正转按钮点动控制Q0.2I1.0反转按钮点动控制Q0.3I1.1脱水按钮点动控制Q0.4。手动模式下门未关全部禁止输出。正转和反转两个点动按钮在程序里加互锁同时按下两个按钮时两个输出都不通。手动模式不经过自动状态位不会干扰之后的自动流程。手动模式子程序LD I0.3 // 门关 A I0.7 // 正转按钮 AN I1.0 // 反转按钮互锁 Q0.2 LD I0.3 A I1.0 AN I0.7 Q0.3 LD I0.3 A I1.1 Q0.45. 调试过程中踩过的坑与排查技巧5.1 用模拟器验证逻辑时的限制条件所限我写程序时先用了S7-200模拟器做离线验证。模拟器没有真实IO地址输入状态要通过对内存区强制赋值来模拟输出状态则要监控Q区。用模拟器跑洗涤循环时有个现象定时器运行速度比真实PLC快而且靠上升沿切换的状态在快速模拟时可能漏跳。模拟器适合验证状态转移流程对不对不适合验证现场接线最终必须以实机为准。还有一个经验模拟器验证通过不代表现场没问题因为模拟器里没有真实的接触器吸合延迟、没有液位波动、没有机械惯性。程序里那些停止2秒的时间到了现场可能觉得不够还得根据机械惯性微调。5.2 现场接线导致的“幽灵故障”实际调试中最大的坑是输入公共端和输出公共端接线。CPU226本体自带24V传感器电源但容量有限输入点一多电压就跌导致高水位信号时有时无。我这次把所有输入开关单独用外接24V开关电源供电PLC只处理信号故障率立刻下降。还有个细节S7-200的1M和2M不通用如果输入点多到要分两组必须把两组公共端并联到同一个电源不然第二组输入点会乱跳。第一次遇到时我还以为是PLC坏了排查到半夜才发现是公共端没并线。门开关的接线也容易出问题。门开关是常开触点门关好闭合但机械振动可能让触点抖动程序里我加了10毫秒的延时滤波防止误触发。如果门开关选型不好触点抖动严重程序再怎么写也白搭所以安全信号选质量好一点的行程开关值得。5.3 常见故障诊断速查表把项目调试中遇到的现象、原因和排查方法整理成一张表现场用起来效率很高。故障现象可能原因排查方法进水不停高水位开关没动作进水阀卡住程序状态没转移万用表量I0.4是否有24V强制I0.4看程序是否切换检查进水阀阀芯不加热温度开关没闭合加热接触器坏Q0.5无输出量I0.6输入量Q0.5是否有输出查加热管电阻正反转同时动作程序互锁丢失接触器触点粘连PLC输出口击穿检查梯形图AN指令断电拆触点检查更换PLC输出点排水后不脱水低水位开关没从闭合变断开延时没到门开关断开监控I0.5状态变化查I0.3门信号脱水振动大衣物分布不均脱水前没有均布程序里在脱水前加正反转点动均布检查电机安装减震蜂鸣器一直响超时报警M2.0被置位传感器损坏查报警对应状态位复位故障位逐个检查传感器5.4 一个值得加的功能脱水前均布这个项目调试时我自己加了一个“脱水前均布”功能。洗衣机高速脱水前如果衣物在桶内分布不均匀脱水电机会剧烈振动甚至把设备都带跑。解决方案很便宜在排水结束、正式脱水前让电机低速正转3秒、停1秒、反转3秒重复两三次让衣物稍微摊开。这个功能加在M0.4排水结束和M0.5脱水开始之间逻辑上只是多两个定时器和两个中间继电器的事但效果非常明显。同类的非标设备改到这里客户满意度都会提高不少。5.5 调试步骤建议整个项目调试不要上来就接电机跑。我习惯按四步走第一步空载测试不接电机直接观察PLC输出点对应中间继电器动作是否正常。用万用表量输出端子确认每个Q点都能正常通断。第二步接电机测试先低速正转、反转确认接触器换相正确。再试高速脱水确认KM3不会和KM1、KM2同时吸合。第三步传感器联调用水桶模拟水位用手按压门开关用热风枪吹温度开关确认每个信号都能让PLC状态正确转移。第四步整机空载跑流程不装衣物让完整流程跑一遍记录每个阶段的开始和结束时间微调定时器参数。按这个顺序排查问题出在哪一层一目了然。最怕直接上来就整机运行出了问题都不知道是程序、接线还是传感器哪一边的问题。这套项目做下来我最大的体会是PLC程序写得再好也架不住接线和传感器选型马虎。尤其是水位开关、门开关这类安全相关信号一定要选可靠的元件接线时公共端该并联就并联不要图省事。如果是做毕业设计建议先把IO分配表和状态转移图画出来理清动作流程再写梯形图比直接对着程序片段抄效率高得多。程序里还有不少可以继续扩展的地方比如加触摸屏显示当前工序和剩余时间或者用S7-200自带的通讯口和上位机做Modbus通信把运行状态传到值班室。这些都是后话。如果手里也有类似的洗衣机控制项目希望这篇能给到一些参考。