首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >光伏电站交流功率预测

光伏电站交流功率预测
EN

Stack Overflow用户
提问于 2021-11-17 18:49:59
回答 1查看 262关注 0票数 1

我一周前就开始使用PVLib,并成功地预测了我的光伏产量逆变器的输出。

代码语言:javascript
复制
import pandas as pd
import matplotlib.pyplot as plt
import datetime
import pvlib
from pvlib import pvsystem
from pvlib.forecast import GFS, NAM, NDFD, HRRR
import numpy as np
from pvlib.pvsystem import PVSystem, retrieve_sam
from pvlib.temperature import TEMPERATURE_MODEL_PARAMETERS
from pvlib.tracking import SingleAxisTracker
from pvlib.modelchain import ModelChain


if __name__ == '__main__':
    # latitude, longitude, name, altitude, timezone
    timeZone = "Europe/Brussels"
    location = pvlib.location.Location(latitude=50.874, longitude=5.274, tz=timeZone, altitude=43+6, name='Alken')

    # import the database
    module_database = pvlib.pvsystem.retrieve_sam(name='CECMod') #https://github.com/NREL/SAM/blob/develop/deploy/libraries/CEC%20Modules.csv
    module = module_database["Seraphim_Solar_USA_Manufacturing_Inc__SRP_365_6QA_WS_50"]
    inverter_database = pvlib.pvsystem.retrieve_sam(name="cecinverter")
    inverter = inverter_database["Huawei_Technologies_Co___Ltd___SUN2000_7_6KTL_USL0__240V_"]
    temperature_model_parameters = TEMPERATURE_MODEL_PARAMETERS['sapm']['open_rack_glass_glass'] # check
    mount_east = pvsystem.Array(pvsystem.FixedMount(surface_tilt=20, surface_azimuth=-83), module_parameters=module, modules_per_string=13, strings=1, temperature_model_parameters=temperature_model_parameters)
    mount_south = pvsystem.Array(pvsystem.FixedMount(surface_tilt=20, surface_azimuth=97), module_parameters=module, modules_per_string=13, strings=1, temperature_model_parameters=temperature_model_parameters)
    system_multi_array = pvsystem.PVSystem(arrays=[mount_east, mount_south], inverter_parameters=inverter)

    weatherForecastModel = GFS(resolution="quarter", set_type="best") # Global Forecast System (GFS) (27-28km)
    start = pd.Timestamp(datetime.date.today(), tz=timeZone)
    end = start + datetime.timedelta(days=1)
    raw_data = weatherForecastModel.get_data(location.latitude, location.longitude, start, end)
    data =raw_data
    irrad_vars = ['ghi', 'dni', 'dhi']
    data = weatherForecastModel.rename(data)
    data['temp_air'] = weatherForecastModel.kelvin_to_celsius(data['temp_air'])
    data['wind_speed'] = weatherForecastModel.uv_to_speed(data)

    irrad_data = weatherForecastModel.cloud_cover_to_irradiance(data['total_clouds'])
    data = data.join(irrad_data, how='outer')
    data = data[weatherForecastModel.output_variables]
    data = weatherForecastModel.process_data(raw_data)
    data['precipitable_water'] = 0.1
    print(data.columns)

    PVSystemModel = ModelChain(system_multi_array, weatherForecastModel.location, aoi_model="no_loss")
    print(system_multi_array)
    print(PVSystemModel)

    PVSystemModel.run_model(data)
    PVSystemModel.results.ac.fillna(0).plot()
    plt.ylim(0, None)
    plt.ylabel('AC Power (W)')

    plt.show()

我还有很长的路要改进和扩展代码。不过,我有几个问题:

  1. 使用CEC模块和逆变器似乎没有德斯堪的亚设备那么直接。我之所以使用CEC数据库是因为我找到了我需要的设备。在这方面,我正在考虑定义我的模块和转换器,或者是否还有其他我可以使用的数据库,其中也包括欧洲设备?
  2. 我不得不绕开"precipitable_water“天气信息。文档表明,您可以使用gueymard94_pw模型来计算这个值。然而,我需要relative_humidity在天气预报,而政府间金融服务模式没有提供。有什么建议去哪里取回这个吗?
  3. 欧洲有什么好的天气预报服务吗?

谢谢你的想法,亲切的问候,

EN

回答 1

Stack Overflow用户

发布于 2021-11-23 06:22:26

  1. 如果您的设备不在CEC或Sandia数据库中,您可以使用技术数据表信息手动定义它。例如,请参见桑迪亚方法。
  2. 我一直在使用挪威yr.no天气服务,它提供每小时最多提前48小时的天气预报。他们的API接口是免费使用的。你可以找到相对湿度预报以及许多其他有用的气象学参数。您可以以json、xml等方式导出数据。
  3. 见2。
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/70009986

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档