Skip to content

Inverter with multiple MPPTs #457

New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Closed
jhfatehi opened this issue May 11, 2018 · 12 comments · Fixed by #1085
Closed

Inverter with multiple MPPTs #457

jhfatehi opened this issue May 11, 2018 · 12 comments · Fixed by #1085

Comments

@jhfatehi
Copy link

It's been a couple years since I have used pvlib (and the progress is amazing) so forgive me if this has already been covered. Is there an implementation of inverters with multiple MPPTs?

@cwhanse
Copy link
Member

cwhanse commented May 14, 2018

@jhfatehi In a word, no. pvlib calculates system DC power by multiplying a module's DC output by number of modules per string and by strings per inverter. I'm sure one could find a way to use pvlib to model a multi-MPPT inverter, but it probably requires defining multiple systems and adding the results outside of pvlib.

@wholmgren
Copy link
Member

Perhaps we could add an example to the documentation.

Also consider checking SAM/ssc. We could discuss reimplementing their solution, if available.

@Peque
Copy link
Contributor

Peque commented May 21, 2020

@jhfatehi Did you workaround this somehow? If so, can you share how you did that?

@wholmgren I am guessing there is no example in the documentation? 😇

@wholmgren
Copy link
Member

No example, contribution welcome: python file in docs/examples renders to here

@jhfatehi
Copy link
Author

jhfatehi commented May 21, 2020

This was my workaround

dc_string1 = dc_string_out(string1_tilt, string1_azimuth, cec_module, string1_mods, solpos, dni_extra)
dc_string2 = dc_string_out(string2_tilt, string2_azimuth, cec_module, string2_mods, solpos, dni_extra)

dc_system = pd.DataFrame()
dc_system['p_mp'] = dc_string1.p_mp + dc_string2.p_mp
dc_system['v_mp'] = (dc_string1.p_mp * dc_string1.v_mp +
dc_string2.p_mp * dc_string2.v_mp) / dc_system.p_mp

acs = pd.DataFrame()
acs['power'] = pvlib.pvsystem.snlinverter(dc_system.v_mp, dc_system.p_mp, sapm_inverter)

@Peque
Copy link
Contributor

Peque commented May 21, 2020

@jhfatehi Thanks for sharing! 😊

Out of curiosity, may I know the inverter you were using? To have a look at its specs in the database. I am wondering if there is information there about the number of MPPTs for example.

@jhfatehi
Copy link
Author

The inverter model is reducing power depending on the inverters voltage/power/efficiency curve. There is no MPPT happening at the inverter. The ideal Vmp and Imp are calculated in the diode model. The challenge with 2 MTTPs is what voltage to use. In my example where I have 2 strings I used a weighted average of Vmp of the 2 string where I weighted by Pmp of the string. I honestly have no clue if this is remotely accurate because I am not familiar with the topology of multiple MPPT inverters. Another way to do it would be to treat each MPPT as a separate inverter but I image this would be optimistic for AC production because you likely will be operating at a higher efficiency point because you have roughly same voltage but lower power in each inverter.

To answer your question I was using a SolarEdge inverter which operates at a fixed voltage in real life. The MPPT high and low voltage in the inverter models is for information only. It does not impact the inverter efficiency calculation.

@Peque
Copy link
Contributor

Peque commented Jun 3, 2020

I asked this question in Stack Exchange:

https://electronics.stackexchange.com/questions/503523/how-to-calculate-output-power-of-a-multi-mppt-inverter

In case anyone can help answering it. 😊

@cwhanse
Copy link
Member

cwhanse commented Oct 26, 2020

Some progress to report on this issue, which has emerged as a roadblock to #1067.

  • an inverter with multiple MPPTs can be reasonably modeled with the available inverter models. The approach is to regard each MPPT input as producing a fraction of the inverter's AC output. The DC-AC inversion efficiency curve for a MPPT input is a scaled version of the DC-AC curve for the whole inverter; this is supported by the way inverter efficiency is measured (at least, by the CEC method for measurement). This is the default approach in Pvsyst for modeling such inverters. I've got some technical notes to write up and will post to pvpmc.org.
  • adding capability to pvlib to model multiple MPPT inverters will require a new function and also refactoring the existing pvlib.inverter.sandia function. I don't think the pvlib.inverter.sandia signature should change, but the step that limits inverter output to maximum Pac needs to be done after the AC power from each MPPT are combined. The new function will use the refactored parts of sandia with at least one new parameter for the fraction of power handled by each MPPT (default is 1 / number of MPPT), and perhaps other new parameters.
  • inverters are not specified with limits on each MPPT in terms of power. Rather, DC current and voltage limits are specified, e.g., here. Multiplying these limits obtains a DC power much greater than the inverter AC rating divided by the number of MPPT inputs, so inverter manufacturers are designing these devices for very unbalanced operations (i.e. several arrays with very different DC output). The current/voltage limits by MPPT are on the spec sheets, but they are not in the CEC inverter data nor in the SAM file which pvlib uses. Pvsyst warns users that it is their responsibility to ensure that per-MPPT limits are respected.
  • For pvlib, I think we should require users to supply the per-MPPT parameters which "clip" the DC input from each array, which is then inverted to AC using a scaled version of the Sandia model, added, then the sum is clipped to the inverter's AC maximum output.

@cwhanse
Copy link
Member

cwhanse commented Oct 27, 2020

A proposed approach for modeling inverters with multiple MPPT. I welcome any feedback.
Proposal to model multiple MPPT inverter.pdf
The underlining indicates assumptions that I am working to verify.

@Peque
Copy link
Contributor

Peque commented Oct 30, 2020

@cwhanse Thanks for sharing! 😊 I will definitely have a look at it in 1-2 weeks!

Do you know if there is plan to include an MPPT count parameter in the CEC database? 😜

@cwhanse
Copy link
Member

cwhanse commented Oct 30, 2020

Do you know if there is plan to include an MPPT count parameter in the CEC database?

Unfortunately, no. That database is out of pvlib's control. The file of inverter model parameters is obtained from NREL's SAM, and NREL's database is generated by applying the inverter model fitting algorithm to data in the CEC equipment list.

The CEC doesn't request the MPPT count (or voltage/current limits, or many other inverter parameters) so that data aren't included in the database that lies behind the file of inverter parameters. See the Inverter tabs here for information on the CEC equipment lists.

@kandersolar kandersolar modified the milestones: Someday, 0.8.1 May 25, 2023
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Projects
None yet
Development

Successfully merging a pull request may close this issue.

5 participants