车间的电控柜里,那台巴掌大小的可编程控制器运行指示灯一亮,传送带开始缓缓移动,滚刷在车顶上方来回摆动,高压水泵把水雾均匀地打在车身上——这台由我自己开发、调试的自动洗车系统,已经稳定运行了大半年。它是基于 S7-200 控制的自动洗车全套设备,服务的是一家社区洗车门店。店主最初找到我时,就提了一个要求:车开进去,人最好能撒手不管,洗完再开出来。
这个需求听着简单,但要实现得可靠、经济、好维护,摆在面前的选择其实不少。最后这套系统用一台 S7-200 可编程控制器作为核心,把车辆检测、喷淋预湿、泡沫洗涤、滚刷清洗、高压冲洗、风干吹水全部串成一条全自动流水线。写下这篇开发记录,算是对那段天天泡在电控柜和编程软件之间的日子做个总结,也希望能给打算做类似小型自动化改造的朋友一点参考。
1. 项目背景与整体设计思路
1.1 需求分析:一台能自己干活的洗车机
先说说项目从哪来的。某社区旁的洗车店,店面不大,平时生意靠老客户撑着,冬天和雨天排队现象严重。店主一个人忙不过来,后来雇了两个伙计,但洗车这活儿劳动强度大、人还不好招。他找上我的时候,想法很直接:能不能做一套设备,车开进去自动洗,人只需要收钱和指挥车辆进出。
我把需求捋了一遍,总结出这么几条:
- 洗车流程要完整:预湿、泡沫、刷洗、高压冲洗、吹干,缺一不可。
- 要能识别车辆位置,避免滚刷或高压水枪撞上车。
- 操作要简单,店内伙计培训十分钟就要能上手。
- 成本要控制在可接受范围内,毕竟是小店面,不是大型洗车连锁。
- 运行要稳定,故障要好排查,不能三天两头趴窝。
这些要求归结到控制层面,核心就是一件事:按顺序、在正确的时间点、控制正确的执行机构动作。这不就是典型的顺序控制逻辑嘛。所以从一开始,我就确定用可编程控制器来实现,而不是用继电器搭逻辑。
1.2 方案选型:从继电器控制到 PLC 切换的取舍
可能有人会问,洗车这种设备,用继电器和接触器搭一套逻辑行不行?说实话,老式洗车机很多还真是这么干的。用中间继电器加时间继电器,也能实现顺序启动,但问题很明显:
- 接线复杂,继电器一多,电柜里全是线,排故要命。
- 时间继电器调节不方便,改一个时间参数得拧旋钮。
- 逻辑一旦焊死,后期加功能基本等于重新做。
- 故障率高,触点氧化、线圈烧毁是常态。
相比之下,用 S7-200 这类可编程控制器就舒服得多。逻辑用梯形图写,想改流程改程序就行;时序用定时器,数值在软件里随便调;设备状态有指示灯,故障还能看诊断信息。更关键的是,S7-200 在这个级别的控制需求里属于很成熟的方案,配套资料多、备件便宜、上手门槛低,对一个小型自动化项目来说性价比很高。
1.3 洗车流程拆解与控制时序
拿到需求以后,我先没急着画电路图,而是把洗车的完整流程用文字先写了一遍。这一步特别重要,流程定义清楚了,后面的 I/O 分配和程序设计才有依据。
这套系统的基本流程如下:
- 车辆驶入洗车通道,光电传感器检测到车头到位,传送带停止,车辆定位。
- 喷淋系统启动,高压水枪对车身进行预湿,持续若干秒。
- 泡沫泵启动,将洗车液喷洒到车身。
- 滚刷电机启动,顶部滚刷和侧边滚刷对车身进行刷洗。
- 刷洗完成后,高压水泵再次启动,冲洗掉泡沫。
- 风干风机启动,吹去车身表面的大部分水珠。
- 传送带启动,车辆驶出洗车区域,系统复位,等待下一辆车。
整个流程里有一个关键细节:滚刷和车辆之间不能硬接触。所以我在刷洗阶段设计了滚刷的进退控制,靠限位开关判断滚刷与车身的距离,到位后停止前进,刷洗结束后再退回原位。这一块如果控制不好,轻则洗不干净,重则刮伤车漆,必须做细。
2. 硬件选型、接线与安全设计
2.1 PLC 主机与扩展模块的选择
主角自然是 S7-200 可编程控制器。我选的是 CPU224XP 这一档,24 路数字量输入、16 路数字量输出,自带两个模拟量输入和一个模拟量输出。这个配置对小型洗车设备来说绰绰有余,甚至还有一点余量方便后期扩展。
这里解释一下选型思路。S7-200 系列里也有更小的 CPU221,但那个输入输出点数太少,洗车设备传感器加执行器加起来差不多要三十几个点,选小了后面肯定后悔。CPU224XP 的点位数量和通讯能力都比较均衡,既不需要额外加扩展模块,又保留了模拟量通道,万一后期要接变频器调传送带速度,直接用模拟量输出就能搞定。
至于为什么不用更大规模的系统,比如 S7-300 或者后来主流的 S7-1200 系列?对这个项目而言没必要。设备规模就这么大, I/O 点数固定,控制逻辑也不复杂,用中小型控制器就行。而且 S7-200 的市场保有量大,二手配件、教程、编程软件都好找,店主日后找人维护也方便。
2.2 传感器与执行器的选型思路
控制逻辑要落地,离不开传感器和执行器。这一块我列个清单,给大家参考:
传感器部分:
- 车辆检测用对射式光电传感器,装在洗车通道入口和出口两侧。对射式检测距离远、抗干扰能力强,比漫反射式稳定。
- 滚刷位置检测用接近开关,检测滚刷支架是否到位。
- 水位检测用浮球液位开关,分别装在清水箱和泡沫液箱里,低液位时系统报警并停止对应泵。
- 紧急停止按钮用的是常闭触点急停开关,串在控制回路里。
执行器部分:
- 高压水泵:三相异步电机,功率 5.5kW,通过接触器控制启停。
- 泡沫泵:小功率电机,2.2kW。
- 滚刷电机:两个,顶部一个、侧面一个,各 1.5kW,通过接触器控制正反转。
- 传送带电机:三相异步电机,4kW,带减速机。
- 风干风机:2.2kW。
- 喷淋电磁阀:若干个,控制水路通断。
选型时有一个容易忽略的点:电机的启动冲击电流。多台电机同时启动,对供电回路和 PLC 输出触点都是考验。所以我设计时做了错峰启动,所有执行机构按顺序逐个启动,避免同时冲击。这样既保护设备,也保护 PLC 的输出继电器。
2.3 接线要领与电气安全防护
电气接线是整个项目里最考验耐心的一环。S7-200 的数字量输入采用漏型接法,传感器用 NPN 型输出接到输入端,公共端接 24V 正极。这个细节很多人第一次搞会接反,结果信号死活读不到。
我的接线原则可以总结为三条:
- 强电弱电分槽走线:电机动力线和信号线必须分开走线槽,间距保持 20 厘米以上,避免动力线干扰传感器信号。这个我是在调试阶段吃过亏之后才彻底执行的,后面故障排查那一节会细讲。
- PLC 电源独立:控制电源用一个单独的小型开关电源,不跟接触器线圈共用一路。接触器吸合瞬间电流波动很大,共用电源容易导致 PLC 意外复位。
- 所有输出接中间继电器过渡:PLC 的输出点不直接驱动接触器线圈,而是先驱动中间继电器,再由中间继电器控制接触器。这样做的好处是,即使接触器线圈短路烧毁,也不会烧到 PLC 的晶体管输出。
安全防护方面,除了急停按钮,我还在每个电机回路里加了热继电器做过载保护。程序里做了紧急停止逻辑,一旦急停被按下,所有输出全部切断,传送带和滚刷立即停止,防止发生人身或设备事故。
电气柜的排布我也花了不少心思。PLC 装在电柜上层,方便观察指示灯;接线端子排分区域整理,动力端子区、信号端子区、控制端子区分开,每个端子都贴了编号标签。前期这些整理工作看似琐碎,后期排故的时候才知道有多省时间。
3. 程序设计:用梯形图语言把洗车逻辑写明白
3.1 开发环境与程序整体框架
S7-200 用的是专用编程软件,梯形图语言编写程序。这个软件界面不复杂,但有几个地方要适应,比如变量表要先定义好,程序结构用主程序、子程序、中断程序分层组织。
我设计的程序框架分四层:
- 主程序:负责初始化调用、模式判断、报警处理。
- 手动控制子程序:每个执行机构都能单独启停,用于调试和维护。
- 自动控制子程序:核心洗车流程的顺序控制逻辑。
- 报警处理子程序:液位低、过载、急停等故障的检测和提示。
这样分层的核心好处是调试方便。刚开始联调的时候,我先用手动模式逐个测试每个电机的转向和动作,确认无误后,再切换自动模式跑流程。如果一开始就全写在主程序里,逻辑混乱,出问题都不知道从哪查起。
3.2 核心模块:滚刷、水泵、传送带的联动控制
程序里最核心的部分,是自动控制子程序中的顺序逻辑。S7-200 有很多定时器,我用的是延时导通定时器,原理上就是等计时时间到了才把输出置位。整个洗车流程就是靠这些定时器串联起来的。
举个例子,喷淋预湿这一步的逻辑大致如下:
检测到车辆到位信号 -> 启动喷淋电磁阀 -> 同时启动预湿定时器 预湿定时器计时到 -> 关闭喷淋电磁阀 -> 启动泡沫泵 -> 启动泡沫定时器 泡沫定时器计时到 -> 关闭泡沫泵 -> 启动滚刷电机 -> 启动刷洗定时器这里有一个编程时必须注意的点:定时器的编号不能重复使用。S7-200 的定时器数量是有限的,如果多个地方用了同一个编号,程序运行时会出逻辑混乱,有的定时器根本不会启动。我当时就给每个步骤分配了专用的定时器编号,并在程序注释里写清楚,方便后期修改。
滚刷的联动控制比水泵稍微复杂一点,因为它涉及正反转和到位检测。刷洗开始时,滚刷电机正转带动滚刷旋转,同时滚刷支架向车身方向移动;接近开关检测到滚刷支架到位后,支架停止前进,滚刷保持旋转刷洗;刷洗时间到了,滚刷电机停止,支架反向退回原位,到位后停止。这个联动逻辑我在程序里用状态位来实现,每完成一步就置位一个标志位,作为下一步的启动条件,等于是用软件搭了一个步进顺序控制器。
有一件我特别强调的事:传送带和滚刷绝对不能同时动作。如果车还在传送带上移动时滚刷压下来,轻则刷坏车辆,重则把车带跑,非常危险。我在程序里特意加了互锁逻辑,传送带运行时强制切断滚刷前进动作,滚刷工作时传送带启动信号被屏蔽。这个互锁是硬需求,宁可牺牲一点流程效率,也不能省。
3.3 手动/自动模式与状态切换设计
模式切换是这类设备必须具备的功能。我在电柜面板上装了一个旋钮开关,打在手动位置时,操作员可以通过按钮逐个控制传送带、水泵、滚刷等设备;打在自动位置时,系统按预设流程运行。
手动模式看起来简单,其实程序设计上有个隐患:如果在手动模式下误操作,比如滚刷没退回原位就启动传送带,就可能损坏设备。所以我在手动控制子程序里也加了一些限制,比如传送带只能在没有洗车任务时启动,滚刷只能在车辆到位信号有效时才能压在车身上。
自动模式和手动模式之间的切换,我也做了处理。从自动切回手动时,所有输出复位,所有定时器清零,防止带状态切换导致误动作。从手动切到自动时,系统从头开始执行洗车流程,不会接着之前的中间状态往下跑。
这个状态切换设计,我在调试时反复测了很多遍。测试方法是模拟各种状态下拨动旋钮,观察每个输出的状态变化。中间还真发现了一个问题:有时候切换模式后某个电机还保持运转,原因是程序里这个输出被多个地方控制,切换时没有统一复位。后来我在主程序的模式切换段加了全输出复位指令,这个问题就解决了。
4. 现场调试、工艺参数整定与试运行
4.1 上电前的硬件检查
程序写完了,接线也完成了,接下来是最让人提心吊胆的调试阶段。我给自己定了一个规矩:程序下载之前,先把硬件彻底检查一遍。
检查顺序是这样的:
第一步,用万用表测量电源电压。确认 220V 控制电源和 24V 开关电源输出电压都在正常范围内,重点是确认 PLC 的电源端子极性没有接反。
第二步,检查所有输入端信号。短接或触发每个传感器和开关,观察 PLC 输入指示灯是否点亮。这一步能提前发现接线错误。有个很容易犯的错误是传感器公共端的接法不对,导致所有输入信号反相,调试时发现了就得赶紧返工。
第三步,检查输出回路。断开所有电机主回路的断路器,手动强制输出点,确认每个输出点对应的中间继电器动作正常、接触器吸合释放正常。确认无误后再合上主回路的断路器,进行电机单动测试。
第四步,确认急停回路。按下急停按钮,确认 PLC 的输入信号变化,所有输出强制切断。急停功能是安全底线,必须最先验证。
做完这四步,才允许把程序下载到 PLC 里进行联调。
4.2 I/O 联调与信号核对
程序下载完成后,第一步不是跑自动模式,而是先核对 I/O 映射。我在程序里把所有输入点和输出点都映射到内部位存储器,调试时通过监控表观察每个位的变化。
具体操作是:打开监控表,把传感器逐个触碰,观察对应的输入位是否置位;把电机按钮一个个按下,观察输出位是否导通,同时听接触器的吸合声。这个过程虽然机械,但能揪出很多问题。
让我印象最深的一个问题发生在滚刷的接近开关上。我用的是 NPN 型接近开关,接线时把信号线接到了 PLC 输入端子,传感器电源接的是 24V。但是现场安装时发现,有两个接近开关的检测距离不够,滚刷支架到位了开关还没动作。后来我调整了接近开关的安装高度和检测面朝向,检距从 4 毫米调整到 8 毫米,问题解决。
这个阶段的经验是:传感器的安装位置和灵敏度调整,直接影响整个流程能否走通。装传感器的时候,一定要留出调整余地,别把位置卡得太死。
4.3 关键工艺参数的反复整定
整个系统能不能洗得干净、效率够不够高,很大程度取决于时间参数和动作参数的整定。这个环节没有捷径,只能一遍一遍实车测试,根据洗车效果微调数据。
以预湿时间为例。最初我设定喷淋预湿 10 秒,实际测试发现,大夏天车身灰尘很厚,10 秒根本不够,高压水枪还没把车身完全打湿就进入泡沫环节,泡沫附着效果很差。后来我调到 20 秒,洗车效果明显改善,但用水量也上去了。最终在保证清洗效果的前提下,我把预湿时间定在 15 秒,泡沫喷洒时间 12 秒,刷洗时间 30 秒,高压冲洗时间 20 秒,风干时间 15 秒。整套流程跑下来大约 80 多秒,加上车辆进出时间,一台车从驶入到驶出全程差不多 3 分钟,每小时能洗 15 台左右,这个效率店主很满意。
调试中我还发现一个细节:滚刷的来回摆动速度不能太快,太快了刷毛来不及贴合车身,缝隙里的泥沙刷不掉;太慢了又影响效率。这个速度是通过控制滚刷支架电机的正反转切换频率来实现的,我最终把支架的单向行程控制在 0.5 米,往复周期 20 秒,刷洗效果最理想。
还有水温的影响。冬天气温低,泡沫液发泡效果不好。我在程序里加了一个温度补偿逻辑的简单版本:室外温度传感器接模拟量输入通道,温度低于 5 摄氏度时自动延长泡沫喷洒时间 5 秒。虽然很简单,但这个细节让设备在冬天也能维持不错的清洗效果。
5. 常见问题、故障排查方法与经验教训
5.1 故障速查表
设备交付使用之后,真正考验人的是能不能快速处理故障。运行半年多来,我积累了一份故障排查速查表,整理出来供大家参考:
| 故障现象 | 可能原因 | 排查方法 |
|---|---|---|
| 整个设备不动作 | PLC 未处于运行状态;急停按钮被按下;电源空气开关跳闸 | 看 PLC 运行指示灯;检查急停开关状态;检查控制电源 |
| 某个电机不启动 | 接触器未吸合;热继电器动作;电机接线松动;PLC 输出点烧毁 | 检查接触器线圈两端电压;看热继电器状态;用万用表测电机端子;监控 PLC 输出标志位 |
| 传感器无信号 | 传感器供电异常;检测距离不够;输出信号线接触不良 | 用万用表测传感器电源电压;确认物体在检测范围内;检查端子是否压紧 |
| 滚刷动作异常 | 接近开关松动或移位;限位开关损坏;程序互锁生效 | 重新调整接近开关位置;测试限位信号;查看监控表互锁位 |
| 水泵启停频繁 | 水位浮球开关卡滞;液位波动裹入气泡 | 清理浮球;检查水箱内水流是否过猛;调整报警延时 |
| 传输带跑偏 | 传送带张紧度不够;两侧同步偏差 | 调整张紧轮;检查皮带轮是否磨损 |
| 洗车过程中途停止 | 某个传感器信号瞬时丢失;定时器参数被误改 | 检查监控表运行状态;核对每个步骤的完成标志位 |
这张表后来被店主贴在电柜门上,很多时候电话远程指导他们就能自己处理。PLC 设备的一个好处,就是大部分故障都能通过观察输入输出指示灯和监控信息来定位。
5.2 三个让我印象最深的故障案例
第一个案例是关于继电器触点的。设备运行了大概两个月后,店主打电话说滚刷停不下来,会自动在刷洗时间到了以后继续工作几秒才停。我到现场一查,发现控制滚刷接触器的中间继电器触点有轻微粘连现象。原因是这个继电器频繁通断,触点表面出现了拉弧烧蚀。解决办法很简单,换了一个更大触点容量的继电器。但这件事让我意识到,频繁动作的执行机构输出,继电器的选型不能按照额定电流来,要留足余量,甚至该上固态继电器的就上固态继电器。
第二个案例是信号干扰问题。传送带偶尔莫名其妙地停一下,但又没有规律。排查了很久,最后发现是传送带电机附近的动力电缆和光电传感器信号线在同一个线槽里,电机启动瞬间的电磁干扰让传感器信号误触发。我把信号线重新走了一遍,跟动力线彻底分开,问题就消失了。这个案例让我彻底相信了强弱电分离的原则,不是理论上的教条,而是实打实的教训。
第三个案例是液位传感器失灵。泡沫泵在药水箱液位偏低时不会自动停,导致泡沫泵空转了一段时间。检查发现浮球液位开关的浮球被粘稠的洗车液卡住了,浮球浮不起来,信号一直是正常状态。这个问题的解决方案有两层:一是定期清理由洗车液残渣导致的卡滞;二是在程序里加了一个辅助判断,泡沫泵运转超过设定时间液位还不变,就判定为异常并停机报警。虽然不能完全避免浮球卡滞,但至少不会空转烧泵。
这三个案例共同说明了一个道理:自动洗车系统毕竟是水、电、机械混合的现场环境,再完美的程序也防不住硬件环节的意外,故障排查时要带着整体思维去看,不能只盯着程序看。
5.3 日常维护与可扩展方向
设备稳定运行不能只靠出事了再修,日常维护才是省心的关键。我给店主整理了一份简易维护周计划:
- 每周检查光电传感器表面是否有灰尘遮挡,用干布擦拭。
- 每周检查水泵入口滤网是否堵塞,及时清理。
- 每月检查各电机热继电器设定值是否正常。
- 每月紧固一遍电柜内所有端子螺丝,防止振动导致松动。
- 每季度检查滚刷刷毛磨损情况,磨损严重及时更换。
这套系统目前是纯开关量逻辑控制,后期如果想进一步提升体验,有几个不错的扩展方向。
第一,增加触摸屏人机界面,把洗车模式选择、时间参数调整、故障记录都做到屏幕上,取代现在面板上的旋钮和按钮。S7-200 可以走通讯协议连接文本显示器或触摸屏,改造成本不高。
第二,引入变频器控制传送带和水泵,实现软启动和速度调节。S7-200 的模拟量输出可以输出 0 到 10V 信号给变频器,这样传送带启动会更平缓,高压水压也能根据车型微调,缺点是成本会上升。
第三,增加刷卡或扫码启动功能。客户扫码付费后,系统才允许启动洗车流程,这能帮助店主实现完全无人值守的运营模式,把手动收银的环节也省掉。S7-200 的通讯接口可以跟扫码支付模块对接,这个功能我打算之后尝试一下。
说到最后,我想掏心窝子讲几句。这套基于 S7-200 的自动洗车系统,技术上并不算前沿,甚至可以说是很多年前就在用的成熟方案。但正是这种成熟方案,在一个小型商业场景里真刀真枪地跑起来,解决了店主的人工成本难题,也让设备维护变得直观简单,这本身就是项目最大的价值。
开发过程中踩过的坑不少,尤其是信号干扰和继电器选型那两个,差点把交付时间都拖了。但也正是这些坑,让我的调试思路从“程序对了就行”变成了“整个系统稳定才算完”。如果你也在做类似的自动化改造项目,我给你的建议就是:控制逻辑别怕花时间拆细,硬件接线别怕费事做规范,现场调试别怕麻烦一遍遍试。这三个环节做到的扎实,设备交付以后基本不会有大问题。这套系统后续如果再升级,我也会继续分享新的经验,各位同道如果有更好的思路,也欢迎交流碰撞。