In circumstances where there’s a large extra demand for power, peak shaving is one method that can be used to attempt to address the imbalance.
Ireland's electrical grid must maintain a frequency of 50Hz for efficient operation. When there is a sudden unexpected rise or reduction in demand the frequency changes in response. If demand is sufficient enough then the frequency can change rapidly and steps must be taken to mitigate this as frequency imbalance can damage electrical systems, and eventually lead to a national blackout.
Peak Shaving is commonly mistaken for 'Load Shedding'. Load Shedding is a method to reduce your load on the grid also, however, at a significant cost in comparison to Peak Shaving, as it entails slowing production for some time whilst other generative methods come online, as they can take several minutes to spool up.
The purpose of Peak Shaving is to reduce a company's power demand on the grid and keep it as constant as possible. To reduce or eliminate demand charges from their energy bill.
By applying this method, companies can save thousands of euro/dollars a year in demand charges on their energy bill.1
However, Demand Charges are not the sole charge incurred when using the grid during a peak load period. If a consumer is applying the method of peak shaving, making their load on the national grid constant, they are still using a large amount of power during a period of peak power demand. Since the electricity price varies, with the grid's demand, the cost is significantly higher during these periods of high demand and significantly lower during periods of little demand, such as in the middle of the night.
By utilizing a commonplace onsite battery paired with the method of Peak Shaving, consumers can not only lower and possibly abolish their demand charges. They can also lower their electricity spending by charging their batteries at night while the cost of electricity is low and by using power from those batteries during periods of high demand when the cost of energy is significantly higher.
Not only can you use peak shaving technology to lower your overall electricity spend, it is also feasible to make a profit through the batteries 'used' for peak shaving when they are not in use. As previously mentioned, the power price is directly related to the demand on the grid. Charging the battery at night while the demand and price are low and selling that power back to the grid during a period of high demand at a higher cost can yield a significant profit. So long as the algorithm doing this factors in and optimises for battery wear and tear, and battery price. As it happens, Full Stack Energy specialises in the design and development of algorithms for tasks like this.
To demonstrate the effectiveness of Battery Powered Peak Shaving Technology:
I created a simple Peak Shaving algorithm and used it with demand data from Ireland's grid for 24 hours to evaluate its effectiveness on real-world data. An essential part of a Peak Shaving algorithm is that it must be tuned to the customer's power usage and facilities. This is demonstrated in the charts below.
When the algorithm was first created and run using standard tuning parameters, it looked like this:
WITHOUT TUNING, THE ALGORITHM CANNOT PERFORM EFFICIENTLY.
Notably, the algorithm tends to spike downward suddenly in this instance when attempting to shave a slight peak. It also only slightly decreases the two primary peaks.
However, once the algorithm was tuned specifically for our simulated battery size and facility resources:
WE CAN SEE A SIGNIFICANT INCREASE IN ITS EFFECTIVENESS.
In contrast to our last simulation, the entrance toward the first peak is significantly lower. Leading toward a gradual exit of the peak.
Let's take a closer look at the algorithm’s first actions:
|Time||Remaining Charge (%)||Action||Grid Frequency (Hz)|
This chart demonstrates the algorithm's first actions. The algorithm's first action was to discharge the battery at 6 AM, which decreased the initial peak, establishing an overall lower primary peak. Additionally, the algorithm chose to charge its battery around noon when a sudden drop in demand occurred. This levelled out the top of our first peak and set itself up to deal with subsequent peaks by charging during this period.
If you would like to try this out project or see how it works in further detail, check out this project's GitHub repository
import csv #----------------- Begin User Configuration ----------------------------------------------- Interval = 0.25 #As a fraction of an hour, Note, your data interval needs to match this MinCharge = 65 #Minium Charge level Capacity = 20 #Battery Capacity in MWh CutIn = 49.945 #Frequency For Battery To Cut In CutOut = 50.01 #Frequency for battery to charge #----------------- End User Configuration ----------------------------------------------- Charge = 100 #Battery Charge Level IntervalCap = (Capacity * Interval) FreqFile = open('../Data/Frequency/Data.csv') FreqRows = list(csv.reader(FreqFile, delimiter=',')) DemandFile = open('../Data/Demand/chart.csv') DemandRows = list(csv.reader(DemandFile, delimiter=',')) with open('Log.csv', 'a') as Log_file: Log_file.truncate(0) #Clear the file, of previous Logs Log_Writer = csv.writer(Log_file) PrevDemand = 0 PrevActualDemand = 0 for row in FreqRows: #Format timestamp, and get frequency data timestamp = row data = row for Demand_Row in DemandRows: if str(timestamp) in Demand_Row: #Row Is Active, get power demand Demand = Demand_Row if PrevActualDemand == 0: PrevActualDemand = float(Demand) PrevDemand = float(Demand) #Get the change in demand from the real world data, apply it to the simulated data (Diff) #Simulating data, to show the scripts impact if it was applied in the field #Calculating the change in deamnd: #Checks the actual demand from previous time stamp, then compare with the difference with the current #Then add or subtract the change in demand to the simulated demand data diff = (float(Demand) - PrevActualDemand) CurDemand = PrevDemand + diff if float(data) >= CutOut: #Charge Battery if it needs it if Charge < Capacity: #Battery Needs Charging Charge += IntervalCap if Charge > Capacity: #Capping the charge at 100 Charge == Capacity PrevActualDemand = float(Demand) PrevDemand = (float(CurDemand) + Capacity) LogInput = [row.replace(':', ''), Charge, 'Charged', row, Demand, str((float(CurDemand) + Capacity))] Log_Writer.writerow(LogInput) break else: #Battery Does not need charging PrevDemand = float(CurDemand) PrevActualDemand = float(Demand) LogInput = [row.replace(':', ''), Charge, 'No Need To Charge', row, Demand, CurDemand] Log_Writer.writerow(LogInput) break elif float(data) <= CutIn: #Grid Needs Battery To Cut In if Charge > MinCharge: #Battery Has Sufficent Capacity to discharge Charge -= IntervalCap PrevDemand = (float(CurDemand) - Capacity) PrevActualDemand = float(Demand) LogInput = [row.replace(':', ''), Charge, 'Discharged', row, Demand, str((float(CurDemand) - Capacity))] Log_Writer.writerow(LogInput) break else: #Battery Cirically low, cannot discharge PrevDemand = float(CurDemand) PrevActualDemand = float(Demand) LogInput = [row.replace(':', ''), Charge, 'Critically Low', row, Demand, CurDemand] Log_Writer.writerow(LogInput) break else: #No Action Required PrevDemand = float(CurDemand) PrevActualDemand = float(Demand) LogInput = [row.replace(':', ''), Charge, 'Did Nothing', row, Demand, CurDemand] Log_Writer.writerow(LogInput) break
At Full Stack Energy, we simply love to deep dive into these sorts of projects. It's where we excel and where we add most value to our clients. Contact us today if you have an energy project you need some help with, we would be delighted to get involved.
Recommended for youGet more insights and assorted energy transition and development news.
EV Protocols & StandardsAs EV charging has grown and become commonplace, so has a collection of standards and protocols. These standards and protocols serve EV owners, fleet…
EV Charging LevelsAs ownership of Electric Vehicles (EVs) continues to grow, more and more potential buyers are learning about the various charging levels available. From Level…
What is EVSE?A cultural shift towards electric vehicles (EVs) is in full swing. Government incentives, public and private funding, and an increased choice of vehicles are…
Smart Charging EV V2GSmart Charging is revolutionising how electric vehicles (EVs) are being charged, allowing charge point operators (CPO) and fleet operators to manage charging sustainably and…
Glossary: EV & Smart GridLearn the terminology of our EV charge management software, industry standards protocols and acronyms. CPMS, DER, OCPP, EVSE, Load Balancing & V2X.…
OCPP 1.6 & 2.0The Open Charge Point Protocol (OCPP) is an open standard that offers two-way communication between EV charging stations and the corresponding EV charging central…