3-Element Boiler Feed Water Control

Introduction

Controlling the boiler feed water (BFW) level in a steam drum can be difficult. The level indication is affected by changes in the steam drum pressure as well as changes in BFW inventory. The pressure changes can cause shrink and swell, which can cause the level controller to adjust the BFW flow in the wrong direction.

To mitigate this problem, 3-element BFW control is used to pre-adjust the BFW flow for changes in steam production rate. The level controller then does not need to concern itself with major changes in load and can be detuned somewhat for trim control.

Basic Control Inputs

The following three inputs are required for implementing 3-element BFW control:

  1. Steam drum level
  2. Boiler feed water flow
  3. Steam flow

Single-Element BFW Control

The steam drum level indicates the flow imbalance between the BFW supply and steam production. Therefore, to maintain BFW inventory, the boiler controls include a steam drum level controller (LC) to adjust the BFW flow. In single-element control, the level controller adjusts the BFW valve directly. Figure 1 illustrates a single-element control scheme.

Figure 1 Single-Element Boiler Feed Water Control

Figure 1: Single-Element Boiler Feed Water Control

3-Element BFW Control

Figure 2 shows the 3-element BFW control scheme. The steam drum level controller (LC) cascades to a BFW flow controller (FC). Steam production rate is used as a feed-forward input to the level controller. The feed-forward model is very simple: if the steam flow changes by one pound-per-hour, make a one pound-per-hour change in the BFW flow. If the steam flow units are different than the BFW flow units, then the feed-forward gain must include the unit conversion factor.

Incremental feedforward control is used so that the control action can be limited to a reasonable range. Therefore, if the steam signal is lost (i.e., goes to zero), the BFW flow change is limited to a small increment, thus preventing a catastrophic change in the level.

Figure 2 3-Element Boiler Feed Water Control

 

Figure 2: 3-Element Boiler Feed Water Control

3-Element BFW Control Features

The level controller automatically switches between 3-element and single-element control depending on the steam load. At low load, the steam and/or BFW flow signals can be erratic. Therefore, below an engineer-entered steam rate, the 3-element control logic switches automatically to single-element. When the steam rate increases above that setting (plus a small deadband to prevent ringing back and forth), the logic switches to 3-element control.

3-element control is disabled (and single-element control enabled) when one or more of the following conditions occur:

  1. Steam flow is below the minimum allowable flow (as discussed above)
  2. Boiler feed water flow signal is bad
  3. Steam flow signal is bad
  4. Steam drum level controller is in manual
  5. 3-element control is disabled by operator

3-Element Control Status Graphic Features

A faceplate like the one shown in Figure 3 should be added to the process graphic to show the status of 3-element control. The second line of the faceplate (DISABLE) shows the current operator setting. The bottom line shows the current control status (INACTIVE). The operator can change the control status by clicking on the second line. That action should call up an overlay like the one shown in Figure 4. To change the status, the operator must click on the TOGGLE button. The resulting status is shown in Figure 5 (note: 3-element control will be ACTIVE only if all of the conditions listed previously are satisfied).

Figure 3 3-Element Control Faceplate on Process Graphic (Inactive)

Figure 3: 3-Element Control Faceplate on Process Graphic (Inactive)

Figure 4 3-Element Control Status Overlay

Figure 4: 3-Element Control Status Overlay

Figure 5 3-Element Control Faceplate on Process Graphic (Active)

Figure 5: 3-Element Control Faceplate on Process Graphic (Active)

3-Element BFW Control Implementation

Figure 6 shows the Foxboro I/A block schematic for 3-element control. The blocks are:

  1. LC0001 – Single-element steam drum level controller
  2. LC0001A – 3-element steam drum level controller
  3. FC0002 – BFW flow controller
  4. LY0001FF – Steam feed-forward CALCA block
  5. FA0003 – Steam flow REALM block (determines when steam > minimum)
  6. LX0001 – 3-element control logic block

Figure 6 Block Schematic for 3-Element BFW Control

Figure 6: Block Schematic for 3-Element BFW Control

Single-Element Steam Drum Level Controller LC0001

LC0001 is the steam drum level controller that manipulates the BFW valve when 3-element control is inactive. It also provides its setpoint to the 3-element controller LC0001A. When it is in manual, its output adjusts the BFW valve directly. Therefore, the operator can use its faceplate on a graphic to change the mode and the setpoint of the level controller even when 3-element control is active.

This block has the following connections:

MEAS = :LI0001.MEAS
TRACK = :FC0002.OUT
TRKENL = :LX0001.BO01
BCALCI = :LV0001.BCALCO

The block should be locked in local:

LOCSW = :LC0001.LOCSW.1

The output is connected to the MEAS of LV0001 and is in units of %. The output tracks the output of FC0002 when 3-element control is active so that FC0002 will manipulate the valve instead of LC0001.

