Dynamic power control

jsf1985

Member
Join Date
Sep 2019
Location
Scotland
Posts
3
Hi,
I'm using an AB Micro820 to control multiple industrial batteries (up to 20) individually.
Each battery has 100kW available power (2MW combined total). I need to deliver 1.5MW consistently, but the problem is that available power drops off at times so I could have some batteries that only can deliver 10kW at the time they're needed. Any suggestions how I can create a UDFB or have a set up to dynamically deliver a fixed amount with the available capacity?


Ideally for batteries that have more available power, their output will be the same.


Thanks in advance for any suggestions!
 
Each battery can deliver up to 100kW which can be read from an available power signal. This will change with the capacity available at any given time.
 
When you say you are controlling them, do you mean you have something like a contactor attached to each battery to connect them in parallel to the demand side of your system? If so, then I assume you are selecting a group of batteries by energizing their contactors (or whatever) to achieve the 1.5MW capacity at all times. Am I correct?


Is the power meter attached to each battery and accurately informs you of the available capacity of each battery in real time, or is it just one meter on the demand side?



Do you currently have 5 batteries in reserve so if one of the active batteries is not able to supply 100KW, you can energize the contactors of the reserve batteries to increase the capacity of the system to achieve 1.5MW?



Finally, are you looking to cycle through the batteries to balance their wear? That is, are you looking to swap one active battery with one reserve battery on a schedule so that each battery has a balanced active time?
 
Last edited:
Controlling them individually over Modbus TCP/IP. Control is a simple power command in kW so if I want one to deliver 10 kW, I simply write 10.


Power meter is for each battery and provides available active power and Real time active power.


We want to keep battery cycles the same so would prefer all to deliver the same capacity. Also prefer to avoid running them at full capacity when avoidable.
 
Hey, would you mid providing a link to the documentation for these batteries? They sound quite interesting. Plus, it would help me understand what options you have.
 
Sum the available kw capacities. (Total available kw)

