Smart_Report/PersetValueCalculation_main.py

371 lines
36 KiB
Python
Raw Permalink Normal View History

2025-04-17 14:15:10 +08:00
# Ziran Gao 20240905
# 智能二次运维项目中,定值计算功能
#-------------2024年9月6日--------------------------------------------------------------------------------------------------------
# 本功能基本逻辑是:
# 1从外部文件中读取定值单和装置基本参数。
# 2根据要校验哪些定值的合理性进行相应的计算。
# 3将不合理的定值进行标注。
# 4目前的初步代码开发因为定值单不是从我这里获取读取也做不了因此只暂时只做读取基本参数-由基本参数计算理论定值这一部分。
# 5首先进行对象的开发。分两个类供电方式与相应装置
#---------2024年9月13日-----------------------------------------------------------------------------------------------------------
# 面向对象实现太复杂,回到面向过程
# 主要逻辑是首先从外界读入供电方式、运行区域和大所还是小所根据这些信息运行指定函数从中excel中读取基础参数当前分了两个excel基础参数表
# 一个适用于大所一个适用于小所每个所中各有6个sheet适用于6种供电方式。
# 然后对每种供电方式建立计算公式库里面有针对6种设备的计算公式合集。
# 对每个定值应该单独写函数计算,为了避免传入函数太多以及我不是所有都要校核。
# 目前仅是定值计算,还没到合理性校验那里。
# encoding:utf-8
#---------2024年10月10日-----------------------------------------------------------------------------------------------------------
# 定值计算第一稿完成
# 分为读取,计算,存储三部分。
# 部分计算还存在疑问但已完成从excel中读取系统参数-程序计算-存储至数据库对应表整个功能历程。
# 对每个装置各建了个表对馈线建了三个表分别表示0区1区2区
# 之所以这么做是为了后续只计算某个区的时候方便。
# encoding:utf-8
import pandas as pd
import ImportSystemParameter as ISP
import CalculateATValue as AT
import CalculateFeederValue as Feeder
import CalculateMainTransformer as MT
import CalculateShuntValue as Shunt
import Self_defined_functions
import json
import re
def read_device_preset_values(json_file_path):
# 读取JSON文件
with open(json_file_path, 'r', encoding='utf-8') as f:
preset_data = json.load(f)
device_name = preset_data['devName']
if '主变' in device_name:
Device = 3
ImportedParameter_MainTrsfmr = pd.read_excel('牵引变压器定值整定基础参数表.xlsx',header=None)
MainTrsfmrprmtr = ImportedParameter_MainTrsfmr.set_index(0)[1].to_dict()
return preset_data, Device, MainTrsfmrprmtr
elif '馈线' in device_name:
numbers = re.findall(r'\d+\.?\d*', device_name)
Device = 1
try:
ImportedParameter_feeder = pd.read_excel('馈线定值整定基础参数表_变电所_全并联II型.xlsx',sheet_name=numbers[0],header=None)
except ValueError:
raise ValueError(f"在Excel文件中找不到工作表 {numbers[0]},请检查断路器号是否正确或基础文件配置是否正确")
#ImportedParameter_feeder = pd.read_excel('馈线定值整定基础参数表_变电所_全并联II型.xlsx',sheet_name=numbers[0],header=None)
Feederprmtr = ImportedParameter_feeder.set_index(0)[1].to_dict()
return preset_data, Device, Feederprmtr
elif '测距' in device_name:
GDB_name = device_name.split('方向')[0]
try:
ImportedParameter_feeder = pd.read_excel('故障测距装置定值整定基础参数表.xlsx',sheet_name=GDB_name,header=None)
except ValueError:
raise ValueError(f"在Excel文件中找不到工作表 {GDB_name},请检查断路器号是否正确或基础文件配置是否正确")
Device = 2
Feederprmtr = ImportedParameter_feeder.set_index(0)[1].to_dict()
return preset_data, Device, Feederprmtr
elif '自耦变' in device_name:
Device = 4
ImportedParameter_AT = pd.read_excel('AT变压器定值整定基础参数表.xlsx',header=None)
ATprmtr = ImportedParameter_AT.set_index(0)[1].to_dict()
return preset_data, Device, ATprmtr
elif '并补' in device_name:
Device = 5
ImportedParameter_Shunt = pd.read_excel('并补定值整定基础参数表.xlsx',header=None)
Shuntprmtr = ImportedParameter_Shunt.set_index(0)[1].to_dict()
return preset_data, Device, Shuntprmtr
else:
raise ValueError(f"暂不支持该装置定值计算。")
input_json_path = "./212馈线保护测控装置_IN.json"
output_json_path = input_json_path.replace('_IN.json', '_OUT.json')
result = read_device_preset_values(input_json_path)
#第一步从U/I读数据这一步需要王喜直接从界面把选择的数据读进来。这里我直接定义。
preset_data = result[0]
Device = result[1]
if Device == 1:
Feederprmtr = result[2]
elif Device == 2:
Feederprmtr = result[2]
elif Device == 3:
MainTrsfmrprmtr = result[2]
elif Device == 4:
ATprmtr = result[2]
elif Device == 5:
Shuntprmtr = result[2]
#第二步根据选择的参数计算定值这里现在做的是选择一个装置对所有该装置的定值进行计算。理想情况是在UI上勾选要计算哪些定值再一一计算但仅靠我这里无法判断输入是怎样所以先做通过选择装置然后计算该装置所有定值的情况。后面可以再改我之所以把每个定值都写了一个函数就是为了避免这个情况。
#Device = 1 #是什么装置1是馈线2是测距测距和馈线的定值目前认为是一致的3是主变4是AT5是并补6是动力变目前未做
if Device == 4:
DiffProtect_I_AT = AT.ATTransformer_DiffProtection(1.2, ATprmtr['变压器最大励磁涌流倍数'], ATprmtr['T绕组额定电流'], ATprmtr['电流互感器变比'])
Overcurrent_I_AT = AT.ATTransformer_OvrCrrntProtection(ATprmtr['T绕组额定电流'], ATprmtr['电流互感器变比'])
#PresetValue_AT = {'差动速断电流':DiffProtect_I_AT[0],'比率制动差动保护动作电流':DiffProtect_I_AT[1],'比率制动差动保护1段制动电流':DiffProtect_I_AT[2],'比率制动差动保护2段制动电流':DiffProtect_I_AT[3]}
for item in preset_data['dzList']:
if item['dzComment'] == '差动速断|差动速断':
item['accountStr'] = str(DiffProtect_I_AT[0])
continue
if item['dzComment'] == '比率差动|比率差动动作电流':
item['accountStr'] = str(DiffProtect_I_AT[1])
continue
if item['dzComment'] == '比率差动|1段制动电流':
item['accountStr'] = str(DiffProtect_I_AT[2])
continue
if item['dzComment'] == '比率差动|2段制动电流':
item['accountStr'] = str(DiffProtect_I_AT[3])
continue
if item['dzComment'] == '过负荷|过负荷动作电流':
item['accountStr'] = str(Overcurrent_I_AT)
continue
with open(output_json_path, 'w', encoding='utf-8') as f:
json.dump(preset_data, f, ensure_ascii=False, indent=4)
if Device == 5:
OvrCurrntMax_I_Shunt = Shunt.ShuntCapacitor_OverCurrentMax_Current(Shuntprmtr['电流速断保护可靠系数'],Shuntprmtr['电容器装置的额定电流'])
DiffVltg_V_Shunt = Shunt.ShuntCapacitor_DiffVoltage_Voltage(Shuntprmtr['差电压保护可靠系数'],Shuntprmtr['差电压互感器变比'],Shuntprmtr['电容器串联组数'],Shuntprmtr['每组电容器并联台数'],Shuntprmtr['电抗率'])
DiffCurrnt_I_Shunt = Shunt.ShuntCapacitor_DiffCurrent_Current(Shuntprmtr['差电流保护可靠系数'],Shuntprmtr['电流互感器同型系数'],Shuntprmtr['电流互感器误差'],Shuntprmtr['电容器投入时的最大涌流倍数'],Shuntprmtr['电容器装置的额定电流'])
OvrCurrnt_I_Shunt = Shunt.ShuntCapacitor_OverCurrent_Current(Shuntprmtr['电容器装置的额定电流'])
LngTmOvrCurrnt_I_Shunt = Shunt.ShuntCapacitor_LongTimeOverCurrent_Current( Shuntprmtr['过电流系数'],Shuntprmtr['电容器装置的额定电流'])
OvrVltg_V_Shunt = Shunt.ShuntCapacitor_OverVoltage_Voltage(Shuntprmtr['过电压系数'],Shuntprmtr['电抗率'],Shuntprmtr['电容器串联组数'],Shuntprmtr['单台电容器额定电压'],Shuntprmtr['差电压互感器变比'])
n_CT = Shuntprmtr['电流互感器变比']
PresetValue_Shunt = {'电流速断电流':OvrCurrntMax_I_Shunt,'差电压保护电压':DiffVltg_V_Shunt,'差电流保护电流':DiffCurrnt_I_Shunt,'过电流保护电流':OvrCurrnt_I_Shunt,'全电流过电流保护电流':LngTmOvrCurrnt_I_Shunt,'过电压保护电压':OvrVltg_V_Shunt}
for item in preset_data['dzList']:
if item['dzComment'] == '电流速断|动作电流':
item['accountStr'] = str(OvrCurrntMax_I_Shunt/n_CT)
continue
if item['dzComment'] == '过电流|动作电流':
item['accountStr'] = str(OvrCurrnt_I_Shunt/n_CT)
continue
if item['dzComment'] == '全电流过电流|动作电流':
item['accountStr'] = str(LngTmOvrCurrnt_I_Shunt/n_CT)
continue
if item['dzComment'] == '差流1|动作电流':
item['accountStr'] = str(DiffCurrnt_I_Shunt/n_CT)
continue
if item['dzComment'] == '差流2|动作电流':
item['accountStr'] = str(DiffCurrnt_I_Shunt/n_CT)
continue
if item['dzComment'] == '过电压|动作电压':
item['accountStr'] = str(OvrVltg_V_Shunt)
continue
if item['dzComment'] == '差压1|动作电压':
item['accountStr'] = str(DiffVltg_V_Shunt)
continue
if item['dzComment'] == '差压2|动作电压':
item['accountStr'] = str(DiffVltg_V_Shunt)
continue
with open(output_json_path, 'w', encoding='utf-8') as f:
json.dump(preset_data, f, ensure_ascii=False, indent=4)
#Self_defined_functions.SavePresetValuetoSQLSERVER('im_PresetValue_Shunt',PresetValue_Shunt)
if Device == 3:
DiffProtect_I_MT = MT.MainTransformer_DiffProtection(1.2,MainTrsfmrprmtr['高压侧额定电流'],MainTrsfmrprmtr['高压侧电流互感器变比'],MainTrsfmrprmtr['变压器最大励磁涌流倍数'])
#print(DiffProtect_I_MT)
ZeroSquncOvrCurrnt_I_MT = MT.MainTransformer_ZeroSequence_Overcurrent(MainTrsfmrprmtr['高压侧额定电流'],MainTrsfmrprmtr['高压侧电流互感器变比'])
LowVltg_V_MT = MT.MainTransformer_LowVoltage_Voltage(MainTrsfmrprmtr['低压侧最低运行电压'],1.2,MainTrsfmrprmtr['低压侧电压互感器变比'])
LowVltg_Ih_MT = MT.MainTransformer_LowVoltage_HiVoltageSideCurrent(MainTrsfmrprmtr['低压启动过电流高压侧可靠系数'],MainTrsfmrprmtr['高压侧额定电流'],MainTrsfmrprmtr['高压侧电流互感器变比'])
LowVltg_Il_MT = MT.MainTransformer_LowVoltage_LowVoltageSideCurrent(MainTrsfmrprmtr['低压启动过电流低压侧可靠系数'],MainTrsfmrprmtr['低压侧额定电流'],MainTrsfmrprmtr['低压侧电流互感器变比'])
LowVltg_PTV_MT = MT.MainTransformer_LowVoltage_PTVoltage(MainTrsfmrprmtr['低压侧最低运行电压'],1.2,MainTrsfmrprmtr['低压启动过电流PT断线灵敏系数'],MainTrsfmrprmtr['低压侧电压互感器变比'])
LowVltg_Cffcnth_MT = MT.MainTransformer_LowVoltage_AmpCoeffiHigh(MainTrsfmrprmtr['高压侧各相最大负荷电流'],MainTrsfmrprmtr['高压侧额定电流'])
LowVltg_Cffcntl_MT = MT.MainTransformer_LowVoltage_AmpCoeffiLow(MainTrsfmrprmtr['低压侧各相最大负荷电流'],MainTrsfmrprmtr['低压侧额定电流'])
OvrLd_I_MT = MT.MainTransformer_Overload_Current(MainTrsfmrprmtr['高压侧额定电流'],MainTrsfmrprmtr['高压侧电流互感器变比'])
#print(OvrLd_I_MT)
PresetValue_MT_ZJX = {'中间相差动保护速断电流':DiffProtect_I_MT[0][1],'中间相比率制动差动保护动作电流':DiffProtect_I_MT[0][3],'中间相比率制动差动保护制动电流I段':DiffProtect_I_MT[0][5],'中间相比率制动差动保护制动电流II段':DiffProtect_I_MT[0][7],'差动保护差流越限定值':DiffProtect_I_MT[1],'零序过电流保护电流定值':ZeroSquncOvrCurrnt_I_MT,
'低压启动过电流动作电压':LowVltg_V_MT,'中间相低压启动过电流高压侧动作电流':LowVltg_Ih_MT[1],'中间相低压启动过电流低压侧动作电流':LowVltg_Il_MT[1],'低压启动过电流PT断线电压定值':LowVltg_PTV_MT,'低压启动过电流高压侧放大倍数':LowVltg_Cffcnth_MT,'低压启动过电流低压侧放大倍数':LowVltg_Cffcntl_MT,'中间相过负荷I段保护动作电流':OvrLd_I_MT[1],'中间相相过负荷II段保护动作电流':OvrLd_I_MT[3]}
PresetValue_MT_BX = {' 边相差动保护速断电流':DiffProtect_I_MT[0][0],'边相比率制动差动保护动作电流':DiffProtect_I_MT[0][2],'边相比率制动差动保护制动电流I段':DiffProtect_I_MT[0][4],'边相比率制动差动保护制动电流II段':DiffProtect_I_MT[0][6],'差动保护差流越限定值':DiffProtect_I_MT[1],'零序过电流保护电流定值':ZeroSquncOvrCurrnt_I_MT,
'低压启动过电流动作电压':LowVltg_V_MT,'边相低压启动过电流高压侧动作电流':LowVltg_Ih_MT[0],'边相低压启动过电流低压侧动作电流':LowVltg_Il_MT[0],'低压启动过电流PT断线电压定值':LowVltg_PTV_MT,'低压启动过电流高压侧放大倍数':LowVltg_Cffcnth_MT,'低压启动过电流低压侧放大倍数':LowVltg_Cffcntl_MT,'边相过负荷I段保护动作电流':OvrLd_I_MT[0],'边相过负荷II段保护动作电流':OvrLd_I_MT[2]}
#中间项定值与边相定值
PresetValue_MT = {**PresetValue_MT_ZJX,**PresetValue_MT_BX}
for item in preset_data['dzList']:
if item['dzComment'] == 'A相差动|A 相差动速断电流':
item['accountStr'] = str(DiffProtect_I_MT[0][0])
continue
if item['dzComment'] == 'A相差动|A 相比率差动电流':
item['accountStr'] = str(DiffProtect_I_MT[0][2])
continue
if item['dzComment'] == 'A相差动|A 相 1 段制动电流':
item['accountStr'] = str(DiffProtect_I_MT[0][4])
continue
if item['dzComment'] == 'A相差动|A 相 2 段制动电流':
item['accountStr'] = str(DiffProtect_I_MT[0][6])
continue
if item['dzComment'] == 'B相差动|B 相差动速断电流':
item['accountStr'] = str(DiffProtect_I_MT[0][1])
continue
if item['dzComment'] == 'B相差动|B 相比率差动电流':
item['accountStr'] = str(DiffProtect_I_MT[0][3])
continue
if item['dzComment'] == 'B相差动|B 相 1 段制动电流':
item['accountStr'] = str(DiffProtect_I_MT[0][5])
continue
if item['dzComment'] == 'B相差动|B 相 2 段制动电流':
item['accountStr'] = str(DiffProtect_I_MT[0][7])
continue
if item['dzComment'] == 'C相差动|C 相差动速断电流':
item['accountStr'] = str(DiffProtect_I_MT[0][0])
continue
if item['dzComment'] == 'C相差动|C 相比率差动电流':
item['accountStr'] = str(DiffProtect_I_MT[0][2])
continue
if item['dzComment'] == 'C相差动|C 相 1 段制动电流':
item['accountStr'] = str(DiffProtect_I_MT[0][4])
continue
if item['dzComment'] == 'C相差动|C 相 2 段制动电流':
item['accountStr'] = str(DiffProtect_I_MT[0][6])
continue
if item['dzComment'] == '差流越限系数':
item['accountStr'] = str(DiffProtect_I_MT[1])
continue
if item['dzComment'] == '高压侧过流|高压侧 A 相过流电流':
item['accountStr'] = str(LowVltg_Ih_MT[0])
continue
if item['dzComment'] == '高压侧过流|高压侧 B 相过流电流':
item['accountStr'] = str(LowVltg_Ih_MT[1])
continue
if item['dzComment'] == '高压侧过流|高压侧 C 相过流电流':
item['accountStr'] = str(LowVltg_Ih_MT[0])
continue
if item['dzComment'] == '高压侧过电流放大|高压侧过流低压定值':
item['accountStr'] = str(LowVltg_V_MT)
continue
if item['dzComment'] == '高压侧过电流放大|高压侧过流放大倍数':
item['accountStr'] = str(LowVltg_Cffcnth_MT)
continue
if item['dzComment'] == '低压侧过电流|低压侧 a 相过流电流':
item['accountStr'] = str(LowVltg_Il_MT[0])
continue
if item['dzComment'] == '低压侧过电流|低压侧 b 相过流电流':
item['accountStr'] = str(LowVltg_Il_MT[0])
continue
if item['dzComment'] == '低压侧过电流放大|低压侧过流低压定值':
item['accountStr'] = str(LowVltg_V_MT)
continue
if item['dzComment'] == '低压侧过电流放大|低压侧过流放大倍数':
item['accountStr'] = str(LowVltg_Cffcntl_MT)
continue
if item['dzComment'] == '过负荷I段|A 相过负荷 I 段电流':
item['accountStr'] = str(OvrLd_I_MT[0])
continue
if item['dzComment'] == '过负荷I段|B 相过负荷 I 段电流':
item['accountStr'] = str(OvrLd_I_MT[1])
continue
if item['dzComment'] == '过负荷I段|C 相过负荷 I 段电流':
item['accountStr'] = str(OvrLd_I_MT[0])
continue
if item['dzComment'] == '过负荷II段|A 相过负荷 II 段电流':
item['accountStr'] = str(OvrLd_I_MT[2])
continue
if item['dzComment'] == '过负荷II段|B 相过负荷 II 段电流':
item['accountStr'] = str(OvrLd_I_MT[3])
continue
if item['dzComment'] == '过负荷II段|C 相过负荷 II 段电流':
item['accountStr'] = str(OvrLd_I_MT[2])
continue
if item['dzComment'] == '零序电流|零序过流电流':
item['accountStr'] = str(ZeroSquncOvrCurrnt_I_MT)
continue
if item['dzComment'] == 'PT断线|高压侧 PT 断线动作电压':
item['accountStr'] = str(LowVltg_PTV_MT)
continue
if item['dzComment'] == 'PT断线|低压侧 PT 断线动作电压':
item['accountStr'] = str(LowVltg_PTV_MT)
continue
with open(output_json_path, 'w', encoding='utf-8') as f:
json.dump(preset_data, f, ensure_ascii=False, indent=4)
#print(PresetValue_MT)
#Self_defined_functions.SavePresetValuetoSQLSERVER('im_PresetValue_MT',PresetValue_MT)
if Device == 1:
DistI_X_0 = Feeder.Line_ATI_zero_DistanceI_Reactance(Feederprmtr['距离I段电抗值可靠系数'], Feederprmtr['供电线长度'], Feederprmtr['供电线单位电抗'], Feederprmtr['接触网长度'], Feederprmtr['接触网单位电抗'], Feederprmtr['电流互感器变比'], Feederprmtr['电压互感器变比'])
DistI_R_0 = Feeder.Line_ATI_zero_DistanceI_Resistance(Feederprmtr['正常供电变电所T线最低电压'], Feederprmtr['距离I段电阻值可靠系数'], Feederprmtr['正常供电变电所馈线最大负荷电流'], Feederprmtr['负荷阻抗角'], Feederprmtr['线路阻抗角'],Feederprmtr['电流互感器变比'], Feederprmtr['电压互感器变比'])
OvrCurrnt_I_0 = Feeder.Line_AT1_zero_OverCurrent_Current(Feederprmtr['电流速断可靠系数'], Feederprmtr['正常供电变电所馈线最大负荷电流'], Feederprmtr['分区所故障时变电所馈线最大短路电流'], Feederprmtr['电流互感器变比'],Feederprmtr['变电所馈线最大短路电流'])
LowVltg_V_0 = Feeder.Line_AT1_zero_LowVoltage_Voltage(Feederprmtr['正常供电变电所T线最低电压'], Feederprmtr['低压过电流电压可靠系数'], Feederprmtr['电压互感器变比'])
LowVltg_I_0 = Feeder.Line_AT1_zero_LowVoltage_Current(Feederprmtr['低压过电流电流可靠系数'], Feederprmtr['正常供电变电所馈线最大负荷电流'], Feederprmtr['低压过电流电流最小灵敏度'], Feederprmtr['解列为单线直供分区所故障时变电所馈线最小短路电流'], Feederprmtr['电流互感器变比'])
Delta_Currnt_I_0 = Feeder.Line_AT1_zero_DeltaCurrent_Current(Feederprmtr['电流增量可靠系数'], Feederprmtr['线路运行最大功率电力机车的额定电流'],Feederprmtr['电流互感器变比'])
for item in preset_data['dzList']:
if item['dzComment'] == '距离Ⅰ段|电抗':
item['accountStr'] = str(DistI_X_0)
continue
if item['dzComment'] == '距离Ⅰ段|电阻':
item['accountStr'] = str(DistI_R_0)
continue
if item['dzComment'] == '电流速断|动作电流':
item['accountStr'] = str(OvrCurrnt_I_0[0])
continue
if item['dzComment'] == '低压起动过电流|动作电流':
item['accountStr'] = str(LowVltg_I_0)
continue
if item['dzComment'] == '低压起动过电流|动作电压':
item['accountStr'] = str(LowVltg_V_0)
continue
if item['dzComment'] == '电流增量|动作电流':
item['accountStr'] = str(Delta_Currnt_I_0)
continue
with open(output_json_path, 'w', encoding='utf-8') as f:
json.dump(preset_data, f, ensure_ascii=False, indent=4)
# DistI_X_1 = Feeder.Line_SingDirect_zero_DistanceI_Reactance(Feederprmtr['越区时距离I段电抗值可靠系数'], Feederprmtr['供电线长度'], Feederprmtr['供电线单位电抗'], Feederprmtr['越区侧接触网长度'], Feederprmtr['接触网单位电抗'], Feederprmtr['电流互感器变比'], Feederprmtr['电压互感器变比'])
# DistII_X_1 = Feeder.Line_AT2_one_DistanceII_Reactance(Feederprmtr['距离II段电抗值可靠系数'], Feederprmtr['供电线长度'], Feederprmtr['供电线单位电抗'], Feederprmtr['接触网长度'], Feederprmtr['接触网单位电抗'], Feederprmtr['电流互感器变比'], Feederprmtr['电压互感器变比'], Feederprmtr['越区侧接触网长度'])
# DistI_R_1 = Feeder.Line_ATI_zero_DistanceI_Resistance(Feederprmtr['正常供电变电所T线最低电压'], Feederprmtr['距离I段电阻值可靠系数'], Feederprmtr['正常供电变电所馈线最大负荷电流'], Feederprmtr['负荷阻抗角'], Feederprmtr['线路阻抗角'],Feederprmtr['电流互感器变比'], Feederprmtr['电压互感器变比'])
# DistII_R_1 = Feeder.Line_ATI_zero_DistanceI_Resistance(Feederprmtr['正常供电变电所T线最低电压'], Feederprmtr['距离I段电阻值可靠系数'], Feederprmtr['正常供电变电所馈线最大负荷电流'], Feederprmtr['负荷阻抗角'], Feederprmtr['线路阻抗角'],Feederprmtr['电流互感器变比'], Feederprmtr['电压互感器变比'])
# #DistII_R_1 = Feeder.Line_AT2_one_DistanceII_Reactance(Feederprmtr['越区时距离II段电抗值可靠系数'], Feederprmtr['供电线长度'], Feederprmtr['供电线单位电抗'], Feederprmtr['接触网长度'], Feederprmtr['接触网单位电抗'], Feederprmtr['电流互感器变比'], Feederprmtr['电压互感器变比'], Feederprmtr['越区侧接触网长度'])
# OvrCurrnt_I_1 = Feeder.Line_AT1_zero_OverCurrent_Current(Feederprmtr['电流速断可靠系数'], Feederprmtr['正常供电变电所馈线最大负荷电流'], Feederprmtr['分区所故障时变电所馈线最大短路电流'], Feederprmtr['电流互感器变比'],Feederprmtr['变电所馈线最大短路电流'])
# LowVltg_V_1 = Feeder.Line_AT1_zero_LowVoltage_Voltage(Feederprmtr['正常供电变电所T线最低电压'], Feederprmtr['低压过电流电压可靠系数'], Feederprmtr['电压互感器变比'])
# LowVltg_I_1 = Feeder.Line_AT1_zero_LowVoltage_Current(Feederprmtr['低压过电流电流可靠系数'], Feederprmtr['正常供电变电所馈线最大负荷电流'], Feederprmtr['低压过电流电流最小灵敏度'], Feederprmtr['解列为单线直供分区所故障时变电所馈线最小短路电流'], Feederprmtr['电流互感器变比'])
# Delta_Currnt_I_1 = Feeder.Line_AT1_zero_DeltaCurrent_Current(Feederprmtr['电流增量可靠系数'], Feederprmtr['线路运行最大功率电力机车的额定电流'],Feederprmtr['电流互感器变比'])
# DistI_X_2 = Feeder.Line_SingDirect_zero_DistanceI_Reactance(Feederprmtr['距离I段电抗值可靠系数'], Feederprmtr['供电线长度'], Feederprmtr['供电线单位电抗'], Feederprmtr['接触网长度'], Feederprmtr['接触网单位电抗'], Feederprmtr['电流互感器变比'], Feederprmtr['电压互感器变比'])
# DistI_R_2 = Feeder.Line_ATI_zero_DistanceI_Resistance(Feederprmtr['正常供电变电所T线最低电压'], Feederprmtr['距离I段电阻值可靠系数'], Feederprmtr['正常供电变电所馈线最大负荷电流'], Feederprmtr['负荷阻抗角'], Feederprmtr['线路阻抗角'],Feederprmtr['电流互感器变比'], Feederprmtr['电压互感器变比'])
# OvrCurrnt_I_2 = Feeder.Line_AT1_zero_OverCurrent_Current(Feederprmtr['电流速断可靠系数'], Feederprmtr['正常供电变电所馈线最大负荷电流'], Feederprmtr['分区所故障时变电所馈线最大短路电流'], Feederprmtr['电流互感器变比'],Feederprmtr['变电所馈线最大短路电流'])
# LowVltg_V_2 = Feeder.Line_AT1_zero_LowVoltage_Voltage(Feederprmtr['正常供电变电所T线最低电压'], Feederprmtr['低压过电流电压可靠系数'], Feederprmtr['电压互感器变比'])
# LowVltg_I_2 = Feeder.Line_AT1_zero_LowVoltage_Current(Feederprmtr['低压过电流电流可靠系数'], Feederprmtr['正常供电变电所馈线最大负荷电流'], Feederprmtr['低压过电流电流最小灵敏度'], Feederprmtr['解列为单线直供分区所故障时变电所馈线最小短路电流'], Feederprmtr['电流互感器变比'])
# Delta_Currnt_I_2 = Feeder.Line_AT1_zero_DeltaCurrent_Current(Feederprmtr['电流增量可靠系数'], Feederprmtr['线路运行最大功率电力机车的额定电流'],Feederprmtr['电流互感器变比'])
# PresetValue_dict_0 = {'距离I段电抗定值':DistI_X_0, '距离I段电阻定值':DistI_R_0, '过流保护电流定值':OvrCurrnt_I_0[0],'过流保护灵敏度':OvrCurrnt_I_0[1], '低压启动过电流电压定值':LowVltg_V_0, '低压启动过电流电流定值':LowVltg_I_0, '电流增量电流定值':Delta_Currnt_I_0}
# PresetValue_dict_1 = {'距离I段电抗定值':DistI_X_1, '距离I段电阻定值':DistI_R_1, '距离II段电抗定值':DistII_X_1, '距离II段电阻定值':DistII_R_1, '过流保护电流定值':OvrCurrnt_I_1[0],'过流保护灵敏度':OvrCurrnt_I_1[1], '低压启动过电流电压定值':LowVltg_V_1, '低压启动过电流电流定值':LowVltg_I_1, '电流增量电流定值':Delta_Currnt_I_1}
# PresetValue_dict_2 = {'距离I段电抗定值':DistI_X_2, '距离I段电阻定值':DistI_R_2, '过流保护电流定值':OvrCurrnt_I_2[0],'过流保护灵敏度':OvrCurrnt_I_2[1], '低压启动过电流电压定值':LowVltg_V_2, '低压启动过电流电流定值':LowVltg_I_2, '电流增量电流定值':Delta_Currnt_I_2}
# Self_defined_functions.SavePresetValuetoSQLSERVER('im_PresetValue_Feeder_0',PresetValue_dict_0)
# Self_defined_functions.SavePresetValuetoSQLSERVER('im_PresetValue_Feeder_1',PresetValue_dict_1)
# Self_defined_functions.SavePresetValuetoSQLSERVER('im_PresetValue_Feeder_2',PresetValue_dict_2)
if Device == 2:
DistI_X_0 = Feeder.Line_ATI_zero_DistanceI_Reactance(Feederprmtr['距离I段电抗值可靠系数'], Feederprmtr['供电线长度'], Feederprmtr['供电线单位电抗'], Feederprmtr['接触网长度'], Feederprmtr['接触网单位电抗'], Feederprmtr['电流互感器变比'], Feederprmtr['电压互感器变比'])
DistI_R_0 = Feeder.Line_ATI_zero_DistanceI_Resistance(Feederprmtr['正常供电变电所T线最低电压'], Feederprmtr['距离I段电阻值可靠系数'], Feederprmtr['正常供电变电所馈线最大负荷电流'], Feederprmtr['负荷阻抗角'], Feederprmtr['线路阻抗角'],Feederprmtr['电流互感器变比'], Feederprmtr['电压互感器变比'])
OvrCurrnt_I_0 = Feeder.Line_AT1_zero_OverCurrent_Current(Feederprmtr['电流速断可靠系数'], Feederprmtr['正常供电变电所馈线最大负荷电流'], Feederprmtr['分区所故障时变电所馈线最大短路电流'], Feederprmtr['电流互感器变比'],Feederprmtr['变电所馈线最大短路电流'])
LowVltg_V_0 = Feeder.Line_AT1_zero_LowVoltage_Voltage(Feederprmtr['正常供电变电所T线最低电压'], Feederprmtr['低压过电流电压可靠系数'], Feederprmtr['电压互感器变比'])
LowVltg_I_0 = Feeder.Line_AT1_zero_LowVoltage_Current(Feederprmtr['低压过电流电流可靠系数'], Feederprmtr['正常供电变电所馈线最大负荷电流'], Feederprmtr['低压过电流电流最小灵敏度'], Feederprmtr['解列为单线直供分区所故障时变电所馈线最小短路电流'], Feederprmtr['电流互感器变比'])
Delta_Currnt_I_0 = Feeder.Line_AT1_zero_DeltaCurrent_Current(Feederprmtr['电流增量可靠系数'], Feederprmtr['线路运行最大功率电力机车的额定电流'],Feederprmtr['电流互感器变比'])
for item in preset_data['dzList']:
if item['dzComment'] == '阻抗启动|电抗值':
item['accountStr'] = str(DistI_X_0)
continue
if item['dzComment'] == '阻抗启动|电阻值':
item['accountStr'] = str(DistI_R_0)
continue
if item['dzComment'] == '电流增量|电流值':
item['accountStr'] = str(Delta_Currnt_I_0)
continue
if item['dzComment'] == '低压起动过电流|电流值':
item['accountStr'] = str(LowVltg_I_0)
continue
if item['dzComment'] == '低压起动过电流|低压电压值':
item['accountStr'] = str(LowVltg_V_0)
continue
with open(output_json_path, 'w', encoding='utf-8') as f:
json.dump(preset_data, f, ensure_ascii=False, indent=4)
# DistI_X_1 = Feeder.Line_SingDirect_zero_DistanceI_Reactance(Feederprmtr['越区时距离I段电抗值可靠系数'], Feederprmtr['供电线长度'], Feederprmtr['供电线单位电抗'], Feederprmtr['越区侧接触网长度'], Feederprmtr['接触网单位电抗'], Feederprmtr['电流互感器变比'], Feederprmtr['电压互感器变比'])
# DistII_X_1 = Feeder.Line_AT2_one_DistanceII_Reactance(Feederprmtr['距离II段电抗值可靠系数'], Feederprmtr['供电线长度'], Feederprmtr['供电线单位电抗'], Feederprmtr['接触网长度'], Feederprmtr['接触网单位电抗'], Feederprmtr['电流互感器变比'], Feederprmtr['电压互感器变比'], Feederprmtr['越区侧接触网长度'])
# DistI_R_1 = Feeder.Line_ATI_zero_DistanceI_Resistance(Feederprmtr['正常供电变电所T线最低电压'], Feederprmtr['距离I段电阻值可靠系数'], Feederprmtr['正常供电变电所馈线最大负荷电流'], Feederprmtr['负荷阻抗角'], Feederprmtr['线路阻抗角'],Feederprmtr['电流互感器变比'], Feederprmtr['电压互感器变比'])
# DistII_R_1 = Feeder.Line_ATI_zero_DistanceI_Resistance(Feederprmtr['正常供电变电所T线最低电压'], Feederprmtr['距离I段电阻值可靠系数'], Feederprmtr['正常供电变电所馈线最大负荷电流'], Feederprmtr['负荷阻抗角'], Feederprmtr['线路阻抗角'],Feederprmtr['电流互感器变比'], Feederprmtr['电压互感器变比'])
# #DistII_R_1 = Feeder.Line_AT2_one_DistanceII_Reactance(Feederprmtr['越区时距离II段电抗值可靠系数'], Feederprmtr['供电线长度'], Feederprmtr['供电线单位电抗'], Feederprmtr['接触网长度'], Feederprmtr['接触网单位电抗'], Feederprmtr['电流互感器变比'], Feederprmtr['电压互感器变比'], Feederprmtr['越区侧接触网长度'])
# OvrCurrnt_I_1 = Feeder.Line_AT1_zero_OverCurrent_Current(Feederprmtr['电流速断可靠系数'], Feederprmtr['正常供电变电所馈线最大负荷电流'], Feederprmtr['分区所故障时变电所馈线最大短路电流'], Feederprmtr['电流互感器变比'],Feederprmtr['变电所馈线最大短路电流'])
# LowVltg_V_1 = Feeder.Line_AT1_zero_LowVoltage_Voltage(Feederprmtr['正常供电变电所T线最低电压'], Feederprmtr['低压过电流电压可靠系数'], Feederprmtr['电压互感器变比'])
# LowVltg_I_1 = Feeder.Line_AT1_zero_LowVoltage_Current(Feederprmtr['低压过电流电流可靠系数'], Feederprmtr['正常供电变电所馈线最大负荷电流'], Feederprmtr['低压过电流电流最小灵敏度'], Feederprmtr['解列为单线直供分区所故障时变电所馈线最小短路电流'], Feederprmtr['电流互感器变比'])
# Delta_Currnt_I_1 = Feeder.Line_AT1_zero_DeltaCurrent_Current(Feederprmtr['电流增量可靠系数'], Feederprmtr['线路运行最大功率电力机车的额定电流'],Feederprmtr['电流互感器变比'])
# DistI_X_2 = Feeder.Line_SingDirect_zero_DistanceI_Reactance(Feederprmtr['距离I段电抗值可靠系数'], Feederprmtr['供电线长度'], Feederprmtr['供电线单位电抗'], Feederprmtr['接触网长度'], Feederprmtr['接触网单位电抗'], Feederprmtr['电流互感器变比'], Feederprmtr['电压互感器变比'])
# DistI_R_2 = Feeder.Line_ATI_zero_DistanceI_Resistance(Feederprmtr['正常供电变电所T线最低电压'], Feederprmtr['距离I段电阻值可靠系数'], Feederprmtr['正常供电变电所馈线最大负荷电流'], Feederprmtr['负荷阻抗角'], Feederprmtr['线路阻抗角'],Feederprmtr['电流互感器变比'], Feederprmtr['电压互感器变比'])
# OvrCurrnt_I_2 = Feeder.Line_AT1_zero_OverCurrent_Current(Feederprmtr['电流速断可靠系数'], Feederprmtr['正常供电变电所馈线最大负荷电流'], Feederprmtr['分区所故障时变电所馈线最大短路电流'], Feederprmtr['电流互感器变比'],Feederprmtr['变电所馈线最大短路电流'])
# LowVltg_V_2 = Feeder.Line_AT1_zero_LowVoltage_Voltage(Feederprmtr['正常供电变电所T线最低电压'], Feederprmtr['低压过电流电压可靠系数'], Feederprmtr['电压互感器变比'])
# LowVltg_I_2 = Feeder.Line_AT1_zero_LowVoltage_Current(Feederprmtr['低压过电流电流可靠系数'], Feederprmtr['正常供电变电所馈线最大负荷电流'], Feederprmtr['低压过电流电流最小灵敏度'], Feederprmtr['解列为单线直供分区所故障时变电所馈线最小短路电流'], Feederprmtr['电流互感器变比'])
# Delta_Currnt_I_2 = Feeder.Line_AT1_zero_DeltaCurrent_Current(Feederprmtr['电流增量可靠系数'], Feederprmtr['线路运行最大功率电力机车的额定电流'],Feederprmtr['电流互感器变比'])
# PresetValue_dict_0 = {'距离I段电抗定值':DistI_X_0, '距离I段电阻定值':DistI_R_0, '过流保护电流定值':OvrCurrnt_I_0[0],'过流保护灵敏度':OvrCurrnt_I_0[1], '低压启动过电流电压定值':LowVltg_V_0, '低压启动过电流电流定值':LowVltg_I_0, '电流增量电流定值':Delta_Currnt_I_0}
# PresetValue_dict_1 = {'距离I段电抗定值':DistI_X_1, '距离I段电阻定值':DistI_R_1, '距离II段电抗定值':DistII_X_1, '距离II段电阻定值':DistII_R_1, '过流保护电流定值':OvrCurrnt_I_1[0],'过流保护灵敏度':OvrCurrnt_I_1[1], '低压启动过电流电压定值':LowVltg_V_1, '低压启动过电流电流定值':LowVltg_I_1, '电流增量电流定值':Delta_Currnt_I_1}
# PresetValue_dict_2 = {'距离I段电抗定值':DistI_X_2, '距离I段电阻定值':DistI_R_2, '过流保护电流定值':OvrCurrnt_I_2[0],'过流保护灵敏度':OvrCurrnt_I_2[1], '低压启动过电流电压定值':LowVltg_V_2, '低压启动过电流电流定值':LowVltg_I_2, '电流增量电流定值':Delta_Currnt_I_2}
# Self_defined_functions.SavePresetValuetoSQLSERVER('im_PresetValue_Feeder_0',PresetValue_dict_0)
# Self_defined_functions.SavePresetValuetoSQLSERVER('im_PresetValue_Feeder_1',PresetValue_dict_1)
# Self_defined_functions.SavePresetValuetoSQLSERVER('im_PresetValue_Feeder_2',PresetValue_dict_2)