拓冰建站拓冰建站
首页 / 资讯中心 / 正文

0.4kV低压配电智能监控:基于Modbus RTU的数据采集与告警

简介面向电力系统自动化运维人员与电气工程专业学习者这份 PDF 聚焦低压配电系统智能监控平台的搭建针对传统人工抄录负荷易出错、设备运行状态无法实时获取等痛点给出从硬件选型到通信组网的完整思路。文件仅 1 个为约 212KB 的 PDF 文档便于随时翻阅、打印与检索。目前已有 107 人学习下载。正文以 Control Logix 硬件切入说明电源、主机架、DI/DO 模块与 24V 独立供电的作用并介绍 AWC 多回路监控装置统一采集分路电流、功率及开关状态的用法软件部分讲解 RSLogix5000 的故障定位优势与盘柜位置、电气设备状态的设定方法。信号采集环节交代电流互感器配合采集器实现远程传输、抽屉柜未内置互感器时的补偿做法以及有源信号经中间继电器转为无源信号接入 DI/DO 的思路通信环节梳理电磁兼容系统与 Modbus 总线模块的连接并给出计算精度提升、信息及时传递、超前维护预警与故障率下降等成效文末参考文献可延伸查阅。1. 低压配电系统智能监控系统搭建从 0.4kV 柜内一块多功能表说起一个 10kV 变电所下面的低压配电房通常摆着十几面 0.4kV 柜子两面进线、一面母联、七八面馈线、两面电容补偿再带几个双电源切换箱。值班电工拿着钳形表挨个测电流、抄电表读数一圈下来大半个小时拿到的还只是抽查时刻的数值母线搭接温度、谐波畸变、中性线电流、剩余电流这些真正要命的指标靠人巡基本发现不了。低压配电系统智能监控系统搭建要做的就是把这些量按固定周期自动采上来多功能电力仪表出电压、电流、功率、电能温度传感器盯母排搭接和电缆接头剩余电流互感器盯绝缘劣化开关量模块盯断路器分合位数据经 RS-485 汇到网关再进时序库存起来最后变成告警、曲线和日报。适合企业电气运维、成套厂做二次设计的人、配电房改造的集成商以及想从零练一遍工业数据采集的开发者。2. 低压配电监控测点梳理与硬件选型2.1 按运维动作倒推从一次系统图拆出四类测点低压监控最容易走偏的地方是能测的都测。一台带谐波分析的多功能表比普通表贵出一截如果那条回路下面是照明和插座装上去也只是多堆几千条没人看的曲线。靠谱的做法是拿一次系统图逐面柜子过一遍问一句这个数据超标之后运维会做什么动作会拉闸、会换件、会报修、会算电费才值得采。按这个标准测点归成四类就够用。电气量是所有回路的标配三相电压电流、有功无功视在功率、功率因数、频率、有功电能进线柜再加最大需量。电能质量和电气量不完全重合只装在进线和已知的谐波源回路上比如变频器集中供电的馈线、UPS 输出、电容补偿柜主要看电压电流总畸变率和三相不平衡度。状态量盯的是断路器辅助触点、手车位置、弹簧储能、ATS 双电源的当前工作侧这类信号不能靠轮询慢慢读必须变位上送。环境量最容易漏母排搭接处和电缆接头温度、电容柜内温湿度、出线回路的剩余电流恰恰是低压柜起火前最后几个能抓住的信号。测点类别典型位置采样周期上报方式电气量进线、母联、馈线、补偿柜1 至 5 秒周期上报有功电能所有计量回路60 秒周期上报整点冻结电能质量进线、谐波源馈线、补偿柜3 至 10 秒周期上报温度母排搭接、电缆接头、电容柜30 至 60 秒周期上报越限加速剩余电流出线回路、移动设备插座回路1 至 5 秒周期上报开关量断路器辅助触点、ATS 位置事件触发变位上送采样周期不是拍脑袋定的。电气量取 1 至 5 秒是为了让短路和过载的暂态过程在曲线上还看得出形状要是压到 100 毫秒一条 485 总线上的表根本轮不过来数据反而更少。电能取 60 秒因为电度本身是累积量抄太勤只是浪费带宽。温度取 30 至 60 秒是因为母排温升是分钟级的过程但一旦越限采集端要能自动把周期压到 5 秒去追趋势。2.2 多功能电力仪表、测温与剩余电流传感器的选型参数多功能电力仪表的选型先看三件事精度等级、接线方式、通信协议。进线计量回路一般选有功电能 0.5S 级、电压电流 0.2 级馈线回路 1 级就够全部选 0.5S 是白花钱。接线方式要跟现场对上三相四线选三元件接法三相三线选两元件接错了功率因数会一直显示 0.5 左右这个坑在调试期特别常见。通信上绝大多数的低压表走 RS-485 半双工、Modbus RTU波特率支持 9600 到 38400少数带以太网口的上 Modbus TCP。CT 变比要能在表里设置否则换一次互感器就得换表。测温这块分有源和无源两类。低压柜空间相对宽松可以用 PT100 加温度变送器输出 4 至 20 毫安或直接走 485母排搭接点位置刁钻、布线困难的用无源无线测温靠感应取电或声表面波工作节点直接贴在搭接面上。选的时候注意测温范围要覆盖到 125 摄氏度以上低压柜内长期 70 至 80 度是常态量程卡在 100 度会提前饱和。注意电流互感器二次侧在任何情况下都不允许开路带电拆接线前必须先短接二次端子。剩余电流监测要看动作值和报警值分不分。消防和人身防护相关的回路按 30 毫安动作普通出线回路多数按 300 毫安到 500 毫安报警用来发现绝缘缓慢劣化。零序电流互感器要把三相和中性线一起穿过去只穿三根相线在带单相负载的回路里会读到假数值。2.3 RS-485 单总线能挂多少台表容量估算与网关选型RS-485 号称能挂 32 台甚至 128 台但实际能挂多少取决于轮询周期。一次 Modbus RTU 往返的时间大概是请求帧加响应帧的字节数乘以每个字节 11 位1 起始位加 8 数据位加 1 停止位再算上帧间静默的余量除以波特率。以读 20 个保持寄存器为例请求 8 字节、响应 45 字节合计 53 字节9600 波特率下约 61 毫秒加上仪表内部处理时间和帧间间隔工程上按 80 到 100 毫秒算一台。波特率单台往返估算24 台轮询一轮建议单总线设备数960080 至 100 毫秒2.0 至 2.4 秒不超过 24 台1920045 至 60 毫秒1.1 至 1.4 秒不超过 32 台3840030 至 40 毫秒0.8 至 1.0 秒不超过 48 台11520015 至 20 毫秒0.4 至 0.5 秒需要高质量屏蔽线缆表里给的建议台数是留了重试余量的。如果一轮 24 台要 2.4 秒其中一台超时重试两次这一轮就变成 4.5 秒整条总线的实时性一起被拖垮。所以配电房里的常见做法是按柜列分总线一面进线柜加相邻几面馈线柜走一条 485两条总线各挂一台串口服务器反而比拉一根长线串到底稳。网关选型看三层需求。只要把串口转成以太网给上位机读串口服务器就够要在本地做协议转换、断线缓存、越限判断选边缘网关注意看它支持不支持 Modbus 主站模式和本地存储容量配电房断网几小时是常事缓存至少要能存 7 天要跑组态画面或本地数据库直接上无风扇工控机性价比更高但要注意防护等级配电房粉尘大。2.4 用 YAML 描述采集点表把手册地址变成可维护配置仪表手册上的寄存器地址表是整个工程最容易出错的地方。把地址硬编码进程序改一次点表就得重新发版所以从一开始就把点表抽成配置文件。gateway: id: LV-DB01 protocol: modbus-rtu serial: port: /dev/ttyUSB0 baudrate: 9600 bytesize: 8 parity: N # 无校验绝大多数低压表默认 stopbits: 1 timeout: 1.0 # 单帧响应超时秒 retries: 2 retry_backoff: 0.3 # 重试间隔秒 devices: - name: 1AA1-进线柜 slave_id: 11 model: pm-meter points: - {key: ua, fc: 3, addr: 0x0000, count: 1, dtype: u16, scale: 0.1, unit: V} - {key: ub, fc: 3, addr: 0x0001, count: 1, dtype: u16, scale: 0.1, unit: V} - {key: uc, fc: 3, addr: 0x0002, count: 1, dtype: u16, scale: 0.1, unit: V} - {key: ia, fc: 3, addr: 0x0004, count: 1, dtype: u16, scale: 0.01, unit: A} - {key: p, fc: 3, addr: 0x0010, count: 2, dtype: f32, scale: 0.001, unit: kW, order: ABCD} - {key: pf, fc: 3, addr: 0x0016, count: 1, dtype: i16, scale: 0.001, unit: } - {key: ep, fc: 3, addr: 0x0020, count: 2, dtype: u32, scale: 0.01, unit: kWh}这份点表里每个字段都有明确分工fc是功能码3 表示读保持寄存器2 是读离散输入1 是读线圈addr写成十六进制跟手册对得上count是该量占用的寄存器个数浮点数和 32 位整数占 2 个dtype决定解析方式scale是工程值缩放系数仪表返回整数 2201 乘 0.1 就是 220.1 伏。order只在多寄存器类型上用标的是字节序。提示点表文件建议纳入版本管理每次现场改地址都留一次提交记录半年后回去查这条曲线为什么断了一段时能救命。3. 用 Modbus RTU 打通第一台仪表的采集链路3.1 RS-485 手拉手接线与串口参数核对先把物理层弄对再谈软件。485 总线必须是手拉手的菊花链从串口服务器出来依次穿过每台表的 A、B 端子不能在柜内随便分叉成星形分支长度最好控制在几十厘米内。A 接 A、B 接 B不同厂家的 A/B 标注有反的接反了现象是收不到任何响应但用万用表量电压又正常很容易误判成表坏了。屏蔽层只在网关侧单端接地两端都接会形成地环流通信反而更差。线缆走向要离动力电缆 200 毫米以上实在躲不开就垂直交叉别平行走几米。总线首末两端各并一个 120 欧姆终端电阻中间设备不接。线长超过 1200 米或者设备超过 32 台加 485 中继器分段。上电后先在操作系统层面确认串口能用# 查看 USB 转串口设备是否被识别 ls -l /dev/ttyUSB* # 把当前用户加入串口设备组避免每次都要 sudo sudo usermod -aG dialout $USER # 查看当前串口参数确认波特率与仪表一致 stty -F /dev/ttyUSB0 -a # 手工设置一次参数用于快速验证 stty -F /dev/ttyUSB0 9600 cs8 -cstopb -parenb raw这几条命令的作用分别是确认设备节点存在且驱动正常解决权限问题改完组要重新登录才生效读出当前波特率、数据位、校验位、停止位跟仪表说明书逐项比对手工设一遍参数做连通性验证。如果stty -a读出来的波特率跟仪表不一致后面所有读操作都会超时而且现象跟接线错误完全一样先排除这一条能省很多时间。3.2 pymodbus 读取三相电压电流的最小可运行脚本物理层通了用几十行代码就能拿到第一个真实数据。import logging from pymodbus.client import ModbusSerialClient logging.basicConfig(levellogging.INFO) # 串口参数必须与仪表菜单中的设置完全一致 client ModbusSerialClient( port/dev/ttyUSB0, baudrate9600, bytesize8, parityN, stopbits1, timeout1.0, # 单帧等待响应的最长时间 retries2, # 传输层重试次数 ) if not client.connect(): raise SystemExit(串口打开失败检查端口占用与权限) SLAVE_ID 11 # 对应 1AA1-进线柜总线内不能重复 BASE_ADDR 0x0000 COUNT 8 try: rr client.read_holding_registers( addressBASE_ADDR, countCOUNT, slaveSLAVE_ID ) if rr.isError(): print(从站返回异常码:, rr) else: regs rr.registers ua, ub, uc regs[0] * 0.1, regs[1] * 0.1, regs[2] * 0.1 ia, ib, ic regs[4] * 0.01, regs[5] * 0.01, regs[6] * 0.01 print(f电压 {ua:.1f}/{ub:.1f}/{uc:.1f} V) print(f电流 {ia:.2f}/{ib:.2f}/{ic:.2f} A) finally: client.close()代码的逻辑是建立串口客户端连不上直接退出避免后面抛出一堆看不懂的异常一次读连续 8 个寄存器比一个量读一次的效率高几倍拿到寄存器数组后按点表里的缩放系数换算成工程值。几个参数需要重点说明。slave是仪表地址新版 pymodbus 用这个参数名老版本里叫unit报unexpected keyword argument时换过来就行。address这里是 PDU 地址也就是协议层的零基地址如果手册上写的是 40001 这种 Modbus 数据模型地址要减 40001 才是这里的值写成 0x0000。count不要超过仪表允许的单次读取上限很多低压表限制在 125 个寄存器以内超了会直接返回异常码 3。retries是传输层重试跟后面调度层的业务重试不是一回事这里设 2 次足够设多了只会让故障时的轮询更慢。3.3 寄存器地址偏移与字节序读出来是天文数字怎么办调试期最典型的两种现象都能归到这一节。第一种是读到的值整体偏大或偏小十倍百倍那是scale没对上或者手册用的是 Modbus 数据模型地址需要减偏移。第二种是单相量读出来正常功率、电能这类 32 位浮点数读出来是 1e38 或者 0.0000 这种离谱值那是字节序反了。常见量手册地址示例PDU 地址寄存器数类型缩放A 相电压400010x00001u160.1A 相电流400050x00041u160.01总有功功率400170x00102f320.001功率因数400230x00161i160.001正向有功电能400330x00202u320.01电压总谐波畸变率400810x00501u160.0135 位浮点数的字节序有四种排法仪表厂家各不相同判断方法是对着同一时刻仪表屏幕上显示的值去试import struct def parse_f32(regs, orderABCD): regs 是两个 16 位寄存器按指定字节序解析成 float32 if order ABCD: # 高字在前字内高字节在前大端 raw struct.pack(HH, regs[0], regs[1]) elif order CDAB: # 字交换字内字节序不变 raw struct.pack(HH, regs[1], regs[0]) elif order BADC: # 字内字节交换 raw struct.pack(HH, regs[0], regs[1]) elif order DCBA: # 全交换小端 raw struct.pack(HH, regs[1], regs[0]) else: raise ValueError(未知字节序: %s % order) return struct.unpack(f, raw)[0]逻辑上先把两个寄存器按次序拼成 4 个字节再用f统一按大端解析成浮点数四种组合覆盖了绝大多数仪表的实现。参数order只要在点表里配一次以后同型号表直接复用。实测时建议在负荷稳定、功率读数不为零的时段去对空载时功率接近零四种字节序算出来可能都像差不多分辨不出来。注意有功电能通常是无符号 32 位整数用 i32 解析在数值超过 21 亿时会翻负0.01 的电度单位下相当于 2147 万度长期运行的回路一定会碰到。3.4 轮询调度、超时重试与断线缓存单台表读通之后工程上要解决的是几十台表在同一条总线上互不干扰。核心原则是串行轮询、单点超时不拖累全局、失败时本地留痕。import time, sqlite3, logging from collections import defaultdict class Poller: def __init__(self, client, devices, max_fail3, cache_dbcache.db): self.client client self.devices devices # 点表里解析出来的设备列表 self.max_fail max_fail self.fail_count defaultdict(int) self.offline set() self.db sqlite3.connect(cache_db) self.db.execute( CREATE TABLE IF NOT EXISTS cache( ts INTEGER, dev TEXT, key TEXT, value REAL) ) def poll_once(self): for dev in self.devices: if dev[name] in self.offline: continue # 已判离线等恢复探测 try: regs self.read_block(dev) self.publish(dev, regs) self.fail_count[dev[name]] 0 except Exception as e: self.fail_count[dev[name]] 1 logging.warning(%s 读取失败: %s, dev[name], e) if self.fail_count[dev[name]] self.max_fail: self.offline.add(dev[name]) logging.error(%s 标记离线, dev[name]) time.sleep(0.3) # 重试间隔给从站恢复时间 def publish(self, dev, regs): ts int(time.time()) for p in dev[points]: value self.decode(regs, p) # 按 dtype/scale/order 解析 try: self.push(dev[name], p[key], value, ts) except Exception: # 上行通道不通先落本地缓存 self.db.execute( INSERT INTO cache VALUES(?,?,?,?), (ts, dev[name], p[key], value), ) self.db.commit() def resend_cache(self, limit2000): rows self.db.execute( SELECT rowid, ts, dev, key, value FROM cache LIMIT ?, (limit,) ).fetchall() for rowid, ts, dev, key, value in rows: try: self.push(dev, key, value, ts) self.db.execute(DELETE FROM cache WHERE rowid?, (rowid,)) except Exception: break # 上行仍不可用保留缓存下轮再试 self.db.commit()调度逻辑的关键点在于max_fail设为 3意味着连续三次读失败才判定离线避免一次偶发干扰就触发大面积告警判离线之后不再参与轮询等一个单独的探测任务去恢复防止一台坏表把整轮时间拖长time.sleep(0.3)的重试间隔不能省从站在掉电重启或通信紊乱时需要时间恢复立刻重试基本是白试。缓存部分用 SQLite 而不是内存队列是因为配电房断电重启很常见内存队列一重启就全丢了。表结构只存时间戳、设备、点号、数值四列简单但够用。resend_cache每次取 2000 条推成功就删推失败就保留这个顺序保证不会丢数据代价是极端情况下可能重复上报下游做幂等处理即可。4. 数据入库、越限告警与组态画面的落地配置4.1 时序库建表与降采样策略低压配电的数据特征是测点多、频率固定、写多读少用关系库硬扛几十万点的日增数据会很快撑不住时序库是常规选择。以 TDengine 为例一张超级表管所有同类型的回路子表按设备自动建。-- 建库保留期按 365 天缓存块按一天的数据量估 CREATE DATABASE lvmon KEEP 365 DURATION 10 BUFFER 96; USE lvmon; -- 超级表一条记录就是某台设备某个时刻的一组电气量 CREATE STABLE meter_reading ( ts TIMESTAMP, ua FLOAT, -- A 相电压 V ub FLOAT, uc FLOAT, ia FLOAT, -- A 相电流 A ib FLOAT, ic FLOAT, p_total FLOAT, -- 总有功功率 kW pf FLOAT, -- 功率因数 ep_forward BIGINT, -- 正向有功电能 0.01kWh temp_max FLOAT -- 该柜最高测温点 摄氏度 ) TAGS ( cabinet NCHAR(32), -- 柜号如 1AA1 district NCHAR(32) -- 区域如 一号配电房 ); -- 子表由采集程序自动创建也可手工建 CREATE TABLE IF NOT EXISTS d_1aa1 USING meter_reading TAGS (1AA1, 一号配电房); -- 降采样原始秒级数据留 30 天分钟级留 1 年 CREATE STREAM s_meter_1m INTO meter_reading_1m AS SELECT _wstart, AVG(ia), AVG(p_total), MAX(temp_max) FROM meter_reading PARTITION BY tbname INTERVAL(1m);建库参数里KEEP 365决定数据保留天数DURATION 10是每个数据文件覆盖的时间跨度配电房这种写多读少的场景取 10 天比较合适文件太大压缩率反而下降。超级表的列设计要一次定好后面加减列能用ALTER STABLE但历史数据那条列是空的。TAGS里放柜号和区域查询时按标签过滤比按表名拼字符串可靠得多。降采样流的分层是必要的原始秒级数据每天每台表就有 8 万多条一个配电房 30 台表一年下来过亿条全量留着查询会很慢。经验上的分层是秒级原始数据留 30 天用于事故追溯分钟级聚合留 1 年用于日报和趋势15 分钟的最大需量留 3 年因为需量考核周期本身就是 15 分钟而且要和电费账单对得上。提示如果现场最终选了 InfluxDB写入走行协议时把柜号和区域放在 tag 里把测量值放 field 里顺序是 measurement,tagvalue fieldvalue timestamptag 的取值要控制基数别把时间戳或递增序号当 tag。4.2 越限告警、需量预警与告警抑制低压配电的告警规则本身不复杂难的是不刷屏。一条出线回路在电机启动的瞬间电流冲到额定值好几倍如果用瞬时值直接判越限一次启动能报出十几条告警。规则表里必须带持续时间和死区两个维度。规则名称判据持续时间死区级别过流报警I 大于额定值 1.1 倍10 秒回差 5%一般过流跳闸预警I 大于额定值 1.3 倍3 秒回差 5%严重三相不平衡大于 15%30 秒回差 3%一般电压偏差超出正负 7%20 秒回差 2%一般母排温度大于 70 摄氏度60 秒回差 5 度严重剩余电流大于 300 毫安10 秒回差 20%严重需量预警预测需量大于合同值 90%15 分钟窗口无一般from collections import deque class Debounce: 持续 N 秒超限才触发回落到死区以下才复位 def __init__(self, limit, hold_sec, deadband_ratio): self.limit limit self.hold_sec hold_sec self.deadband limit * deadband_ratio self.samples deque() # 存 (ts, value) self.active False def push(self, ts, value): self.samples.append((ts, value)) while self.samples and ts - self.samples[0][0] self.hold_sec: self.samples.popleft() if not self.active: # 窗口内所有采样都越限且覆盖时间足够才置位 full (self.samples[-1][0] - self.samples[0][0]) self.hold_sec if full and all(v self.limit for _, v in self.samples): self.active True return raise else: # 回落到限值减去死区以下才复位 if value self.limit - self.deadband: self.active False return clear return Nonehold_sec就是规则表里的持续时间过流报警设 10 秒意味着启动冲击只要不持续到 10 秒就不会报这一条能过滤掉现场八成的无效告警。deadband_ratio是回差过流报警限值 1.1 倍额定、回差 5% 时电流要降回到 1.05 倍以下才复位避免在限值附近反复触发和复归。返回的raise和clear两个事件交给告警服务去做抑制和合并。需量预警稍微特殊它不是瞬时量的判断。常见做法是在 15 分钟的固定窗口里滚动计算用已累计的电能除以已过去的时间再乘 900 秒得到本窗口的预测需量。预测值超过合同需量的 90% 就发预警运维有时间去切非关键负荷比直接超了再去交罚金划算。注意窗口要和供电公司的结算周期对齐很多地方是整点或半点起算对不齐算出来的需量没意义。4.3 组态画面与运行日报要放的字段组态画面分三级比较符合低压配电的实际使用习惯。总览页放整个配电房的一次系统单线图每面柜子显示实时电流和断路器位置颜色只用三种正常、越限、通信中断颜色多了值班员反而看不懂。单柜页放该柜的全部电气量、温度曲线、剩余电流曲线以及最近 24 小时的告警记录。趋势页做多回路电流对比和历史电能查询。页面必放字段数据来源刷新周期总览进线总电流、总功率、各柜状态色实时库最新值2 至 5 秒单柜三相电压电流、功率因数、温度最大值、剩余电流实时库最新值2 至 5 秒趋势电流曲线、温度曲线、电能累积分钟级聚合表30 至 60 秒日报最大需量及出现时刻、电能日增量、告警次数统计小时/天聚合表每日定时生成日报里最值得保留的是最大需量和它的出现时刻。低压配电房扩容或者调整运行方式靠的就是这个数据来判断现有容量还剩多少余量。功率因数考核也要按班次或按日统计低压侧补偿柜如果投切不正常功率因数掉到 0.9 以下会被考核这条曲线在日报里比在实时画面上更容易看出规律。告警次数统计要按规则名分组一周下来哪条规则报了上百次不是设备真有问题就是阈值该调了。5. 上线调试期的排错顺序与两个调参技巧5.1 三类高频故障按这个顺序查调试期遇到的故障八成集中在通信、数值、告警三类排查顺序不要凭感觉。现象优先怀疑定位手段全部设备读不到串口参数、接线极性、终端电阻用调试工具单点轮询量 A/B 间电压单台设备读不到从站地址重复、该表波特率不同断开其他表单独试核对表内菜单偶发超时总线过长、未接地屏蔽层、变频器干扰换波特率、加中继器、检查屏蔽接地数值偏大偏小缩放系数、地址偏移与表面板读数逐项对照浮点数离谱字节序、寄存器个数四种字节序逐个试确认是否 f32功率因数恒定 0.5三相三线/四线接法选错查表内接线方式设置告警刷屏持续时间内未加、无回差查规则表 hold_sec 与死区先查全部读不到还是单台读不到这一步能立刻把范围缩到物理层还是单表配置。全断的情况里A/B 接反和波特率不一致占了大多数用万用表量 A、B 之间的静态电压正常应该在 1 伏上下如果接近 0 或者 5 伏基本可以判定接线或驱动问题。单台读不到先确认该表的从站地址有没有和别的表撞号现场改地址漏改是很常见的。5.2 把轮询分组和告警死区调对总线负载能降一半当表数量上去之后均匀轮询会让整条总线的实时性越来越差。我一般会按重要性分组进线柜和母联柜放快组1 秒一轮馈线柜放慢组5 秒一轮电容柜和只抄电能的回路放最慢组60 秒一轮。三组各自维护自己的轮询队列快组失败两次才降速慢组可以容忍更多失败。第二个技巧是给所有模拟量告警加死区给所有开关量告警加防抖时间。开关量抖动在 ATS 切换和断路器储能过程中特别明显加 300 到 500 毫秒的确认时间就能消掉大部分误报。这两个参数调好之后同一条总线上的有效轮询次数明显下降告警数量通常也能从每天上百条降到个位数值班员才愿意继续看这个系统。本文还有配套的精品资源点击获取
分享:

看完干货,该让你的企业上线了

免费需求沟通 · 48 小时内出具建站方案 · 河南本地可上门