123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148 |
- 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
|