NREL / SAM

System Advisor Model (SAM)
BSD 3-Clause "New" or "Revised" License
336 stars 138 forks source link

vdcmax from the CEC inverter list is not the inverter maximum DC voltage #1020

Closed cwhanse closed 1 year ago

cwhanse commented 2 years ago

Describe the bug

The CEC grid supporter list includes a field titled "Voltage Maximum". This quantity is the maximum DC voltage at which inverter efficiency is measured, which is not the same as the maximum input DC voltage. For example, for inverter "SMA America STP 33-US-41 [480V]", Voltage Maximum is given as 800Vdc, but the inverter maximum DC input voltage is 1000 Vdc, per the datasheet.

Private communication with SMA America informs that the inverter maximum DC input voltage is not requested by the CEC.

The problem is with how SAM uses "Voltage Maximum" to suggest and check string length. For example, this line

modules_per_string_max = floor( inverter.vdcmax / voc_max_design );

An alternative is to assume that the maximum DC input voltage is 125% of "Voltage Maximum" (private communication with SMA) but I don't know if this rule of thumb works for all inverters. Another alternative is to remove the string length calculations.

cpaulgilman commented 2 years ago

Thanks @cwhanse, this is helpful information.

When we build SAM's inverter library from the CEC Inverter Workbook, we interpret the "Voltage Minimum" and "Voltage Maximum" from the workbook as Vmppt_min and Vmppt_max. We also set Vmppt_max = Vdc_max.

As you point out, these are the voltages at which the efficiencies reported in the workbook are measured and may be different from the input voltage range ratings reported on the manufacturer datasheet.

In the SAM user interface (and sizing macro that you reference above), Vmppt_max is used to suggest a number of strings when the user chooses the automatic sizing option ("Estimate Subarray 1 configuration" on the System Design page).

In SSC, Vmppt_min and Vmppt_max are used to limit the inverter input voltage and calculate inverter voltage clipping losses.

I looked at a few other inverters, and do not see a consistent relationship between the maximum voltage in the CEC workbook and Vmppt_max reported on the datasheet. In some cases our assumption is correct, and in others it is not. I think the best solution for now would be to make the MPPT voltage range editable in SAM. We could use the 125% of Vdcmax rule of thumb as you suggest, or continue using our current approach, but make it possible for the user to enter the correct value from the datasheet.

williamhobbs commented 2 years ago

@cpaulgilman, is it exceeding Vmppt_max that triggers this warning?

image

If so, I suggest changing the warning message to something like "Subarray 1 string voltage exceeds the inverter maximum MPPT voltage at reference conditions. Consider using fewer modules per string."

Unrelated to this issue, I just noticed that the GCR footnote should probably be above the "Electrical Sizing Information" section break and at the bottom of the "Tracking and Orientation" section.

cwhanse commented 2 years ago

I was assuming (from the few datasheets I looked at, and my cursory understanding of inverter test protocols) that the CEC's "Voltage maximum" is the same as maximum MPPT voltage. I guess that isn't always the case.

As you say, SAM is using this value as both the maximum DC voltage for string sizing (internal variable Vdc_max), and as the maximum voltage (Vmppt_max) for the inverter performance model. It is clear to me that the latter use is appropriate, since the inverter test protocol is designed around the inverter performance model.

Rather than editing the MPPT voltage range, SAM could offer an editable "maximum DC input voltage" field to be used for string length calculations, and default to 125% of the CEC voltage maximum.

williamhobbs commented 2 years ago

@cwhanse, shouldn't Vmppt_max also be considered in string length calculations? Vdc_max should always be a hard constraint, but a simple sizing calculation (like what is done the the GUI) is probably best done with Vmppt_max. A more rigorous optimization with timeseries analysis could evaluate string lengths that exceed Vmppt_max at reference conditions but still stay below Vdc_max as appropriate.

cwhanse commented 2 years ago

shouldn't Vmppt_max also be considered in string length calculations?

Yes, it's a factor and I'm not saying it shouldn't play a role. The problem is that Vdc_max is not equal to Vmppt_max as SAM is currently assuming.

williamhobbs commented 2 years ago

Understood. I agree (on all points).

I thought you were suggesting that only the editable maximum DC input voltage (editable Vdc_max) be used for string length calculations.

Thanks for clarifying for me.

adriesse commented 1 year ago

This just popped up on my github notifications, so sorry if my comments are a bit late.

Vmax is related to safety rather than performance. Therefore, I believe the warning should appear when Voc exceeds Vmax.