一座小小的污水处理站,控制室里三台柜机嗡嗡作响,屏幕上液位曲线缓缓爬升,进水提升泵根据水位自动启停,曝气风机随着溶解氧数值悄悄调整频率。这套系统从安装到稳定运行,核心就是一台三菱FX系列PLC加上一套组态王监控软件。说实话,自动化控制并不神秘,它就是把原来靠人盯着仪表、跑现场按钮的工作,变成PLC替你判断、组态软件帮你呈现。这篇文章就围绕三菱PLC与组态王搭建污水处理系统这件事,把选型思路、程序逻辑、监控搭建到联调排障的完整过程梳理一遍,给正在琢磨入门工控或者准备接手类似项目的朋友一份可以直接参考的实战笔记。
1. 项目背景与控制需求拆解
1.1 污水处理工艺中的自动化需求
污水处理站跟工厂流水线还不一样,它的最大特点是工艺环节多、设备运行时间长、现场环境潮湿腐蚀性大。一个典型的处理流程大致包括:进水格栅拦截漂浮物、提升泵将污水提升至调节池、曝气池内微生物降解有机物、二沉池泥水分离、剩余污泥回流或外排,最后消毒出水。每个环节都有水泵、风机、阀门、搅拌机这类机电设备,而水质参数如液位、pH值、溶解氧、流量、污泥浓度则随时在变化。
如果没有自动化系统,运行人员需要频繁抄表、手动启停设备,水质一波动就得跑现场调阀门、调频率。夜间值班人手不足,一旦进水泵抽空或调节池满溢,轻则设备损坏,重则污水外溢引发环保事故。项目方最初提的需求很朴素:减少人工干预,设备能自动判断启停,重要参数能在中控室看到,异常情况要报警。
1.2 控制系统总体架构与应用场景
在搭建方案时,我采用了经典的“底层设备+PLC+上位机”三层架构。最底层是液位计、pH计、溶解氧传感器、变频器、接触器等现场设备;中间层是三菱PLC负责逻辑控制、数据采集和联锁保护;上层是组态王组态软件,运行在工控机上,把PLC采集的数据变成图形画面、趋势曲线、报警记录和操作按钮。
这套架构没有采用DCS(集散控制系统)或专用一体化控制器,原因有三点:一是项目规模属于中小型污水站,I/O点数在几十个以内,用中小型PLC性价比非常高;二是三菱PLC的指令系统在逻辑控制方面足够灵活,维护工程师上手速度快;三是组态王在国内环境下的兼容性和中文资料都很完善,后续改画面、加报表不需要原厂介入。实际场景里,操作员在中控室便能完成设备启停、参数设定、历史查询等工作,现场保留少量就地操作按钮用于检修和应急,这种“远程集中监控+就地应急操作”的模式非常适合污水处理这种连续生产场景。
2. 硬件选型与系统配置
2.1 PLC选型与I/O规划
三菱PLC在这个项目中我选的是FX3U-64MT,晶体管输出型,搭配一台FX3U-4AD模拟量输入模块和一台FX3U-485ADP通讯模块。选型时我把所有I/O点列了一个清单,挨个核对,而不是凭经验拍脑袋。
| 信号类型 | 点位用途 | 数量 | 说明 |
|---|---|---|---|
| 数字量输入 | 水泵/风机/格栅运行状态、故障信号、手自动状态 | 18点 | 常开触点接入,光电隔离 |
| 数字量输出 | 接触器控制、报警指示灯、电动阀开关 | 12点 | 晶体管输出,外接中间继电器 |
| 模拟量输入 | 调节池液位、曝气池溶解氧、进水pH、出水流量 | 4通道 | 4-20mA标准信号 |
| 通讯接口 | 与组态王数据交换 | 1路 | RS485/以太网 |
这里有个容易踩的坑:数字量输入一定要把所有设备的“运行反馈”和“故障反馈”都接进来,不能只给出控制信号而不监状态。比如你通过PLC输出让提升泵接触器吸合,但如果接触器坏了或者电机烧了,PLC以为泵在运行,实际上水没抽上来。有了状态反馈,PLC才能发现“命令和实际不符”并报警停机。我画的I/O分配表里,每一路都标注了线号、端子位置和对应地址,这为后续编程和排查省了非常多时间。
2.2 传感器与执行机构配套
传感器的选择直接决定了自动化系统好不好用。液位测量我用了两套方案:调节池内安装静压式液位计作为主传感器,另外在池壁高处和低处各加一支浮球开关做干触点保护。静压式液位计输出4-20mA,PLC根据电流大小算出液位高度,用于连续控制和显示;而浮球开关是纯开关量,接进数字量输入回路,专用于极限保护,比如液位到了低限就强停泵,即使PLC程序乱了你也不用担心水泵空转。
溶解氧传感器和pH计都是变送器输出4-20mA信号。这类水质传感器有一个共同问题:电极需要定期清洗校准,信号容易漂移。所以我建议在硬件上预留一支便携式仪表做定期比对,软件上则把上下限报警做成可调参数,方便现场根据水质调整。执行机构方面,提升泵和回流泵采用变频器控制,曝气风机采用工频启停加间歇运行,加药泵采用脉冲式计量泵。变频器与PLC之间用开关量端子控制启停,频率给定我直接走模拟量信号,这样成本低、调试简单,组态王上也可以远程调节频率。
2.3 电气控制柜与布线要点
电气柜是整个控制系统的躯体,布线不合理,后面通讯和模拟量必然出毛病。在这个项目里我特别注意了几件事。
一是强弱电分开走线。PLC输出的控制线、传感器信号线和电机动力线必须分槽敷设,不能图省事捆在一起,否则变频器一启动,模拟量信号能被干扰得跳来跳去。
二是24V直流电源单独隔离。传感器供电和PLC输入回路的24V电源不要直接拿开关电源共用,我用了两个直流电源模块,一个专供传感器,一个专供PLC输入回路,两组电源负极在汇流排处单点接地。这样做的好处是现场仪表回路故障不会拖垮PLC系统。
三是接地处理。控制柜内要有独立的接地铜排,PLC、变频器、传感器的屏蔽层都要接到接地铜排上,而且汇流排到大地要使用截面积不小于6平方毫米的铜导线。模拟量信号采用屏蔽双绞线,屏蔽层在PLC侧单端接地,避免形成地环路。这套接地做法在后面的调试里起了大作用,四条模拟量信号从头到尾都很稳定,基本没做过额外滤波处理。
3. PLC程序设计与核心控制逻辑
3.1 程序架构与模块划分
三菱FX3U的编程软件是GX Works2,支持梯形图、结构化文本等方式。我习惯用梯形图,因为它直观,维保人员拿起来就能看明白。程序整体采用模块化设计,主程序OBR100里只做初始化、调用子程序和更新输出,真正的控制逻辑放在各个子程序中。
具体模块划分如下:
- 初始化模块:设置通讯参数、模拟量通道量程、寄存器初始值
- 手动/自动切换模块:决定哪些设备受自动程序控制,哪些交由现场按钮操作
- 泵组控制模块:根据液位和运行时间自动启停、轮换提升泵
- 曝气控制模块:根据溶解氧数值决定风机启停或变频器频率给定
- 报警模块:模拟量超限、设备故障、通讯中断时置位报警标志
- 数据发送模块:把设备状态、运行参数打包放入通讯寄存器,供上位机读取
这种模块化编程最大的好处是,任何一个环节改动不需要把整个程序翻一遍。比如后期环保要求加严,想提高曝气池液位控制精度,只需修改曝气控制模块,其他模块完全不受影响。我还会在程序开头加上版本号和修改日期注释,这对后期维护非常重要,实际操作中真的遇到过半年后回现场改程序,结果发现好几份相似的程序不知道哪份是最新的情况。
3.2 泵组控制逻辑:启停、轮换与联锁
提升泵是整个污水系统里运行时长最长、最容易出问题的设备。它的控制逻辑看似简单——液位高了开泵、低了两台都停——但真正写好需要留意几个细节。
首先是启停阈值一定要有“死区”。比如设定高液位3.5米开泵,低液位1.5米停泵,中间2米到3米之间泵保持现状。如果高停都用同一个阈值,液位在临界点附近波动,泵就会频繁启停,接触器和电机都得提前报废。死区的大小要根据水泵能力和池容来定,我一般取量程的10%到20%。
其次是轮换逻辑。两台提升泵如果长期只用一台,另一台备泵容易锈死。我在程序里用了一个计数器记录每台泵的累计运行时间,每次需要启动泵时优先启动累计运行时间短的泵,这就是简单的“先入先出轮换”。轮换功能在现场能直观感受到价值:原来一个月就要检修一次的泵,轮换后运行周期能拉到三个月以上。
然后是联锁保护。提升泵启动前必须确认进水阀门已打开、没有故障信号;调节池液位低于低限时无条件停泵;变频器故障输出触发时,备用泵要能够自动投入。这些联锁条件我在程序里全部用串联触点实现,即“启动条件全部满足才输出”,这种方式比用置位/复位指令更安全,因为一旦联锁条件断开,输出会立刻停止,不会出现“置位后忘复位”的隐患。
3.3 模拟量采集与PID控制
模拟量处理是污水自动化绕不开的一环。三菱FX3U-4AD模块采集4-20mA电流信号后,在PLC内部转换成0到4000的数字量,我需要通过换算得到工程值。公式很简单:工程值 = 数字量 / 4000 × 量程上限。以调节池液位为例,量程0-5米,读取到的数字量是2000,那么液位就是2.5米。
把这个换算公式和报警上下限做成软元件参数,放在数据寄存器里,组态王可以直接读取并显示实际液位。这里我给一个梯形图风格的简单思路:
- 读取4AD通道D8260的值存入D100
- 用浮点运算指令把D100转换成浮点数
- 乘以5.0再除以4000.0,得到液位浮点值存到D110
- D110同时用于显示和逻辑比较
溶解氧控制方面,小型污水站一般不需要用到真正的PID闭环,用“区间控制”更省心。比如设定溶解氧目标值2.0mg/L,区间上限2.5、下限1.5,当数值高于2.5就降频或停一台风机,低于1.5就提频或加开风机。如果现场工艺要求高,必须做连续调节,可以用PID指令,但要把P、I参数调稳,这需要现场反复试凑。我的经验是:先用区间控制跑一个月观察水质和设备运行情况,确认不需要连续调节就保持现状,系统的稳定性比控制精度更重要。
4. 组态王监控系统搭建
4.1 组态王与三菱PLC的通讯配置
组态王作为上位监控软件,要和PLC建立稳定通讯,关键在驱动选择和参数匹配。三菱FX3U支持多种协议,我用过编程口协议和MC协议。在没有扩展以太网模块的情况下,通过FX3U-485ADP走RS485总线,组态王里选择对应的三菱驱动,设置串口号、波特率9600、数据位8、停止位1、无校验,PLC側站号设为0,两边保持一致。
如果你用的是带以太网口的FX3U-ENET模块,那就更简单,组态王里选TCP驱动,填入PLC的IP地址和端口号即可。这里要提醒一句:组态王左侧工程浏览器里有“设备”管理项,必须先在设备里新建“PLC”设备并把通讯参数填对,才能在数据词典里建立变量时选择这个设备。
通讯建好后的检验方法很直观——在组态王的数据词典里随便建一个变量关联到PLC的某个寄存器(比如D110液位),然后进入运行系统,把变量的原始值和工程值都显示出来,看数值有没有变化。如果显示设备通讯失败,优先检查物理接线、串口号、波特率,以及PLC侧的协议设定。我有一次搞了一个小时没通讯上,最后发现是USB转RS485的驱动没装好,设备管理器里根本看不到COM口,所以排查通讯问题第一步永远是确认硬件层正常。
4.2 监控画面设计与数据绑定
组态王做画面,重点在“让操作员一眼看懂流程”。我做的初始画面是一张污水处理工艺流程图,池体用矩形图形表示,管道用粗线条连接,设备图标放在实际对应位置。为了直观,我给不同状态绑定了颜色变化和水流动画效果。
- 泵运行:泵图标变绿色,管路中的填充线条从静态变成动态流动效果
- 泵停止:泵图标保持灰色
- 故障状态:泵图标闪红色
- 调节池液位:用垂直填充矩形的高度对应液位值,同时旁边显示具体数字
- 加药泵频率:用水平管道长度或旋转效果展示
画面上的数据文本都通过“动画连接”绑定到数据词典变量,比如液位显示框关联到变量“调节池液位”,设置输出格式为两位小数。按钮控件通过“按下时”事件关联到PLC寄存器,比如手动开1号泵的按钮,按下时向位元件M100发送置位信号。为了安全,我把手自动切换做成“权限控制”,只有管理员登录后才能在画面上操作设备,普通操作员只能查看,这个权限设置在组态王的用户管理里配置,非常简单但非常必要。
4.3 报警、趋势与报表功能
组态王的报警和趋势功能是运营管理中最实用的部分,我一点没省。
报警方面,我在数据词典里对液位、pH值、溶解氧分别定义了高报警、高高报警、低报警、低低报警,报警限值做成变量,方便运行人员根据季节水温调整。报警发生时,画面上弹出报警窗并闪烁,同时触发声音报警。报警记录要保存到硬盘,组态王有专门的报警历史存储,我配置了按天存档,方便导出。
趋势曲线我做了两组:实时趋势显示当前十几分钟内的液位、pH、溶解氧变化,适合调试时观察;历史趋势则通过“历史曲线控件”关联到历史数据库,操作员可以选定时间段查看任意参数的变化过程。这个功能对环保检查特别有用,能直观证明过去的某个时段系统运行正常。
报表功能我用了组态王自带的报表系统生成日报表,自动统计每天各时段的平均液位、pH均值、泵运行时长、累计流量。运维人员每周打印一次报表,直接当成运行记录存档。说实话,就这一个报表功能,项目验收时客户领导的满意度就提升了一个档次,因为原来他们需要人工抄表整理,现在系统自动生成,还不会出错。
5. 联调过程与常见问题排查实录
5.1 联调流程与关键步骤
系统搭建完成后,联调是整个项目最紧张也是最容易出问题的阶段。我一般按以下顺序进行:
第一步,单机调试。把PLC程序里的自动输出全部屏蔽,只保留手动继电器控制,逐个测试每台水泵、风机、阀门、格栅是否能正常启停,确认电机转向正确、限位开关信号有效。这个阶段要检查运行反馈和故障反馈信号是否准确映射到了程序地址,否则后面程序再漂亮也白搭。
第二步,模拟量校验。用信号发生器代替现场传感器,给PLC输入标准4mA、12mA、20mA信号,核对PLC内部的AD转换值是否在预期范围内,同时调整量程和零点偏移。然后再接上实际传感器,比对现场仪表显示值和PLC显示值,偏差大的要重新校准。
第三步,程序逻辑模拟。在手动模式下,通过强制软元件模拟液位变化,验证泵的启停逻辑、轮换逻辑、报警和保护动作是否符合设计。特别是模拟调节池液位快速升高,看系统能不能及时投入备用泵,并在高报警时触发声光提示。
第四步,联合运作。把程序切到自动模式,真实启动污水进水,用实际运行数据验证整个工艺过程的自动化逻辑。这个阶段我会在现场待足24小时,白天观察设备动态,夜间侧重验证报警和应急功能,比如拔掉一个浮球开关模拟低液位,看泵是否立即停止。
5.2 常见问题与排查对照表
联调阶段最常见的坑,我整理成了一张表,希望对后来者有帮助。
| 现象 | 可能原因 | 处理办法 |
|---|---|---|
| 组态王显示设备通讯失败 | 串口号错误、波特率不一致、地址冲突、485接线A/B反掉 | 先检查设备管理器确认COM口,再核对两边通讯参数,最后用万用表测量485线路电压 |
| 模拟量数值跳动剧烈 | 信号线受动力电缆干扰、屏蔽层未接地、传感器供电电压不足 | 强弱电布线分开、屏蔽层单端接地、检查24V电源电压、必要时加信号隔离器 |
| 泵频繁启停 | 液位启停阈值没有死区、浮球信号抖动 | 程序里增加比较区间,设置报警延时和动作延时,滤除瞬时抖动 |
| 手动模式下设备动作正常,自动模式不动作 | 联动条件未满足、互锁点粘滞、手自动状态信号没写对 | 用监控功能逐条查看联动条件状态,快速定位是哪个条件失效 |
| 组态王按钮点击后设备无反应 | 变量关联错误、PLC寄存器地址写错、操作无权限 | 检查数据词典变量关联地址,确认当前登录用户有操作权限 |
| 历史趋势只有当天数据,之前的查不到 | 历史数据库存储路径权限不足或磁盘空间满 | 设置历史数据自动保存路径并定期清理磁盘,配置数据备份任务 |
除了这张表,还有两个经验值得单独拿出来说。一个是模拟量超限报警一定要加“报警延时”,比如液位高报持续10秒才触发,否则大量漂浮物经过探头时会造成瞬时波动,一个晚上能报几十次假警,最后值班人员都把报警当成背景噪音了。另一个是PLC程序里所有输出都要考虑“上电安全”,也就是PLC刚通电、程序还没跑起来的那一瞬间,输出模块不能出现不可控的接通。我用一个“首次扫描置位”的特殊继电器,在上电后的第一个扫描周期先强制所有输出为OFF,同时关闭自动启动条件,由运行人员确认现场安全后再切换自动模式。
5.3 几条实操心得
整个项目做下来,我最大的体会是自动化不是越复杂越好,而是越可靠越好。污水站的环境本来就潮湿、腐蚀性高,设备24小时连轴转,系统稳定压倒一切。所以我在设计时宁愿多用几个中间继电器、多留几组备用I/O点,也不把成本压得太狠而牺牲可维护性。三菱PLC和组态王的组合之所以在这个场景里好用,就是因为它简单、上手快、资料多,任何一个有点电气基础的工程师都能快速接管。
还有一点是关于软件版本和项目备份。GX Works2和组态王的工程文件一定要做好分类保存,最好以日期命名,每改一次程序就在注释里标明修改原因。我在做这套系统时专门准备了一个U盘放工程备份,还叮嘱客户每月做一次整柜程序归档,这个好习惯在后来设备改造时帮了大忙。
最后说一个调试中的小技巧:在组态王画面上增加一个简单的“调试页”,把PLC内部关键寄存器数值直接显示出来,比如液位原始值、经换算后的工程值、各泵累计运行时间、当前轮换状态等。调试时可以一边操作一边观察这些值的变化,比反复切换软件方便太多。这个小页面后来也没有删掉,反而成了运维人员日常巡检时最喜欢看的一个画面,因为所有关键信息一眼就能看全。
这一套系统从进场安装到稳定运行,前后一共用了不到三周。设计时多花心思把细节想透,调试阶段就能少熬夜。三菱PLC和组态王的组合,在小中型污水处理项目里的表现足够出色,也算是我做过的众多自动化项目里性价比最高、落地效果最稳定的方案之一。