Changed Inverter

131 views
Skip to first unread message

Daniel Delaney

unread,
Jun 5, 2023, 3:56:27 PM6/5/23
to pvlib-python

Hi all,

I am looking for an annual energy output form a project. I want to use the correct inverter.

I changed my inverter from ['ABB__MICRO_0_25_I_OUTD_US_208__208V_'] (default) to ['Chint_Power_Systems_America__CPS_SCA60KTL_DO_US_480__480V_'].

This was the only change.
My annual energy output is now heavily negative. Every hourly data point is negative.
Each non-daylight hour reads a -18 output that may come from the pnt input of 18. 'self consumption' (AC power consumed by inverter at night (night tare) to maintain circuitry required to sense the PV array voltage- from documentation)

Below are the inverter specs!

image

image


Any ideas what is going on? Thanks.

Will Hobbs

unread,
Jun 5, 2023, 4:12:12 PM6/5/23
to pvlib-python
I think the issue is that the ABB model is a micro inverter, designed for a single PV module, with a maximum power point tracking (MMPT) range of 30-50 Vdc, while the Chint is a string inverter, designed for several parallel strings of PV modules (in series in each string), with a MPPT range of 540-850 Vdc. 

I would guess that your PV array is a single module that works well with the micro inverter, but does not have enough voltage for the string inverter. The negative values would come from the internal self-consumption of the inverter. 

If you can share more of your code, that might help, but I think you need to define a large PV array for the Chint. 

Will

cwh...@sandia.gov

unread,
Jun 5, 2023, 4:15:05 PM6/5/23
to pvlib-python
The ABB inverter is a microinverter. It takes a single module's output as its input. You can see that by the rated AC power (Paco, 250W) and the nominal input DC voltage (Vdco, 40V).

The Chint inverter is a string(*) inverter. According to its datasheet  it takes as input up to 15 strings on 3 different MPPT trackers. The nominal input DC voltage is 730V, which I would guess translates to about 15 modules in series in each string (you will need to work that out, usually you can divide the module Voc at STC into the Vdco to get the string length).  Then, specify the number of strings (which are in parallel) to total the DC power of the array.

I think you are getting negative power because you are connecting a single module to the inverter.

* a "string" inverter is a loosely defined term for an inverter that is not a micro-inverter but not big enough to be a "central" inverter, which is another loosely defined term.

Daniel Delaney

unread,
Jun 5, 2023, 5:46:28 PM6/5/23
to pvlib-python
Thanks for comments so far. 


Sharing code:

coordinates = [
    (45.76,-34.96,'test_3',384,'Etc/GMT+5')
]

sandia_modules = pvlib.pvsystem.retrieve_sam('SandiaMod')
cec_inverters = pvlib.pvsystem.retrieve_sam('cecinverter')
module = sandia_modules['Canadian_Solar_CS5P_220M___2009_']
inverter = cec_inverters['Chint_Power_Systems_America__CPS_SCA60KTL_DO_US_480__480V_']
temperature_model_parameters = pvlib.temperature.TEMPERATURE_MODEL_PARAMETERS['sapm']['open_rack_glass_glass']

tmys = pd.read_csv(r'C:\Users\User\Downloads\weather_file.csv', index_col = 0)
tmys.index = pd.to_datetime(tmys.index)

for location in coordinates:
    latitude, longitude, name, altitude, timezone = location
   
energies = {}

for location, weather in zip(coordinates, tmys):
    latitude, longitude, name, altitude, timezone = location
    location = Location(
        latitude,
        longitude,
        name=name,
        altitude=altitude,
        tz=timezone,
    )
    mount = SingleAxisTrackerMount(axis_tilt=0, axis_azimuth=180)
    array = Array(
        mount=mount,
        module_parameters=module,
        temperature_model_parameters=temperature_model_parameters,
       
    )
    system = PVSystem(arrays=[array], inverter_parameters=inverter, modules_per_string = 19, strings_per_inverter = 13.11 )
    mc = ModelChain(system, location)
    mc.run_model(tmys)
    annual_energy = mc.results.ac.sum()
    energies[name] = annual_energy

energies = pd.Series(energies)


cwh...@sandia.gov

unread,
Jun 5, 2023, 6:06:34 PM6/5/23
to pvlib-python
You'll want to move modules_per_string and strings (not strings_per_inverter) into the Array definition. Maybe that code works, but it's not supposed to.

Daniel Delaney

unread,
Jun 25, 2023, 11:28:16 PM6/25/23
to pvlib-python
Thanks for feedback. One further questions:
How do I increase the number of inverters?
My project has several and any method I have tried has been erroneous.

Eg.  # Adjust the number of inverters
pvsystem.inverters = [inverter] * num_inverters
or 
pvsystem = PVSystem( surface_tilt=20, surface_azimuth=180, module_parameters=module, temperature_model_parameters=temperature_model_parameters, inverters=[inverter] * 34,  modules_per_string=19, strings_per_inverter=446 )

Thanks,
Dan

cwh...@sandia.gov

unread,
Jun 26, 2023, 9:41:16 AM6/26/23
to pvlib-python
In the current pvlib, you can't have more than one inverter in a PVSystem. The workaround is to define a list of PVSystems, each with one inverter, do the calculations to get AC power for each and then add the AC powers.

Extending PVSystem to multiple inverters has been on the development wish list for some time.

Cheers,

Cliff

Daniel Delaney

unread,
Jul 13, 2023, 2:05:01 PM7/13/23
to pvlib-python
Thanks Cliff.

I have tried the following:
  • Define the number of inverters and trying to append the PVsystem x34
  • Image attached
Unfortunately, this printed the same generation as a single system....

My alternative was to print a single system generation and multiply the output by 34.
This gives a relatively accurate answer, but it seems too simplistic?
append.JPG

cwh...@sandia.gov

unread,
Jul 13, 2023, 2:12:33 PM7/13/23
to pvlib-python
Do you make a list of ModelChains one for each PVSystem? If you are assigning the list of PVSystems to one ModelChain, I'm not sure how that even runs.

The output of each system will be the same, if the system parameters and the weather are the same for each system. So computing the AC power for one system and multiplying by 34 would produce the same result. The reason to do multiple PVSystems is when the systems differ, e.g., different orientation.

Cliff
Reply all
Reply to author
Forward
0 new messages