Sizing a Peak-Shaving BESS Against a Ratcheted Demand Charge
A cold-storage warehouse has a 12-month billed peak of 1,250 kW and a 520 kW average load. The tariff has an $18.50/kW-month demand charge with a 12-month ratchet under which billed demand may not fall below 60% of the highest peak in the prior 11 months, integrated over 15-minute windows. Freezer pull-down and dock activity drive a 1,250 kW spike for 2 h 15 min each weekday afternoon. The customer wants the billed peak cut to 900 kW using a 4-hour LFP BESS with 90% usable depth of discharge, 88% round-trip efficiency and 2% per year capacity fade; the proposed PCS is 500 kW. Rooftop PV delivers 150 kW during the spike window, but only from May through September. The owner asks whether the proposed 500 kW / 1,000 kWh system is adequate and what controls limit the risk of a ratchet-setting miss.
1. Calculate the required power and energy and determine whether the 500 kW / 1,000 kWh proposal is adequate over the warranty term.
Read the worked answer
Power. Required reduction = 1,250 − 900 = 350 kW. PV contributes 150 kW only in summer, so the winter case governs: the battery must supply the full 350 kW. A 500 kW PCS is adequate with headroom, provided the site load plus discharge stays within the service and transformer ratings and the controls can ramp to 350 kW inside the 15-minute window.
Energy. 350 kW × 2.25 h = 787.5 kWh delivered at the AC side. Applying 88% round-trip efficiency, DC energy ≈ 787.5 ÷ 0.88 = 895 kWh. At 90% depth of discharge, nameplate = 895 ÷ 0.90 = 994 kWh.
Fade. At 2% per year, a 1,000 kWh pack is about 817 kWh at year ten; 817 × 0.90 = 735 kWh usable, short of the 895 kWh required. To hold the setpoint to the end of the warranty, size at 895 ÷ (0.90 × 0.80) ≈ 1,243 kWh using the 80% end-of-term floor, or about 1,220 kWh using the 2%/yr fade curve.
Answer. 500 kW / 1,000 kWh works at beginning of life but is undersized within roughly three to four years. Specify 500 kW / 1,250 kWh, or contractually accept a rising billed peak after year three. State explicitly whether the 88% is applied as round-trip or as discharge efficiency; the answer shifts by about 6%.
2. Quantify the savings and explain how the ratchet changes the risk profile of the project.
Read the worked answer
Savings if the target holds. 350 kW × $18.50 = $6,475 per month, or $77,700 per year, provided every month lands at or below 900 kW.
Ratchet mechanics. The floor is 60% of the highest peak in the prior 11 months. At 1,250 kW the floor is 750 kW, so the ratchet does not currently bind. If 900 kW is achieved consistently, next year's floor drops to 540 kW and the ratchet stops mattering.
The exposure. A single miss at 1,100 kW - a BESS fault, a controller outage, or a spike longer than 2 h 15 min - sets billed demand at 1,100 kW for 11 months. That costs (1,100 − 900) × $18.50 × 11 = $40,700, erasing about half the annual savings.
Mitigations:
- Size for the no-PV winter case with 10–15% energy margin, as calculated above.
- Set the dispatch target at 875 kW, not 900 kW, because meter interval lag and measurement error can add tens of kW.
- Add a curtailment or load-shed plan for BESS outages.
- Review the ratchet month by month and treat any month above target as a loss event to be investigated.
3. Explain how the controller should handle PV in summer versus winter, and what acceptance test proves the demand-limiting function works.
Read the worked answer
Summer. With 150 kW of PV, the battery only needs about 200 kW. The controller must regulate the net PCC demand, not the battery output - discharging 350 kW while PV is producing would push the site below target, waste energy, and potentially cause reverse flow that the interconnection may prohibit.
PV variability. Clouds can remove 100 kW in seconds, producing a demand spike at the meter if the controller simply follows PV. Keep a 50 kW discharge reserve, use a 15-minute rolling forecast, and bias the setpoint to 875 kW.
Winter. No PV, so the full 350 kW comes from the battery. This is the design case for both power and energy and the case the ratchet is judged against.
Measurement. Billing uses the utility meter's 15-minute average, not the SCADA instant. Verify that the controller's demand calculation matches the meter interval and that clock drift or a communications drop does not create lag.
Acceptance test. With the BESS disabled, run a real spike and confirm the controller's predicted demand matches the meter within a few percent. Then repeat with the BESS enabled and verify the billed interval stays at or below 900 kW. Finally, compare one full billing month of controller logs against the utility's interval data before declaring the function commissioned.