import pandas as pd from algorithm.utils.jsonUtil.jsonUtil import JsonUtil # 全局变量 charset_unify = 'utf-8' Field_NameOfTurbine = "turbine_name" Field_GeneratorTorque = "generator_torque" Field_AngleIncluded="angle_included" class ConfBusiness: def __init__(self): self.farm_name = None self.rated_power = None self.rated_WindSpeed = None self.rotor_diameter = None self.density_air = None self.rotational_Speed_Ratio = None self.type_name = None self.time_period = None # 时间间隔,单位是秒 self.output_name = None self.output_prefix = None self.turbineInfoFilePathCSV = None # 风电机组信息 self.turbineGuaranteedPowerCurveFilePathCSV = None # 合同担保功率曲线 self.input_path = None self.skip_row_number = None # 跳过的行数 self.csvFileNameSplitStringForTurbine = None # 自文件名中获取机组号的分隔符 self.index_turbine = None # 自文件名中获取机组号的索引 self.filter = None self.output_path = None self.start_time_str = None self.end_time_str = None # 将字符串转换为 pd.Timestamp 类型 self.start_time = None self.end_time = None self.excludingMonths=None # 排除指定的月份数据 格式%Y-%m self.field_turbine_time = None # 字段名 时间 self.field_turbine_name = None # 字段名 机组名 self.field_wind_speed = None # 字段名 风速 self.field_power = None # 字段名 有功功率 self.field_pitch_angle1 = None # 字段名 桨距角1 self.field_pitch_angle2 = None # 字段名 桨距角2 self.field_pitch_angle3 = None # 字段名 桨距角3 self.field_turbine_state = None # 字段名 风机状态 self.field_gen_speed = None # 字段名 发电机转速 self.value_gen_speed_min = None # 值 发电机转速最小 self.value_gen_speed_max = None # 值 发电机转速最大 self.field_rotor_speed = None # 字段名 叶轮转速 self.field_torque = None # 字段名 转矩 self.field_wind_dir = None # 字段名 风向 self.field_angle_included = None self.field_nacelle_pos = None # 字段名 机舱温度 self.field_env_temp = None # 字段名 环境温度 self.field_nacelle_temp = None # 字段名 机舱温度 self.field_temperature_large_components = None # 字段名列表 大部件温度传感器 def loadConfig(self,jsonFilePath, charset=charset_unify): """ 配置初始化 """ # # 使用global声明,表示我们要修改的是全局变量config_data # global farm_name # 将配置数据存储在变量中 configData = JsonUtil.read_json(jsonFilePath) self.farm_name = configData['name_PowerFarm'] self.rated_power = configData['rated_Power_Turbine_Unit_kW'] self.rated_WindSpeed = configData["rated_WindSpeed"] self.rotor_diameter = configData['rotor_diameter'] self.rotational_Speed_Ratio = configData['rotational_Speed_Ratio'] self.density_air = configData['density_air'] self.type_name = configData['name_Type_For_Analysis'] # 时间间隔,单位是秒 self.time_period = configData['time_Period_Unit_Second'] self.output_name = configData['name_Output'] self.output_prefix = configData['outputFileDirectory'] self.turbineInfoFilePathCSV = configData["turbineInfoFilePathCSV"] self.turbineGuaranteedPowerCurveFilePathCSV = configData[ "turbineGuaranteedPowerCurveFilePathCSV"] self.input_path = configData['inputFileDirectoryByCSV'] self.csvFileNameSplitStringForTurbine = configData["csvFileNameSplitStringForTurbine"] self.index_turbine = configData["index_turbine"] self.skip_row_number = configData['skip_row_number'] self.filter = configData['filter'] self.output_path = self.output_prefix + \ r"/{}".format(self.farm_name) # start_time_str = '{} 00:00:00'.format(configData['date_Begin']) # end_time_str = '{} 23:59:59'.format(configData['date_End']) self.start_time_str = configData['date_Begin'] self.end_time_str = configData['date_End'] # 将字符串转换为 pd.Timestamp 类型 self.start_time = pd.to_datetime( self.start_time_str, format='%Y-%m-%d %H:%M:%S') self.end_time = pd.to_datetime( self.end_time_str, format='%Y-%m-%d %H:%M:%S') self.excludingMonths= configData['excludingMonths'] self.field_turbine_time = configData['turbine_Time'] self.field_turbine_name = configData['turbine_Name'] self.field_wind_speed = configData['speed_Wind'] self.field_power = configData['power_Active'] self.field_pitch_angle1 = configData['pitch_Angle1'] self.field_pitch_angle2 = configData['pitch_Angle2'] self.field_pitch_angle3 = configData['pitch_Angle3'] self.field_turbine_state = configData['state_Turbine'] self.field_gen_speed = configData['speed_Generator'] self.value_gen_speed_min = configData['speed_Generato_min'] self.value_gen_speed_max = configData['speed_Generato_max'] self.field_rotor_speed = configData['speed_Rotor'] self.field_torque = configData['torque'] self.field_wind_dir = configData['direction_Wind'] self.field_angle_included = configData['angle_included'] self.field_nacelle_pos = configData['nacelle_Pos'] self.field_env_temp = configData['temperature_Env'] self.field_nacelle_temp = configData['temperature_Nacelle'] self.field_temperature_large_components = configData['temperature_large_components'] return self # def add_W_if_starts_with_digit(self,s): # if s and s[0].isdigit(): # return 'W' + s # return s # 定义一个函数,用于检查字符串首字母是否为数字,并在是的情况下添加'W' def add_W_if_starts_with_digit(self,s): if isinstance(s, str) and s[0].isdigit(): return 'W' + s return s