首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >PVLIB:如何添加CEC和SAM库中没有的模块和逆变器规范?

PVLIB:如何添加CEC和SAM库中没有的模块和逆变器规范?
EN

Stack Overflow用户
提问于 2020-01-12 21:29:01
回答 1查看 1.3K关注 0票数 2

我正在设计一个安装在阿姆斯特丹的光伏系统。PVsystem代码如下所示。利用retrieve_sam实现的变频器和代码中指定的模块,取得了很好的效果。

代码语言:javascript
运行
复制
import pvlib
import pandas as pd
import numpy as np
import matplotlib.pyplot as plt
from pvlib.temperature import TEMPERATURE_MODEL_PARAMETERS
from pandas.plotting import register_matplotlib_converters
from pvlib.modelchain import ModelChain

# Define location for the Netherlands
location = pvlib.location.Location(latitude=52.53, longitude=5.15, tz='UTC', altitude=50, name='amsterdam')

#import the database
module_database = pvlib.pvsystem.retrieve_sam(name='SandiaMod')
inverter_database = pvlib.pvsystem.retrieve_sam(name='cecinverter')

module = module_database.Canadian_Solar_CS5P_220M___2009_
# module = module_database.DMEGC_Solar_320_M6_120BB_ (I want to add this module)
inverter = inverter_database.ABB__PVI_3_0_OUTD_S_US__208V_

temperature_model_parameters = pvlib.temperature.TEMPERATURE_MODEL_PARAMETERS['sapm']['open_rack_glass_glass']

modules_per_string = 10
inverter_per_string = 1

# Define a PV system characteristics
surface_tilt = 12.5
surface_azimuth = 180
system = pvlib.pvsystem.PVSystem(surface_tilt=surface_tilt, surface_azimuth=surface_azimuth, albedo=0.25,
                                 module=module, module_parameters=module,
                                 temperature_model_parameters=temperature_model_parameters,
                                 modules_per_string=modules_per_string, inverter_per_string=inverter_per_string,
                                 inverter=inverter, inverter_parameters=inverter, racking_model='open_rack')


# Define a weather file
def importPSMData():
    df = pd.read_csv('/Users/laxmikantradkar/Desktop/PVLIB/solcast_data1.csv', delimiter=';')

    # Rename the columns for input to PVLIB
    df.rename(columns={'Dhi': 'dhi', 'Dni': 'dni', 'Ghi': 'ghi', 'AirTemp': 'temp_air', 'WindSpeed10m': 'wind_speed',
                       }, inplace=True)
    df.rename(columns={'Year': 'year', 'Month': 'month', 'Day': 'day', 'Hour': 'hour',
                       'Minute': 'minute'}, inplace=True)
    df['dt'] = pd.to_datetime(df[['year', 'month', 'day', 'hour', 'minute']])
    df.set_index(df['dt'], inplace=True)


    # Rename data parameters to run to datetime
    # df.rename(columns={'PeriodEnd': 'period_end'}, inplace=True)


    # Drop unnecessary columns
    df = df.drop('PeriodStart', 1)
    df = df.drop('Period', 1)
    df = df.drop('Azimuth', 1)
    df = df.drop('CloudOpacity', 1)
    df = df.drop('DewpointTemp', 1)
    df = df.drop('Ebh', 1)
    df = df.drop('PrecipitableWater', 1)
    df = df.drop('SnowDepth', 1)
    df = df.drop('SurfacePressure', 1)
    df = df.drop('WindDirection10m', 1)
    df = df.drop('Zenith', 1)
    return df


mc = ModelChain(system=system, location=location)
weatherData = importPSMData()
mc.run_model(weather=weatherData)
ac_energy = mc.ac

# ac_energy.to_csv('/Users/laxmikantradkar/Desktop/ac_energy_netherlands.csv')

plt.plot(ac_energy)
plt.show()

现在,我想要改变的模块和逆变器,这是不存在的图书馆。有人能告诉我怎么做吗?

是否可以访问该库并手动添加逆变器和模块的行/列?如果是,图书馆在哪里?

../Desktop/PVLIB/venv/lib/python3.8/site-packages/pvlib/data/sam-library-sandia-modules-2015-6-30.csv吗?

当我更改时,尝试从上面的路径更改模块/逆变器参数,我会收到一个错误作为DataFrame' object has no attribute 'Module name'

我两天前就开始研究PVLIB_python了,所以我对这门语言很陌生。我真的很感激你的帮助。随时可以纠正我。

EN

回答 1

Stack Overflow用户

发布于 2020-01-30 18:52:27

我两天前就开始研究PVLIB_python了,所以我对这门语言很陌生。我真的很感激你的帮助。随时可以纠正我。

欢迎来到社区!如果您还没有,我鼓励您深入研究pvlib-python文档,并通过使用文档中的示例继续学习Python基础知识。我鼓励您查看熊猫教程和其他高度评价的熊猫学习材料,您可以找到用Python运行数据科学的方法。

当我更改尝试更改上述路径的模块/逆变器参数时,我会收到一个错误,因为DataFrame‘object’对象没有属性'Module‘

这是因为您要求在DataFrame表中有一个不存在的列。不用担心,你可以做你自己的模块。

现在,我想要改变的模块和逆变器,这是不存在的图书馆。有人能告诉我怎么做吗?是否可以访问该库并手动添加逆变器和模块的行/列?如果是,图书馆在哪里?

没有必要改变图书馆。您可以自己构建一个模块,因为它是来自熊猫图书馆的系列。下面是一个示例,演示如何将模块输出为字典、更改几个参数并创建自己的模块。

代码语言:javascript
运行
复制
my_new_module = module.copy() # create your own copy of the module
print("Before:", my_new_module, sep="\n") # show module before
my_new_module["Notes"] = "This is how to change a field in the module. Do this for every field in the module."
my_new_module.name = "DMEGC_Solar_320_M6_120BB_" # rename the Series appropriately
print("\nAfter:", my_new_module, sep="\n") # show module after

然后只需将"my_new_module“插入到PVSystem中:

代码语言:javascript
运行
复制
system = pvlib.pvsystem.PVSystem(
    surface_tilt=surface_tilt,
    surface_azimuth=surface_azimuth,
    albedo=0.25,
    module=my_new_module, # HERE'S THE NEW MODULE!
    module_parameters=module,
    temperature_model_parameters=temperature_model_parameters,
    modules_per_string=modules_per_string,
    inverter_per_string=inverter_per_string,
    inverter=inverter,
    inverter_parameters=inverter,
    racking_model='open_rack')

困难的部分是有正确的系数,你可以信任。您可能更容易使用module_database = pvlib.pvsystem.retrieve_sam(name='CECMod')并替换这些参数,因为它们可以更容易地被模块规范表中的数据所替代。

这应该同样适用于逆变器。

票数 5
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/59708281

复制
相关文章

相似问题

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