Ideas to Model MPPT Low Voltage Cutoff during low Irradiance Conditions #1954
-
I'm pretty new exploring pvlib and have an application for it that I would like to try but I don't really know how to get started, or if the hooks are present: I'm coming from a mobile (RV/Boat) small array POV. These are small arrays consisting of 2-8 12V or 24V panels driving an MPPT for battery charging/DC power. One endless debate is whether to configure panels in a series or parallel configuration. Generally speaking, since partial shading (due to trees, or masts, etc) would strongly favor parallel arrangements. However there is a potentially strong argument for series configurations due to the MPPTs found in these applications. Most MPPTs used in the mobile space are "buck" only and require a panel voltage of ≈ Vbatt + 5V. In hot and/or cloudy and/or early or late day conditions 12V and 24V panels may not produce enough voltage to allow MPPTs to generate power. I'd like to create and MPPT class that can operate within a modelchain that can effectively "gate" the production of power if Vmpp or Voc is below a parameter based thresh-hold due to irradiance conditions. This would allow evaluations to compare series or parallel power generation for different locations and times of year. Any ideas, tips, etc would be greatly appreciated. I apologize if there are some conceptual errors on my side due to my limited experience with pvlib. |
Beta Was this translation helpful? Give feedback.
Replies: 1 comment 2 replies
-
Currently, pvlib does not provide any functionality along these lines. Enforcing MPPT limits would be a good enhancement in general, even outside of mobile applications. Creating and inserting an MPPT class into the ModelChain isn't possible. I think the best option for you is to run the ModelChain as usual and then post-process the results yourself. It would look something like this: mc = ModelChain(...)
mc.run_model(weather) # run ModelChain as usual, ignoring MPPT limits
v_oc_min = ... # MPPT limits
mppt_impossible = mc.results.dc['v_oc'] < v_oc_min # criteria for MPPT window
p_mp = mc.results.dc.copy() # make a copy so that we don't modify the original variable
p_mp[mppt_impossible] = 0 # when MPPT is not possible, set power to zero
# use post-processed p_mp for the configuration comparison |
Beta Was this translation helpful? Give feedback.
Wow, I totally forgot that User-defined models are supported! Thanks for the reminder :)