confBusiness.py 6.3 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148
  1. import pandas as pd
  2. from algorithm.utils.jsonUtil.jsonUtil import JsonUtil
  3. # 全局变量
  4. charset_unify = 'utf-8'
  5. Field_NameOfTurbine = "turbine_name"
  6. Field_GeneratorTorque = "generator_torque"
  7. Field_AngleIncluded="angle_included"
  8. class ConfBusiness:
  9. def __init__(self):
  10. self.farm_name = None
  11. self.rated_power = None
  12. self.rated_WindSpeed = None
  13. self.rotor_diameter = None
  14. self.density_air = None
  15. self.rotational_Speed_Ratio = None
  16. self.type_name = None
  17. self.time_period = None # 时间间隔,单位是秒
  18. self.output_name = None
  19. self.output_prefix = None
  20. self.turbineInfoFilePathCSV = None # 风电机组信息
  21. self.turbineGuaranteedPowerCurveFilePathCSV = None # 合同担保功率曲线
  22. self.input_path = None
  23. self.skip_row_number = None # 跳过的行数
  24. self.csvFileNameSplitStringForTurbine = None # 自文件名中获取机组号的分隔符
  25. self.index_turbine = None # 自文件名中获取机组号的索引
  26. self.filter = None
  27. self.output_path = None
  28. self.start_time_str = None
  29. self.end_time_str = None
  30. # 将字符串转换为 pd.Timestamp 类型
  31. self.start_time = None
  32. self.end_time = None
  33. self.excludingMonths=None # 排除指定的月份数据 格式%Y-%m
  34. self.field_turbine_time = None # 字段名 时间
  35. self.field_turbine_name = None # 字段名 机组名
  36. self.field_wind_speed = None # 字段名 风速
  37. self.field_power = None # 字段名 有功功率
  38. self.field_pitch_angle1 = None # 字段名 桨距角1
  39. self.field_pitch_angle2 = None # 字段名 桨距角2
  40. self.field_pitch_angle3 = None # 字段名 桨距角3
  41. self.field_turbine_state = None # 字段名 风机状态
  42. self.field_gen_speed = None # 字段名 发电机转速
  43. self.value_gen_speed_min = None # 值 发电机转速最小
  44. self.value_gen_speed_max = None # 值 发电机转速最大
  45. self.field_rotor_speed = None # 字段名 叶轮转速
  46. self.field_torque = None # 字段名 转矩
  47. self.field_wind_dir = None # 字段名 风向
  48. self.field_angle_included = None
  49. self.field_nacelle_pos = None # 字段名 机舱温度
  50. self.field_env_temp = None # 字段名 环境温度
  51. self.field_nacelle_temp = None # 字段名 机舱温度
  52. self.field_temperature_large_components = None # 字段名列表 大部件温度传感器
  53. def loadConfig(self,jsonFilePath, charset=charset_unify):
  54. """
  55. 配置初始化
  56. """
  57. # # 使用global声明,表示我们要修改的是全局变量config_data
  58. # global farm_name
  59. # 将配置数据存储在变量中
  60. configData = JsonUtil.read_json(jsonFilePath)
  61. self.farm_name = configData['name_PowerFarm']
  62. self.rated_power = configData['rated_Power_Turbine_Unit_kW']
  63. self.rated_WindSpeed = configData["rated_WindSpeed"]
  64. self.rotor_diameter = configData['rotor_diameter']
  65. self.rotational_Speed_Ratio = configData['rotational_Speed_Ratio']
  66. self.density_air = configData['density_air']
  67. self.type_name = configData['name_Type_For_Analysis']
  68. # 时间间隔,单位是秒
  69. self.time_period = configData['time_Period_Unit_Second']
  70. self.output_name = configData['name_Output']
  71. self.output_prefix = configData['outputFileDirectory']
  72. self.turbineInfoFilePathCSV = configData["turbineInfoFilePathCSV"]
  73. self.turbineGuaranteedPowerCurveFilePathCSV = configData[
  74. "turbineGuaranteedPowerCurveFilePathCSV"]
  75. self.input_path = configData['inputFileDirectoryByCSV']
  76. self.csvFileNameSplitStringForTurbine = configData["csvFileNameSplitStringForTurbine"]
  77. self.index_turbine = configData["index_turbine"]
  78. self.skip_row_number = configData['skip_row_number']
  79. self.filter = configData['filter']
  80. self.output_path = self.output_prefix + \
  81. r"/{}".format(self.farm_name)
  82. # start_time_str = '{} 00:00:00'.format(configData['date_Begin'])
  83. # end_time_str = '{} 23:59:59'.format(configData['date_End'])
  84. self.start_time_str = configData['date_Begin']
  85. self.end_time_str = configData['date_End']
  86. # 将字符串转换为 pd.Timestamp 类型
  87. self.start_time = pd.to_datetime(
  88. self.start_time_str, format='%Y-%m-%d %H:%M:%S')
  89. self.end_time = pd.to_datetime(
  90. self.end_time_str, format='%Y-%m-%d %H:%M:%S')
  91. self.excludingMonths= configData['excludingMonths']
  92. self.field_turbine_time = configData['turbine_Time']
  93. self.field_turbine_name = configData['turbine_Name']
  94. self.field_wind_speed = configData['speed_Wind']
  95. self.field_power = configData['power_Active']
  96. self.field_pitch_angle1 = configData['pitch_Angle1']
  97. self.field_pitch_angle2 = configData['pitch_Angle2']
  98. self.field_pitch_angle3 = configData['pitch_Angle3']
  99. self.field_turbine_state = configData['state_Turbine']
  100. self.field_gen_speed = configData['speed_Generator']
  101. self.value_gen_speed_min = configData['speed_Generato_min']
  102. self.value_gen_speed_max = configData['speed_Generato_max']
  103. self.field_rotor_speed = configData['speed_Rotor']
  104. self.field_torque = configData['torque']
  105. self.field_wind_dir = configData['direction_Wind']
  106. self.field_angle_included = configData['angle_included']
  107. self.field_nacelle_pos = configData['nacelle_Pos']
  108. self.field_env_temp = configData['temperature_Env']
  109. self.field_nacelle_temp = configData['temperature_Nacelle']
  110. self.field_temperature_large_components = configData['temperature_large_components']
  111. return self
  112. # def add_W_if_starts_with_digit(self,s):
  113. # if s and s[0].isdigit():
  114. # return 'W' + s
  115. # return s
  116. # 定义一个函数,用于检查字符串首字母是否为数字,并在是的情况下添加'W'
  117. def add_W_if_starts_with_digit(self,s):
  118. if isinstance(s, str) and s[0].isdigit():
  119. return 'W' + s
  120. return s