# -*- coding: utf-8 -*- # Ziran Gao 20241005 # 智能二次运维项目中,单定值校验功能 #-------------2024年11月7日-------------------------------------------------------------------------------------------------------- # 本功能基本逻辑是: # 1:从接口读出定值,存进本地数据库中。 # 2:根据不同的供电方式,适配不同的校验规则。 # 3:对该规则下的定值进行校验。不合适的标红。 #-------------2024年11月15日-------------------------------------------------------------------------------------------------------- # 代码彻底完成,目前是单装置的校验。多装置校验另起一个文件 # encoding:utf-8 import Self_defined_functions as SDF import CheckMainTransformer as MTF import CheckFeeder as FDR import pymssql #第一步:从U/I读数据,这一步需要王喜直接从界面把选择的数据读进来。这里我直接定义。 StationFlag = 2 #是什么所?1是变电所,2是分区所&开闭所 PwrMthd = 1 #是什么供电方式? 1是全并联AT,2是直供,3是开闭所,需要注意的是,部分设置是不存在的,比如如果是开闭所,那供电方式只能是经开闭所供电,我在函数里做了规范,王喜在界面里也规范一下 PwrFlag = 1 #具体供电方式里怎么分?如果对AT来说, 1是全并联ATI型,2是全并联ATII型。对直供来说1是单线直供,2是复线直供。对经开闭所供电1是经1级开闭所,2是经2级开闭所。 Device = 'B001020'#先随便写个装置ID,后期根据界面输入直接从数据库里读。 SDF.obtainPresetValue() #把定值拉一遍 (Preset, Flag) = SDF.getdevicePresetValue(Device) print(Preset) #print(Flag) #创建一个新字典来存储定值校验结果 checked_preset = {} checked_fail_reason = {} Delta_T = 0.2 try: if StationFlag == 1:#变电所保护 if Flag == 1:#主变保护,不管你是什么供电方式都会有的保护 MainTrsfmrType = 1 #主变类型,1是VV、Vx、YND11、Ynv、SCOTT;2是lii、li checked_preset, checked_fail_reason = MTF.Check_MTF_OvrCrrnt_Time(Preset['高压侧B相过电流动作时限'],Preset['低压侧b相过电流动作时限'],Delta_T,checked_preset,checked_fail_reason) checked_preset, checked_fail_reason = MTF.Check_MTF_OvrCrrnt_LwVltg(Preset['高压侧过电流低压定值'],Preset['低压侧过电流低压定值'],Preset['高压侧PT断线动作电压'],Preset['低压侧PT断线动作电压'],checked_preset,checked_fail_reason) checked_preset, checked_fail_reason = MTF.Check_MTF_VltgDiff(Preset,MainTrsfmrType,checked_preset,checked_fail_reason) if Flag == 2:#馈线保护 #print(Preset) if PwrMthd == 1:#全并联AT if PwrFlag == 1:#全并联ATI型 checked_preset, checked_fail_reason = FDR.Check_FDR_PT_Crrnt(Preset['PT断线下限电流'],Preset['PT断线动作电流'],checked_preset,checked_fail_reason) checked_preset, checked_fail_reason = FDR.Check_FDR_BackAcc_Time(Preset,checked_preset,checked_fail_reason) checked_preset, checked_fail_reason = FDR.Check_FDR_LwVltg_V(Preset['低压启动过电流动作电压'],Preset['失压动作电压'],Preset['PT断线动作电压'],checked_preset,checked_fail_reason) checked_preset, checked_fail_reason = FDR.Check_FDR_OvrCrrnt_Time(Preset['低压启动过电流动作时限'],Preset['距离Ⅰ段时限'],checked_preset,checked_fail_reason) checked_preset, checked_fail_reason = FDR.Check_FDR_DeltaCrrnt_Time(Preset['电流增量动作时限'],Preset['距离Ⅰ段时限'],checked_preset,checked_fail_reason) if PwrFlag == 2:#全并联ATII型 checked_preset, checked_fail_reason = FDR.Check_FDR_PT_Crrnt(Preset['PT断线下限电流'],Preset['PT断线动作电流'],checked_preset,checked_fail_reason) checked_preset, checked_fail_reason = FDR.Check_FDR_BackAcc_Time(Preset,checked_preset,checked_fail_reason) checked_preset, checked_fail_reason = FDR.Check_FDR_LwVltg_V(Preset['低压启动过电流动作电压'],Preset['失压动作电压'],Preset['PT断线动作电压'],checked_preset,checked_fail_reason) Cross_Area_Flag = 1#是否越区?1是越区,0是不越区 if Cross_Area_Flag == 1: checked_preset, checked_fail_reason = FDR.Check_FDR_OvrCrrnt_Time(Preset['低压启动过电流动作时限'],Preset['距离Ⅱ段时限'],checked_preset,checked_fail_reason) checked_preset, checked_fail_reason = FDR.Check_FDR_DeltaCrrnt_Time(Preset['电流增量动作时限'],Preset['距离Ⅱ段时限'],checked_preset,checked_fail_reason) checked_preset, checked_fail_reason = FDR.Check_FDR_DistanceII_X(Preset['距离Ⅱ段电抗'],Preset['距离Ⅰ段电抗'],checked_preset,checked_fail_reason) checked_preset, checked_fail_reason = FDR.Check_FDR_DistanceII_R(Preset['距离Ⅱ段电阻'],Preset['距离Ⅰ段电阻'],checked_preset,checked_fail_reason) checked_preset, checked_fail_reason = FDR.Check_FDR_DistanceII_Time(Preset['距离Ⅱ段时限'],Preset['距离Ⅰ段时限'],Delta_T,checked_preset,checked_fail_reason) if Cross_Area_Flag == 0: checked_preset, checked_fail_reason = FDR.Check_FDR_OvrCrrnt_Time(Preset['低压启动过电流动作时限'],Preset['距离Ⅰ段时限'],checked_preset,checked_fail_reason) checked_preset, checked_fail_reason = FDR.Check_FDR_DeltaCrrnt_Time(Preset['电流增量动作时限'],Preset['距离Ⅰ段时限'],checked_preset,checked_fail_reason) if PwrMthd == 2:#直接供电 #print(Preset) if PwrFlag == 1:#单线直供 checked_preset, checked_fail_reason = FDR.Check_FDR_PT_Crrnt(Preset['PT断线下限电流'],Preset['PT断线动作电流'],checked_preset,checked_fail_reason) checked_preset, checked_fail_reason = FDR.Check_FDR_BackAcc_Time(Preset,checked_preset,checked_fail_reason) checked_preset, checked_fail_reason = FDR.Check_FDR_LwVltg_V(Preset['低压启动过电流动作电压'],Preset['失压动作电压'],Preset['PT断线动作电压'],checked_preset,checked_fail_reason) checked_preset, checked_fail_reason = FDR.Check_FDR_OvrCrrnt_Time(Preset['低压启动过电流动作时限'],Preset['距离Ⅰ段时限'],checked_preset,checked_fail_reason) checked_preset, checked_fail_reason = FDR.Check_FDR_DeltaCrrnt_Time(Preset['电流增量动作时限'],Preset['距离Ⅰ段时限'],checked_preset,checked_fail_reason) checked_preset, checked_fail_reason = FDR.check_FDR_DistanceX(Preset,checked_preset,checked_fail_reason) if PwrFlag == 2:#复线直供 checked_preset, checked_fail_reason = FDR.Check_FDR_PT_Crrnt(Preset['PT断线下限电流'],Preset['PT断线动作电流'],checked_preset,checked_fail_reason) checked_preset, checked_fail_reason = FDR.Check_FDR_BackAcc_Time(Preset,checked_preset,checked_fail_reason) checked_preset, checked_fail_reason = FDR.Check_FDR_LwVltg_V(Preset['低压启动过电流动作电压'],Preset['失压动作电压'],Preset['PT断线动作电压'],checked_preset,checked_fail_reason) checked_preset, checked_fail_reason = FDR.Check_FDR_OvrCrrnt_Time(Preset['低压启动过电流动作时限'],Preset['距离Ⅱ段时限'],checked_preset,checked_fail_reason) checked_preset, checked_fail_reason = FDR.Check_FDR_DeltaCrrnt_Time(Preset['电流增量动作时限'],Preset['距离Ⅱ段时限'],checked_preset,checked_fail_reason) checked_preset, checked_fail_reason = FDR.Check_FDR_DistanceII_X(Preset['距离Ⅱ段电抗'],Preset['距离Ⅰ段电抗'],checked_preset,checked_fail_reason) checked_preset, checked_fail_reason = FDR.Check_FDR_DistanceII_Time(Preset['距离Ⅱ段时限'],Preset['距离Ⅰ段时限'],Delta_T,checked_preset,checked_fail_reason) checked_preset, checked_fail_reason = FDR.Check_FDR_DistanceII_R(Preset['距离Ⅱ段电阻'],Preset['距离Ⅰ段电阻'],checked_preset,checked_fail_reason) if PwrMthd == 3:#开闭所供电 if PwrFlag == 1:#经1级开闭所供电 checked_preset, checked_fail_reason = FDR.Check_FDR_DistanceII_X(Preset['距离Ⅱ段电抗'],Preset['距离Ⅰ段电抗'],checked_preset,checked_fail_reason) checked_preset, checked_fail_reason = FDR.Check_FDR_DistanceII_Time(Preset['距离Ⅱ段时限'],Preset['距离Ⅰ段时限'],Delta_T,checked_preset,checked_fail_reason) checked_preset, checked_fail_reason = FDR.Check_FDR_DistanceII_R(Preset['距离Ⅱ段电阻'],Preset['距离Ⅰ段电阻'],checked_preset,checked_fail_reason) checked_preset, checked_fail_reason = FDR.Check_FDR_PT_Crrnt(Preset['PT断线下限电流'],Preset['PT断线动作电流'],checked_preset,checked_fail_reason) checked_preset, checked_fail_reason = FDR.Check_FDR_BackAcc_Time(Preset,checked_preset,checked_fail_reason) checked_preset, checked_fail_reason = FDR.Check_FDR_LwVltg_V(Preset['低压启动过电流动作电压'],Preset['失压动作电压'],Preset['PT断线动作电压'],checked_preset,checked_fail_reason) checked_preset, checked_fail_reason = FDR.Check_FDR_OvrCrrnt_Time(Preset['低压启动过电流动作时限'],Preset['距离Ⅱ段时限'],checked_preset,checked_fail_reason) checked_preset, checked_fail_reason = FDR.Check_FDR_DeltaCrrnt_Time(Preset['电流增量动作时限'],Preset['距离Ⅱ段时限'],checked_preset,checked_fail_reason) if PwrFlag == 2:#经2级开闭所供电 checked_preset, checked_fail_reason = FDR.Check_FDR_DistanceII_X(Preset['距离Ⅱ段电抗'],Preset['距离Ⅰ段电抗'],checked_preset,checked_fail_reason) checked_preset, checked_fail_reason = FDR.Check_FDR_DistanceII_Time(Preset['距离Ⅱ段时限'],Preset['距离Ⅰ段时限'],Delta_T,checked_preset,checked_fail_reason) checked_preset, checked_fail_reason = FDR.Check_FDR_DistanceII_R(Preset['距离Ⅱ段电阻'],Preset['距离Ⅰ段电阻'],checked_preset,checked_fail_reason) checked_preset, checked_fail_reason = FDR.Check_FDR_PT_Crrnt(Preset['PT断线下限电流'],Preset['PT断线动作电流'],checked_preset,checked_fail_reason) checked_preset, checked_fail_reason = FDR.Check_FDR_LwVltg_V(Preset['低压启动过电流动作电压'],Preset['失压动作电压'],Preset['PT断线动作电压'],checked_preset,checked_fail_reason) checked_preset, checked_fail_reason = FDR.Check_FDR_BackAcc_Time(Preset,checked_preset,checked_fail_reason) checked_preset, checked_fail_reason = FDR.Check_FDR_OvrCrrnt_Time(Preset['低压启动过电流动作时限'],Preset['距离Ⅲ段时限'],checked_preset,checked_fail_reason) checked_preset, checked_fail_reason = FDR.Check_FDR_DeltaCrrnt_Time(Preset['电流增量动作时限'],Preset['距离Ⅲ段时限'],checked_preset,checked_fail_reason) checked_preset, checked_fail_reason = FDR.Check_FDR_DistanceII_X(Preset['距离Ⅲ段电抗'],Preset['距离Ⅱ段电抗'],checked_preset,checked_fail_reason) checked_preset, checked_fail_reason = FDR.Check_FDR_DistanceII_Time(Preset['距离Ⅲ段时限'],Preset['距离Ⅱ段时限'],Delta_T,checked_preset,checked_fail_reason) checked_preset, checked_fail_reason = FDR.Check_FDR_DistanceII_R(Preset['距离Ⅲ段电阻'],Preset['距离Ⅰ段电阻'],checked_preset,checked_fail_reason) if Flag == 3:#主变保护 pass if StationFlag == 2:#分区所保护 print(Preset) if Flag == 1:#主变保护 raise ValueError("分区所不具有主变保护") if Flag == 2:#馈线保护 if PwrMthd == 1:#全并联AT if PwrFlag == 1:#全并联ATI型 checked_preset, checked_fail_reason = FDR.Check_FDR_PT_Crrnt(Preset['PT断线下限电流'],Preset['PT断线动作电流'],checked_preset,checked_fail_reason) checked_preset, checked_fail_reason = FDR.Check_FDR_BackAcc_Time(Preset,checked_preset,checked_fail_reason) checked_preset, checked_fail_reason = FDR.Check_FDR_Reclose_Vltg(Preset['检有压动作电压'],Preset['失压动作电压'],Preset['PT断线动作电压'],checked_preset,checked_fail_reason) if PwrFlag == 2:#全并联ATII型 areaflag = 1 #是AT所或分区所的双并联断路器馈线吗, 1是,0不是,是分区所越区侧馈线。 if areaflag == 1: checked_preset, checked_fail_reason = FDR.Check_FDR_PT_Crrnt(Preset['PT断线下限电流'],Preset['PT断线动作电流'],checked_preset,checked_fail_reason) checked_preset, checked_fail_reason = FDR.Check_FDR_BackAcc_Time(Preset,checked_preset,checked_fail_reason) checked_preset, checked_fail_reason = FDR.Check_FDR_Reclose_Vltg(Preset['检有压动作电压'],Preset['失压动作电压'],Preset['PT断线动作电压'],checked_preset,checked_fail_reason) if areaflag == 0: Cross_Area_Flag = 1#是否越区?1是越区,0是不越区 checked_preset, checked_fail_reason = FDR.Check_FDR_PT_Crrnt(Preset['PT断线下限电流'],Preset['PT断线动作电流'],checked_preset,checked_fail_reason) checked_preset, checked_fail_reason = FDR.Check_FDR_BackAcc_Time(Preset,checked_preset,checked_fail_reason) checked_preset, checked_fail_reason = FDR.Check_FDR_LwVltg_V(Preset['低压启动过电流动作电压'],Preset['失压动作电压'],Preset['PT断线动作电压'],checked_preset,checked_fail_reason) if Cross_Area_Flag == 0: checked_preset, checked_fail_reason = FDR.Check_FDR_OvrCrrnt_Time(Preset['低压启动过电流动作时限'],Preset['距离Ⅰ段时限'],checked_preset,checked_fail_reason) checked_preset, checked_fail_reason = FDR.Check_FDR_DeltaCrrnt_Time(Preset['电流增量动作时限'],Preset['距离Ⅰ段时限'],checked_preset,checked_fail_reason) if Cross_Area_Flag == 1: checked_preset, checked_fail_reason = FDR.Check_FDR_OvrCrrnt_Time(Preset['低压启动过电流动作时限'],Preset['距离Ⅱ段时限'],checked_preset,checked_fail_reason) checked_preset, checked_fail_reason = FDR.Check_FDR_DeltaCrrnt_Time(Preset['电流增量动作时限'],Preset['距离Ⅱ段时限'],checked_preset,checked_fail_reason) if PwrMthd == 2:#直接供电 if PwrFlag == 1:#单线直供 raise ValueError("供电方式设置错误") if PwrFlag == 2:#复线直供 checked_preset, checked_fail_reason = FDR.Check_FDR_PT_Crrnt(Preset['PT断线下限电流'],Preset['PT断线动作电流'],checked_preset,checked_fail_reason) checked_preset, checked_fail_reason = FDR.Check_FDR_BackAcc_Time(Preset,checked_preset,checked_fail_reason) checked_preset, checked_fail_reason = FDR.Check_FDR_Reclose_Vltg(Preset['检有压动作电压'],Preset['失压动作电压'],Preset['PT断线动作电压'],checked_preset,checked_fail_reason) checked_preset, checked_fail_reason = FDR.Check_FDR_OvrCrrnt_Time(Preset['低压启动过电流动作时限'],Preset['距离Ⅰ段时限'],checked_preset,checked_fail_reason) checked_preset, checked_fail_reason = FDR.Check_FDR_DeltaCrrnt_Time(Preset['电流增量动作时限'],Preset['距离Ⅰ段时限'],checked_preset,checked_fail_reason) if PwrMthd == 3:#开闭所供电 feederflag = 1 #馈线/进线,1是馈线,0是进线 if PwrFlag == 1:#经1级开闭所供电 if feederflag == 1:#馈线 checked_preset, checked_fail_reason = FDR.Check_FDR_PT_Crrnt(Preset['PT断线下限电流'],Preset['PT断线动作电流'],checked_preset,checked_fail_reason) checked_preset, checked_fail_reason = FDR.Check_FDR_BackAcc_Time(Preset,checked_preset,checked_fail_reason) checked_preset, checked_fail_reason = FDR.Check_FDR_LwVltg_V(Preset['低压启动过电流动作电压'],Preset['失压动作电压'],Preset['PT断线动作电压'],checked_preset,checked_fail_reason) checked_preset, checked_fail_reason = FDR.Check_FDR_OvrCrrnt_Time(Preset['低压启动过电流动作时限'],Preset['距离Ⅰ段时限'],checked_preset,checked_fail_reason) checked_preset, checked_fail_reason = FDR.Check_FDR_DeltaCrrnt_Time(Preset['电流增量动作时限'],Preset['距离Ⅰ段时限'],checked_preset,checked_fail_reason) if feederflag == 0:#进线 checked_preset, checked_fail_reason = FDR.Check_FDR_PT_Crrnt(Preset['PT断线下限电流'],Preset['PT断线动作电流'],checked_preset,checked_fail_reason) checked_preset, checked_fail_reason = FDR.Check_FDR_BackAcc_Time(Preset,checked_preset,checked_fail_reason) checked_preset, checked_fail_reason = FDR.Check_FDR_Reclose_Vltg(Preset['检有压动作电压'],Preset['失压动作电压'],Preset['PT断线动作电压'],checked_preset,checked_fail_reason) if PwrFlag == 2:#经2级开闭所供电 feederlevel = 1#是1级还是2级,1是1级,2是2级 if feederflag == 1 and feederlevel == 1:#馈线 checked_preset, checked_fail_reason = FDR.Check_FDR_DistanceII_X(Preset['距离Ⅱ段电抗'],Preset['距离Ⅰ段电抗'],checked_preset,checked_fail_reason) checked_preset, checked_fail_reason = FDR.Check_FDR_DistanceII_R(Preset['距离Ⅱ段电阻'],Preset['距离Ⅰ段电阻'],checked_preset,checked_fail_reason) checked_preset, checked_fail_reason = FDR.Check_FDR_DistanceII_Time(Preset['距离Ⅱ段时限'],Preset['距离Ⅰ段时限'],Delta_T,checked_preset,checked_fail_reason) checked_preset, checked_fail_reason = FDR.Check_FDR_PT_Crrnt(Preset['PT断线下限电流'],Preset['PT断线动作电流'],checked_preset,checked_fail_reason) checked_preset, checked_fail_reason = FDR.Check_FDR_BackAcc_Time(Preset,checked_preset,checked_fail_reason) checked_preset, checked_fail_reason = FDR.Check_FDR_LwVltg_V(Preset['低压启动过电流动作电压'],Preset['失压动作电压'],Preset['PT断线动作电压'],checked_preset,checked_fail_reason) checked_preset, checked_fail_reason = FDR.Check_FDR_OvrCrrnt_Time(Preset['低压启动过电流动作时限'],Preset['距离Ⅱ段时限'],checked_preset,checked_fail_reason) checked_preset, checked_fail_reason = FDR.Check_FDR_DeltaCrrnt_Time(Preset['电流增量动作时限'],Preset['距离Ⅱ段时限'],checked_preset,checked_fail_reason) if feederflag == 1 and feederlevel == 2:#馈线 checked_preset, checked_fail_reason = FDR.Check_FDR_PT_Crrnt(Preset['PT断线下限电流'],Preset['PT断线动作电流'],checked_preset,checked_fail_reason) checked_preset, checked_fail_reason = FDR.Check_FDR_BackAcc_Time(Preset,checked_preset,checked_fail_reason) checked_preset, checked_fail_reason = FDR.Check_FDR_LwVltg_V(Preset['低压启动过电流动作电压'],Preset['失压动作电压'],Preset['PT断线动作电压'],checked_preset,checked_fail_reason) checked_preset, checked_fail_reason = FDR.Check_FDR_OvrCrrnt_Time(Preset['低压启动过电流动作时限'],Preset['距离Ⅰ段时限'],checked_preset,checked_fail_reason) checked_preset, checked_fail_reason = FDR.Check_FDR_DeltaCrrnt_Time(Preset['电流增量动作时限'],Preset['距离Ⅰ段时限'],checked_preset,checked_fail_reason) if feederflag == 0 and feederlevel == 1:#进线 checked_preset, checked_fail_reason = FDR.Check_FDR_PT_Crrnt(Preset['PT断线下限电流'],Preset['PT断线动作电流'],checked_preset,checked_fail_reason) checked_preset, checked_fail_reason = FDR.Check_FDR_BackAcc_Time(Preset,checked_preset,checked_fail_reason) checked_preset, checked_fail_reason = FDR.Check_FDR_Reclose_Vltg(Preset['检有压动作电压'],Preset['失压动作电压'],Preset['PT断线动作电压'],checked_preset,checked_fail_reason) if feederflag == 0 and feederlevel == 2:#进线 checked_preset, checked_fail_reason = FDR.Check_FDR_PT_Crrnt(Preset['PT断线下限电流'],Preset['PT断线动作电流'],checked_preset,checked_fail_reason) checked_preset, checked_fail_reason = FDR.Check_FDR_BackAcc_Time(Preset,checked_preset,checked_fail_reason) checked_preset, checked_fail_reason = FDR.Check_FDR_Reclose_Vltg(Preset['检有压动作电压'],Preset['失压动作电压'],Preset['PT断线动作电压'],checked_preset,checked_fail_reason) except ValueError as e: print(e)