配网设备故障基线检测工具
fbase.pl 使用说明

一、简介

fbase.pl 是一个针对配网设备的故障基线检测脚本,可对13项遥测参数进行阈值检测,依据检测结果辅助判别设备本体及业务故障。脚本基于 Perl 开源模块 Data::Power::FaultDetectorBase,用于电力系统的中压配电网设备状态监测与故障预警。

二、功能概述

三、依赖环境及安装

  1. 安装 Perl 及 cpanm 工具
    sudo apt-get install perl cpanminus
  2. 安装依赖模块
    cpanm Data::Power::FaultDetectorBase
    提示:相关模块已在 MetaCPAN 开源社区发布。
  3. 准备 thresholds.json 阈值文件,放置于脚本同级目录。
    (文件结构及配置请参考项目文档或示例)

四、参数说明

参数说明
i0零序电流
iaA相电流
ibB相电流
icC相电流
uaA相电压
ubB相电压
ucC相电压
uabAB线电压
ubcBC线电压
ucaCA线电压
p有功功率
q无功功率
cos功率因数

五、运行方法

$ ./fbase.pl 
Usage: ./fbase.pl i0 ia ib ic ua ub uc uab ubc uca p q cos
        

示例输入:

$ ./fbase.pl 0.99369 15.75768 6.55919 12.69153 5.96227 5.81603 5.33991 9.92822 9.96952 9.90174 123.69223 -4.84266 0.88307
欠压: 1
三相电流不平衡: 1

$ ./fbase.pl 4.48059 10.4776 9.16754 10.91725 5.92042 5.75453 5.87632 10.10727 8.11956 9.34579 155.1834 -38.88583 0.7952
线电压异常: 2
漏电流异常: 1
        

六、故障类型说明

代码故障类型
E001过流
E002欠流
E003三相电流不平衡
E004极端过流
E005漏电流异常
E101过压
E102欠压
E103三相电压不平衡
E104极端欠压
E105线电压异常
E201有功功率过高
E202有功功率过低
E203无功功率过高
E204无功功率过低
E205极端功率值
E301低功率因数
E302负功率因数
说明:脚本会根据 thresholds.json 配置自动识别故障类型编号及实际检测数量。多项异常可用于后续业务联动、设备运维和智能告警。

七、脚本主流程说明

  1. 检查 thresholds.json 阈值文件是否存在。
  2. 校验参数数量(13项遥测量)。
  3. 解析输入,生成遥测参数的 JSON 数据结构。
  4. 调用 Data::Power::FaultDetectorBase 分析基线异常。
  5. 输出各类故障类型及其数量。

八、源码参考

#!/usr/bin/perl
use strict;
use warnings;
use Data::Dumper;
use Data::Power::FaultDetectorBase;

die "no thresholds.json\n" unless -f "thresholds.json";
die "Usage: $0 i0 ia ib ic ua ub uc uab ubc uca p q cos\n" unless @ARGV == 13;

my ($i0, $ia, $ib, $ic, $ua, $ub, $uc, $uab, $ubc, $uca, $p, $q, $cos) = @ARGV;

# 故障类型
my %faults = (
  E001 => '过流', E002 => '欠流', E003 => '三相电流不平衡', E004 => '极端过流',
  E005 => '漏电流异常', E101 => '过压', E102 => '欠压', E103 => '三相电压不平衡',
  E104 => '极端欠压', E105 => '线电压异常', E201 => '有功功率过高', E202 => '有功功率过低',
  E203 => '无功功率过高', E204 => '无功功率过低', E205 => '极端功率值',
  E301 => '低功率因数', E302 => '负功率因数',
);

my $analyzer = Data::Power::FaultDetectorBase->new(
    thresholds_file => 'thresholds.json',
    output_file => 'faults.csv'
);

my $json = {
    device_id => 'FTU00123',
    timestamp => '2025-07-01 12:34:56',
    I0 => $i0, IA => $ia, IB => $ib, IC => $ic,
    UA => $ua, UB => $ub, UC => $uc,
    UAB => $uab, UBC => $ubc, UCA => $uca,
    P => $p, Q => $q, COS => $cos
};

$analyzer->process_record($json);

my $fault_summary = $analyzer->get_fault_summary();
for my $key (sort { $fault_summary->{fault_types}->{$b} <=> $fault_summary->{fault_types}->{$a} }
             keys %{$fault_summary->{fault_types}} ) {
   my $value = $fault_summary->{fault_types}->{$key};
   print "$faults{$key}: $value\n";
}
        

九、更多参考

文档更新时间:2025-07-08