拓冰建站拓冰建站
首页 / 资讯中心 / 正文

基于S7-200 PLC的自动洗车机控制系统改造

1. 为什么挑S7-200做洗车机控制而不是直接上1200或Smart1.1 先把需求翻译成技术指标不少人在PLC选型上有个惯性思维设备越新、CPU越快越好动不动就把项目往S7-1200或者Smart上推。我接手这套自动洗车控制系统时现场条件完全不是这么回事。客户手里是一台旧款隧道式洗车机控制器已经彻底坏了但电气柜里的接触器、电磁阀、光电传感器、地轨传送带全部还能用说白了就是要我在现有柜体上重新搭一套控制系统把整台设备救活。客户的原始需求只有五条车开到入口地轨上系统自动完成预洗、刷洗、冲洗、风干操作员只需要在控制柜前按启动和停止不用懂编程现场要有急停出意外能瞬间停下来故障要有报警指示最好能分清是水压问题还是机械卡滞以后要能接触摸屏不然每次改时间参数都得叫工程师开电脑。这几条翻译成技术语言就是一套纯数字量顺序控制加十几路定时器的小系统不涉及模拟量闭环、不涉及PID、不涉及以太网远程运维。这时候选S7-200反而成了最优解。很多人一听S7-200就说停产、落后但做设备改造和售后维保的人都清楚市面上存量洗车机、包装机、小型产线里S7-200的保有量非常大而且这套控制逻辑放在S7-200 Smart上几乎可以原样平移状态机思路、定时器段、互锁写法的套路完全一致。文章后面讲到的工艺拆解、排错方法和调试经验换任何品牌的PLC都照样成立。1.2 配置选型CPU224加EM223最终硬件配置如下部件型号/规格选型理由主控制器CPU 224 AC/DC/RLY6ES7 214-1BD23-0XB8自带14DI/10DO220V供电板上带24V传感器电源扩展模块EM 223 16DI/16DO补齐IO规模留出检修和新增功能余量开关电源200W 24V带滤波给传感器、中间继电器单独供电不占用CPU自带电源中间继电器24VDC线圈带指示灯隔离PLC输出与接触器线圈延长触点寿命通信预留COM0口PPI协议接Micro/WIN调试后期可直接接触摸屏我特意选继电器输出的CPU原因很直接洗车机上的执行器绝大多数是交流接触器和电磁阀继电器输出可以直接驱动小型接触器省掉一层转换电路。但代价也要心里有数——继电器触点有机械寿命不适合高频通断。所以凡是频繁动作的回路我不会让PLC直接去高速切换接触器而是先让正转接触器断电、延时100到300毫秒、再闭合反转接触器让换向发生在负载断电的间隙里。后面讲调试时遇到的三个典型问题有三分之一都和这个选型决策直接相关。这里再提醒一个容易被忽略的细节CPU224自带的24V传感器电源输出电流很小大约只能带几百毫安的负载而洗车现场光光电传感器就七八个还要给中间继电器供电全靠板上电源根本扛不住。我的做法是单独配一个200W开关电源给传感器和继电器CPU自带电源只留给PLC本体。后面讲高压泵启动瞬间压降导致CPU重启的问题如果当时没在供电上分层问题会比表面看到的严重得多。2. 硬件设计先把I/O分配表定成铁规矩2.1 传感器与执行器全清单做PLC项目我习惯先把现场所有信号列全再排地址最后才画图纸。漏掉一个点轻则重新钻孔走线重则整个柜子返工。这套洗车机的信号清单大体分成四类。输入侧启动按钮、停止按钮、急停按钮常闭触点、手动/自动切换开关入口光电、预洗工位光电、刷洗工位光电、风干工位光电、出口光电五组位置检测顶刷上限位、顶刷下限位左右侧刷各两组极限位水箱高液位、低液位高压泵压力开关传送带变频器故障、风机热继故障。输出侧传送带变频器启动、顶刷正转下降、顶刷反转回升、左侧刷、右侧刷、高压泵、泡沫泵、蜡水泵、风机进水、泡沫、蜡水三路电磁阀运行指示灯、故障报警灯、蜂鸣器。全部加起来28点DI、22点DO。我把每个点分配完之后还留了十几点的备用量这个余量在调试阶段救了我好几次。比如后来客户临时要求加一个车辆超高检测我直接在备用输入点上加了限高光电半小时就接完线改完程序不用动柜子。2.2 地址分配表与注释具体地址划分要清楚哪些在CPU本体上、哪些在EM 223扩展模块上否则修改程序时容易找错位置。CPU224本身有14个数字量输入和10个数字量输出扩展模块补齐剩余部分。地址功能地址功能I0.0启动按钮Q0.0传送带变频器启动I0.1停止按钮Q0.1顶刷正转下降I0.2急停常闭Q0.2顶刷反转回升I0.3入口光电Q0.3左侧刷启动I0.4预洗工位光电Q0.4右侧刷启动I0.5刷洗工位光电Q0.5高压泵运行I0.6风干工位光电Q0.6泡沫泵运行I0.7出口光电Q0.7蜡水泵运行I1.0顶刷上限位Q1.0风机启动I1.1顶刷下限位Q1.1运行指示灯I1.2左刷退回极限Q1.2故障报警灯I1.3左刷工作极限Q1.3蜂鸣器I1.4右刷退回极限Q1.4进水电磁阀I1.5右刷工作极限Q1.5泡沫电磁阀I1.6EM223水箱低液位Q1.6EM223蜡水电磁阀I1.7EM223水箱高液位Q2.0EM223备用输出I2.0EM223手动/自动切换Q2.1EM223备用输出I2.1EM223高压泵压力开关——I2.2EM223变频器故障——I2.3EM223风机热继故障——这里一定要强调急停的接法急停按钮必须接常闭触点进PLC也就是说PLC上电后I0.2一直为1按下急停时变成0。所有输出网络的梯形图里都要串联一个I0.2的常开触点急停按下的瞬间所有输出被硬件级条件掐断不用等程序扫描周期。有的人图省事接常开触点靠程序里取反万一PLC程序正在停止状态或通讯中断急停就形同虚设了。洗车现场到处是水、泡沫和高压电急停回路必须从物理上保证断线即停机。2.3 接线时最容易踩的坑第一个坑是传感器电源的参考地不一致。前面说了单独配200W开关电源但如果这个电源的负输出端没有和PLC的M端连在一起传感器电平的参考点就会飘表现就是信号时有时无。电气图上M端必须共地且用粗导线连接最好在端子排上做一个专门的接地汇流条。第二个坑是动力线和信号线同槽走线。变频器输出侧是强干扰源如果和光电传感器的屏蔽线绑在同一个线槽里传感器信号会被搅得乱七八糟白天可能没事一到变频器重载时就频繁误触发。正确做法是动力线走独立的金属线槽信号线走另一侧实在避不开就加屏蔽层并做单端接地。第三个坑是电磁阀线圈的反电动势。继电器输出断开瞬间交流或直流线圈都会产生反向尖峰电压不加保护会从输出点往回打坏PLC。每个电磁阀两端要并联RC阻容吸收器直流中间继电器线圈则建议反向并联续流二极管这些是控制柜里的标配动作但总有柜子厂家忘记做。3. 工艺拆解洗车流程怎么变成PLC的状态机3.1 隧道式洗车机的工位划分这台设备是隧道式结构不是龙门往复式。车辆由传送带拖着往前走沿线依次经过预洗区、刷洗区、冲洗区、风干区四个工位。每个工位的动作触发点是沿轨道布置的一组光电传感器所以我把它叫工位联锁而不是单台设备顺序控制——车头进哪个区哪个区的设备开始工作车尾离开哪个区对应的设备延时停止。这种设计天然支持多辆车同时在不同工位作业前提是车辆间距控制好不能让后车在刷洗区追上前车。现场实际使用时我们会在入口处用入口光电有车 预洗工位已空两个条件同时满足才放行下一辆车相当于做了一个简单的间隔控制。整套流程里最难协调的就是顶刷的升降和传送带速度之间的关系传送带速度由变频器固定在一个低速档顶刷下降的时机要靠刷洗工位光电的触发信号加一个固定延时来估算这个延时值必须在现场根据实际传送速度反复标定。3.2 用M位搭状态机的完整思路S7-200编程最经典的做法是用中间继电器M位表示当前处于哪一步每一步的执行动作单独写一个输出网络步与步之间的过渡用置位和复位指令完成。这套系统我分了七个主状态状态位含义进入条件M0.0待机上电初始化SM0.1置位或流程正常结束M0.1进车待机时I0.3入口检测到车M0.2预洗车到预洗工位I0.4M0.3刷洗车到刷洗工位I0.5M0.4冲洗刷洗时间T38到时M0.5风干车到风干工位I0.6M0.6出车出口光电I0.7有车且T41延时到状态跳转的STL写法大概是这样的Step 7-Micro/WIN里可以直接切到STL视图看等价逻辑// 第一步待机M0.0入口有车且无急停无故障跳进车状态M0.1 LD M0.0 A I0.3 AN I0.2 AN M10.0 S M0.1, 1 R M0.0, 1 // 进车状态传送带启动 LD M0.1 A I0.2 AN M10.0 Q0.0 // 车到预洗工位进入预洗状态 LD M0.1 A I0.4 S M0.2, 1 R M0.1, 1我之所以反复强调这种步进式写法是因为它排错极其直观。调试时用Micro/WIN的状态表直接监控M0.0到M0.6一眼就能看到流程卡在哪一步比翻几百行梯形图找问题快得多。每个状态位只在属于自己的网络段里被操作别人想改也不会误伤其他逻辑。这属于PLC编程里最基础也最实用的状态机玩法毕业设计做PLC课题的同学把这个套路用明白整个程序的结构就立住了。3.3 定时器选型与时间参数设定S7-200的定时器按分辨率分成1ms、10ms、100ms三档。洗车工艺的时间单位都是秒级我统一用100ms分辨率的T37到T63这一片。比如预洗时间8秒预置值就是80刷洗时间15秒预置值150冲洗时间6秒预置值60。定时器启动条件直接取对应的状态位// 预洗计时进入预洗状态后开始计时 LD M0.2 TON T37, 80这里有一个实操细节值得写进笔记S7-200定时器当前值和预置值都是16位整数100ms档最大预置值32767也就是3276.7秒洗车流程根本用不满。但如果时间参数经常需要调整建议把预置值放到V区存储比如VD100存预洗时间、VD104存刷洗时间程序里写成TON T37, VD100。后面接触摸屏时操作员就能直接在屏幕上改时间参数完全不用每次重新下载程序。这个参数外置的思路在小设备改造里非常实用改起来也安全得多。4. 核心逻辑互锁、报警、手动三件套4.1 传送带与刷体联动保护洗车机最怕的事就是刷子还没抬起来传送带就带着车冲进去了轻则蹭车漆重则直接顶坏车顶。所以传送带启动条件我做了三重检查第一必须处于进车状态且无急停无故障第二顶刷必须在上限位I1.0有信号第三左右侧刷必须处于退回极限位置。任何一条不满足传送带都禁止启动。这个互锁写在Q0.0的输出网络里// 传送带启动状态位允许 顶刷在上限 两侧刷在退回位 无急停 无故障 LD M0.1 A I1.0 A I1.2 A I1.4 A I0.2 AN M10.0 Q0.0顶刷下降同样要有保护只有刷洗状态M0.3导通、急停未触发、顶刷上限位信号允许下降才给Q0.1输出。此外顶刷电机的正反转在程序和硬件上必须双重互锁。程序里Q0.1和Q0.2的输出网络互相串入对方的常闭触点硬件上正转接触器的辅助常闭点串到反转接触器线圈回路。这样即使程序被误改或PLC输出点烧坏短路接触器层面也不会出现正反同时导通把电机烧掉的极端故障。4.2 报警体系区分故障类型而不是只亮一个灯报警设计的原则是宁多一条报警回路也不要一个故障灯让操作员猜。我用了四个故障位来分类报警位故障内容系统动作M10.0急停触发全部输出切断报警灯常亮M10.1顶刷超时未到位立即报警顶刷自动回升M10.2水箱低液位禁止高压泵启动声光报警M10.3变频器或风机故障传送带急停声光报警各报警位通过或逻辑汇总到Q1.2报警灯和Q1.3蜂鸣器操作员看指示灯大方向能定位具体故障文字由后面加装的触摸屏显示。顶刷超时保护值得单独讲一下顶刷下降指令发出后程序里同时启动一个3秒延时如果3秒内下限位I1.1没有导通就判定机械机构卡滞立刻报警并把顶刷反向拉回上限位。这台设备以前就出过限位支架被水垢卡住、刷子压到车顶行李架的险情机械限位在潮湿环境里漂移是迟早的事软件超时兜底非常重要。4.3 手动/自动切换的实现手自动切换我用选择开关接入I2.0。自动模式下走状态机手动模式下屏蔽所有自动状态跳转各电机和电磁阀由控制柜面板上的点动按钮直接控制方便检修和应急处理。手动模式我保留了三条铁律所有手动输出网络同样串联急停I0.2和故障位M10.0的常闭条件急停优先权高于一切正反转互锁照样生效手动也不能让正反接触器同时导通手动模式下传送带必须在检修确认标志位置1后才能启动避免检修人员还在车道上就误开车带跑。手动模式只是逐步操作不是绕过保护这六个字是做设备检修界面的底线。5. 现场调试三个典型问题和一个险情5.1 光电传感器被水雾干扰调试第一周就遇到一个怪现象预洗工位检测到车后流程正常往下走但车明明已经过了预洗区I0.4却一直保持有信号整个工序卡在预洗状态不跳转。用状态表监控看到I0.4常开不释放我当时就怀疑是水雾。蹲在现场观察了几分钟果然高压水打在车体上反弹的细小水珠落在漫反射光电传感器的镜头上水滴的反射率完全足够让传感器误判一直有车。解决方案分三步把靠近喷淋区的两组传感器从漫反射类型全部换成对射式发射端和接收端分两侧安装水雾对光路的衰减影响远小于反射式误触发把传感器安装高度抬到离地50厘米以上避开喷头的直接射流角度再在传感器上方加一个防溅挡板。改完连续跑了三天没再误触发过。选光电传感器时千万别只图便宜买漫反射型洗车现场这种大量水雾的环境对射式才是常态选择。5.2 高压泵启动瞬间电压跌落导致CPU重启这个问题的现象非常有迷惑性高压水泵一启动触摸屏黑屏CPU的模块故障灯偶尔闪一下严重时PLC直接重启。第一次排查我以为是开关电源容量不够换了个300W的还是一样。后来用示波器看24V母线在泵启动瞬间的波形发现电压跌到18V以下持续了将近200毫秒。根因是接触器控制回路和PLC供电共用了一条进线高压泵接触器吸合瞬间的电流冲击加线圈断开时的反电动势把整个24V母线都拉垮了。最终改法是做三层供电隔离动力主回路水泵、风机、传送带用独立进线经总断路器直接给接触器供电24V控制回路分两组开关电源一组专供PLC和传感器另一组供中间继电器线圈所有接触器线圈两端并联RC阻容吸收器压制断开的反电动势。这么改完高压泵启动瞬间PLC侧的电压波形基本平稳问题彻底消失。后来我做任何柜子都坚持动力与控制分层供电这条经验比换多大的电源都管用。5.3 顶刷限位机械错位引发的事故险情这台设备最初是别的公司装的顶刷限位支架在长期水汽环境下锈蚀松动限位开关的实际行程比设计位置矮了将近两厘米。一位客户开SUV来洗车顶刷下降后硬生生压在车顶行李架上虽然有下限位信号但机械位置早就偏了幸好传送带速度慢才没有造成明显的漆面划伤。事故之后我在程序里补了两道措施。第一道是前面提过的下降超时保护3秒内没有下限位信号立即报警回升第二道是增加顶刷下降次数累计每天到达设定次数就提醒维保人员检查限位支架。机械限位开关在潮湿环境里位置漂移是大概率事件程序兜底不能省这也是我一直跟调试伙伴强调的硬件可以坏逻辑不能亡。5.4 风机停机时机把握不好导致车顶水痕这算半个问题但很有代表性。刚开始我把风干延时设成车到出口后5秒结果连续几辆车开出去客户都说车顶有水痕。原因是出口附近还有一小段车尾没被吹到。后来把延时逻辑改成出口光电I0.7从有车变成无车也就是车尾完全通过出口后再延时8秒停止风机效果立刻改善。梯形图里做下降沿信号要稍微绕一下用两个中间继电器一个存实时状态一个存上一拍状态两者相与输出上升沿或者相非再相与输出下降沿就能获得边沿信号。这个技巧在很多传感器触发场景都能复用比如计算车辆长度、统计车辆通过数量、判断堵车卡位靠的都是这类边沿捕捉。6. 可复用的升级方向触摸屏和Modbus通信6.1 触摸屏直接走PPI协议S7-200的两个串口支持PPI协议市面上绝大多数国产触摸屏都内置PPI驱动。我后期用威纶通MT系列做了升级通信线用双绞屏蔽线接COM0口的3脚和8脚组态时设备选Siemens S7-200 PPI波特率要和PLC端设置一致常见配置是19200bps。触摸屏我做了三页画面流程监控页用图形显示当前状态位的进度条操作员一眼能看到车洗到哪一步故障报警页用宏读取M10.0到M10.3对应的报警文字点一下就能定位到具体故障参数设置页直接读写V区的定时器预置值预洗、刷洗、风干的时间都能在屏上改。从此客户改参数再也不用打电话叫工程师开电脑下载程序运营效率提升很明显。6.2 Modbus RTU让洗车机数据进监控系统如果客户想把洗车机运行数据上传到上位机或者企业监控系统S7-200可以通过自由口模式做Modbus RTU从站。做法是在Micro/WIN里调用库指令MBUS_CTRL和MBUS_MSG把COM口协议从PPI切换成Modbus再用地址映射表把要上传的数据定义好Modbus地址对应PLC数据用途0x0001Q0.0传送带运行状态0x1001I0.2急停状态0x40001VW100预洗时间参数0x40002VW104刷洗时间参数上位机只需要周期读这几个寄存器就能拿到整台设备的运行状态和关键参数不需要碰西门子的私有协议。MBUS_CTRL要放在SM0.0的每个扫描周期里调用参数包括波特率、校验位和超时时间MBUS_MSG则按需要读写数据并带一个完成位做握手。这里有个必须提醒的坑COM口一旦切成Modbus模式Micro/WIN就不能在这个口上在线监控了调试很不方便。最稳妥的做法是COM0留给触摸屏使用PPICOM1切成Modbus给上位机两个口分工明确互不干扰。我个人在整套项目里的体会是升级触摸屏的收益远大于换新款PLC。客户对CPU型号其实无感最直观的感受是操作员能不能在屏幕上看到流程走到哪一步处理故障时是看报警文字还是对着指示灯猜。S7-200虽然是老平台但把工艺逻辑、互锁保护、通信组态这几层做扎实这套洗车机稳定跑五年八年没有任何问题。如果你手里正好有一台老旧洗车机要改造或者毕业设计想选一个有完整工艺链条的PLC课题这套方案可以直接抄作业把I/O分配表、状态机跳转和互锁逻辑这三样抓准系统就能稳稳转起来。
分享:

看完干货,该让你的企业上线了

免费需求沟通 · 48 小时内出具建站方案 · 河南本地可上门