3-Element Steam Drum Level Controller LC0001A

LC0001A is the steam drum level controller that cascades to the BFW flow controller FC0002 when 3-element control is active. It obtains its setpoint from the single-element controller LC0001. It does not need a faceplate on the process graphic because the operator uses LC0001 faceplate to change the mode and the setpoint.

This block has the following connections:

MEAS = :LI0001.MEAS
RSP = :LC0001.SPT
BIAS = :LY0001FF.RO01 (Steam flow feed-forward)
HOLD = :LY0001FF.BO01
TRACK = :FI0002.MEAS
TRKENL = :LX0001.BO01.~
BCALCI = :FC0002.BCALCO

The block should be locked in auto and remote so it is forced to use LC0001 SPT:

REMSW = :LC0001A.REMSW.1
AUTSW = :LC0001A.AUTSW.1

The following parameters must be set accordingly:

HSCI2 = 999999
LSCI2 = -999999

The output is connected to the RSP of FC0002 and its range and units of measure are same as the BFW flow. The output tracks the measurement of FC0002 when 3-element control is inactive.

BFW Flow Controller FC0002

FC0002 is the BFW flow controller. The 3-element steam drum level controller LC0001A cascades to FC0002 when 3-element control is active. This block has the following connections:

MEAS = :FI0002.MEAS
RSP = :LC0001A.OUT
TRACK = :LC0001.OUT
TRKENL = :LX0001.BO01.~

The block should be locked in auto and remote:

REMSW = :FC0002.REMSW.1
AUTSW = :FC0002.AUTSW.1

The following parameters must be set accordingly:

HSCI2 = 999999
LSCI2 = -999999

The output is connected to the TRACK parameter of LC0001 so that its output goes to the BFW valve when 3-element control is active. The output tracks LC0001 output when 3-element control is inactive so it will initialize properly.

Steam Feed-Forward Block LY0001FF

The steam feed-forward block makes incremental changes to the BFW flow via the LC0001A BIAS parameter. The block has the following connections:

RI01 = :LC0001A.BIAS
RI02 = :FI0003.PNT
BI01 = :LY0001FF.BI01.0 (Locked to 0)
BI02 = :LY0001FF.BI02.0 (Locked to 0)
BI03 = :LY0001FF.BI03.0 (Locked to 0)
BI04 = :LX0001.BO01.~
BI05 = :LY0001FF.BI05.0 (Locked to 0)

Also, the block mode should be locked to automatic:

MA = :LY0001FF.MA.1

The block parameters must be set as follows:

TIMINI = 3
RI04 = 1 (Units conversion factor BFW/Steam)
RI05 = 1.0 (Gain)
RI07 = Maximum BFW flow increase per execution
RI08 = Maximum BFW flow decrease per execution
BI11 = Feed-forward off (0) / on (1)
M11 = -1.0
M12 = 999999 (Maximum BIAS value)
M13 = 120 (Delay after bad input transitions to good – seconds)
M14 = 5 (Delay after initialization ends – seconds)

This block has the following outputs:

RO01 = Connect to LC0001A.BIAS
BO01 = Connect to LC0001A.HOLD

Steam Feed-Forward Block Steps

STEP01 = CLR RO02 ;INCR FF CHANGE
STEP02 = CLR BO02 ;BIAS RESET FLAG
STEP03 = CLR
STEP04 = BII 35
STEP05 = CST
STEP06 = IN BI01 ;PID CTL INIT (=1)
STEP07 = BIT 13
STEP08 = IN RI01 ;PID CTL BIAS
STEP09 = ABS
STEP10 = SUB M12 ;MAX BIAS
STEP11 = BIN 15
STEP12 = SET BO02 ;BIAS RESET FLAG
STEP13 = CLR RO01 ;PID CTL BIAS
STEP14 = GTO 38
STEP15 = CST
STEP16 = OR BI01 BI02 ;INIT OR BAD INPUT
STEP17 = OR BI04 BI05 ;FF INIT COMMANDS
STEP18 = OR 2
STEP19 = OUT BO04 ;FF INIT FLAG
STEP20 = OR ~BI11 ;APP OFF
STEP21 = OR BO03 ;RE-INIT FLAG
STEP22 = BIT 32
STEP23 = SUB RI02 M01 ;CALC INCR FF CHANGE
STEP24 = MUL RI04 ;ADAPTIVE GAIN
STEP25 = MUL RI05 ;FF GAIN
STEP26 = OUT RO02 ;BIAS CHANGE
STEP27 = IN RI08
STEP28 = MIN 2 ;LIMIT BIAS INCREASE TO RI08
STEP29 = MUL RI07 M11
STEP30 = MAX 2 ;LIMIT BIAS DECREASE TO RI07
STEP31 = OUT RO02 ;BIAS CHANGE
STEP32 = CST
STEP33 = ADD RO02 RI03 ;ADD OTHER FF
STEP34 = OUT RO04 ;TOT BIAS CHANGE
STEP35 = ADD RI01 ;CURR BIAS
STEP36 = OUT RO01 ;PID CTL BIAS
STEP37 = CST
STEP38 = IN RI02 ;FF INPUT
STEP39 = OUT M01 ;PREV FF INPUT
STEP40 = CST
STEP41 = OR BI03 BO02 ;INCL HOLD FM OTHER FF
STEP42 = OUT BO01 ;PID CTL HOLD
STEP43 = CST
STEP44 = RBD RI02 ;BAD FF INPUT
STEP45 = OR BI02 ;BAD FF INPUT
STEP46 = DOFF M13
STEP47 = IN BO04 ;INIT FLAG
STEP48 = DOFF M14
STEP49 = OR 2
STEP50 = OUT BO03 ;RE-INIT FLAG

