PLC在游泳池自控系统中的应用与实战拆解
1. 从需求到方案:游泳池自控为什么绕不开PLC
搞了好几年工业自动化,说实话,接到游泳池这个项目的时候,我最初是有点“大材小用”的感觉的。一套游泳池控制系统,无非就是循环过滤、加热、消毒、补水这几件事,看起来比产线上的机械手简单多了。但真做下来才发现,游泳池系统有它自己的一套脾气——电磁阀动作频率不高但必须可靠,水泵不能干抽,加热不能干烧,消毒投加得跟水质指标实时联动,还有一堆报警要在异常时第一时间锁机保护。这些需求叠加起来,用继电器搭会搭出一面墙的柜子,用单片机做又得自己折腾通讯协议和可靠性设计。PLC 恰恰站在两者中间:逻辑表达能力足够强,硬件可靠性经过产线验证,编程门槛不高,后期维护容易,这才是我最终选 PLC 作为控制核心的根本原因。
先把这个系统的核心需求拆开来看:
- 循环过滤:游泳池水需要定期循环通过砂缸过滤,循环泵得按时间表运行,还要配合多路阀做反冲洗。
- 加热恒温:室内泳池水温一般控制在 26~28 摄氏度,用板式换热器加一次侧热源,由电动阀或三通阀调节换热量。
- 水质监测与投加:pH 值、余氯(或 ORP 氧化还原电位)实时监测,根据偏差启停投加泵。
- 补排水控制:水位低了补自来水,水位过高报警。
- 安全保护:水泵过载、缺相、干转、加热器超温、消毒泄漏,任何一项异常都要停掉相关设备并报警。
- 远程监控:物业或场馆管理人员希望在中控室看到设备状态,甚至能远程启停。
这几件事表面上各自独立,实际上相互耦合。举个最简单的例子:反冲洗的时候,循环泵还在按正常逻辑运行,但多路阀已经切到反冲洗位,水流的走向完全不同,此时如果补水阀还在按低位补水逻辑工作,沸反盈天就是分分钟的事。这种跨设备的逻辑互锁,靠人工值班不是不行,但夜里或节假日没人盯着,风险就大了。
如果你有电气基础、但没怎么接触过 PLC,这个项目其实非常适合入门——因为游泳池系统的点位规模通常在 24 到 48 个 I/O 之间,程序量不大,却能覆盖几乎所有工控基础技能:开关量逻辑、模拟量采集、PID 调节、变频器通信、报警处理、HMI 组态。
2. 硬件选型这一步,决定了你后面是轻松还是踩坑
2.1 PLC 主机怎么选:按 I/O 估算,不是按牌子
很多初学者上来就问我:西门子好还是三菱好?我的回答是:先数点数,再谈品牌。游泳池系统里,数字量输入(DI)主要是各设备的运行反馈、故障反馈、手自动状态、液位开关、水流开关等;数字量输出(DO)主要是接触器、电磁阀、投加泵、蜂鸣器等;模拟量输入(AI)主要是温度、压力、pH、ORP、水量等;模拟量输出(AO)很少,可能就一个给变频器的频率给定,或者给调节阀的开度信号。
以一套中小型室内泳池(约 400 立方米水)为例,我大致估出来的点表是这样:
| 信号类型 | 数量 | 说明 |
|---|---|---|
| DI | 16~20 | 泵故障、阀位回讯、液位开关、水流开关、手自动切换、急停 |
| DO | 12~16 | 循环泵、投加泵、电磁阀、加热阀、补水泵、报警灯、消毒设备 |
| AI | 6~8 | 水温、室温、pH、ORP、压力、液位(4~20mA / 0~10V) |
| AO | 1~2 | 变频器频率给定、调节阀开度 |
按这个规模,三菱 FX3U-32MT 或 FX5U-32MT 都够用。如果有余量,建议直接选 48 点或 64 点的主机,留出 20% 的备用点——因为业主随时可能跟你说“再加一个除湿机联动”或者“热水回水也要监控”。我这次用的是三菱 FX3U-48MT,外加一个 FX3U-4AD 模拟量扩展模块,一路模拟量输出直接用主机自带的晶体管输出做脉冲调速(后面会细说)。
选型的时候一定注意输出类型:继电器输出(MR)可以接交流负载,但触点寿命有限,频繁动作的投加泵不建议;晶体管输出(MT)是直流,适合接中间继电器,寿命长、响应快。游泳池控制柜里接触器、电磁阀基本都是 220V 交流,所以 PLC 输出到中间继电器,再由继电器触点驱动交流负载,这是最常见也最稳妥的接法。
2.2 传感器选型:便宜不是第一原则,稳定才是
游泳池系统里,最影响控制效果的传感器有两类:液位和水量。液位我用了浮球开关(开关量)配合投入式液位计(模拟量)双保险。只装浮球也能做补排水,但你能检测到的只有“高”和“低”,中间状态一概不知;有了模拟量液位计,就能做连续液位显示,还能根据液位变化速率判断有没有漏水。这个细节后面在补水逻辑里我会再讲。
pH 和 ORP 电极建议选工业在线式,带前置放大器的,信号走 4~20mA 两线制,抗干扰比裸电极好得多。电极需要定期校准,这个没法省,一个月不校准,投加系统就是在瞎干活。温度传感器用 PT100,配合 PLC 的模拟量模块或者专门的温变模块,精度完全够。压力传感器装在砂缸进出口,用 0~0.6MPa 量程的 4~20mA 变送器,用来判断砂缸是不是堵了——压差超过设定值就该反冲洗了。
2.3 变频器:不是越大越好,功率匹配才重要
循环泵是游泳池系统里功率最大的连续运行设备,一台 7.5kW 的循环泵,一天跑 12 小时,电费相当可观。所以循环泵我配了变频器,做恒压供水控制,砂缸出口压力稳定在 0.2MPa 左右,白天客流高峰、水阻力大的时候自动提频,夜间低频运行。变频器用的是三菱 FR-E800 系列,和 FX3U 同品牌,走 RS485 通信,编程方便,通讯协议也熟。
不光是循环泵,加药泵我也没直接用工频启停,而是选了带脉冲控制的计量泵,PLC 通过晶体管输出发脉冲控制泵的加药量。这里有个小技巧:计量泵的脉冲输入频率一般不超过 100Hz,PLC 发脉冲的频率直接映射加药量,不需要额外写 PID——这其实是把“频率控制”的思想从变频器平移到了加药泵上。
2.4 HMI 与通信:本地触摸屏是标配,上位机看需要
本地我用了一台 10 寸的 MCGS 触摸屏(昆仑通态 TPC1062Ti),和 FX3U 通过串口连接。这是国产屏里性价比很高的选择,基本功能都有,报警记录、实时曲线、用户权限管理都不缺。为什么不用三菱原装 GOT?预算是一方面,另一方面是 MCGS 的组态软件在 Windows 上跑得很顺畅,对于维护工人来说,界面也更接地气。
如果场馆有中控室,想在上位机看数据,可以通过 PLC 的以太网模块或加一个串口服务器,用 Modbus TCP 协议把数据吐给上位机。后面我单独写 C# 例程读取 PLC 数据的时候会再展开,这里只需要知道:PLC 这边把数据放到 D 寄存器,上位机通过协议读走就行,关键是数据地址要对准。
3. I/O 点表与电气图纸:动手接线前,先纸上谈兵
3.1 点位规划表的长什么样
这一节我把自己常用的点表模板简化后放出来,你可以直接照着改。注意每一行都要写清楚:信号名称、对应的 PLC 地址、接线端子号、线径、线包颜色、备注。
| 地址 | 信号名称 | 类型 | 接点位置 | 备注 |
|---|---|---|---|---|
| X0 | 急停按钮(NC) | DI | 柜门操作面板 | 串入所有 DO 使能回路 |
| X1 | 循环泵运行反馈 | DI | 变频器 RUN 输出继电器 | 无源触点 |
| X2 | 循环泵故障 | DI | 变频器 ALM 输出继电器 | 无源触点 |
| X3 | 循环泵手自动切换 | DI | 控制柜旋钮 | 手动时 PLC 不控制 |
| X4 | 砂缸进水压力 | AI(4~20mA) | 压力变送器 | 0~0.6MPa |
| X5 | 砂缸出水压力 | AI(4~20mA) | 压力变送器 | 0~0.6MPa |
| X6 | 池水温度 | AI(PT100) | 温度变送器 | 0~50℃ |
| X7 | pH 值 | AI(4~20mA) | 在线电极 | 5~9pH |
| X8 | ORP 值 | AI(4~20mA) | 在线电极 | 0~1000mV |
| X9 | 高水位开关 | DI | 溢流井浮球 | 保护性关补水 |
| X10 | 低水位开关 | DI | 溢流井浮球 | 关循环泵 |
| X11 | 水流开关 | DI | 回水管路 | 无水时禁止投加 |
| Y0 | 循环泵启动 | DO | 变频器 STF 端子 | 正转启动 |
| Y1 | 循环泵频率给定 | AO/脉冲 | 变频器 RS485 | 通信 |
| Y2 | 补水泵启动 | DO | 中间继电器 | 补水电磁阀 |
| Y3 | 次氯酸钠投加泵 | DO | 中间继电器 | 脉冲控制 |
| Y4 | pH 调节投加泵(酸) | DO | 中间继电器 | 脉冲控制 |
| Y5 | 加热电动阀开 | DO | 电动执行器开专线 | 带反馈 |
| Y6 | 加热电动阀关 | DO | 电动执行器关专线 | 带反馈 |
| ... | ... | ... | ... | ... |
这里有两个容易犯的错误:一是把常闭触点接到 X 端子上,但程序逻辑没做成常闭——急停、泵故障这类信号,硬件上用常闭触点,程序里也要按“断开才是正常”来理解,避免断线时误判为正常;二是不给每个 DO 加中间继电器,直接用 PLC 晶体管输出驱动 220V 接触器,一次过流就烧输出点。所以我的规矩是:凡是 PLC 输出到 220V 回路,一律经过中间继电器(MY2NJ 24VDC)做隔离。
3.2 控制柜布局与配电
控制柜我用了 600×600×220 的落地柜。柜内分三个区域:最上层是 PLC、开关电源、中间继电器;中间层是断路器、接触器、热继电器;最下层是变频器。为什么要分层?变频器是强干扰源,顶层是弱电信号区,两者靠物理距离拉开几十厘米,比什么磁环、滤波器都好使。变频器的进出线走柜体两侧,不要和 PLC 的模拟量信号线走同一个线槽。
供电方面,主回路三相五线制进线,总断路器 63A。控制回路单独从总开关上口引一路 2A 断路器给 24V 开关电源,给 PLC 和传感器供电。所有模拟量信号线用屏蔽双绞线,屏蔽层在 PLC 侧单端接地,这能解决一多半的模拟量跳动问题。
3.3 安全回路是怎么接的
安全是所有功能的前提。我的做法是三层防护:
- 第一层是急停回路。急停按钮串在 PLC 的 DO 公共端回路上,按下去,所有输出失去 24V,设备全停。为什么这么接?因为一旦 PLC 程序跑飞(虽然极少见),硬件回路仍然能切断负载。
- 第二层是水流开关。水流开关的信号既进 PLC 做逻辑判断,也串在投加泵和加热电动阀的电源回路上——没有水流,投加泵和加热器根本不可能通电,这就从硬件上杜绝了“干烧”和“高浓度投加”的极端情况。
- 第三层是软件互锁。循环泵未运行或水压异常时,禁止投加泵和加热阀动作;高水位时禁止补水;低水位时禁止循环泵运行。
这套三层逻辑后来在调试阶段真的救了一次——有一次水处理车间的工人误开了泄水阀,水位快速下降,低水位开关还没来得及完全断开,水流开关已经先动作,把投加泵和加热器先在硬件层面切断了。如果没有这一层,等程序从低水位信号反应过来,pH 调节泵可能已经把酸性药剂打进管路了,那才叫事故。
4. 主程序架构:模块化不是软件工程师的专利
4.1 程序总体结构的三种安排
PLC 编程和写代码一样,最忌一个主程序从上到下堆到底。修改起来痛苦,排查问题更要命。我这次把程序分成三层:
第一层是主程序,负责整体调度,周期性调用子程序。第二层是子程序,按功能划分:过滤循环、补水排水、加热控制、投加控制、报警处理。第三层是中断程序,处理高速输入或者特殊事件,比如计量泵的脉冲输出、急停上升沿捕获。
为什么要用子程序?除了代码清晰之外,还有一个重要原因:调试时可以把某个子程序临时禁用,比如先把投加控制子程序注释掉,让循环和加热先跑起来,逐模块验证,能减少一半的联调问题。我自己平时调试时习惯每个功能编译一次,先模拟后实机,分模块推进。
用三菱 GX Works2 写程序,子程序用 CALL 指令或者梯形图功能块调用。这里提醒一下:三菱 FX3U 的 CALL 指令调用子程序时,要注意子程序里的 T、C 元件使用范围,不能在多个子程序里用同一个定时器号,否则会互相干扰。这算是 FX3U 的一个隐藏坑。
4.2 过滤循环逻辑:时间表+恒压双模式
循环泵的控制逻辑不复杂,但有一个关键的思路转变:水泵不能只是“开了就不管”。我设计了两层控制:
- 时间表模式:工作日 8:00 到 22:00 运行,夜间 22:00 后低频维持或停机。这是泳池运营的常规要求。
- 恒压模式:运行时通过 PID 调节变频器频率,保持砂缸出口压力恒定,避免砂缸逐渐堵塞时流量下降得太厉害。
PID 调节在 FX3U 里可以用自整定指令,也可以在程序里手写误差计算加输出限幅。我的做法是:压力反馈接到模拟量输入,目标压力写在 D 寄存器里(HMI 可设),PID 输出映射到变频器频率。变频器用 RS485 通信接收频率值,比 0~10V 模拟量给定抗干扰能力更强。
关于恒压和 PID,有几点实操经验:
- 初始 PID 参数用经验值(P=80%,I=20s,D=0),投运后观察压力曲线微调。游泳池这种大惯性、慢响应的系统,D 项基本用不上,I 项决定了稳态精度。
- 设定目标压力不要一下子定死。砂缸刚清洗完,阻力小,同样的频率流量会偏大;用了几天,阻力逐渐增加,频率会自动往上调。所以目标压力要按“刚清洗完的状态”来设,否则系统会瞎补偿。
- 压力变送器装在砂缸进出口,压差超过 0.05MPa 时报警提示“建议反冲洗”,这个信号同时还用于保护:压差超过 0.08MPa,强制降低运行频率,防止砂缸受压过大。
这里要特别提一句变频器的加减速时间。循环泵是离心泵,启动时如果加速时间设太短(比如 1s),管道里的水锤效应非常大,严重时能听到“咚”的一声,管路接头都会松。我设了 10s 加速、15s 减速,减速时间比加速长是因为水泵惯性大,快速降频会导致管道负压、甚至泵腔气蚀。
4.3 投加控制:pH 和余氯的联动策略
投加控制的难点不在算法,而在“不要过度投加”。游泳池水是持续循环的,投加泵一开,药剂进入管路,要经过整个循环系统之后才被传感器检测到。如果你按常规 PID 来做,pH 值一旦偏低,酸泵就开,等传感器反馈回来的时候,pH 可能已经被拉过中线了,然后你又关泵——系统在振荡。
所以我用了继电器式调节,带死区和锁定时间:
- 当 ORP 值低于设定值且偏差超过 20mV 时,次氯酸钠投加泵启动;高于设定值且偏差超过 20mV 时停止。在设定值附近 20mV 以内的死区内保持上次状态,不频繁起停。
- 每次启动后至少运行 60 秒,这个锁定时间由定时器实现,防止系统在偏差附近反复切换。
- 投加泵停止后,至少间隔 120 秒才能再次启动,给水循环系统足够的时间把药剂混合均匀并更新传感器数值。
这个策略听起来“土”,但实际效果远好于教科书式 PID——泳池药剂反应的滞后时间很长,而且反应非线性(余氯消耗速度跟水温、日照、游泳人数都有关系),与其做复杂的模型,不如用简单的迟滞控制,省心又可靠。
另外一个关键联动:投加泵只允许在循环泵运行且水流开关闭合时工作。这不仅是安全要求,也是控制效果要求——没有水流,药剂投进去了也混合不均匀,局部浓度过高还会刺激皮肤,这在泳池行业叫“局部余氯超标”。
投加泵我用的计量泵是脉冲控制型,PLC 用 Y 输出发脉冲。这里就发现一个问题:FX3U 的晶体管输出本身有输出频率上限(一般 100kHz),发 50Hz 的脉冲绰绰有余;但计量泵的脉冲输入接口一般要求 5~12V 电平,PLC 输出的是 24V,直接接可能损坏泵的输入电路。我的解法是输出端串一个 2kΩ 电阻分压,或者用光耦转接板隔离,把 24V 脉冲转成 12V 脉冲。这部分花不了几十块钱,但能避免泵的控制器烧掉。
4.4 补水与排水逻辑:别让液位信号骗了你
低液位就补水、高液位就停止,这种逻辑小学生都会写。但游泳池系统有个特殊之处:泳池本体水位和平衡水箱(或者叫溢流井)的水位是会通过回水沟连通的,而补水阀开启后水要先经过平衡水箱再流到泳池里。如果只看平衡水箱的浮球信号,阀门开几分钟后平衡水箱水位上来了、信号翻转浮球,你以为补够了,其实泳池本体还没到位。
我的做法是:用投入式液位计连续检测平衡水箱液位,设定一个“补水启动液位”和“补水停止液位”,两者之间有 30~50mm 的滞回区间,同时加一个“最小补水时长”定时器,每次补水至少持续 3 分钟,避免变量频繁启停。
高水位报警也别只当作报警,我把它做成联锁:高水位信号动作时,除了声光报警,还要把补水电磁阀在程序里强制断开——哪怕补水条件还满足。因为浮球开关偶尔会卡住、或者线被老鼠咬了,这种故障下如果程序还按正常水位判断,就会面临跑水风险。硬联锁和软联锁都做了,能挡住绝大多数意外。
5. 变频器频率读写:三菱 FX3U 与 FR-E800 的 RS485 实战
5.1 为什么走 RS485 而不是模拟量
给变频器给定频率,最简单的办法是 PLC 输出 0~10V 模拟量接到变频器端子。但模拟量方案有两个潜在问题:一是模拟量信号容易受干扰,长距离传输更明显;二是你只能给频率,读不回变频器的真实运行状态(至少要多拉一堆信号线)。走 RS485 通信就不一样了——一根双绞线,既能写频率,又能读电流、电压、运行状态、故障代码,信息量完全不同。
尤其是你调试的时候才发现,很多问题不是“给定多少频率就输出多少频率”,而是变频器内部限流、励磁、散热在起作用,实际输出电流才是最直观的负载状态。用 Modbus RTU 协议把这些数据读回来,记录在 HMI 的报表里,后面做设备维护保养的时候,这些数据就是体检报告。
5.2 接线与参数设置
FR-E800 变频器和 FX3U 的 485BD 通信板(或者 FX3U-485ADP 模块)之间,用两芯屏蔽双绞线连接:SD(发送)接 PLC 的 SDA,RD(接收)接 PLC 的 SDB,SG(信号地)接地。屏蔽层单端接地。
变频器侧需要设置的参数:
| 参数 | 设定值 | 说明 |
|---|---|---|
| Pr.79 | 1 | 运行模式选择:外部/通信组合 |
| Pr.117 | 1 | 站号 |
| Pr.118 | 96 | 波特率 9600bps |
| Pr.119 | 0 | 数据格式 8-E-1 |
| Pr.120 | 9999 | 不进行 RS485 通信检查 |
| Pr.121 | 0 | 通信再试次数 |
| Pr.549 | 1 | Modbus RTU 协议 |
PLC 侧,用 RS 指令或者 GX Works2 里的专用功能块来读写。这里强调一点:Modbus 地址千万不要记错,写入频率的保持寄存器地址是 40001(实际报文地址 0x0000),读输出频率的地址是 40003,读输出电流是 40006。不同品牌地址可能略微偏移,但三菱变频器基本遵循这个规律。
5.3 PLC 读写程序要点
用 RS 指令实现 Modbus RTU 主站通信,核心是拼报文、发帧、收帧、解析 CRC 校验。三菱的 RS 指令本身不带 CRC 计算,需要自己写子程序做校验,这是和西门子 Modbus 库最大的区别。
一个典型的写频率帧是:
站号 功能码 寄存器地址 数据 CRC 03H 06H 00 00 13 88 CRC其中 03 是站号,06H 是写单个寄存器,00 00 是频率寄存器地址,13 88 是十六进制频率值(5000 对应 50.00Hz,即精度为 0.01Hz)。CRC 是 Modbus CRC16,计算多项式 0xA001,高位在前。
读输出频率的帧:
03H 03H 00 03 00 01 CRC正常情况下,PLC 每隔 200ms 发一次读帧,收到响应后解析,放到 D 寄存器里,HMI 上显示。写频率只在设定值变化时发送,不要周期性地不停写,减少总线负载。
我踩过的坑是:RS 指令的执行是分时复用通信口的,如果你在子程序里既想读又想写,又没有做好时序互锁,发出去的帧会互相打架。解决方法是做一个简单的状态机:空闲时发读帧,收到响应后解析,如果有写请求则切换状态发写帧,发完再回到读状态。这类状态机的代码量不大,但能显著提高通信稳定性。
5.4 通信异常怎么排查
调试时通信不上,优先检查三件事:
- 变频器站号和 PLC 发送帧里的站号是否一致。
- 波特率、数据位、校验位、停止位是否全对齐。9600/8/E/1 是最常见的组合,但有些第三方设备默认是 19200 或 9600/8/N/1,串口调试助手查一遍最省事。
- 接线顺序是否搞反了 SD 和 RD。很多新手把 A/B 标反了,T/R 极性对调,帧就发不出去。
还有一个隐蔽坑:FR-E800 的终端电阻设置。如果总线上只有两台设备,两端未必需要终端电阻,但距离超过 50 米时,在通信线两端分别接 120Ω 终端电阻,能显著降低反射干扰。我之前施工时没接终端电阻,现场变频器离 PLC 有三十多米,通信经常掉线,后来加了终端电阻才把包错误率压下去。
6. 调试现场回放:从静态检查到联动运行的完整链路
6.1 静态检查:通电前的“体检”
这一步最枯燥但最重要。我是按这个顺序做的:
- 用万用表蜂鸣挡逐一核对:电源输入接线是否短路,PLC 供电正负极是否接反,各 I/O 点是否与控制柜端子一一对应。
- 断开 PLC 输出回路的断路器,手动按下接触器,确认电机转向正确。方向不对的在变频器参数里调相序,而不是去改主回路接线,因为改参数能记录在案,改线则容易留隐患。
- 通电但不启动水泵,把 HMI 的模拟量显示画面打开,看传感器数值是否正常。这一步能发现很多接线问题:比如 pH 变送器接错线、信号地没共地、温度传感器线序反了,这些错误在数值上会表现出“死值”或“跳字”。
6.2 单机调试:让每个设备自己先跑明白
单机调试的原则是:先手动后自动,先本地后远程。
循环泵的调试重点在变频器。我先把频率设为 10Hz,看泵是否转起来、声音是否正常,再逐步升频。这里顺便检查管道水锤——升频过程中如果听到水管“咚咚”响,要查一下是不是加减速时间太短,或者管道支架松了。水锤是特别容易被忽视的问题,但它对管路接头的寿命影响很大,尤其是 PVC 粘接的管路系统,水锤严重时接头处胶水会慢慢开裂。
加药泵测试时,一定先接清水或者旁路,不要直接接到化学药剂桶里。一是确认泵的方向、流量是否正常,二是防止泵空转损坏。脉冲控制模式下,我在 HMI 上设投加速度 30%,然后观察计量泵的冲程频率是否在 15Hz 左右,对应流量是否在铭牌标称的 30% 左右。
6.3 联动调试:让设备按程序逻辑配合
单机没问题后,我把所有子程序都使能,开始联动测试。这个阶段我最关注的是时序逻辑:补水时补水泵启动,水位到位后延时 3 秒停机;投加泵启动前循环泵必须以大于 20Hz 的频率运行 30 秒以上;加热阀打开前水流开关必须闭合……
联动测试我做了几个故意的“破坏测试”:在循环泵运行时关掉补水阀的手动球阀,看程序是否认为“补够了”而误判;把 pH 传感器的信号线拔掉,看看会不会触发信号断线报警;把水位浮球开关顶住模拟高水位,看补水电磁阀是否被强制断开。每个测试都过了,我才敢把系统交出去。
6.4 调试中遇到的两个真实故障
第一个故障是 pH 信号跳变。现象是 HMI 上 pH 值在 6.8 到 8.5 之间来回飘,投加泵也跟着乱启停。排查过程:先看线路——屏蔽层是否接地,发现投入式液位计的屏蔽层和 pH 变送器的屏蔽层都接在了同一个接线排上,但没有单端接地的大地,信号地和保护地混在一起。后来把 pH 变送器的屏蔽层单独引到柜内接地铜排,再把 PLC 侧的模拟量负端接到开关电源的 0V 上,pH 值就稳了。
第二个故障是变频器通信偶发中断。现象是 HMI 上循环泵频率有时候显示 0,但泵还在转。排查经过:起初怀疑参数不对,后来用串口助手长时间监听总线,发现故障发生时收到的是乱码帧——因为施工时通信线和变频器动力线走了同一个线槽,动力线启动瞬间的干扰把通信帧打坏了。处理办法是把通信线从动力线线槽里移走,单独穿管,并且两端加磁环,通信立即稳定。
7. 这套系统交出去之后:维护经验和避坑清单
项目交付时,我给管理方留了一份“避坑清单”,内容不多,但每一条都是真金白银换来的经验,这里整理出来供参考:
- 电极校准周期:pH 和 ORP 电极至少每月校准一次。泳池水里的次氯酸钠对电极有漂白作用,读数会逐渐偏差。校准液要现配现用,不要用过期校准液。
- 变频器散热:变频器安装在柜体下层,这个位置散热最差,夏天柜内温度能到 45 度以上。建议在柜门加装带过滤网的排风扇,温度超过 40 度时自动启动——这个控制逻辑加上一个温控开关就行,十几块钱。
- 定期压差记录:让运维人员每周记录一次砂缸进出口压差。压差上升速度是判断砂缸是否需要反冲洗、是否需要投加絮凝剂的窗口。很多运维人员只顾着看水泵电压电流,从不关心压差,等出水流量明显减小才去处理,那时砂缸已经堵了。
- 备份程序:PLC 程序上载保存一份,HMI 组态工程文件存 U 盘,放在控制柜内的密封袋里。这个动作看似基础,但能让你在设备故障时少走很多弯路。
还有一个我后来才加的小功能,值得你借鉴:在 HMI 上做一个“累计运行时间”画面,统计每台设备的运行小时数。不要小看这个数据——循环泵轴承要保养、加药泵隔膜要更换、变频器散热风扇寿命到了,这些维护决策都依赖累计运行时间。它比“感觉该换了”靠谱得多。
这套基于 PLC 的游泳池控制系统,最终交付后的运行情况是:恒温稳定在 27 度,pH 在 7.2~7.6 之间,ORP 稳定在 650~700mV,系统连续运行了三周没有出现一次误报警或漏报警。如果你手头也要做类似的系统,我希望这篇拆解能帮你避开那些已经替我踩过的坑。真到自己动手时,流程上记住一句话:先把点表拉清楚,再接一根线;先把安全联锁画明白,再写一行梯形图。设备可以灵活,安全逻辑不能糊弄。
