一、简介
fbase.pl 是一个针对配网设备的故障基线检测脚本,可对13项遥测参数进行阈值检测,依据检测结果辅助判别设备本体及业务故障。脚本基于 Perl 开源模块 Data::Power::FaultDetectorBase,用于电力系统的中压配电网设备状态监测与故障预警。
二、功能概述
- 支持13项遥测量的基线检测与多维度故障分析
- 根据
thresholds.json
阈值配置文件判断各类故障 - 输出各类故障类型及其检测数量,便于后续业务分析
- 可扩展支持更多业务场景
三、依赖环境及安装
-
安装 Perl 及
cpanm
工具
sudo apt-get install perl cpanminus
-
安装依赖模块
cpanm Data::Power::FaultDetectorBase
提示:相关模块已在 MetaCPAN 开源社区发布。 -
准备
thresholds.json
阈值文件,放置于脚本同级目录。
(文件结构及配置请参考项目文档或示例)
四、参数说明
参数 | 说明 |
---|---|
i0 | 零序电流 |
ia | A相电流 |
ib | B相电流 |
ic | C相电流 |
ua | A相电压 |
ub | B相电压 |
uc | C相电压 |
uab | AB线电压 |
ubc | BC线电压 |
uca | CA线电压 |
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
配置自动识别故障类型编号及实际检测数量。多项异常可用于后续业务联动、设备运维和智能告警。
七、脚本主流程说明
- 检查
thresholds.json
阈值文件是否存在。 - 校验参数数量(13项遥测量)。
- 解析输入,生成遥测参数的 JSON 数据结构。
- 调用 Data::Power::FaultDetectorBase 分析基线异常。
- 输出各类故障类型及其数量。
八、源码参考
#!/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