# -*- 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是全并联AT,2是直供,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)