Skip to content

implement multi-MPPT inverter model #1085

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

Merged
merged 22 commits into from
Dec 2, 2020
Merged

Conversation

cwhanse
Copy link
Member

@cwhanse cwhanse commented Oct 27, 2020

  • Closes Inverter with multiple MPPTs #457
  • I am familiar with the contributing guidelines
  • Tests added
  • Updates entries to docs/sphinx/source/api.rst for API changes.
  • Adds description and name entries in the appropriate "what's new" file in docs/sphinx/source/whatsnew for all changes. Includes link to the GitHub Issue with :issue:`num` or this Pull Request with :pull:`num`. Includes contributor name and/or GitHub username (link with :ghuser:`user`).
  • New code is fully documented. Includes numpydoc compliant docstrings, examples, and comments where necessary.
  • Pull request is nearly complete and ready for detailed review.
  • Maintainer: Appropriate GitHub Labels and Milestone are assigned to the Pull Request and linked Issue.

An approach that leverages the existing function pvlib.inverter.sandia and the model parameters available in the SAM file. Conceptually, this is the same approach as in Pvsyst, although it appears that Pvsyst offers more options for adjusting the inverter's behavior (and Pvsyst uses an internally-developed inverter output model, which isn't fully documented in the public files).

@cwhanse cwhanse added this to the 0.8.1 milestone Nov 18, 2020
@cwhanse cwhanse added enhancement SPI DOE SETO Solar Performance Insight project labels Nov 18, 2020
@mikofski
Copy link
Member

mikofski commented Nov 18, 2020

I found these pages in the pvsyst help docs interesting:

Be careful: as in the PVsyst inverter database, there is no information about the maximum power (or current) for each individual MPPT input, it is your responsibility to check in the data sheets whether the allocated power is compatible with the manufacturer's specifications. PVsyst puts a general limit to the sharing ratio, which is modifiable in the Hidden parameters.

Has anyone checked the hidden parameters?

@cwhanse
Copy link
Member Author

cwhanse commented Nov 20, 2020

Has anyone checked the hidden parameters?

I don't have a Pvsyst license, I'd be interested to know what parameters are hidden that relate to multi-MPPT inverters.

I've read those pages and also exchanged email with Bruno at Pvsyst. I don't feel confident that I accurately understand how inverter efficiency is modeled in Pvsyst, so am not proposing a inverter.pvsyst function.

Inverter datasheets typically list limits on DC current per MPP input, but these limits appear be related to safety (e.g. fuse ratings) rather than limits on DC-AC conversion.

For this model, I had proposed a parameter 'dc_limit' which would act as a cap on DC power at each MPP input. But after some discussions, I've removed that parameter for two, related reasons:

  • there's no reliable source for its value (the safety limits in datasheets are not what is needed here)
  • it is not clear that inverters actually impose limits per MPP input.

@cwhanse
Copy link
Member Author

cwhanse commented Nov 24, 2020

Bumping this PR as I think it's ready for review, and is needed to move #1076 forward.

for vdc, pdc in zip(v_dc, p_dc):
power_ac += pdc / power_dc * _sandia_eff(vdc, power_dc, inverter)
else:
power_ac = _sandia_eff(v_dc, power_dc, inverter)
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I don't understand why we'd include this line in the sandia_multi function. Isn't it duplicating functionality in sandia? Maybe I don't understand the use cases well enough.

Copy link
Member Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I was thinking that inverter.sandia_multi(600., 1500., *params) should work, but can't really say that's a required use.

Eventually I'd see inverter.sandia and inverter.sandia_multi merging, once the latter is better documented, with validation, and has broader acceptance.

@wholmgren
Copy link
Member

@cwhanse you can decorate that failing psm test function with @pytest.mark.xfail(strict=True, reason='github 1091')

@kandersolar kandersolar self-requested a review November 30, 2020 23:40
Copy link
Member

@kandersolar kandersolar left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

LGTM, minor comments below

@cwhanse
Copy link
Member Author

cwhanse commented Dec 2, 2020

@pvlib/pvlib-maintainer Will merge today if no further reviews

@wholmgren wholmgren merged commit e4852c5 into pvlib:master Dec 2, 2020
@wholmgren
Copy link
Member

let's move on with it - thanks @cwhanse!

@jhfatehi
Copy link

jhfatehi commented Dec 2, 2020

Sorry I am a bit late to the game on this. My understanding of the multi-MPPT modeling method currently being worked on is that all arrays are operating at the same DC voltage. The focus is address clipping per MPPT. When I first brought up this question I was modeling a residential system with 2 arrays on different planes and of different sizes. My solution at the time was to average the DC voltage between the 2 arrays and feed that into the inverter efficiency loss function. Given the huge variations in insolation because of shading on a typical residential system, any accuracy loss because of the inverter efficiency was not a concern to me at the time. No suggestion here. I just wanted to circle back with the original use case.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
enhancement SPI DOE SETO Solar Performance Insight project
Projects
None yet
Development

Successfully merging this pull request may close these issues.

Inverter with multiple MPPTs
6 participants