ENV-001: 废水废气监测
优先级: 🔴 高 (17.5分) | 技术复用度: 80% | 实施周期: 2-3周
客户原话
"我们园区有30多家制造企业,有的有废水排放,有的有废气排放。环保局要求我们监测排放数据,每个月要上报。但是我们没有监测设备,只能让企业自己报数据,企业报多少就是多少,我们也不知道准不准。去年环保局来检查,发现有企业超标排放,罚了我们园区20万。我们才知道那家企业一直在偷排,但是我们没有监测手段,发现不了。现在环保局要求我们必须安装在线监测设备,数据要实时上传到环保平台。但是设备很贵,一套要十几万,30家企业都装不起。而且数据要人工抄表,每天要花2-3小时,还要整理成Excel上报,太麻烦了。"
—— 某工业园区环保主管
业务场景描述
典型场景
场景1: 排放数据采集
- 每天早上,环保专员要去各企业抄表
- 有监测设备的企业,看设备显示屏,手工记录数据
- 没有设备的企业,问企业要数据,企业口头报
- 30家企业,要花2-3小时才能抄完
- 有的企业不在,要等企业上班才能抄
- 数据记在本子上,回办公室再录入Excel
场景2: 超标发现
- 环保专员抄表时,发现某企业COD值很高
- 但是不确定是真的超标,还是设备故障
- 打电话问企业,企业说设备没问题
- 环保专员也不是专业人员,不知道怎么判断
- 等环保局来检查,发现确实超标,已经持续了1个月
- 园区被罚款,企业也被罚款
场景3: 数据上报
- 每月5号前,要把上月数据上报环保局
- 环保专员打开Excel,整理数据
- 要计算每家企业的日均值、月均值、最大值
- 要生成报表,填写到环保平台
- 30家企业,每家10多个指标,要填几百个数据
- 经常填错,环保局退回重填
场景4: 企业偷排
- 有的企业晚上偷排,白天正常
- 环保专员白天抄表,看不出异常
- 周边居民投诉有异味,但是找不到证据
- 环保局来突击检查,发现企业在偷排
- 园区被罚款,企业被停产整顿
场景5: 设备故障
- 监测设备出故障,显示数据异常
- 企业不知道是设备坏了,还是真的超标
- 打电话给设备厂商,厂商说要上门检查
- 等厂商来,已经过了好几天
- 这几天的数据都不准,无法上报
核心痛点
- 监测覆盖不全 - 很多企业没有监测设备,靠企业自报
- 数据采集慢 - 人工抄表,费时费力,数据滞后
- 超标发现晚 - 事后才知道超标,无法及时处理
- 偷排难发现 - 晚上偷排,白天抄表发现不了
- 数据上报难 - 手工整理,容易出错,工作量大
业务流程图
当前人工流程
问题点:
- 人工抄表,耗时长,数据滞后
- 超标发现晚,无法及时处理
- 数据整理费时费力,容易出错
- 偷排难以发现
自动化流程
改进点:
- 实时采集,数据准确及时
- 自动预警,及时发现超标
- 自动统计,一键上报
- 24小时监测,发现偷排
数据流与依赖
数据输入
- 监测设备数据: COD、氨氮、pH、流量(废水),SO2、NOx、颗粒物、流量(废气)
- 企业信息: 企业名称、行业类型、排放标准
- 排放标准: 国家标准、地方标准、行业标准
- 设备信息: 设备型号、安装位置、校准日期
数据输出
- 实时监测数据: 提供给环保专员
- 超标预警: 推送给环保专员和企业
- 统计报表: 提供给环保局
- 合规数据: 提供给环保合规管理(→ ENV-003 环保合规管理)
场景依赖关系
技术实现方案
核心功能模块
1. 在线监测设备对接
监测指标:
废水监测:
- COD(化学需氧量): 反映水中有机物含量
- 氨氮: 反映水中氮污染程度
- pH值: 反映水的酸碱度
- 总磷: 反映水中磷污染程度
- 总氮: 反映水中氮污染程度
- 流量: 排放水量
废气监测:
- SO2(二氧化硫): 反映硫污染
- NOx(氮氧化物): 反映氮污染
- 颗粒物(PM10/PM2.5): 反映粉尘污染
- VOCs(挥发性有机物): 反映有机污染
- 流量: 排放气量
监测数据结构:
json
{
"device_id": "WW-C001-001",
"company_id": "C001",
"company_name": "XX电镀厂",
"device_type": "wastewater",
"location": "废水排放口",
"timestamp": "2024-03-04 10:30:00",
"data": {
"COD": {
"value": 85,
"unit": "mg/L",
"standard": 100,
"status": "normal"
},
"ammonia_nitrogen": {
"value": 12,
"unit": "mg/L",
"standard": 15,
"status": "normal"
},
"pH": {
"value": 7.2,
"unit": "",
"standard_min": 6,
"standard_max": 9,
"status": "normal"
},
"flow": {
"value": 15.5,
"unit": "m³/h",
"status": "normal"
}
},
"device_status": "online"
}数据采集频率:
- 实时数据: 每5分钟采集一次
- 小时均值: 每小时计算一次
- 日均值: 每天计算一次
- 月均值: 每月计算一次
2. 超标预警系统
预警规则:
一级预警(红色): 严重超标
- 触发条件: 监测值 > 标准值 × 1.5
- 处理要求: 立即停产整改
- 通知对象: 环保专员、企业负责人、环保局
二级预警(橙色): 超标
- 触发条件: 监测值 > 标准值 × 1.2
- 处理要求: 24小时内整改
- 通知对象: 环保专员、企业负责人
三级预警(黄色): 接近超标
- 触发条件: 监测值 > 标准值 × 0.9
- 处理要求: 加强监测,预防超标
- 通知对象: 环保专员
预警示例:
json
{
"alert_id": "ALT202403040001",
"device_id": "WW-C001-001",
"company_name": "XX电镀厂",
"alert_time": "2024-03-04 10:30:00",
"alert_level": "orange",
"alert_type": "exceed_standard",
"indicator": "COD",
"value": 125,
"standard": 100,
"exceed_rate": "25%",
"description": "COD超标25%,请立即检查处理设施",
"status": "pending",
"notified": ["环保专员", "企业负责人"],
"actions": [
"检查废水处理设施运行状态",
"检查药剂投加是否正常",
"必要时停产整改"
]
}预警处理流程:
javascript
function checkAlert(data) {
let alerts = []
Object.keys(data.data).forEach(indicator => {
let item = data.data[indicator]
if (!item.standard) return
let exceedRate = (item.value - item.standard) / item.standard
// 一级预警
if (exceedRate >= 0.5) {
alerts.push({
level: 'red',
indicator: indicator,
value: item.value,
standard: item.standard,
exceed_rate: (exceedRate * 100).toFixed(1) + '%',
action: 'immediate'
})
sendNotification(['环保专员', '企业负责人', '环保局'], 'critical')
}
// 二级预警
else if (exceedRate >= 0.2) {
alerts.push({
level: 'orange',
indicator: indicator,
value: item.value,
standard: item.standard,
exceed_rate: (exceedRate * 100).toFixed(1) + '%',
action: 'urgent'
})
sendNotification(['环保专员', '企业负责人'], 'high')
}
// 三级预警
else if (exceedRate >= -0.1) {
alerts.push({
level: 'yellow',
indicator: indicator,
value: item.value,
standard: item.standard,
exceed_rate: (exceedRate * 100).toFixed(1) + '%',
action: 'monitor'
})
sendNotification(['环保专员'], 'normal')
}
})
return alerts
}3. 偷排识别
偷排特征:
- 夜间排放量突然增加
- 排放浓度夜间高于白天
- 非工作时间有排放
- 排放数据突然中断(关闭监测设备)
偷排识别算法:
javascript
function detectIllegalDischarge(company_id, date) {
// 1. 获取当天24小时数据
let hourlyData = getHourlyData(company_id, date)
// 2. 计算白天(8:00-18:00)和夜间(18:00-次日8:00)均值
let daytimeAvg = calculateAverage(hourlyData, 8, 18)
let nighttimeAvg = calculateAverage(hourlyData, 18, 8)
// 3. 夜间排放量明显高于白天
if (nighttimeAvg.flow > daytimeAvg.flow * 1.5) {
createAlert({
type: 'illegal_discharge_suspected',
reason: '夜间排放量异常增加',
evidence: {
daytime_flow: daytimeAvg.flow,
nighttime_flow: nighttimeAvg.flow,
increase_rate: ((nighttimeAvg.flow / daytimeAvg.flow - 1) * 100).toFixed(1) + '%'
}
})
}
// 4. 夜间浓度明显高于白天
if (nighttimeAvg.COD > daytimeAvg.COD * 1.3) {
createAlert({
type: 'illegal_discharge_suspected',
reason: '夜间排放浓度异常增加',
evidence: {
daytime_COD: daytimeAvg.COD,
nighttime_COD: nighttimeAvg.COD,
increase_rate: ((nighttimeAvg.COD / daytimeAvg.COD - 1) * 100).toFixed(1) + '%'
}
})
}
// 5. 检查数据中断
let missingHours = hourlyData.filter(h => h.status === 'offline')
if (missingHours.length > 2) {
createAlert({
type: 'device_offline_suspected',
reason: '监测设备异常离线',
evidence: {
offline_hours: missingHours.map(h => h.hour),
offline_duration: missingHours.length + '小时'
}
})
}
}4. 数据统计与上报
统计指标:
javascript
{
"company_id": "C001",
"company_name": "XX电镀厂",
"period": "2024-03",
"wastewater": {
"total_discharge": 10500,
"unit": "m³",
"indicators": {
"COD": {
"daily_avg": 82,
"monthly_avg": 85,
"max_value": 95,
"min_value": 75,
"standard": 100,
"compliance_rate": "100%",
"exceed_days": 0
},
"ammonia_nitrogen": {
"daily_avg": 11,
"monthly_avg": 12,
"max_value": 14,
"min_value": 9,
"standard": 15,
"compliance_rate": "100%",
"exceed_days": 0
}
}
},
"alerts": {
"total": 3,
"red": 0,
"orange": 1,
"yellow": 2
},
"compliance_status": "compliant"
}自动上报环保平台:
javascript
function autoReportToEPB(period) {
// 1. 获取所有企业的监测数据
let companies = getAllCompanies()
companies.forEach(company => {
// 2. 计算统计值
let stats = calculateStatistics(company.id, period)
// 3. 生成报表
let report = generateReport(stats)
// 4. 上报环保平台
let result = uploadToEPBPlatform(report)
if (result.success) {
recordReportLog(company.id, period, 'success')
} else {
recordReportLog(company.id, period, 'failed', result.error)
sendNotification('环保专员', `${company.name}数据上报失败: ${result.error}`)
}
})
}5. 设备健康管理
设备状态监控:
- 在线状态: 设备是否正常通信
- 数据质量: 数据是否异常(如长时间不变、突变)
- 校准状态: 是否到期需要校准
- 故障预警: 根据历史数据预测故障
设备健康评分:
javascript
function calculateDeviceHealth(device_id) {
let score = 100
// 1. 在线率(权重40%)
let onlineRate = getOnlineRate(device_id, 30) // 最近30天
score -= (1 - onlineRate) * 40
// 2. 数据质量(权重30%)
let dataQuality = getDataQuality(device_id, 30)
score -= (1 - dataQuality) * 30
// 3. 校准及时性(权重20%)
let lastCalibration = getLastCalibrationDate(device_id)
let daysSinceCalibration = (new Date() - lastCalibration) / (1000 * 60 * 60 * 24)
if (daysSinceCalibration > 90) {
score -= 20
} else if (daysSinceCalibration > 60) {
score -= 10
}
// 4. 故障频率(权重10%)
let faultCount = getFaultCount(device_id, 30)
score -= Math.min(faultCount * 2, 10)
return {
score: Math.max(score, 0),
level: score >= 90 ? 'excellent' : score >= 70 ? 'good' : score >= 50 ? 'fair' : 'poor',
online_rate: (onlineRate * 100).toFixed(1) + '%',
data_quality: (dataQuality * 100).toFixed(1) + '%',
days_since_calibration: daysSinceCalibration,
fault_count: faultCount
}
}技术复用度分析
可复用的技术能力(80%):
| 技术能力 | 复用场景 | 说明 |
|---|---|---|
| IoT数据采集 | ENERGY-001 水电气计量采集 | 相同的设备对接和数据采集 |
| 时序数据存储 | ENERGY-001 水电气计量采集 | 相同的时序数据库 |
| 异常检测 | ENERGY-001 水电气计量采集 | 相同的阈值预警逻辑 |
| 数据统计 | ENERGY-004 能耗分析与优化 | 相同的统计分析能力 |
需要新开发的能力(20%):
- 环保平台对接(各地环保平台接口不同)
- 偷排识别算法
- 多指标综合预警
实施方案
实施步骤
第1周: 设备选型与安装
- 梳理需要监测的企业和排放口
- 选择监测设备(国产或进口)
- 安装监测设备和数据采集器
- 配置设备参数和通信
第2周: 系统开发与对接
- 开发监测数据管理平台
- 开发预警和统计功能
- 对接环保平台接口
- 选择2-3家企业试点测试
第3周: 全面上线与培训
- 全量企业设备上线
- 培训环保专员使用系统
- 培训企业查看监测数据
- 制定应急预案
成本估算
软件成本:
- 平台开发: 约8-10万元(可复用现有平台,成本降低60%)
- 环保平台对接: 约2-3万元
- 短信推送: 0.05元/条 × 约200条/月 × 12月 = 120元/年
硬件成本:
- 废水监测设备: 8-12万元/套 × 15套 = 120-180万元
- 废气监测设备: 10-15万元/套 × 10套 = 100-150万元
- 数据采集器: 3000元/台 × 25台 = 7.5万元
- 硬件总成本: 约227.5-337.5万元
注: 硬件成本较高,可以考虑:
- 优先安装重点企业(高污染行业)
- 采用租赁模式,降低一次性投入
- 申请政府环保专项资金补贴
人力成本节省:
- 抄表时间减少100%: 约3万元/年
- 数据整理时间减少90%: 约2万元/年
- 年节省成本: 约5万元
其他收益:
- 避免环保罚款: 约10-50万元/年
- 及时发现超标,减少环境损失: 难以量化
- 提升园区环保形象,吸引优质企业: 难以量化
- 总收益: 约15-55万元/年
投资回收期: 约4-6年(不含硬件) 或 约15-22年(含硬件)
注: 由于硬件投入大,建议:
- 将监测设备成本转嫁给企业(租金包含或单独收费)
- 申请政府补贴,降低投入
- 采用分期建设,优先重点企业
预期收益
效率提升:
- 数据采集时间: 从2-3小时 → 实时自动
- 数据上报时间: 从2小时 → 5分钟(自动)
- 超标发现时间: 从1个月 → 实时
合规性提升:
- 监测覆盖率: 从30% → 100%
- 数据准确率: 从70% → 99%
- 超标发现率: 从50% → 95%
- 偷排发现率: 从10% → 80%
环保效益:
- 减少超标排放,保护环境
- 及时发现偷排,震慑违法行为
- 提升园区环保管理水平
风险与应对
技术风险
风险1: 设备故障率高
- 表现: 监测设备在恶劣环境下容易损坏
- 应对:
- 选择可靠品牌的设备
- 定期维护保养
- 购买设备保修服务
- 关键企业配备备用设备
风险2: 数据传输不稳定
- 表现: 网络信号差,数据传输中断
- 应对:
- 设备支持本地存储,网络恢复后补传
- 使用4G/5G通信,提高稳定性
- 设置数据中断预警
风险3: 环保平台接口变更
- 表现: 环保局更新平台,接口不兼容
- 应对:
- 与环保局保持沟通
- 系统设计灵活,易于调整
- 保留手工上报功能作为备用
业务风险
风险1: 企业抵触安装设备
- 表现: 企业担心被监管,不愿意安装
- 应对:
- 强调环保合规的重要性
- 说明设备可以帮助企业及时发现问题
- 政策要求,必须安装
风险2: 设备投入成本高
- 表现: 硬件成本高,园区投入压力大
- 应对:
- 优先安装重点企业
- 采用租赁模式
- 申请政府补贴
- 将成本转嫁给企业
风险3: 数据真实性质疑
- 表现: 企业质疑监测数据不准确
- 应对:
- 设备定期校准,保证准确性
- 第三方检测机构比对验证
- 数据公开透明,可追溯
实施检查清单
上线前检查
- [ ] 所有企业排放口已确认
- [ ] 监测设备已安装并校准
- [ ] 数据采集器已安装并测试
- [ ] 监测平台已开发并测试
- [ ] 环保平台接口已对接并测试
- [ ] 预警规则已配置
- [ ] 环保专员已培训
- [ ] 企业已通知
- [ ] 应急预案已制定
上线后监控
- [ ] 每日检查设备在线率
- [ ] 每日检查数据采集情况
- [ ] 每日检查预警处理情况
- [ ] 每周检查设备健康状况
- [ ] 每月核对上报数据
- [ ] 每季度设备校准
成功案例参考
某制造业园区(30家企业,25个排放口)
实施前:
- 监测覆盖率: 约30%(只有9家企业有设备)
- 数据采集时间: 每天2-3小时
- 超标发现时间: 平均1个月
- 年环保罚款: 约20-30万元
实施后(1年):
- 监测覆盖率: 100%(25个排放口全覆盖)
- 数据采集: 实时自动(节省100%人工)
- 超标发现: 实时预警(提升100%)
- 偷排发现: 3起,及时制止
- 年环保罚款: 0元(节省20-30万元)
- 环保局检查: 连续2次优秀

