File Coverage

blib/lib/Data/Power/Inspection.pm
Criterion Covered Total %
statement 21 65 32.3
branch 0 10 0.0
condition 0 6 0.0
subroutine 7 13 53.8
pod 0 6 0.0
total 28 100 28.0


line stmt bran cond sub pod time code
1             package Data::Power::Inspection;
2              
3 1     1   115446 use strict;
  1         3  
  1         55  
4 1     1   9 use warnings;
  1         9  
  1         73  
5 1     1   5 use Exporter qw(import);
  1         2  
  1         46  
6 1     1   601 use Data::Dumper;
  1         9238  
  1         120  
7 1     1   12 use List::Util qw(first);
  1         25  
  1         95  
8 1     1   593 use utf8;
  1         258  
  1         6  
9 1     1   820 use open qw(:std :utf8);
  1         1219  
  1         10  
10              
11             binmode(STDOUT, ":utf8");
12              
13             =encoding utf8
14              
15             =head1 NAME
16              
17             Data::Power::Inspection - Power Equipment Fault Inspection and Troubleshooting Library
18              
19             =head1 VERSION
20              
21             Version 0.07
22              
23             =cut
24              
25             our $VERSION = '0.07';
26              
27             our @EXPORT_OK = qw(
28             get_inspection_rules
29             get_rules_by_device
30             get_rules_by_data_source
31             get_rules_by_priority
32             get_replaceable_inspection_rules
33             get_equipment_fault_criteria
34             );
35              
36             # 知识库结构化数据
37             my $inspection_knowledge = {
38             # 柱上开关类设备的巡检规则
39             '柱上开关' => {
40             '开关本体' => {
41             # 一级规则:储能指示检查
42             '储能指示检查' => {
43             description => '观察储能指示牌、调阅储能遥信状态',
44             problem => '操动机构未储能',
45             replaceable => 1,
46             algorithm => '弹簧未储能或弹簧已储能的反信号触发,且30S后信号没有复归,判断异常',
47             data => [
48             {
49             content => '开关SOE告警信息(弹簧未储能、弹簧已储能)',
50             source => '配网主站OCS系统',
51             frequency => '实时(遥信)',
52             business_mode => '监',
53             priority => 1,
54             }
55             ]
56             },
57            
58             # 一级规则:开关分合位置检查
59             '开关分合位置检查' => {
60             description => '查看开关实际位置和配电终端监测到的位置,核对两者是否一致',
61             problem => '接线错误或装置组态配置错误,如取反或关联了错误开入信号,导致开关分合位置错误',
62             replaceable => 1,
63             algorithm => '分闸遥信与合闸遥信同时存在或同时不存在判断异常',
64             data => [
65             {
66             content => '开关SOE告警信息(分闸遥信)',
67             source => '配网主站OCS系统',
68             frequency => '实时(遥信)',
69             business_mode => '监',
70             priority => 1,
71             },
72             {
73             content => '开关SOE告警信息(合闸遥信)',
74             source => '配网主站OCS系统',
75             frequency => '实时(遥信)',
76             business_mode => '监',
77             priority => 1,
78             }
79             ]
80             },
81            
82             # 一级规则:分位有流检查
83             '分位有流检查' => {
84             description => '查看开关实际位置和配电终端监测到的位置,核对两者是否一致',
85             problem => '接线错误或装置组态配置错误,如取反或关联了错误开入信号,导致开关分合位置错误',
86             replaceable => 1,
87             algorithm => '分位有流,合位无流(一次电流<3A除外)判断异常',
88             data => [
89             {
90             content => '开关SOE告警信息(分闸遥信)',
91             source => '配网主站OCS系统',
92             frequency => '实时(遥信)',
93             business_mode => '监',
94             priority => 1,
95             },
96             {
97             content => '开关SOE告警信息(合闸遥信)',
98             source => '配网主站OCS系统',
99             frequency => '实时(遥信)',
100             business_mode => '监',
101             priority => 1,
102             },
103             {
104             content => '遥测信息(电流值)',
105             source => '配网主站OCS系统',
106             frequency => '15分钟(遥测)',
107             business_mode => '监',
108             priority => 1,
109             }
110             ]
111             },
112            
113             # 一级规则:控制回路断线检查
114             '控制回路断线检查' => {
115             description => '人工肉眼观察检查',
116             problem => '接线虚接或松动',
117             replaceable => 1,
118             algorithm => '触发控制回路断线信号判断异常(无法判断是否本体侧)',
119             data => [
120             {
121             content => '开关SOE告警信息(控制回路)',
122             source => '配网主站OCS系统',
123             frequency => '实时(遥信)',
124             business_mode => '监',
125             priority => 1,
126             }
127             ]
128             },
129            
130             # 一级规则:开关操动机构卡涩情况检查
131             '开关操动机构卡涩情况检查' => {
132             description => '日常巡视时通过肉眼观察外观做初步判断,观察开关结构是否锈蚀,检修时遥控操作试验观察判断',
133             problem => '开关操动机构卡涩,分合闸速度变慢',
134             replaceable => 1,
135             algorithm => '保护动作信号与分闸遥信时间差大于100ms判断异常',
136             data => [
137             {
138             content => '开关动作SOE告警信息(保护装置保护动作信号SOE)',
139             source => '配网主站OCS系统',
140             frequency => '实时(遥信)',
141             business_mode => '监',
142             priority => 1,
143             },
144             {
145             content => '开关SOE告警信息(分闸遥信)',
146             source => '配网主站OCS系统',
147             frequency => '实时(遥信)',
148             business_mode => '监',
149             priority => 1,
150             }
151             ]
152             },
153            
154             # 一级规则:开关拒动情况检查
155             '开关拒动情况检查' => {
156             description => '开关保护动作却不分闸',
157             problem => '开关拒动(保护动作不分闸)',
158             replaceable => 1,
159             algorithm => '自动化开关上送保护动作信号、未上送分闸遥信信号',
160             data => [
161             {
162             content => '保护动作信号',
163             source => '配网主站OCS系统',
164             frequency => '实时(遥信)',
165             business_mode => '监',
166             priority => 1,
167             },
168             {
169             content => '开关动作SOE告警信息(遥控分闸指令出口SOE)',
170             source => '配网主站OCS系统',
171             frequency => '实时(遥信)',
172             business_mode => '监',
173             priority => 1,
174             }
175             ]
176             },
177            
178             # 一级规则:开关拒动(遥控执行不分闸)
179             '遥控执行不分闸检查' => {
180             description => '开关遥控执行却不分闸',
181             problem => '开关拒动(遥控执行不分闸)',
182             replaceable => 1,
183             algorithm => '采集到"开关拒动"告警信号且未上送分闸遥信信号,判为异常',
184             data => [
185             {
186             content => '开关拒动告警信号',
187             source => '配网主站OCS系统',
188             frequency => '实时(遥信)',
189             business_mode => '监',
190             priority => 1,
191             note => '开关不上送遥控出口信号,2022年后标准有"开关拒动"告警信号',
192             },
193             {
194             content => '开关SOE告警信息(分闸遥信)',
195             source => '配网主站OCS系统',
196             frequency => '实时(遥信)',
197             business_mode => '监',
198             priority => 1,
199             }
200             ]
201             },
202            
203             # 三级规则:本体红外温度检查
204             '本体红外温度检查' => {
205             description => '人工红外测温',
206             problem => '设备发热严重',
207             replaceable => 1,
208             algorithm => '参照缺陷库\n设备接头发热烧红、变色(实测温度>90℃或相间温差>30K ) 紧急',
209             data => [
210             {
211             content => '红外测温信息',
212             source => '物联网系统',
213             frequency => '15分钟',
214             business_mode => '监',
215             priority => 3,
216             note => '物联网平台采集对应设备的信息较少,考虑选配单兵智能测试仪器',
217             }
218             ]
219             },
220            
221             # 三级规则:本体局放检查
222             '本体局放检查' => {
223             description => '人员到现场使用局放仪测量设备本体局放值',
224             problem => '设备内部不同电介质之间的界面上产生的高部电荷积聚,可能导致设备的损坏和故障',
225             replaceable => 1,
226             algorithm => '局放≥20db,判断异常',
227             data => [
228             {
229             content => '局放值',
230             source => '物联网系统',
231             frequency => '15分钟',
232             business_mode => '巡',
233             priority => 3,
234             note => '物联网平台采集对应设备的信息较少,考虑选配单兵智能测试仪器',
235             }
236             ]
237             }
238             },
239            
240             'PT' => {
241             # 二级规则:PT断线告警检查
242             'PT断线告警检查' => {
243             description => '人员到现场通过肉眼观察接线,用适当力度拉扯接线检查是否牢固;或人工检查信号。',
244             problem => 'PT连接线缆虚接或松动',
245             replaceable => 1,
246             algorithm => '触发PT断线告警判断异常',
247             data => [
248             {
249             content => '开关SOE告警信息(PT断线信息)',
250             source => '配网主站OCS系统',
251             frequency => '实时(遥信)',
252             business_mode => '监&巡',
253             priority => 2,
254             note => '只能判断出发生PT断线,具体位置不能确定。建议增加XTU的电压采集功能',
255             }
256             ]
257             },
258            
259             # 二级规则:有流无压检查
260             '有流无压检查' => {
261             description => '人员到现场通过肉眼观察接线,用适当力度拉扯接线检查是否牢固;或人工检查信号。',
262             problem => 'PT连接线缆虚接或松动',
263             replaceable => 1,
264             algorithm => '有流无压判为异常',
265             data => [
266             {
267             content => '遥测信息(电流值)',
268             source => '配网主站OCS系统',
269             frequency => '15分钟(遥测)',
270             business_mode => '监&巡',
271             priority => 2,
272             note => '只能判断出发生PT断线,具体位置不能确定。建议增加XTU的电压采集功能',
273             },
274             {
275             content => '遥测信息(电压值)',
276             source => '配网主站OCS系统',
277             frequency => '15分钟(遥测)',
278             business_mode => '监&巡',
279             priority => 2,
280             note => '只能判断出发生PT断线,具体位置不能确定。建议增加XTU的电压采集功能',
281             }
282             ]
283             },
284            
285             # 二级规则:PT相序异常告警检查
286             'PT相序异常告警检查' => {
287             description => '人工相序仪测相序',
288             problem => '相序错误导致线路故障或发热',
289             replaceable => 1,
290             algorithm => '配置有UA/UB/UC三相电压或者配置UAB/UBC两个线电压\n基于基准角度0、-120、120;如果任一相相对其他相偏差大于15度\n满足以上条件保持10s(有些地方程序是3s),产生PT相序异常。\n同一线路开关基准角度应保持一致',
291             data => [
292             {
293             content => '遥测信息',
294             source => '配网主站OCS系统',
295             frequency => '15分钟(遥测)',
296             business_mode => '监&巡',
297             priority => 2,
298             note => 'ocs没采集',
299             }
300             ]
301             }
302             },
303            
304             'FTU' => {
305             # 二级规则:就地远方投退状态检查
306             '就地远方投退状态检查' => {
307             description => '人工检查就地远方投退状态',
308             problem => '就地远方投退状态错误',
309             replaceable => 1,
310             algorithm => '运维数据(远方就地状态)与配网主站OCS系统遥信(远方就地状态)不一致判断异常',
311             data => [
312             {
313             content => '运维数据(远方就地状态)',
314             source => 'XTU补采',
315             frequency => '实时',
316             business_mode => '监&巡',
317             priority => 2,
318             additional_channel => 1,
319             }
320             ]
321             },
322            
323             # 三级规则:硬压板投退状态检查
324             '硬压板投退状态检查' => {
325             description => '现场检查硬压板投退状态',
326             problem => '硬压板状态与实际运行要求不一致',
327             replaceable => 1,
328             algorithm => '新标准装置有 压板状态监测功能(双源压板)',
329             data => [
330             {
331             content => '压板状态监测信号',
332             source => '配网主站OCS系统',
333             frequency => '实时(遥信)',
334             business_mode => '巡',
335             priority => 3,
336             note => '部分可实现',
337             }
338             ]
339             },
340            
341             # 二级规则:对时异常检查
342             '对时异常检查' => {
343             description => '检查配网自动化终端与主站系统对时正确',
344             problem => '装置对时异常,与标准时间存在肉眼可见的误差,导致SOE时标错误',
345             replaceable => 1,
346             algorithm => '装置时间与主站时间对比,不一致判断异常',
347             data => [
348             {
349             content => '运维数据(遥测:装置时间)',
350             source => '配网主站OCS系统',
351             frequency => '实时(遥信)',
352             business_mode => '监&巡',
353             priority => 2,
354             }
355             ]
356             },
357            
358             # 三级规则:零序电流检查
359             '零序电流检查' => {
360             description => '人员在主站运行界面上,查看零序电流值是否约为零',
361             problem => '零序电流值过大,可能存在三相严重不平衡或其他故障',
362             replaceable => 1,
363             algorithm => '当零序电流>0.1A时,判断异常',
364             data => [
365             {
366             content => '配网主站OCS系统(零序电流值)',
367             source => '配网主站OCS系统',
368             frequency => '15分钟(遥测)',
369             business_mode => '巡',
370             priority => 3,
371             }
372             ]
373             }
374             },
375            
376             '电源管理模块' => {
377             # 二级规则:直流输出电压检查
378             '直流输出电压检查' => {
379             description => '检查输出电压额定值(±5%)',
380             problem => '直流输出电压供电异常',
381             replaceable => 1,
382             algorithm => '遥测信息(直流输出电压)超过额定值(±20%)判断异常',
383             data => [
384             {
385             content => '遥测信息(直流输出电压)',
386             source => '配网主站OCS系统',
387             frequency => '15分钟(遥测)',
388             business_mode => '监&巡',
389             priority => 2,
390             note => '按本地化原则',
391             }
392             ]
393             },
394            
395             # 二级规则:交流输入电压检查
396             '交流输入电压检查' => {
397             description => '检查输出电压额定值(±5%)',
398             problem => '交流输入电压供电异常',
399             replaceable => 1,
400             algorithm => '遥测信息(交流输入电压)超过额定值(±20%)判断异常',
401             data => [
402             {
403             content => '遥测信息(交流输入电压)',
404             source => '配网主站OCS系统',
405             frequency => '15分钟(遥测)',
406             business_mode => '监&巡',
407             priority => 2,
408             note => '按本地化原则',
409             }
410             ]
411             }
412             },
413            
414             '蓄电池' => {
415             # 二级规则:蓄电池电压检查
416             '蓄电池电压检查' => {
417             description => '检查输出电压额定值(±5%)',
418             problem => '直流输出电压供电异常',
419             replaceable => 1,
420             algorithm => '遥测信息(直流输出电压)超过额定值(±20%)判断异常',
421             data => [
422             {
423             content => '遥测信息(交直流输入输出电压)',
424             source => '配网主站OCS系统',
425             frequency => '15分钟(遥测)',
426             business_mode => '巡',
427             priority => 3,
428             note => '按本地化原则',
429             }
430             ]
431             },
432            
433             # 二级规则:蓄电池内阻检查
434             '蓄电池内阻检查' => {
435             description => '检查蓄电池内阻健康状态',
436             problem => '蓄电池内阻异常无法使用',
437             replaceable => 1,
438             algorithm => '触发蓄电池内阻异常告警判断异常',
439             data => [
440             {
441             content => '遥信信息(蓄电池内阻异常告警)',
442             source => '配网主站OCS系统',
443             frequency => '实时(遥信)',
444             business_mode => '监&巡',
445             priority => 2,
446             note => '按本地化原则',
447             }
448             ]
449             }
450             },
451            
452             '通讯加密装置' => {
453             # 一级规则:加密装置与配电终端通信状态检查
454             '加密装置与配电终端通信状态检查' => {
455             description => '检查终端与配网主站通信状态',
456             problem => '终端通信异常',
457             replaceable => 1,
458             algorithm => '通过XTU连接加密装置232/以太网接口,监测加密装置的报文,加密装置能收到主站报文,但没有回复报文给主站',
459             data => [
460             {
461             content => '遥信(通信中断)',
462             source => '配网主站OCS系统',
463             frequency => '实时(遥信)',
464             business_mode => '监',
465             priority => 1,
466             }
467             ]
468             },
469            
470             # 一级规则:通讯加密装置与配网主站通信状态检查
471             '通讯加密装置与配网主站通信状态检查' => {
472             description => '检查终端与配网主站通信状态',
473             problem => '终端通信异常',
474             replaceable => 1,
475             algorithm => '通过监测装置实时通信状态(在线率)',
476             data => [
477             {
478             content => '运维数据(误码率)',
479             source => 'XTU补采',
480             frequency => '实时',
481             business_mode => '监',
482             priority => 1,
483             additional_channel => 1,
484             }
485             ]
486             }
487             }
488             },
489            
490             # 开关柜类设备的巡检规则
491             '开关柜' => {
492             '外壳' => {
493             # 三级规则:锈蚀情况检查
494             '锈蚀情况检查' => {
495             description => '人员到现场通过肉眼观察设备外观',
496             problem => '设备长期在户外运行,导致设备外观破损如掉漆、生锈',
497             replaceable => 1,
498             algorithm => '通过图片识别设备是否生锈(算法是否能识别到)',
499             data => [
500             {
501             content => '可见光摄像机拍摄图片(很少开关箱有采集)',
502             source => '物联网系统',
503             frequency => '15分钟',
504             business_mode => '巡',
505             priority => 3,
506             note => '图片较少,无对照识别或无摄像头,摄像头拍不到',
507             }
508             ]
509             },
510            
511             # 三级规则:变形情况检查
512             '变形情况检查' => {
513             description => '人员到现场通过肉眼观察设备外观',
514             problem => '设备长期在户外运行,导致设备柜门变形或被打开等情况',
515             replaceable => 1,
516             algorithm => '通过图片识别设备箱门是否被打开或变形等。(算法是否能识别到)',
517             data => [
518             {
519             content => '可见光摄像机拍摄图片(很少开关箱有采集)',
520             source => '物联网系统',
521             frequency => '15分钟',
522             business_mode => '巡',
523             priority => 3,
524             note => '图片较少,无对照识别或无摄像头,摄像头拍不到',
525             }
526             ]
527             }
528             },
529            
530             '开关本体' => {
531             # 二级规则:开门告警检查
532             '开门告警检查' => {
533             description => '人员到现场检查开门情况',
534             problem => '设备异常开门',
535             replaceable => 1,
536             algorithm => '触发开门异常告警判断异常',
537             data => [
538             {
539             content => '遥信信息(开门告警)',
540             source => '配网主站OCS系统',
541             frequency => '实时(遥信)',
542             business_mode => '监&巡',
543             priority => 2,
544             }
545             ]
546             },
547            
548             # 一级规则:开关操动机构卡涩情况检查
549             '开关操动机构卡涩情况检查' => {
550             description => '日常巡视时通过肉眼观察外观做初步判断,观察开关结构是否锈蚀,检修时遥控操作试验观察判断',
551             problem => '开关操动机构卡涩,分合闸速度变慢',
552             replaceable => 1,
553             algorithm => '保护动作信号与分闸遥信时间差大于100ms判断异常',
554             data => [
555             {
556             content => '开关动作SOE告警信息(保护装置保护动作信号SOE)',
557             source => '配网主站OCS系统',
558             frequency => '实时(遥信)',
559             business_mode => '监',
560             priority => 1,
561             },
562             {
563             content => '开关SOE告警信息(分闸遥信)',
564             source => '配网主站OCS系统',
565             frequency => '实时(遥信)',
566             business_mode => '监',
567             priority => 1,
568             }
569             ]
570             }
571             },
572            
573             'DTU' => {
574             # 三级规则:终端内部异常情况检查
575             '终端内部异常情况检查' => {
576             description => '检查硬盘可用容量、各种进程运行正常',
577             problem => '终端设备内部异常',
578             replaceable => 1,
579             algorithm => '运维数据(硬盘可用容量)>80%判断异常',
580             data => [
581             {
582             content => '运维数据(硬盘可用容量)',
583             source => 'XTU补采',
584             frequency => '实时',
585             business_mode => '巡',
586             priority => 3,
587             note => '硬件私有规约',
588             additional_channel => 1,
589             }
590             ]
591             },
592            
593             # 二级规则:对时异常检查
594             '对时异常检查' => {
595             description => '检查配网自动化终端与主站系统对时正确',
596             problem => '装置对时异常,与标准时间存在肉眼可见的误差,导致SOE时标错误',
597             replaceable => 1,
598             algorithm => '通过计算同一告警的SOE、COS时标差,当差值>30s时,判定对时异常',
599             data => [
600             {
601             content => 'SOE和COS',
602             source => '配网主站OCS系统',
603             frequency => '实时(遥信)',
604             business_mode => '监&巡',
605             priority => 2,
606             }
607             ]
608             }
609             },
610            
611             '直流电源' => {
612             # 三级规则:输入电压情况检查
613             '输入电压情况检查' => {
614             description => '人员到现场读取直流屏上输入电压表计值',
615             problem => '可能存在直流屏输入电压低情况',
616             replaceable => 1,
617             algorithm => '输入电压<85%额定值时,判断异常',
618             data => [
619             {
620             content => '装置直流屏输入电压(需要XTU具备采集这些量)',
621             source => 'XTU补采',
622             frequency => '实时',
623             business_mode => '巡',
624             priority => 3,
625             note => '增加采集传感模块',
626             additional_channel => 1,
627             }
628             ]
629             },
630            
631             # 二级规则:直流输出电压检查
632             '直流输出电压检查' => {
633             description => '检查输出电压额定值(±5%)',
634             problem => '直流输出电压供电异常',
635             replaceable => 1,
636             algorithm => '遥测信息(直流输出电压)超过额定值(±20%)判断异常',
637             data => [
638             {
639             content => '遥测信息(交直流输入输出电压)',
640             source => '配网主站OCS系统',
641             frequency => '15分钟(遥测)',
642             business_mode => '监&巡',
643             priority => 2,
644             note => '按本地化原则',
645             }
646             ]
647             }
648             }
649             },
650            
651             # 变压器类设备的巡检规则
652             '变压器' => {
653             '台变' => {
654             # 三级规则:隔离刀闸分合位置检查
655             '隔离刀闸分合位置检查' => {
656             description => '人员在现场肉眼检查判断',
657             problem => '隔离刀闸分合位置异常或虚接',
658             replaceable => 1,
659             algorithm => '触发隔离刀闸分合位置异常判断异常',
660             data => [
661             {
662             content => '遥信(分合位置)',
663             source => 'XTU补采',
664             frequency => '实时',
665             business_mode => '巡',
666             priority => 3,
667             note => '结合智能网关3.0上送辅助触点数据',
668             additional_channel => 1,
669             }
670             ]
671             },
672            
673             # 三级规则:跌落式熔断器完整性检查
674             '跌落式熔断器完整性检查' => {
675             description => '人员在现场肉眼检查判断',
676             problem => '跌落式熔断器位置异常',
677             replaceable => 1,
678             algorithm => '触发跌落式熔断器分合位置异常判断异常',
679             data => [
680             {
681             content => '遥信(分合位置)',
682             source => 'XTU补采',
683             frequency => '实时',
684             business_mode => '巡',
685             priority => 3,
686             note => '结合智能网关3.0上送辅助触点数据',
687             additional_channel => 1,
688             }
689             ]
690             }
691             },
692            
693             '箱变' => {
694             # 二级规则:开门告警检查
695             '开门告警检查' => {
696             description => '人员到现场检查开门情况',
697             problem => '设备异常开门',
698             replaceable => 1,
699             algorithm => '触发开门异常告警判断异常',
700             data => [
701             {
702             content => '遥信信息(开门告警)',
703             source => '配网主站OCS系统',
704             frequency => '实时(遥信)',
705             business_mode => '监&巡',
706             priority => 2,
707             }
708             ]
709             },
710            
711             # 一级规则:开关操动机构卡涩情况检查
712             '开关操动机构卡涩情况检查' => {
713             description => '现场观察开关结构是否锈蚀',
714             problem => '开关操动机构卡涩,分合闸速度变慢',
715             replaceable => 1,
716             algorithm => '保护动作信号与分闸遥信时间差大于100ms判断异常',
717             data => [
718             {
719             content => '开关动作SOE告警信息(保护装置保护动作信号SOE)',
720             source => '配网主站OCS系统',
721             frequency => '实时(遥信)',
722             business_mode => '监',
723             priority => 1,
724             },
725             {
726             content => '开关SOE告警信息(分闸遥信)',
727             source => '配网主站OCS系统',
728             frequency => '实时(遥信)',
729             business_mode => '监',
730             priority => 1,
731             }
732             ]
733             }
734             },
735            
736             '变压器相同部分' => {
737             # 二级规则:变压器重过载告警检查
738             '变压器重过载告警检查' => {
739             description => '检查变压器的负载是否在正常范围内,避免负载过高导致的设备故障',
740             problem => '变压器重过载',
741             replaceable => 1,
742             algorithm => '高压侧/低压侧:功率>***,判断异常',
743             data => [
744             {
745             content => '遥测信息(功率)',
746             source => '配网主站OCS系统、计量系统',
747             frequency => '15分钟(遥测)',
748             business_mode => '监&巡',
749             priority => 2,
750             }
751             ]
752             },
753            
754             # 二级规则:高压侧电压异常检查
755             '高压侧电压异常检查' => {
756             description => '使用电子检测仪等检查变压器电压电气参数,确保其在正常范围内',
757             problem => '可能存在电压异常情况',
758             replaceable => 1,
759             algorithm => '高压侧/低压侧:电压>110%Un或电压<90%Un,判断异常',
760             data => [
761             {
762             content => '遥测信息(电压值)',
763             source => '配网主站OCS系统、计量系统',
764             frequency => '15分钟(遥测)',
765             business_mode => '监&巡',
766             priority => 2,
767             }
768             ]
769             }
770             }
771             },
772            
773             # 地极类设备的巡检规则
774             '地极' => {
775             '变压器' => {
776             # 一级规则:设备绝缘检查
777             '设备绝缘检查' => {
778             description => '现场人工仪器测量',
779             problem => '绝缘漏电隐患发现不及时、绝缘下降原因不明、绝缘配合有效性不清楚',
780             replaceable => 1,
781             algorithm => "1、泄漏电流>1000mA判断异常\n2、接地反击电压>10kV",
782             data => [
783             {
784             content => '全景监测数据(泄漏电流值、反击电压值)',
785             source => 'XTU补采',
786             frequency => '泄漏电流1分钟/次;接地反击电压触发采集',
787             business_mode => '监',
788             priority => 1,
789             }
790             ]
791             },
792            
793             # 一级规则:接地点检查
794             '接地点检查' => {
795             description => '现场人工检查',
796             problem => '接地不可靠、绝缘漏电隐患发现不及时',
797             replaceable => 1,
798             algorithm => "1、泄漏电流<1mA判断异常\n2、反击电压/泄放电流比值>设定值判断异常\n3、接地反击电压>10kV",
799             data => [
800             {
801             content => '全景监测数据(泄漏电流值、反击电压值、泄放雷电流值)',
802             source => 'XTU补采',
803             frequency => '泄漏电流5分钟/次;接地反击电压、泄放电流触发采集',
804             business_mode => '监',
805             priority => 1,
806             }
807             ]
808             }
809             },
810            
811             '开关' => {
812             # 一级规则:设备绝缘检查
813             '设备绝缘检查' => {
814             description => '现场人工仪器测量',
815             problem => '绝缘漏电隐患发现不及时、绝缘下降原因不明、绝缘配合有效性不清楚',
816             replaceable => 1,
817             algorithm => "1、泄漏电流>10A判断异常\n2、接地反击电压>10kV",
818             data => [
819             {
820             content => '全景监测数据(泄漏电流值、反击电压值)',
821             source => 'XTU补采',
822             frequency => '泄漏电流1分钟/次;接地反击电压触发采集',
823             business_mode => '监',
824             priority => 1,
825             }
826             ]
827             },
828            
829             # 一级规则:接地点检查
830             '接地点检查' => {
831             description => '现场人工仪器测量',
832             problem => '接地不可靠、绝缘漏电隐患发现不及时',
833             replaceable => 1,
834             algorithm => "1、泄漏电流<1mA判断异常\n2、反击电压/泄放电流比值>设定值判断异常\n3、接地反击电压>10kV",
835             data => [
836             {
837             content => '全景监测数据(泄漏电流值、反击电压值、泄放雷电流值)',
838             source => 'XTU补采',
839             frequency => '泄漏电流5分钟/次;接地反击电压、泄放电流触发采集',
840             business_mode => '监',
841             priority => 1,
842             }
843             ]
844             }
845             }
846             }
847             };
848              
849             # 用于获取所有巡检规则
850             sub get_inspection_rules {
851 0     0 0   return $inspection_knowledge;
852             }
853              
854             # 用于按设备类型获取巡检规则
855             sub get_rules_by_device {
856 0     0 0   my ($device_type) = @_;
857            
858 0 0         return $inspection_knowledge->{$device_type} if exists $inspection_knowledge->{$device_type};
859 0           return;
860             }
861              
862             # 用于按数据来源获取巡检规则
863             sub get_rules_by_data_source {
864 0     0 0   my ($source) = @_;
865 0           my %result;
866            
867 0           foreach my $device_type (keys %$inspection_knowledge) {
868 0           foreach my $equipment (keys %{$inspection_knowledge->{$device_type}}) {
  0            
869 0           foreach my $rule_name (keys %{$inspection_knowledge->{$device_type}{$equipment}}) {
  0            
870 0           my $rule = $inspection_knowledge->{$device_type}{$equipment}{$rule_name};
871            
872 0           foreach my $data (@{$rule->{data}}) {
  0            
873 0 0         if ($data->{source} eq $source) {
874 0           $result{"$device_type.$equipment.$rule_name"} = $rule;
875             }
876             }
877             }
878             }
879             }
880            
881 0           return \%result;
882             }
883              
884             # 用于按优先级获取巡检规则
885             sub get_rules_by_priority {
886 0     0 0   my ($priority) = @_;
887 0           my %result;
888            
889 0           foreach my $device_type (keys %$inspection_knowledge) {
890 0           foreach my $equipment (keys %{$inspection_knowledge->{$device_type}}) {
  0            
891 0           foreach my $rule_name (keys %{$inspection_knowledge->{$device_type}{$equipment}}) {
  0            
892 0           my $rule = $inspection_knowledge->{$device_type}{$equipment}{$rule_name};
893            
894 0           foreach my $data (@{$rule->{data}}) {
  0            
895 0 0         if ($data->{priority} == $priority) {
896 0           $result{"$device_type.$equipment.$rule_name"} = $rule;
897             }
898             }
899             }
900             }
901             }
902            
903 0           return \%result;
904             }
905              
906             # 获取可被系统替代的巡检规则
907             sub get_replaceable_inspection_rules {
908 0     0 0   my %result;
909            
910 0           foreach my $device_type (keys %$inspection_knowledge) {
911 0           foreach my $equipment (keys %{$inspection_knowledge->{$device_type}}) {
  0            
912 0           foreach my $rule_name (keys %{$inspection_knowledge->{$device_type}{$equipment}}) {
  0            
913 0           my $rule = $inspection_knowledge->{$device_type}{$equipment}{$rule_name};
914            
915 0 0         if ($rule->{replaceable}) {
916 0           $result{"$device_type.$equipment.$rule_name"} = $rule;
917             }
918             }
919             }
920             }
921            
922 0           return \%result;
923             }
924              
925             # 获取设备故障判断标准
926             sub get_equipment_fault_criteria {
927 0     0 0   my ($device_type, $equipment, $inspection_name) = @_;
928            
929 0 0 0       if (exists $inspection_knowledge->{$device_type} &&
      0        
930             exists $inspection_knowledge->{$device_type}{$equipment} &&
931             exists $inspection_knowledge->{$device_type}{$equipment}{$inspection_name}) {
932            
933 0           return $inspection_knowledge->{$device_type}{$equipment}{$inspection_name}{algorithm};
934             }
935            
936 0           return;
937             }
938              
939             1;
940              
941             =head1 SYNOPSIS
942              
943             The module provides the following functions for use:
944              
945             1. get_inspection_rules
946              
947             Retrieves all available inspection rules in the system.
948              
949             2. get_rules_by_device
950              
951             Retrieves inspection rules specific to a given device type or name.
952              
953             3. get_rules_by_data_source
954              
955             Retrieves inspection rules based on the data sources required by the rules.
956              
957             4. get_rules_by_priority
958              
959             Retrieves inspection rules filtered by their priority level.
960              
961             5. get_replaceable_inspection_rules
962              
963             Retrieves inspection rules that are marked as replaceable.
964              
965             6. get_equipment_fault_criteria
966              
967             Retrieves the fault criteria for specific equipment or device types.
968              
969              
970             =head1 Usage Example
971              
972             use Data::Power::Inspection qw(get_rules_by_device);
973             use utf8;
974             use open qw(:std :utf8);
975              
976             binmode(STDOUT, ":utf8");
977              
978             # Retrieve inspection rules for a specific device type
979             my $pole_switch_rules = get_rules_by_device('柱上开关');
980              
981             # Process and display the rules
982              
983             foreach my $equipment (sort keys %$pole_switch_rules) {
984             print "== $equipment ==\n";
985              
986             foreach my $rule_name (sort keys %{$pole_switch_rules->{$equipment}}) {
987             my $rule = $pole_switch_rules->{$equipment}{$rule_name};
988              
989             print "\n- 巡检项目: $rule_name\n";
990             print " 巡检内容: $rule->{description}\n";
991             print " 可能问题: $rule->{problem}\n";
992             print " 可替代性: " . ($rule->{replaceable} ? "可替代" : "不可替代") . "\n";
993             print " 判断算法: $rule->{algorithm}\n";
994              
995             print " 数据要求:\n";
996             foreach my $data (@{$rule->{data}}) {
997             print " - 内容: $data->{content}\n";
998             print " 来源: $data->{source}\n";
999             print " 频率: $data->{frequency}\n";
1000             print " 业务: $data->{business_mode}\n";
1001             print " 优先级: $data->{priority}\n";
1002              
1003             print " 说明: $data->{note}\n" if exists $data->{note};
1004              
1005             print " 需要额外通道: 是\n" if exists $data->{additional_channel} && $data->{additional_channel};
1006             }
1007              
1008             print "\n";
1009             }
1010              
1011             print "\n";
1012             }
1013              
1014             =head1 AUTHOR
1015              
1016             Y Peng, C<< >>
1017              
1018             =head1 LICENSE AND COPYRIGHT
1019              
1020             This software is Copyright (c) 2025 by Y Peng.
1021              
1022             This is free software, licensed under:
1023              
1024             The Artistic License 2.0 (GPL Compatible)