为什么网站上的简单模型链示例正在计算负交流功率?
Why is the simple model chain example from the website is calculating negative ac power?
我在硕士论文中使用 pvlib 库。当我 运行 时间晚于下午 4 点的示例时,它通常报告交流电源 -0.02。有人知道为什么吗?我正在使用以下代码:
import pandas as pd
import numpy as np
# pvlib imports
import pvlib
from pvlib.pvsystem import PVSystem
from pvlib.location import Location
from pvlib.modelchain import ModelChain
# load some module and inverter specifications
sandia_modules = pvlib.pvsystem.retrieve_sam('SandiaMod')
cec_inverters = pvlib.pvsystem.retrieve_sam('cecinverter')
sandia_module = sandia_modules['Canadian_Solar_CS5P_220M___2009_']
cec_inverter = cec_inverters['ABB__MICRO_0_25_I_OUTD_US_208_208V__CEC_2014_']
location = Location(latitude=49.0205559, longitude=12.057453900000041)
system = PVSystem(surface_tilt=20, surface_azimuth=200,
module_parameters=sandia_module,
inverter_parameters=cec_inverter)
mc = ModelChain(system, location)
python_native_dt = datetime.datetime.now()
weather = pd.DataFrame([[1050, 1000, 100, 30, 5]],
columns=['ghi', 'dni', 'dhi', 'temp_air', 'wind_speed'],
index=[pd.Timestamp(pytz.timezone('Etc/GMT+2').localize(python_native_dt))])
mc.run_model(times=weather.index, weather=weather)
print(mc.ac)
执行 mc.ac
将导致:2018-06-05 16:20:19.117017-02:00 -0.02
dtype: float64
-0.02
是您选择的逆变器在输入直流功率低于其激活阈值时消耗的能量。
为了提高可重复性并帮助我们找到答案,我建议您指定一个确切的时间而不是依赖 datetime.datetime.now()
。使用 index=[pd.Timestamp('2018-06-05 16:20:19.117017-02:00')]
,我得到 2018-06-05 16:20:19-02:00 13.660678
。
我建议您确认 mc.aoi
和 mc.solar_position
与您输入的天气一致。它们来源于时间指数,用于计算阵列辐照度的平面。
如果这没有帮助...什么版本的 pvlib 和 pandas?请注意,该示例还需要 import pytz
和 import datetime
到 运行。
马克西米利安,
我怀疑是天气数据框。我注意到大多数来自 NWP 中心的天气文件(我正在使用 ECMWF ERA5)代表 DNI GHI DHI 的累积。对于 ERA5 数据,我注意到原始数据的功率值为负值。
通过除以 60(秒)*60(分钟)从累积转换为 W/s 后,它起作用了。
我在硕士论文中使用 pvlib 库。当我 运行 时间晚于下午 4 点的示例时,它通常报告交流电源 -0.02。有人知道为什么吗?我正在使用以下代码:
import pandas as pd
import numpy as np
# pvlib imports
import pvlib
from pvlib.pvsystem import PVSystem
from pvlib.location import Location
from pvlib.modelchain import ModelChain
# load some module and inverter specifications
sandia_modules = pvlib.pvsystem.retrieve_sam('SandiaMod')
cec_inverters = pvlib.pvsystem.retrieve_sam('cecinverter')
sandia_module = sandia_modules['Canadian_Solar_CS5P_220M___2009_']
cec_inverter = cec_inverters['ABB__MICRO_0_25_I_OUTD_US_208_208V__CEC_2014_']
location = Location(latitude=49.0205559, longitude=12.057453900000041)
system = PVSystem(surface_tilt=20, surface_azimuth=200,
module_parameters=sandia_module,
inverter_parameters=cec_inverter)
mc = ModelChain(system, location)
python_native_dt = datetime.datetime.now()
weather = pd.DataFrame([[1050, 1000, 100, 30, 5]],
columns=['ghi', 'dni', 'dhi', 'temp_air', 'wind_speed'],
index=[pd.Timestamp(pytz.timezone('Etc/GMT+2').localize(python_native_dt))])
mc.run_model(times=weather.index, weather=weather)
print(mc.ac)
执行 mc.ac
将导致:2018-06-05 16:20:19.117017-02:00 -0.02
dtype: float64
-0.02
是您选择的逆变器在输入直流功率低于其激活阈值时消耗的能量。
为了提高可重复性并帮助我们找到答案,我建议您指定一个确切的时间而不是依赖 datetime.datetime.now()
。使用 index=[pd.Timestamp('2018-06-05 16:20:19.117017-02:00')]
,我得到 2018-06-05 16:20:19-02:00 13.660678
。
我建议您确认 mc.aoi
和 mc.solar_position
与您输入的天气一致。它们来源于时间指数,用于计算阵列辐照度的平面。
如果这没有帮助...什么版本的 pvlib 和 pandas?请注意,该示例还需要 import pytz
和 import datetime
到 运行。
马克西米利安,
我怀疑是天气数据框。我注意到大多数来自 NWP 中心的天气文件(我正在使用 ECMWF ERA5)代表 DNI GHI DHI 的累积。对于 ERA5 数据,我注意到原始数据的功率值为负值。
通过除以 60(秒)*60(分钟)从累积转换为 W/s 后,它起作用了。