182 lines
22 KiB
Python
182 lines
22 KiB
Python
# -*- 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)
|