# 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是AT,5是并补,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)