SequenceControl (FB)

FUNCTION_BLOCK SequenceControl

Control up to four interconnected or related heat/cool sequences.

Building automation applications quite often need to handle interconnected or related heat/cool sequences of certain actuators / aggregates. Because there is a large amount of variance within sequence relations it is complex to implement such control algorithm in the application with the means of control primitives like PID, deadband etc.

SequenceControl provides a flexible implementation to control up two four interconnected or related heat/cool sequences. Basic comprehension of control algorithm in general and PID in particular is inevitable to understand the functionality of SequenceControl.

Sequence combinations:

SequenceControl supports a fixed set of sequence combinations - see SequenceControlSequences. Sequences and sequence combinations are described in this documentation as simple “ASCII art”. “" represents a “heating sequence”. “/” represents a “cooling sequence”.

A “heating sequence” is synonomous to any manipulated variable / actuator value with negativ control amplification, reducing its value at rising control variable value. A “cooling sequence” is synonomous to any manipulated variable / actuator value with positive control amplification, increaing its value at rising control variable value.

Some examples of sequence combinations: - - one heat sequence - \/ - two heat sequences followed by a cool sequence - \// - two heat sequences followed by two cool sequences All supported sequence combinations - see SequenceControlSequences.

Sequence relations:

Sequences can be related as follows:

  • directly connected Example: two directly connected heat sequences (\) Temperature (control variable) above heat setpoint, controller reducing manipulated variable. The manipulated variable of first heat sequence (rOut1) reaches its minimum value (rMin1), the second heat sequences takes over immediately reducing manipulated variable of second heat sequence (rOut2).

  • overlap Example: two cool sequences (//) Temperature (control variable) above setpoint, controller increasing manipulated variable. Before the manipulated variable of first cool sequence (rOut1) reaches its minimum value (rMin1), the second heat sequences takes over increasing manipulated variable of second cool sequence (rOut2)

  • “zero energy band” (also often called “dead band”) Example: heat sequence, followed by “zero energy band”, followed by cool sequence (/) Temperature (control variable) rising above heat sepoint and later on rising above cool setpoint. Manipulated variable of heat sequence (rOut1) is reduced until its minimum value (rMin1). If temperature (control variable) is in between heat sepoint and cool setpoint neither rOut1 or rOut2 exceed rMin(1,2). If temperature (control variable) is rising above cool setpoint, rOut2 is taking over control.

Control algorithm inputs:

Inputs related to a single sequence:

  • Minimum value for manipulated variable - rMin (0..100)

  • Maximum value for manipulated variable - rMax (>rMin..100)

  • proportionality band - rXP please note: this is not a proportionality constant P), but the range within the process variable leads to (normalized) control actions (value of manipulated variable) 0..100%. rMin > 0.0 / rMax < 100.0 doesnt interfere with the control amplification. It’s best to envision rXP as the range of the process variable the sequence is “related to” (given: rMin = 0.0 AND rMax = 100).

Inputs related to all sequences:

  • setpoints: heating setpoint rSetptHeat, cooling setpoint rSetptCool

  • process variable rIn

  • (integral) reset time I - rTr [sec]. Not releavant if set to 0, in this case SequenceControl works as P controller (eventually PD controller)

  • derivative time D - rTd [sec]. Not releavant if set to 0, then SequenceControl works as P controller (eventually PI controller)

  • deviation minimum and maximum - for some use cases it is required to limit deviation by the mean of a command variable or other moving limits.

  • forced command variable value related to a selected sequence - rForcedValue

  • selected sequence to force command variable - usiForceSeq

  • enable/disable to force a command variable - xForceEnable

Other inputs:

  • “zero energy bands” / “dead zones” between sequences: rDeadzone12, rDeadzone23, rDeadzone34 rDeadzone can be set to 0 (=> sequences directly connected), < 0 (=> sequences overlap) or > 0 (=> “zero energy band”)

  • setpoints: rSetpointHeat, rSetpointCool - the relation between the setpoints and the sequences will be explained more detailed later on.

Relation between setpoints sequences:

| | /
| | /
| |/
rSetpointHeat rSetpointCool

rDeadzone12 gets ignored in this case

| | / /
| | / /
| |/ /
rSetpointHeat rSetpointCool

rDeadzone23 gets ignored in this case

Other control characteristics:

Integrator dynamics