Divide total required kw by total available kw. (Required power as a fraction of available kw). (If >1, set to 1. So if you don't have enough available power you just go all out).

Multiply individual kw availability by required power percentage.
 
The solution provided by AustralIan is pretty much dead on. However, you need to determine if an upper limit must be set on batteries not at full capacity. For instance, if one is only able to provide 10KW, is there any danger in demanding 10KW from it or should the demand be reduced to 9.5kW (95%) to allow it to charge?

If not, then you should do exactly what was described.

If so, however, then you will need logic that looks for a less than full capacity battery and multiply its available power by the maximum power factor (for instance, if 95% is the max you want to run the battery at, then multiply the available power by 0.95 and use the result in the total available power calculation).

So your code will:

1. Read in all of the available power values from the ModBus addresses and store them to variables (like B1_AP for battery 1 available power)

2. (If required; If not, skip to 3) Determine if any batteries have less than maximum available power and multiply the available power by the maximum power factor. You should write to a new variable (like B1_AP*Max_Power => B1_EP for battery 1 effective power). If the battery has full available power, have the logic simply move the available power value to the effective power value (like B1_AP => B1_EP).

3. Add up all of the EP values (or just the AP values if step 2 is not required) and store the sum in a variable (like B_TAP for battery total available power) and divide 1500000 by the sum. Store the quotient in a variable (like B_DP for battery demand percentage). This will be the percent of available power that each battery will have to deliver to meet the demand of 1.5MW. If the value is greater than 1, write 1 to this variable, as you cannot exceed the available power of the batteries.

4. Multiply the DP value with the EP value (or AP value if step 2 is not required) and send them to the ModBus addresses for the commanded power from each battery.

What data type are the ModBus values? Are the real (floating point), Double Integers, Integers, etc.? Your calculations and variables should all be reals to simplify everything for you. If the ModBus addresses are not reals, then you will need to convert them to and from reals for the available values and demanded values, respectively, using Any_To_X instructions.

Breaking up everything into individual variables will allow you to monitor everything from an HMI or SCADA system more easily.
 
Last edited:
Battery-charger-inverter products which can be operated in power or frequency control modes don't always tell the truth about how much battery capacity is left. For instance battery reporting 30% capacity left and then suddenly there is zero and everyone is standing around in the dark.
 
This topic has got my attention because I have recently become interested in solar/batter power.


I would like to know what battery can supply 100KW. My truck camper has two batteries that in theory are capable of 10KW but lead acid batteries can only be discharged 50% before damaging the battery. Since In have two 10KW deep cycle marine batteries I only have effectively 10KW of energy not 20 KW.


Battery-charger-inverter products which can be operated in power or frequency control modes don't always tell the truth about how much battery capacity is left. For instance battery reporting 30% capacity left and then suddenly there is zero and everyone is standing around in the dark.
Ditto. If the batteries discharge too much they get sulfate on the plates and efficiency goes down.
I have a Zamp solar charger. The reading for the amount of amp-hours I have available is suspect.



Controlling lead acid battery charging is tricky. I know.
 
VON_hydro, Tesla does not use normal lead acid batteries. On top of that the Tesla solution requires many batteries in parallel and in series. I would also bet that Tesla uses LiFePO4 ( Lithium-ferro-phosphate) batteries.



I agree, that LiFePo4 is the current commercial state of the art. When my current lead acid batteries die ( Interstate SRM-31 ) I will up grade to LiFePO4.




However, I am still wondering about 100KW batteries. I can believe banks of batteries supplying 100KW but not just one.
 
Good information regarding the battery capacity at lower levels. Based on this, I would recommend that the OP insert a low limit value and check in the PLC code to completely remove a battery that falls below the low limit in order to allow it to charge back up before using it again. Removing a battery would entail setting its demanded power to 0.


If the suggested code I posted earlier is used, this could be accomplished in step 2 by setting the low capacity battery's EP value to 0, so it won't skew the demand percent for the other batteries and the remaining code will stay the same (as multiplying the DP value with the EP value will result in 0 for that low capacity battery).
 
Last edited:
However, I am still wondering about 100KW batteries. I can believe banks of batteries supplying 100KW but not just one.


Hi Peter,


Must have been a misunderstanding, I believe any battery higher than 1.5 or 3V is made up of multiple cells to achieve 6,9,12V. Higher voltage battery banks at 24V, 48V, 120V are made up of 12V batteries in series. Higher energy or power battery banks have more legs in parallel at the desired terminal voltage.
 
Great engineering problem solvable through controls. Commenting to stay in the loop and ask questions.

The optimization of the battery is obviously possible. But on a project standpoint, how would you decide the scope of it? How much time do you have on your hands to optimize/add capabilities to the system?

I've personally only done smallish projects, and they were like on deadlines which had days to hours on the clock remaining(Production environment).

Also, do you validate your math/algorithm? Or just run and see the results?
I have been taught simulink/computer based simulation, but they seem more for product developers rather then end users in most cases practically(Also very biased because of production environment) How do the experienced people justify their scope to the company/clients?
 

Similar Topics

Rockwell Tech Support seemed to have hit a wall with this question. Already updated the version to 5.00.13 per their suggestio but am still...
Replies
1
Views
58
Maybe this is just not possible, or maybe I am doing something wrong. Background; I have a data array of over 1500 products. For sorting I...
Replies
6
Views
727
HEllo, still satruggling with the curse WinCC Unified. See attached picture. I just want to change the fill colour from turqoise to grey and then...
Replies
5
Views
407
I need assistance with writing a logic for sending data from a Station PLC using 1 MSG instruction to an AGC PLC in every cycle using a CIP Data...
Replies
2
Views
549
Hey All, I've got a Vacon x4 VFD running in open-vector mode. It is spinning a heavy pin-mill wheel. It gets frequency reference from a PID...
Replies
20
Views
2,424
Back
Top Bottom