Steam Feed-Forward Block Logic Details

Steps 1-4: Initialize variables. If this is first pass since block loaded (BII), then set previous feed-forward (FF) input to current value.

Steps 6-14: If the level controller is initializing, then set its BIAS to zero. If not, then check for BIAS exceeding maximum (typically 999999). If so, then set the level controller’s HOLD on and set its BIAS to zero. The HOLD parameter prevents the controller from reacting to the sudden zeroing of its BIAS.

Steps 16-22: Check to see if feed-forward must be initialized. If so, then bypass feed-forward calculation.

Steps 23-31: Calculate the change in the steam rate since the previous execution and apply the units conversion (labelled adaptive gain) and the FF gain. The result is then limited to the maximum increase allowed (RI08) and the maximum decrease allowed (RI07), and stored in RO02.

Steps 33-36: Add the bias change to the current BIAS and send the result to the level controller BIAS via RO01. Note: Feed-forward blocks can be chained together if more than one feed-forward input exists. In the 3-element control scheme, this is rarely necessary, so the connections to the other feed-forward block are locked to zero.

Steps 38-39: Store the current FF input to the previous value in M01 for the next execution.

Steps 41-42: Send the HOLD status to the level controller’s HOLD parameter via BO01.

Steps 44-50: If the FF input is bad, then set the initialization flag so that the next execution will perform initialization.

Steam Flow REALM Block FA0003

FA0003 is a REALM block that indicates when the steam flow is above the minimum for enabling 3-element control. This block has the following connections:

MEAS = :FI0003.MEAS

The block should be locked in auto:

MA = :FA0003.MA.1

The following parameters must be set accordingly:

HLAOPT = 2 (Enables high absolute alarming)
HABLIM = Minimum steam flow for enabling 3-element control
ABSDB = Alarm deadband to prevent ringing

The HAIND parameter is connected to the 3-element control logic block LX0001.

3-Element Control Logic Block LX0001

The 3-element control logic block LX0001 determines whether 3-element control is enabled. The block has the following connections:

BI01 = :HS0001.CIN (Operator enabled)
BI02 = :FA0003.HAIND (Above min steam rate)
BI03 = :FI0003.ALMSTA.B10 (Bad steam flow)
BI04 = :FI0002.ALMSTA.B10 (Bad BFW flow)
BI05 = :LC0001.MA (Level controller in auto)

Also, the block mode should be locked to automatic:

MA = :LX0001.MA.1

The block parameters must be set as follows:

TIMINI = 3

This block has the following output:

BO01 = 3-element control status (0=inactive; 1=active)

3-Element Control Logic Block Steps

STEP01 = IN BI02 ;STEAM > LOW LIM
STEP02 = AND ~BI03 ;NOT BAD STEAM
STEP03 = AND ~BI04 ;NOT BAD BFW
STEP04 = OUT BO05 ;PERMISSIVE
STEP05 = AND BI01 ;3-ELEM ENABLED
STEP06 = OUT BO03 ;3-ELEM READY
STEP07 = AND BI05 ;LIC IN AUTO
STEP08 = OUT BO01 ;3-ELEM IN OPERATION
STEP09 = END

3-Element Control Logic Block Details

Steps 1-4: Determine whether permissives are met: steam flow above minimum, steam flow not bad, and BFW flow not bad. BO05 indicates result (0=no permissive; 1=permissives met).

Steps 5-6: If the operator has enabled 3-element control and the permissives are met, then 3-element control is ready (BO03=1).

Steps 7-8: If 3-element control is ready and the level controller LC0001 is in auto, then 3-element control is in operation. BO01 is connected to the other blocks to put LC0001A and FC0002 in operation if 3-element control is on (BO01=1), or LC0001 in operation if single-element control is on (BO01=0).