Smart_Report/CheckMultipleDevicesPreset.py

84 lines
6.2 KiB
Python
Raw Normal View History

2025-04-17 14:15:10 +08:00
# -*- coding: utf-8 -*-
# Ziran Gao 20241005
# 智能二次运维项目中,多装置校验功能
#-------------2024年11月19日--------------------------------------------------------------------------------------------------------
# 本功能基本逻辑是:
# 1从所有装置接口读出所有定值
# 2根据不同的供电形式进行校验
# 3对该规则下的定值进行校验。不合适的标红。
import Self_defined_functions as SDF
import CheckMultiDevice as MD
StationFlag = 2 #是什么所1是变电所2是分区所&开闭所
PwrMthd = 3 #是什么供电方式? 1是全并联AT2是直供3是开闭所需要注意的是部分设置是不存在的比如如果是开闭所那供电方式只能是经开闭所供电我在函数里做了规范王喜在界面里也规范一下
PwrFlag = 1 #具体供电方式里怎么分如果对AT来说 1是全并联ATI型2是全并联ATII型。对直供来说1是单线直供2是复线直供。对经开闭所供电1是经1级开闭所2是经2级开闭所。
conn = SDF.connectMainDatabase()#获取当前装置的所有定值
cursor = conn.cursor() #获取pymssql提供的SQL Server编辑游标
sql_read_Usr = f"SELECT * FROM im_ProtectDevice_new;"
#print(sql_read_Usr)
cursor.execute(sql_read_Usr)
results_Usr = cursor.fetchall()
DeviceList_dict = {}
for row in results_Usr:
temp_find = row[2].encode('latin1').decode('gbk')
if temp_find.find('主变保护') != -1:
DeviceList_dict.update({row[0]:1})
elif temp_find.find('馈线')!= -1:
DeviceList_dict.update({row[0]:2})
elif temp_find.find('自耦变')!= -1:
DeviceList_dict.update({row[0]:3})
elif temp_find.find('并联补偿')!= -1:
DeviceList_dict.update({row[0]:4})
elif temp_find.find('测距')!= -1:
DeviceList_dict.update({row[0]:5})
else:
DeviceList_dict.update({row[0]:0})
Preset_All_Device = {}
#print(DeviceList_dict)
for device, device_type in DeviceList_dict.items():
if device_type != 0:
(Preset_All_Device[device],Flag) = SDF.getdevicePresetValue(device)
device_ID = 'B001025'#先随便写一个ID后续再改
(Preset, Flag) = SDF.getdevicePresetValue(device_ID)
checked_multi_preset = {}
checked_multi_fail_reason = {}
Delta_T = 0.2
if device_ID in DeviceList_dict and DeviceList_dict[device_ID]!= 0:
if StationFlag == 1:
if Flag == 1:
(checked_multi_preset,checked_multi_fail_reason) = MD.Check_Multi_MTF_LwOvrCrrnt_Time(device_ID,Preset_All_Device,Delta_T,DeviceList_dict,checked_multi_preset,checked_multi_fail_reason)
if Flag == 2:
(checked_multi_preset,checked_multi_fail_reason) = MD.Check_Multi_Feeder_Rcls_Time(device_ID,Preset_All_Device,DeviceList_dict,checked_multi_preset,checked_multi_fail_reason)
if Flag == 5:
(checked_multi_preset,checked_multi_fail_reason) = MD.Check_Multi_Dist_OvrCrrnt_Crrnt(device_ID,Preset_All_Device,DeviceList_dict,checked_multi_preset,checked_multi_fail_reason)
(checked_multi_preset,checked_multi_fail_reason) = MD.Check_Multi_Dist_Dlt_Crrnt(device_ID,Preset_All_Device,DeviceList_dict,checked_multi_preset,checked_multi_fail_reason)
(checked_multi_preset,checked_multi_fail_reason) = MD.Check_Multi_Dist_Dlst_Rsstnc(device_ID,Preset_All_Device,DeviceList_dict,checked_multi_preset,checked_multi_fail_reason)
(checked_multi_preset,checked_multi_fail_reason) = MD.Check_Multi_Dist_Dlst_Rctnc(device_ID,Preset_All_Device,DeviceList_dict,StationFlag,PwrMthd,PwrFlag,checked_multi_preset,checked_multi_fail_reason)
print(checked_multi_preset)
print(checked_multi_fail_reason)
if StationFlag == 2:
if Flag == 5:
if (PwrMthd == 2 and PwrFlag == 1):
print('该供电方式选择错误,无法进行校验')
elif (PwrMthd == 3):
if PwrFlag == 1:#经1级开闭所
(checked_multi_preset,checked_multi_fail_reason) = MD.Check_Multi_Dist_OvrCrrnt_Crrnt(device_ID,Preset_All_Device,DeviceList_dict,checked_multi_preset,checked_multi_fail_reason)
(checked_multi_preset,checked_multi_fail_reason) = MD.Check_Multi_Dist_Dlt_Crrnt(device_ID,Preset_All_Device,DeviceList_dict,checked_multi_preset,checked_multi_fail_reason)
(checked_multi_preset,checked_multi_fail_reason) = MD.Check_Multi_Dist_Dlst_Rsstnc(device_ID,Preset_All_Device,DeviceList_dict,checked_multi_preset,checked_multi_fail_reason)
(checked_multi_preset,checked_multi_fail_reason) = MD.Check_Multi_Dist_Dlst_Rctnc(device_ID,Preset_All_Device,DeviceList_dict,2,3,1,checked_multi_preset,checked_multi_fail_reason)
if PwrFlag == 2:#经2级开闭所
feederlevel = 1#是1级还是2级1是1级2是2级
if feederlevel == 1:
(checked_multi_preset,checked_multi_fail_reason) = MD.Check_Multi_Dist_Dlst_Rctnc(device_ID,Preset_All_Device,DeviceList_dict,2,3,2,checked_multi_preset,checked_multi_fail_reason)
if feederlevel == 2:
(checked_multi_preset,checked_multi_fail_reason) = MD.Check_Multi_Dist_Dlst_Rctnc(device_ID,Preset_All_Device,DeviceList_dict,2,3,1,checked_multi_preset,checked_multi_fail_reason)
(checked_multi_preset,checked_multi_fail_reason) = MD.Check_Multi_Dist_OvrCrrnt_Crrnt(device_ID,Preset_All_Device,DeviceList_dict,checked_multi_preset,checked_multi_fail_reason)
(checked_multi_preset,checked_multi_fail_reason) = MD.Check_Multi_Dist_Dlt_Crrnt(device_ID,Preset_All_Device,DeviceList_dict,checked_multi_preset,checked_multi_fail_reason)
(checked_multi_preset,checked_multi_fail_reason) = MD.Check_Multi_Dist_Dlst_Rsstnc(device_ID,Preset_All_Device,DeviceList_dict,checked_multi_preset,checked_multi_fail_reason)
else:
(checked_multi_preset,checked_multi_fail_reason) = MD.Check_Multi_Dist_LsVltg_Vltg(device_ID,Preset_All_Device,DeviceList_dict,checked_multi_preset,checked_multi_fail_reason)
print(checked_multi_preset)
print(checked_multi_fail_reason)
else:
print('该装置不是保护装置或装置编号错误,无法进行校验')
#print(Preset_All_Device)