To provide an homogenous integration speed within all sequences, integration speed (or integration gradient - the ratio (delta rOut <–> (delta integrator deviation / delta time)) will be computed as follows:

One active sequence: the proportional deviation is used as integrator deviation

Multiple active sequences: the difference of rActual to the “lower end” of the sequence (in relation to the releated setpoint) is used as integrator deviation. Example: eSequences:=”\//, rSetptCool:=23.0, rXP3:=10.0, rXP4:=10, rDeadzone34:=1.0

  • rOut3 “lower end” is rSetptCool(23.0)

  • rOut3 “upper end” is rSetptCool + rXP3 (33.0)

  • rOut4 “lower end” is rOut3 “upper end” + rDeadzone34 (34.0)

Reset

Level sensitive xReset allows to force SequenceControl to propertional-only state rOut computed based on propertional deviation only - integrator will be reset.

“Anti windup” (integration limit)

Integration will be stopped at “outer” manipulated variable limits of directly connected or overlapping sequences.

“Soft set”

In case of control parameter changes (rXP, rMin, rMax, rTr, rTd) SequenceControl tries to smooth changes of manipulated variables. This just works for PI control in many but not all cases by adjusting the integrator. “Soft set” is not going to work for P/PD control of course.

InOut:

Scope

Name

Type

Initial

Comment

Input

xEnable

BOOL

TRUE

Enable

rIn

REAL

22.0

Control variable

rSetptHeat

REAL

21.0

Heat setpoint

rSetptCool

REAL

23.0

Cool setpoint

eSequences

SequenceControlSequences

SequenceControlSequences.H1C2

Sequence configuration

rXP1

REAL

1.0

Proportionality band for manipulated variable sequence 1, >0.0

rMin1

REAL

0.0

Minimum value for manipulated variable sequence 1, 0..<100

rMax1

REAL

100.0

Maximum value for manipulated variable sequence 1, >0..100

rDeadband12

REAL

0.0

“zero energy band” / “dead band” between sequence 1 and 2

rXP2

REAL

1.0

Proportionality band for manipulated variable sequence 2, >0.0

rMin2

REAL

0.0

Minimum value for manipulated variable sequence 2, 0..<100

rMax2

REAL

100.0

Maximum value for manipulated variable sequence 2, >0..100

rDeadband23

REAL

0.0

“zero energy band” / “dead band” between sequence 2 and 3

rXP3

REAL

1.0

Proportionality band for manipulated variable sequence 3, >0.0

rMin3

REAL

0.0

Minimum value for manipulated variable sequence 3, 0..<100

rMax3

REAL

100.0

Maximum value for manipulated variable sequence 3, >0..100

rDeadband34

REAL

0.0

“zero energy band” / “dead band” between sequence 3 and 4

rXP4

REAL

1.0

Proportionality band for manipulated variable sequence 4, >0.0

rMin4

REAL

0.0

Minimum value for manipulated variable sequence 4, 0..<100

rMax4

REAL

100.0

Maximum value for manipulated variable sequence 4, >0..100

tI

TIME

TIME#0ms

(Integral) reset time (I). Not releavant if set to T#0S, in this case SequenceControl works as P controller (eventually PD controller)

tD

TIME

TIME#0ms

Derivative time (D). Not releavant if set to T#0S, then SequenceControl works as P controller (eventually PI controller)

rDeviationMin

REAL

-3.4E+38

Deviation minimum

rDeviationMax

REAL

3.4E+38

Deviation maximum

xForceEnable

BOOL

FALSE

Enable forced value (rForcedValue) / sequence (usiForceSeq)

rForcedValue

REAL

Forced command variable value for selected sequence (usiForceSeq)

usiForceSeq

USINT (1..4)

1

Selected sequence to force command variable with rForcedValue

xReset

BOOL

FALSE

Reset to proportional control / reset detected input error

itfDateTimeProvider

Util.IDateTimeProvider

Globals.g_dtpDateTimeProvider

Source for the current date and time information in milliseconds since 1.1.1970 00:00:00.000

Output

rOut1

REAL

Manipulated variable sequence 1

rOut2

REAL

Manipulated variable sequence 2

rOut3

REAL

Manipulated variable sequence 3

rOut4

REAL

Manipulated variable sequence 4

eMode

HeatCoolOperationMode

Operation mode

xError

BOOL

Error indication

eErrorID

Error

Error ID