2017-08-17 4 views
0

NRELのNRSDBデータセットの発電データを使用して、実用スケールのPVプラントをモデル化しようとしていますが、PVLibでそれを行う方法をあまり理解していません。正しいアプローチは、私がmodules_per_stringとstrings_per_inverter(私はSAMを使用して推定したもの)を指定し、次にModelChainをLocationオブジェクトと併用し、NRSDBの気象データを指定するPVSystemオブジェクトを作成することだと思います。PVLibのユーティリティスケールPVのモデリング

BP Solar BP3220NモジュールとABB Ultra 690Vインバータを使用してNRELのSAMを使用すると、50 MWのプラントを生産するために、ストリングあたり23モジュールと並列9987ストリングが必要です。私はこの設定を以下に再現しようとしました。

以下は私が使用しているコードです。

import os 
import pandas as pd 
import numpy as np 
import pvlib 
from pvlib.pvsystem import PVSystem 
from pvlib.location import Location 
from pvlib.modelchain import ModelChain 
from pvlib.modelchain import basic_chain 

def importPSMData(): 
    df = pd.read_csv('C:\\Users\\mtcraig\\Documents\\NSRDBData\\dd\\622240_30.77_-99.3_tmy.csv',skiprows=[0,1]) 
    #Rename paramters for input to PVlib 
    df.rename(columns={'DHI':'dhi','DNI':'dni','GHI':'ghi','Temperature':'temp_air', 
         'Wind Speed':'wind_speed'},inplace=True) 
    #Rename date parameters in order to run to_datetime 
    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']]) 
    #Set index to DT for run_model call 
    df.set_index(df['dt'],inplace=True) 
    #Drop unnecessary columns 
    df = df.drop('Dew Point', 1) 
    df = df.drop('Pressure', 1) 
    df = df.drop('year', 1) 
    df = df.drop('month', 1) 
    df = df.drop('day', 1) 
    df = df.drop('hour', 1) 
    df = df.drop('minute', 1) 
    df = df.drop('dt',1) 
    return df 

sandia_modules = pvlib.pvsystem.retrieve_sam('SandiaMod') 
cec_inverters = pvlib.pvsystem.retrieve_sam('cecinverter') 

module = sandia_modules['BP_Solar_BP3220N_Module___2010_'] #18% eff, c-Si 
inv = cec_inverters['ABB__ULTRA_1100_TL_OUTD_3_US_690_x_y_z_690V__CEC_2013_'] 
system = PVSystem(module_parameters=module,inverter_parameters=inv,surface_azimuth=180, 
        modules_per_string=23,strings_per_inverter=9897) 

loc = Location(latitude=30.77,longitude=-99.3,tz='Etc/GMT+7',altitude=500) 

mc = ModelChain(system,loc,name='test', 
      orientation_strategy='south_at_latitude_tilt') 

weatherData = importPSMData() 
mc.run_model(times=weatherData.index,weather=weatherData) 
print(mc.ac) 

そして、ここで1日に出力されますが、すべての出力が同じである:

print(mc.ac) 
dt 
2013-01-01 00:00:00   NaN 
2013-01-01 01:00:00   NaN 
2013-01-01 02:00:00   NaN 
2013-01-01 03:00:00   NaN 
2013-01-01 04:00:00   NaN 
2013-01-01 05:00:00   NaN 
2013-01-01 06:00:00   NaN 
2013-01-01 07:00:00   NaN 
2013-01-01 08:00:00   NaN 
2013-01-01 09:00:00   NaN 
2013-01-01 10:00:00   NaN 
2013-01-01 11:00:00   NaN 
2013-01-01 12:00:00   NaN 
2013-01-01 13:00:00   NaN 
2013-01-01 14:00:00 1170000.0 
2013-01-01 15:00:00 1170000.0 
2013-01-01 16:00:00 1170000.0 
2013-01-01 17:00:00 1170000.0 
2013-01-01 18:00:00   NaN 
2013-01-01 19:00:00   NaN 
2013-01-01 20:00:00   NaN 
2013-01-01 21:00:00   NaN 
2013-01-01 22:00:00   NaN 
2013-01-01 23:00:00   NaN 

私の気象データ、その日のためには、以下の通りです:

dt  dhi dni ghi temp_air wind_speed 
1/1/2013 0:00 0 0 0 8.779901123 3 
1/1/2013 1:00 0 0 0 8.503381348 3 
1/1/2013 2:00 0 0 0 8.082849121 2 
1/1/2013 3:00 0 0 0 7.553338623 3 
1/1/2013 4:00 0 0 0 6.817102051 3 
1/1/2013 5:00 0 0 0 6.063470459 3 
1/1/2013 6:00 0 0 0 5.250634766 3 
1/1/2013 7:00 0 0 0 4.292138672 3 
1/1/2013 8:00 3 0 3 4.388421631 3 
1/1/2013 9:00 49 0 49 4.977044678 3 
1/1/2013 10:00 177 157 241 6.834771729 3 
1/1/2013 11:00 239 131 307 8.402886963 2 
1/1/2013 12:00 184 576 518 9.695245361 2 
1/1/2013 13:00 90 939 643 10.30196533 2 
1/1/2013 14:00 86 926 592 10.1447998 2 
1/1/2013 15:00 91 729 420 9.404504395 2 
1/1/2013 16:00 123 246 200 8.237115479 2 
1/1/2013 17:00 29 0 29 6.443383789 2 
1/1/2013 18:00 0 0 0 5.289483643 2 
1/1/2013 19:00 0 0 0 4.527764893 2 
1/1/2013 20:00 0 0 0 3.753839111 2 
1/1/2013 21:00 0 0 0 2.97612915 2 
1/1/2013 22:00 0 0 0 2.200036621 2 
1/1/2013 23:00 0 0 0 1.460778809 2 

をいただき、ありがとうございますあなたが提供できるあらゆる助け。

-Michael

答えて

0

PVSystem + ModelChain、モジュール、文字列の集合、及び単一インバータに電力を算出します。あなたのモデルは、すべての約50MWのDC電源を単一の1.1MWインバータに入れているので、ほぼすべての昼間にインバータの最大ACにヒットします。正確なプラント仕様に応じて、定格のAC電源を実現するには、指定されたインバータの40〜50台が必要です。それから約9897/45 = 220 strings_per_inverterがほしいでしょう。最後に、モデル結果にインバータの台数を掛けて、プラント全体の電力を得る必要があります。

+0

それは魅力的に機能しました。私は、1日にわずか数時間に隔離されることを避けるために、自分のタイムゾーンを改造する必要もありました。太陽の位置は、私が入力した天気データと一致していませんでした。ご回答どうもありがとうございました! – user8479799

関連する問題