Smart_Report/CheckSingleDevicePreset.py
2025-04-17 14:15:10 +08:00

182 lines
22 KiB
Python
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

# -*- 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是全并联AT2是直供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、SCOTT2是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)