confBusiness.py 6.6 KB

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