基于边缘计算的医院污水余氯闭环控制系统设计
一、系统背景
医院污水消毒是阻断病原微生物传播的关键环节。GB 18466-2005要求排放口总余氯控制在0.5-1.5mg/L(综合医院直排标准),范围窄、要求高。传统人工检测和投加方式存在余氯波动大、药剂浪费、夜间失控等问题。本文设计一套基于边缘控制器(IntBoxIO)的余氯闭环控制系统,实现余氯自动控制和远程监控。
二、系统架构
┌─────────────────────────────────────┐
│ 云平台/手机小程序 │
│ MQTT over TLS │ 报警推送 │
└──────────────┬──────────────────────┘
│ 4G
┌──────────────┴──────────────────────┐
│ 边缘控制器(IntBoxIO) │
│ Modbus采集 │ PID运算 │ 逻辑控制 │
│ 本地存储 │ 断网续传 │ 报警判断 │
└──┬──────────┬──────────┬────────────┘
│RS485 │4-20mA │继电器
┌──┴──┐ ┌───┴───┐ ┌───┴────┐
│余氯仪│ │流量计 │ │加氯泵 │
│pH │ │液位计 │ │风机水泵│
└─────┘ └───────┘ └────────┘
三、硬件选型
• 边缘控制器:1×RS485,4G,7-36VDC,-35~75℃
• 余氯仪:恒电压法,4-20mA输出,量程0-2mg/L,精度±0.05mg/L
• 流量计:电磁流量计,Modbus RTU输出
• 加氯泵:电磁隔膜计量泵,支持4-20mA或脉冲控制
• pH计:复合电极,4-20mA输出
四、控制算法设计
采用前馈+反馈复合控制:
class ChlorineControl:
def init(self):
# PID参数
self.kp = 0.3
self.ki = 0.05
self.kd = 0.01
self.integral = 0
self.last_error = 0
# 前馈参数
self.dose_ratio = 30.0 # 单位投加量 g/m³
self.max_dose = 500.0 # 最大投加量 g/h
self.min_dose = 10.0 # 最小投加量 g/h
# 余氯设定
self.setpoint = 1.0 # 目标余氯 mg/L
self.deadband = 0.1 # 死区 mg/L
# 报警限
self.low_alarm = 0.5
self.high_alarm = 1.5
def calculate(self, flow, chlorine, dt=30):
"""
前馈+反馈计算加氯量
flow: 进水流量 m³/h
chlorine: 实测余氯 mg/L
dt: 控制周期 秒
"""
# 前馈:按流量比例计算基础投加量
feedforward = flow * self.dose_ratio
# 反馈:PID修正
error = self.setpoint - chlorine
if abs(error) < self.deadband:
# 在死区内,只保持前馈
self.integral *= 0.95 # 积分衰减
feedback = self.kp * error + self.integral * self.ki
else:
self.integral += error * dt
self.integral = max(-100, min(100, self.integral)) # 积分限幅
derivative = (error - self.last_error) / dt
feedback = (self.kp * error +
self.ki * self.integral +
self.kd * derivative)
self.last_error = error
# 合成输出
output = feedforward + feedback
output = max(self.min_dose, min(self.max_dose, output))
return output
def check_alarm(self, chlorine, pump_status):
"""报警判断"""
alarms = []
if chlorine < self.low_alarm:
alarms.append("余氯过低")
if chlorine > self.high_alarm:
alarms.append("余氯过高")
if chlorine < 0.1 and pump_status:
alarms.append("余氯为零,加氯系统故障")
return alarms
五、边缘控制器主程序
import minimalmodbus
import time
import json
import paho.mqtt.client as mqtt
class HospitalSewageController:
def init(self):
self.chlorine_ctrl = ChlorineControl()
self.setup_modbus()
self.setup_mqtt()
self.data_buffer = []
def setup_modbus(self):
# 余氯仪 RS485
self.chlorine_meter = minimalmodbus.Instrument('/dev/ttyS1', 1)
self.chlorine_meter.serial.baudrate = 9600
# 流量计
self.flow_meter = minimalmodbus.Instrument('/dev/ttyS1', 2)
def setup_mqtt(self):
self.mqtt = mqtt.Client()
self.mqtt.username_pw_set("device_id", "secret")
self.mqtt.connect("cloud.example.com", 1883)
self.mqtt.loop_start()
def read_sensors(self):
"""读取传感器数据"""
try:
chlorine = self.chlorine_meter.read_register(0, 2) * 0.01 # mg/L
flow = self.flow_meter.read_register(0, 1) * 0.1 # m³/h
ph = self.chlorine_meter.read_register(2, 2) * 0.01
return {"chlorine": chlorine, "flow": flow, "ph": ph}
except Exception as e:
print(f"传感器读取失败: {e}")
return None
def control_dose_pump(self, dose_gph):
"""控制加氯泵(4-20mA对应0-500g/h)"""
ma = 4.0 + (dose_gph / 500.0) * 16.0
ma = max(4.0, min(20.0, ma))
# 通过DA模块输出4-20mA
self.write_analog(0, int((ma - 4) / 16 * 4095))
def run(self):
while True:
data = self.read_sensors()
if data:
# 计算加氯量
dose = self.chlorine_ctrl.calculate(
data["flow"], data["chlorine"])
self.control_dose_pump(dose)
# 报警检查
alarms = self.chlorine_ctrl.check_alarm(
data["chlorine"], pump_status=True)
# 本地存储
record = {
"ts": int(time.time()),
**data,
"dose": dose,
"alarms": alarms
}
self.data_buffer.append(record)
# MQTT上传
self.mqtt.publish(
"hospital/sewage/realtime",
json.dumps(record), qos=1)
# 报警立即推送
for alarm in alarms:
self.mqtt.publish(
"hospital/sewage/alarm",
json.dumps({"alarm": alarm, **record}),
qos=2)
time.sleep(30) # 30秒控制周期
if name == “main”:
controller = HospitalSewageController()
controller.run()
六、可靠性设计
- 看门狗: 边缘控制器(IntBoxIO)内置硬件看门狗,程序异常时自动重启
- 断网续传: 网络中断时数据存入本地SQLite,恢复后自动补传
- 传感器故障容错: 余氯仪通信故障时,自动切换到流量比例控制模式
- 备用泵切换: 加氯泵故障(无电流反馈)时自动启动备用泵
- 应急模式: 远程下发应急指令,加氯量提升至正常值2倍
七、应用效果
在广东某综合医院(300床,200m³/d)部署后:
• 余氯合格率从68%提升至97%
• 次氯酸钠用量从月均150kg降至95kg,节省37%
• 未发生环保超标事件
• 后勤巡检从每天2次减至每2天1次
八、总结
本系统基于边缘计算实现医院污水余氯闭环控制,前馈+反馈复合算法保证了余氯稳定,边缘侧独立运行确保了断网安全,MQTT上云实现了远程监控和报警。系统架构简洁、成本可控,适合在各级医疗机构推广。
更多推荐

所有评论(0)