一、系统需求
VOCs治理设施运行状态监控需要同时采集多类设备数据(风机、水泵、RTO、阀门等),支持多种通信协议(Modbus RTU/TCP、4-20mA、开关量),在本地完成异常判断,并将数据上传至环保监控平台。本文介绍一套基于边缘计算的监控系统设计方案。
二、硬件架构
系统以威泰普I系列智联服务器为核心,硬件配置:
• CPU:ARM Cortex-A7 四核
• 内存:512MB DDR3
• 存储:8GB eMMC(支持SD卡扩展)
• IO:4DI + 4DO + 4AI + 2RS485 + 2以太网口
• 通信:内置4G模块,支持MQTT/Modbus TCP/HTTP
• 供电:9-36V DC宽电压
• 工作温度:-35℃~75℃
传感器接入:
• 风机电流:开口式电流互感器→AI通道(4-20mA)
• RTO温度:K型热电偶→温度变送器→AI通道
• 吸附塔压差:差压变送器→RS485(Modbus RTU)
• 风机/水泵运行状态:接触器辅助触点→DI通道
• 阀门状态:限位开关→DI通道
• VOCs浓度:PID检测仪→RS485
三、软件设计
3.1 数据采集引擎
采用插件式驱动架构,支持多协议并行采集:
class DriverManager:
def init(self):
self.drivers = {}
self.rule_engine = RuleEngine()

def register_driver(self, name, driver):
    self.drivers[name] = driver
    
def start_polling(self):
    for name, driver in self.drivers.items():
        Thread(target=driver.poll_loop, daemon=True).start()

class ModbusRtuDriver:
def init(self, port, baudrate, points):
self.client = ModbusSerialClient(port, baudrate=baudrate)
self.points = points # 点表配置

def poll_loop(self):
    while True:
        for point in self.points:
            value = self.read_point(point)
            self.rule_engine.evaluate(point['name'], value)
        time.sleep(point.get('interval', 1))

点表通过JSON配置,无需修改代码即可增减监控点:
{
“name”: “fan1_current”,
“driver”: “modbus_rtu”,
“address”: 40001,
“type”: “float”,
“unit”: “A”,
“interval”: 5,
“alarm”: {“min”: 5, “max”: 50, “delay”: 10}
}
3.2 本地规则引擎
异常判断在边缘端完成,不依赖云端:
class RuleEngine:
def init(self):
self.rules = []
self.last_values = {}
self.alarm_manager = AlarmManager()

def add_rule(self, rule):
    self.rules.append(rule)
    
def evaluate(self, point_name, value):
    self.last_values[point_name] = value
    for rule in self.rules:
        if rule.match(point_name, value, self.last_values):
            self.alarm_manager.trigger(rule.alarm_info)

规则示例:生产设备运行但治理风机停止

class IdleFanRule:
def match(self, point, value, all_values):
if point == ‘fan1_status’:
production_on = all_values.get(‘production_status’, 0) == 1
fan_off = value == 0
return production_on and fan_off
return False
内置规则包括:阈值越限、通信中断、设备空转(生产开/治理关)、数据异常(超量程/跳变)、状态不一致。
3.3 数据存储与上传
本地SQLite存储分钟级数据,支持断网缓存至少3个月。网络恢复后按时间顺序批量上传至MQTT Broker:
class DataUploader:
def init(self, broker, port, client_id):
self.client = mqtt.Client(client_id)
self.client.tls_set()
self.client.username_pw_set(username, password)
self.client.connect(broker, port)
self.client.loop_start()

def upload_with_cache(self, topic, data):
    try:
        info = self.client.publish(topic, json.dumps(data), qos=1)
        if info.rc != 0:
            self.cache.save(topic, data)
    except:
        self.cache.save(topic, data)

3.4 HJ212协议对接
与环保平台通信采用HJ212-2017协议:
class HJ212Builder:
def build_data(self, mn, data_time, params):
cp_parts = []
for key, val in params.items():
cp_parts.append(f"{key}-Rtd={val:.2f}“)
cp = “&&”.join(cp_parts)
body = f"ST=32;CN=2011;PW=123456;MN={mn};”
body += f"Flag=4;CP=&&{cp}&&"
crc = self.crc16(body)
return f"##{len(body):04d}{body}{crc:04X}\r\n"
四、部署效果
系统在某化工园区12家企业部署后:
• 数据采集完整率99.3%
• 异常识别响应时间<15秒
• 断网72小时数据零丢失
• 单台边缘控制器支持50+监控点
• 企业治理设施运行率从78%提升至96%
五、总结
基于边缘计算的VOCs治理设施监控方案,将数据采集、异常判断和协议转换下沉到边缘端,降低了对云端的依赖,提高了系统可靠性。该方案同样适用于污水处理、粉尘治理等其他环保设施的运行监控。

更多推荐