ADAPTER Control

Hover on a highlighted element to pop up its description.

This AdapterType defines a bidirectional flow of mixed data types between a primary (provider) function block (FB) and a secondary (acceptor) FB in a process control cascade. The primary FB (e.g. regulatory control, override selector, switch, lead-lag, etc.) sets the input of the secondary process control FB. The data exchanged between two FBs via this adapter connection enable a function block programmer to implement forward propagation of a primary's output to a secondary's input through a connection that supports bumpless transfer and windup protection.

An output ( OP ) is the final resulting value produced by a regulatory (primary) control function block (FB) that can be sent to a secondary function block through a control connection described by this AdapterType. A primary's OP can be sent to an analog output (AO) FB for the purpose of modulating a control valve or it can be sent to an initializable input of a secondary's regulatory control FB (e.g. a setpoint, switch input, override selector input, etc.).

  • When the secondary's initializable input (e.g. SP, switch or override selector input) cannot accept an OP from its primary, the secondary sends a New Initialization Request (NewInitReq) to its primary with an Initialization Request (InitReq) value of TRUE . A secondary may send an initialization request to its primary because the secondary is not in a mode that allows it to accept the primary's OP (e.g. secondary is not in CAS) or because the secondary itself has been initialized by one of its downstream blocks.
  • When a primary receives a NewInitReq event from its secondary with InitReq=TRUE , then the primary's OP is indisposable and the primary FB must take appropriate actions, e.g., propagate the InitReq to its primary, suspend control algorithm processing,etc.
  • When a primary receives a NewInitReq event with InitReq=FALSE , then the primary's OP is no longer indisposable and the primary can initialize its control algorithm and begin forward control algorithm processing.
  • A secondary function block should not turn off its primary's InitReq variable until it has received confirmation from its primary that it has received the secondary's Back Calculation value and successfully initialized its OP.
  • Bcalc is the value that a secondary provides to a primary just prior to the primary's first forward control algorithm pass to ensure bumpless transfer (although the Bcalc could be sent from secondary to primary every processing cycle that the cascade connection is open).
  • Typically, a secondary sends a Bcalc to its primary when the secondary goes into CAS or is itself taken out of an initialized state by its secondary (i.e. it received InitReq=FALSE from its secondary).
    1. A Bcalc value (normally equal to the current value of the secondary's initializable input - e.g. SP (Set Point)) is sent from the secondary to the primary with a Back Calculation Request event ( BcalcReq ).
    2. Upon receiving aBcalcReq , a primary should store the Bcalc value into its output and send a Back Calculation Confirmation back to the secondary ( BcalcCnf ).
    3. Upon receipt of the BcalcCnf , the secondary is assured that the primary has initialized its OP to the Secondary's initializable input thereby preventing a bump. At this point the secondary can turn off its primary's InitReq , initialize its own control algorithm, and begin to accept the primary's OP .
  • The primary in a cascade will calculate and send its OP to the secondary in engineering units of the secondary. The primary will also need to display its OP in percent for the operator HMI (so the operator understands how far away the OP is from saturation). To accomplish this, each time a back calculation is sent to a primary, the secondary must also provide to the primary its engineering units in the adaptor parameters EuHi and EuLo.
  • If a primary PID controller is writing to an initializable input of a secondary override selector, the primary controller will need to know whether its output (OP) has been selected.
    • When Selected=TRUE, the primary should continue with normal control processing.
    • When Selected=FALSE, the primary can initialize its Output (OP) value to the Back Calculation Bcalc value provided by the override selector, typically biased by the primary's current (gain * error) to prevent the override selector from flip-flopping on incremental selector input changes.
  • Upon each execution of its algorithm, an override selector should use a NewSelection event to set its primary's Selected variable to either TRUE or FALSE to indicate whether or not the specific input has been selected.
    • If a primary's Selected variable is set to FALSE, then the override FB must also set the Bcalc variable in the adapter to the override's selected output, since the primary will need this value for its own initialization purposes.
  • If the secondary is not an override selector, then it should permanently set Selected=TRUE in its adapter interface.
  • WindUp status is passed from secondary to primary in a cascade to inform the upstream block if the downstream block is constrained in a high, low or both directions. This information is important for a PID algorithm so as to not wind up its OP via integral action should the secondary become constrained.
  • The possible windup status values are represented as shown in the following table.
    WindUp Value 16#0 16#1 16#2 16#3
    Windup Status None High Low Both
  • Depending on the value of the WindUp status, a primary in a cascade would stop PID integration in the direction of the constraint, e.g. prevent positive integral contributions to the OP if WindUp = 16#1 (High).