Smart_Report/PolarityTest.py
2025-04-17 14:15:10 +08:00

114 lines
6.2 KiB
Python
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

import redis
import msgpack
import Self_defined_functions as sdf
YC_MnTrns,YC_Prtct,YC_Dist = sdf.obtainYC_Device()
#print(YC_MnTrns)
#print(YC_Prtct)
#print(YC_Dist)
#上下行判断
#没有很好的自动判断方法。先手动输入
list_SX = ['211','213','3','北京']
list_XX = ['212','214','4','上海']
# 在 YC_Dist 的每个键的 value 字典中添加新项
for key, value in YC_Dist.items():
if any(item in key for item in list_SX):
value['方向'] = '北京' # 添加新项,你可以根据需要修改新项的键和值
if any(item in key for item in list_XX):
value['方向'] = '上海' # 添加新项,你可以根据需要修改新项的键和值
for key, value in YC_Prtct.items():
if any(item in key for item in list_SX):
value['方向'] = '北京' # 添加新项,你可以根据需要修改新项的键和值
if any(item in key for item in list_XX):
value['方向'] = '上海' # 添加新项,你可以根据需要修改新项的键和值
for key, value in YC_MnTrns.items():
if any(item in key for item in list_SX):
value['方向'] = '北京' # 添加新项,你可以根据需要修改新项的键和值
if any(item in key for item in list_XX):
value['方向'] = '上海' # 添加新项,你可以根据需要修改新项的键和值
rule1_threshold = 0.001
rule2_threshold = 0.001
#—————————————极性校验1同一个测量点测量量和保护量相等—————————————————————
checked_polarity = {}
checked_polarity_reason = {}
for key, value in YC_Prtct.items():
former_key = key
for key, value in YC_Prtct[former_key].items():
#print(key)
if key.find('保护') != -1:
temp_cmpr = key.replace('保护','测量')
#print(temp_cmpr)
if temp_cmpr in YC_Prtct[former_key]:
result_key = former_key + ' ' + key
result_temp = former_key + ' ' + temp_cmpr
diff_value_rule1 = abs(YC_Prtct[former_key][key]-YC_Prtct[former_key][temp_cmpr])
I_valid = max(YC_Prtct[former_key][key],YC_Prtct[former_key][temp_cmpr])
if diff_value_rule1 < rule1_threshold:
if result_key in checked_polarity and checked_polarity[result_key] == '极性校验不通过':
pass
else:
checked_polarity[result_key] = '极性校验通过'
if result_temp in checked_polarity and checked_polarity[result_temp] == '极性校验不通过':
pass
else:
checked_polarity[result_temp] = '极性校验通过'
elif diff_value_rule1 < 1.05 * I_valid and diff_value_rule1 > 0.95 * I_valid:
if I_valid == YC_Prtct[former_key][key]:
checked_polarity[result_key] = '极性校验不通过'
checked_polarity_reason[result_key] = '测量量和保护量不相等考虑测量CT断线'
checked_polarity[result_temp] = '极性校验不通过'
checked_polarity_reason[result_temp] = '测量量和保护量不相等考虑测量CT断线'
else:
checked_polarity[result_key] = '极性校验不通过'
checked_polarity_reason[result_key] = '测量量和保护量不相等考虑保护CT断线'
checked_polarity[result_temp] = '极性校验不通过'
checked_polarity_reason[result_temp] = '测量量和保护量不相等考虑保护CT断线'
elif diff_value_rule1 < 2.1 * I_valid and diff_value_rule1 > 1.9 * I_valid:
checked_polarity[result_key] = '极性校验不通过'
checked_polarity_reason[result_key] = '测量量和保护量不相等考虑保护CT和测量CT有一反向'
checked_polarity[result_temp] = '极性校验不通过'
checked_polarity_reason[result_temp] = '测量量和保护量不相等考虑保护CT和测量CT有一反向'
else:
checked_polarity[result_key] = '极性校验不通过'
checked_polarity_reason[result_key] = '请检查对应的保护和测量CT回路'
checked_polarity[result_temp] = '极性校验不通过'
checked_polarity_reason[result_temp] = '请检查对应的保护和测量CT回路'
#—————————————极性校验2母线电流平衡关系—————————————————————
for key, value in YC_Dist.items():
dist_result = YC_Dist[key]['上行TF电流'] + YC_Dist[key]['下行TF电流']
direction = YC_Dist[key]['方向']
rule2key1 = key
for key, value in YC_MnTrns.items():
if YC_MnTrns[key]['方向'] == direction:
MnTrns_result = YC_MnTrns[key]['T1相电流'] + YC_MnTrns[key]['T2相电流']
rule2key2 = key
break
if sdf.are_values_equal_with_tolerance(dist_result,MnTrns_result):
result_key1_dist = rule2key1 + ' ' + '上行TF电流'
result_key2_dist = rule2key1 + ' ' + '下行TF电流'
result_key1_MnTrns = rule2key2 + ' ' + 'T1相电流'
result_key2_MnTrns = rule2key2 + ' ' + 'T2相电流'
keylist = [result_key1_dist,result_key2_dist,result_key1_MnTrns,result_key2_MnTrns]
for val in keylist:
if val in checked_polarity and checked_polarity[val] == '极性校验不通过':
pass
else:
checked_polarity[val] = '极性校验通过'
else:
checked_polarity[val] = '极性校验不通过'
checked_polarity_reason[val] = '母线电流不平衡考虑CT断线或反接'
#—————————————极性校验3母线压互平衡关系—————————————————————
#暂时没做
#—————————————极性校验3母线压互平衡关系—————————————————————
#print(YC_MnTrns)
#print(YC_Dist)
print(checked_polarity)
print(checked_polarity_reason)