配电智能中心核心统计模块详解

指导手册:统计规则、实现逻辑与业务定义

模块 01

FrequentOutageMonitor (频繁跳闸监控)

该模块是配电运行分析的核心,用于监控线路和具体开关的跳闸频次,支撑设备消缺和改造决策。

1. 统计规则

  • 线路统计: 基于“区局+设备名”聚合,评估整条线路的稳定性。
  • 开关统计: 基于“区局+设备名+人工回填开关”聚合,精确到具体故障点。
  • 基准: 以统计当年的 1 月 1 日为起点,计算自然年内的累计次数。

2. 告警阈值定义

监控对象累计跳闸次数告警定义 / 业务动作
同一线路3 - 4 次预警 (一级)
5 次告警 (二级) + 线路资产复飞
6 - 7 次特别告警 (三级)
≥ 8 次越限告警 (四级)
单一开关≥ 3 次资产复飞 + 9.9万改造项目入库

3. 核心代码实现

# 分组聚合时的显式字段声明
$agg_ref->{$group_key} = {
    district_bureau  => $row->{district_bureau},
    equipment_name   => $row->{equipment_name},
    # 关键:双参数拆分,防止用户对“开关”定义产生模糊
    line_switch      => $row->{line_switch},      # 调度端原始开关
    trip_switch_name => $row->{trip_switch_name}, # 人工核实后的开关
    count            => 0,
    events           => [],
};
模块 02

CustomerFaultMonitor (用户故障出门)

专门针对因用户内部资产故障导致公用电网跳闸的情况。通过该统计,管理人员可以精准锁定高风险用户。

1. 统计规则

  • 判定标准: 仅统计回填表中 fault_major_category 为“用户故障出门”的记录。
  • 聚合主体: 按照“区局+线路+用户名称(user_fault_exit)”进行计数。
  • 数据来源: 数据已在 dispatch_logs_dedup 完成 6 小时时间窗去重。

2. 告警级别

累计次数业务级别处置建议
2 次预警告知用户检查其侧保护定值
≥ 3 次告警纳入资产复飞,建议停电整改

3. 代码片段

# 数据采集逻辑:严格过滤非空用户名称
my $sql = qq{
    SELECT ... 
    FROM dispatch_logs_dedup d
    INNER JOIN dispatch_logs_backfilling b ON d.id = b.dispatch_logs_id
    WHERE b.fault_major_category = ? 
    AND b.user_fault_exit IS NOT NULL
};

# 结果包统一参数结构
my $packet = {
    customer_name    => $data->{customer_name},
    line_switch      => $data->{line_switch},
    trip_switch_name => $data->{trip_switch_name},
    count            => $count,
};
模块 03

ThirdPartyDamageMonitor (第三方外破)

统计因施工、吊车碰线、异物挂线等第三方责任引起的跳闸。用于指导运维班组加强特定地段的防外破巡视。

1. 统计规则

  • 过滤逻辑: third_party_liability 字段必须标记为“是”。
  • 统计维度: 以“区局+线路名称”作为聚合键。
  • 作用: 识别外破多发的重点区段(黑点)。

2. 告警阈值

3. 统一参数包 (Packet)

# 无论统计维度为何,最终返回给前端的明细包均保持结构一致
my $packet = {
    district_bureau  => $data->{district_bureau},
    equipment_name   => $data->{equipment_name},
    # 统一参数:即使外破统计主要看线路,也要带出具体的开关信息
    line_switch      => $data->{line_switch},       
    trip_switch_name => $data->{trip_switch_name},  
    count            => $count,
};

💡 核心逻辑:窗口触发过滤算法 (Window Triggering)

为了保证“每日报表”只展示今日受影响的设备,同时又不丢失其年度历史背景,三个模块统一采用了以下算法:

  1. 加载历史: 根据当前查询日期,自动追溯到本年 1 月 1 日,加载该设备的所有历史跳闸。
  2. 区间触发判定:

    遍历所有事件,检查是否有至少一条记录落在用户选定的 [start_dt, end_dt](通常是当日)内。

  3. 逻辑决定:
    • 若落在窗口内:保留该组,显示其 年度累计次数
    • 若未落在窗口内:说明该设备今日未跳闸,从本次分析结果中静默删除

价值: 解决了“历史跳闸多”与“今日关注点”的矛盾,让报表具备极强的实战指导意义。