114 lines
6.2 KiB
Python
114 lines
6.2 KiB
Python
![]() |
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)
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|