We have two 75T/H boilers and two 25T/H and we want to share them and control the load. How can we do this?
Boiler load allocation is not difficult, but you first have to supply a little information: a. approximate incremental cost of generating steam ($/klb) on each boiler as a function of fuel flow. b. time response of each boiler (special considerations must be made if a boiler responds much slower than the other boilers). c. minimum & maximum limits for: fuel flow, air flow, steam flow and perhaps opacity.
Economic dispatching (useful for static optimization)is not really applicable to most industrial boilers since the loads are usually changing almost constantly to meet a varying process steam demand. You must apply a dynamic allocation solution. One method that I have used successfully is to embed an incremental allocator in the steam header pressure control. As the header pressure calls for an increase or decrease in steam generation, the allocator divides the request based on the steam generation cost of each boiler, the remaining amount of steam that can be generated by each boiler and the speed of response of each boiler. Also the allocator must recognize boiler operating limits. If a boiler is fully loaded, you can ask for less but not more. Of course the header pressure control must also be tuned properly.
There are a lot of other details that I can't address in a short reponse like this. One item that you didn't mention are the controls that are on each boiler. A load allocator needs to integrate the the combustion controls. If they are all on one DCS that would be easy but I suspect they are not. If the controls can be integrated the problem really isn't that difficult. Hope this gives you something to think about.
If there r two boilers of the same capacity and being operated in parallel, then the load sharing between these two can be implemented in the following way.
Total load setpoint can be multiplied by 0.5 and the result can be sent to load controller of each boiler as a remote load setpoint. If the boilers are of different capacity then this multiplication factor shud be implemented seperately at each controller. Let us assume that all 4 above said boilers are in operation. For a max load of 200T/H all 4 boilers should be operated at their maximum capacity. In this case the individual multiplication factors can be calculated as given below. The calculation in the bracket gives the remote load setpoint of each boiler)
1st 75T/H boiler --- 0.375 (0.375X200=75 T/H)
2nd 75T/H boiler --- 0.375 (0.375X200=75 T/H)
1st 25T/H boiler --- 0.125 (0.125X200=25 T/H)
2nd 25T/H boiler --- 0.125 (0.125X200=25 T/H)
so the total load setpoint is 200 T/H which is the 100% capacity of the total unit.
above calculations are made in engg units (i.e. T/H). They can also be implemented in %
If the Total load of the unit is decreased to 120 T/H, then the individual load setpoints become 45,45,15,15 in the order as mentioned above.
That is really a strange setup. What is your normal plant load? Typically, you would want to have one boiler has a backup to the other. I guess one boiler is a backup to the two small ones.
At any rate, this is what I would do (the simpler the better - you could have automatic load allocator but that might be a little complex for your plant):
Plant Master Controller (PID controller) controls the main pressure and its ouput goes to all the Individual Boiler Masters (a boiler master is a simple bias and gain).
The key to your success is to calculate online the process gain of your system: if one 25T/h boiler is firing vs 125 T/h (all four boilers) there is a really big change in process gain. So what you need to know is to calculate the number of boilers that are in cascade mode in T/h. Based on the T/h in auto you will adapt the controller gain of your plant master controller. Expect your controller gain to be high (say 4) when one 25 T/h boiler is online and a low gain (say 0.8) when all of the boilers are online.
Hope this helps.
Ben Janvier, Senior Process Control Consultant