[CAS_CTR] Cascade controller
Function block CAS_CTR is a PI primary controller for cascade control of the room supply air.
CAS_CTR is a PI primary controller for cascade control of the room supply air.
CAS_CTR supplies the upper and lower supply air setpoints. In addition, the supply air setpoint for energy recovery is determined in dependence of its direction of control action.
CAS_CTR can be used for temperature or humidity cascade control.
Cascade control
The supply air setpoints [SpLoSu], [SpHiSu], and [SpErcSu] are calculated as follows:
- The reference controller is switched by the inputs [EnFnct] and [OoServ] (operating modes).
- The lower and upper supply air setpoint [SpLoSu], [SpHiSu] are controlled by the controlled variable [XctrR] (upper, lower supply air setpoints).
- The control action of energy recovery [ActgErc] determines the supply air setpoint for energy recovery [SpErcSu] (supply air setpoint for energy recovery).
Operating modes
Condition | Result | ||
|---|---|---|---|
EnFnct | OoServ | CtrSta |
|
|
0 | 0 | 1 (CtrOff) | The controller is switched off. |
1 | 0 | 3 (CtrOn) | The controller is switched on. |
0 | 1 | 2 (CtrCmd) | The controller is switched off. The default value [DefVal] is available at the outputs. |
Upper, lower supply air setpoints
The CAS_CTR block works as a reference controller for cascade control of the room supply air. The reference controller controls the control variable [XctrR] of the outer control loop to an interval value [SpLoR],[SpHiR]. To do this, the reference controller CAS_CTR determines the three setpoints [SpLoSu], [SpErcSu], and [SpHiSu], controlled by the inner control loop.
The sequence controller that controls the controlled variable [XctrSu] of the inner control loop to the setpoints supplied by the CAS_CTR block is part of the inner control loop ([CTR] Controller).

Calculation of the upper and lower supply air setpoint depends on the operating mode and the controlled variable [XctrR].
Condition | Result | |
|---|---|---|
EnFnct | OoServ | |
|
0 | 1 | The reference controller is switched off. The default value [SpCmdSu] is available at outputs [SpLoSu], [SpHiSu], and [SpErcSu]. [CtrSta] = 2 (CtrCmd) |
0 | 0 | The reference controller is switched off. [CtrSta] = 1 (CtrOff) |
1 | 0 | The reference controller calculates the lower supply air setpoint [SpLoSu] and the upper supply air setpoint [SpHiSu] from the corresponding room setpoints [SpLoR], [SpHiR], and the controlled variable of the room [XctrR]. [CtrSta] = 3 (CtrOn) |
The calculated supply air setpoints are limited by [SpMinSu] and [SpMaxSu]. [CtrSta] = 4 (CtrMin) or 5 (CtrMax) | ||

Supply air setpoint for energy recovery.
Calculation of the supply air setpoint for energy recovery [SpErcSu] depends on the operating mode, the setpoint selection for energy recovery [SelSpErc], and on the present direction of control action for energy recovery [ActgErc].
OoServ | SelSpErc |
| |
|---|---|---|---|
|
1 |
| The supply air setpoint for energy recovery [SpErcSu] is equal to [DefVal]. | |
0 | 1 | The supply air setpoint for energy recovery [SpErcSu] corresponds to the average value of the lower and upper supply air setpoint. [SpErcSu] = Average [SpLoSu], [SpHiSu] | |
0 | The supply air setpoint for energy recovery [SpErcSu] depends on the present direction of control action [ActgErc]. | ||
ActgErg = 0 (direct) | Supply air setpoint cooling[SpErcSu] = [SpHiSu] | ||
ActgErc = 1 (inverted) | Supply air setpoint heating[SpErcSu] = [SpLoSu] | ||

Integration in sequence control
CAS_CTR can be integrated in sequence control by connecting pins [ToLower] and [FmHigher] as well as [FmLower] and [ToHigher]. It can be reached directly or via SEQLINK. Integration of CAS_CTR in sequence control corresponds to integration of a PID sequence controller, where it is described in detail.
The following diagram shows control of a ventilation system. The air volume flow is increased when the min. or max. supply air setpoint is reached.

Input | Description | Data type | Default value |
|---|---|---|---|
EnFnct | Enable function Enables the function. | Boolean | 1 |
0 - The function is disabled. | |||
OoServ | Out of service Commanding the controller output. | Boolean | 0 |
0 - No commanding. | |||
DefVal | Default value Default supply air setpoint The default value for [SpLoSu], [SpHiSu], and [SpErcSu] if [OoServ] = True. | Real | 20.0 [°C] -50.0…150.0 [°C] |
SpHiR | Setpoint high: Room Setpoint for the room temperature (cooling) or room humidity (dehumidify). | Real | 21.0 [°C] 0.0…100.0 [°C] |
SpLoR | Setpoint low: Room Setpoint for the room temperature (heating) or room humidity (humidify). | Real | 20.0 [°C] 0.0…100.0 [°C] |
XctrR | Controller input for room Measured value for room temperature or room humidity. | Real | 0.0 [°C] 0.0…100.0 [°C] |
XctrSu | Controller input for supply air Measured value for supply air or supply air humidity The input must be interconnected for PI response. For P-response, [XctrSu] is not required. | Real | 0.0 [°C] 0.0…100.0 [°C] |
ActgErc | Control action for energy recovery | Boolean | 1 |
0 - Direct - Energy recovery occurs on cooling or dehumidifying. | |||
Gain | Gain | Real | 10.0 [°C / °F] 0.0…100.0 [°C / °F] |
Tn | Integral action time Tn | Time | 2m |
0ms: The cascade controller has a P control response. | |||
SpMaxSu | Maximum supply air setpoint | Real | 32.0 [°C] -50.0…150.0 [°C] |
SpMinSu | Minimum supply air setpoint | Real | 15.0 [°C] -50.0…150.0 [°C] |
SelSpErc | Selection of energy recovery setpoint See supply air setpoint for energy recovery. | Boolean | 0 |
0 - Edge (The supply air setpoint for energy recovery [SpErcSu] depends on the present direction of control action [ActgErc]). | |||
EnIntini | Enable integrator initialization | Boolean | 0 |
0 - The start value calculated internally is valid on startup. | |||
IntgInit | Integrator initialization Integrator initialization for special applications. Engineering: Integrator initialization. | Real | 0.0 [°C] 0.0…100.0 [°C] |
FmHigher | From higher neighbor element | Structure | - |
FmHigher | Control mode | Integer | 1: Nil |
1: Nil - Not connected (Default value). | |||
FmHigher | Sequence coordination | Integer | 1: Nil |
1: Nil - Not connected (Default value). | |||
FmHigher | Control token | Integer | 1: Nil |
1: Nil - Not connected (Default value). | |||
FmHigher | Is integrator | Boolean | 0 |
0 - Sequence element has a non-integrative behavior (default). | |||
FmHigher | Covered error Error covered by the proportional part of the controller. | Real | 0.0 |
FmLower | From lower neighbor element | Structure | - |
FmLower | Control mode | Integer | 1: Nil |
1: Nil - Not connected (Default value). | |||
FmLower | Sequence coordination CTR coordination signal. | Integer | 1: Nil |
1: Nil - Not connected (Default value). | |||
FmLower | Control token | Integer | 1: Nil |
1: Nil - Not connected (Default value). | |||
FmLower | Is integrator. | Boolean | 0 |
0 - Sequence element has a non-integrative behavior (default). | |||
FmLower | Covered error Error covered by the proportional part of the controller. | Real | 0.0 |
Output | Description | Data type | Default value |
|---|---|---|---|
ErSta | Error state | Boolean | 0 |
0 - No error, [TknSta] is not HEL_CSEQ nor CEL_HSEQ nor RT_FAULT. | |||
CtrSta | Controller state | Integer | 1: CtrOff |
1: CtrOff - Controller switched off. | |||
TknSta | Token state | Integer | 1: NoTkn NoTkn…RTFault |
1: NoTkn - No token. | |||
SpHiSu | Setpoint high: Supply air The setpoint for the supply air temperature (cooling) or supply air humidity (dehumidify) is available (direct direction of control action). | Real | 26.0 [°C] -50.0…150.0 [°C] |
SpErcSu | Supply air setpoint for energy recovery The setpoint for energy recovery is available. | Real | 23.0 [°C] -50.0…150.0 [°C] |
SpLoSu | Setpoint low: Supply air The setpoint for the supply air temperature (heating) or supply air humidity (humidifying) is available (indirect direction of control action). | Real | 20.0 [°C] -50.0…150.0 [°C] |
ToHigher | To higher neighbor element | Structure | - |
ToHigher | Control mode | Integer | 1: Nil |
1: Nil - Not connected (Default value). | |||
ToHigher | Sequence coordination | Integer | 1: Nil |
1: Nil - Not connected (Default value). | |||
ToHigher | Control token | Integer | 1: Nil |
1: Nil - Not connected (Default value). | |||
ToHigher | Is integrator | Boolean | 0 |
0 - Sequence element has a non-integrative behavior (default). | |||
ToHigher | Covered error Error covered by the proportional part of the controller. | Real | 0.0 |
ToLower | To higher neighbor element | Structure | - |
ToLower | Control mode | Integer | 1: Nil |
1: Nil - Not connected (Default value). | |||
ToLower | Sequence coordination | Integer | 1: Nil |
1: Nil - Not connected (Default value). | |||
ToLower | Control token | Integer | 1: Nil |
1: Nil - Not connected (Default value). | |||
ToLower | Is integrator | Boolean | 0 |
0 - Sequence element has a non-integrative behavior (default). | |||
ToLower | Covered error Error covered by the proportional part of the controller. | Real | 0.0 |
Temperature or humidity control
The reference controller is used for both temperature and humidity control. Change the following settings when using it as a reference controller for humidity control:
- Change the pin unit with dependence 1 from °C to g/kg.
- Change the pin unit with dependence 1 from °F to lb/lbda.
- Change the pin unit with dependence 2 from °C to %rh.
- Change the pin unit with dependence 2 from °F to %rh.
- Adjust the default values for the following pins.
Connecting thread | Unit | Default value |
DefVal | g/kg | 5 |
Lb/lbda | 0.005 | |
SpHiR | %r.h. | 60 |
SpLoR | %r.h. | 30 |
XctrR | %r.h. | 0.0 |
XctrSu | %r.h. | 0.0 |
Gain. | (g/kg)/(%rh) | 1 |
(lb/lbda)/(%rh) | 0.001 | |
Tn | Time | 10 |
SpMaxSu | g/kg | 10.5 |
lb/lbda | 0.011 | |
SpMinSu | g/kg | 4.5 |
lb/lbda | 0.005 | |
IntgInit | g/kg | 0.0 |
lb/lbda | 0.0 | |
SpHiSu | g/kg | N/A |
lb/lbda | na | |
SpErcSu | g/kg | na |
lb/lbda | na | |
SpLoSu | g/kg | na |
lb/lbda | na |
Humidity control by different physical controlled variables
If the supply air [XctrSu] is measured in absolute humidity [g/kg], and the room air [XctrR] in relative humidity [%hu], the integrator initialization value must be predefined; otherwise, the mean value calculated from [SpLoR] + [SpHiR] is used. If the room setpoints are defined in absolute humidity, the integrator initialization value starts at a high value and returns to the set integral action time [Tn]. As a result, humidification may be enabled during controller initialization until the integrator has reached the correct value, even if the room would need dehumidification.
To prevent this, the present measured value for the supply air humidity [XctrSu] is interconnected to the integrator initialization [IntgInit] or a fixed parameter value for the integrator is preset.
Requirement for high accuracy of control
If there are high requirements of the control accuracy (e.g. work without energy-free control zone), the present measured value for the supply air humidity [XctrSu] is interconnected to the integrator initialization [IntgInit] or a fixed parameter value is defined for the integrator.
Details for cascade controller operation: PID sequence controller
A sequence controller is used if several components control a controlled value in accordance with the predefined control sequence. The sequence controller switches the individual sequence controller elements according to the control sequences and coordinates control for the individual controller elements in an interrelated control behavior across all sequence controller elements or components.
The functioning of the sequence controller comprises all processes that influence each other:
- Enabling or disabling a sequence controller
- Control process of the sequence controller
- Enabling/disabling/commanding an individual sequence controller element
- Control process of the individual sequence controller elements. The control process corresponds to that of a universal PID controller.
Enabling or disabling a sequence controller
The sequence controller is disabled by disabling [EnFnct] = 0 or commanding [OoServ] = 1 all sequence controller elements. If then a selection of sequence controller elements is enabled with properly parameterized control action ([EnFnct] = 1 and [OoServ] = 0), the sequence controller elements are initiated within this selection: The control process is started with that sequence controller element of the enabled selection that is closest to the control action changeover and that contains the control action for the respective situation determined by the present actual values and setpoints.
If the sequence control process is to be initiated by a particular sequence controller element, the corresponding sequence controller element must be enabled prior to all other elements; else, the above described process is used.
Control process of the sequence controller
The sequence controller switches control of the individual sequence controller elements via the controller token. Further signals to coordinate control of the sequence controller elements are necessary in addition to the controller token. The associated signals are exchanged via the pins [ToLower] and [FmHigher] and the pins [FmLower] and [ToHigher].
In each process cycle, the individual sequence controller elements independently determine the sequence controller element that carries out control (independent of the operating mode of the sequence controller).
- If a sequence controller element satisfies the following conditions, the controller token adopts [TknSta] = CntrTkn.
- The sequence controller element must be enabled ([EnFnct] = 1) and not commanded ([OoServ] = 0).
- The sequence controller element controls the requested demand, e.g., the heating demand: [Actg] = Reverse and [Xctr] < [Sp].
- The sequence controller element controls the responsible component in the operating sequence, e.g., the previous components have been removed from control or cannot be controlled.
- The sequence controller must be enabled.
- The sequence controller element featuring the controller token controls the plant [Yctr]. All other sequence controller elements are constant.
- [TknSta] = CntrTkn
- [CtrSta] = CntrOn
- Exception: Enabling/disabling/commanding individual sequence controller elements
- If the control range of the controlling sequence controller element is exhausted, [Yctr] > [YctrMax] or [Yctr] < [YctrMin], the controller token is passed on to the following sequence controller element (according to the operating sequence).
- [TknSta] = NoTkn
- [CtrSta] = CntrMin or CntrMax
- Exception: Sequence controller elements with [EnFnct] = No or [OoServ] = On are not switched.

If all controller outputs of the enabled sequence elements are set to their limit values [CtlSta] = CntrMin or [CtlSta] = CntrMax, the sequence controller element does not have a controller token. This may occur in different parameter settings of the sequence controller elements, e.g., within the energy-free zone due to different setpoints.
Enabling/disabling/commanding an individual sequence controller element
The sequence controller considers the influence on control and integration if a sequence controller element is enabled, disabled or commanded via its operating mode (e.g. via operator intervention).
Condition | Result | ||
|---|---|---|---|
EnFnct | OoServ | Sequence controller element | Sequence controller |
0 | 0 | The sequence controller element immediately sets the controller output [Yctr] = 0. | The sequence controller skips the sequence controller element in the operating sequence. If the controlling sequence controller element is disabled, the subsequent sequence controller element starts controlling. |
1 | 0 | The sequence controller element checks if it was skipped by the sequence controller in the operating sequence. If the sequence controller element was skipped, its controller output [Yctr] increases to [Yctr] = YctrMax at speed Ti0to100. If the sequence controller element was not skipped, [Yctr] decreases to [Yctr] = YctrMin at speed Ti100to0. | The sequence controller adds the sequence controller element to the operating sequence. |
0 | 1 | The sequence controller element immediately sets the controller output [Yctr] = 0. | The sequence controller skips the sequence controller element in the operating sequence. If the controlling sequence controller element is newly commanded, the subsequent sequence controller element starts controlling. |
Details for cascade controller engineering: Engineering - PID sequence controller
The sequence controller is formed by interconnecting and parameterizing CTR function blocks (sequence controller elements). The sequence controller functionality is generated automatically via information channels. The sequence of the individual components is determined by the interconnection sequence of the CTR function block.
Engineering comprises the following steps:
- Determining the order of the sequence controller elements.
- Interconnecting sequence controller elements.
- Parameterizing the sequence controller element.
If all sequence controller elements are parameterized the same, the entire sequence controller responds like one single controller. - Parameterizing the control behavior (analogous to the PID controller).
- Parameterizing the sequence controller element' control action.
- Parameterizing setpoints and an energy-free zone.
- Setting/tuning the sequence controller
Determining the order of the sequence controller elements
Essentially, the sequence controller consists of individual CTR function blocks. Each PID_CTR block acts as a sequence-controller element for a component.
The interconnection sequence of the CTR function blocks (from low to high) corresponds to the order of the control sequences (1..n) of the sequence controller. Accordingly, both the intended operating range (e.g. heating) and the switching sequence must be considered when interconnecting the CTR blocks.

For example: Components 1 = Reheater, 2 = Preheater, 3 = Air dampers, 4 = Cooler
Control sequence for heating: 1 ---> 2 ---> 3.
Control sequence for cooling: 4 ---> ....
- The lowest sequence controller element corresponds to control sequence 1, the highest to control sequence n.
- The lowest sequence-controller element controls a reverse-acting component (if used)
Interconnecting sequence controller elements
There are two ways to interconnect the CAS_CTR function blocks with a sequence controller:
1. Direct interconnection

The individual CAS_CTR function blocks are interconnected with each other.
Interconnection is made between the pins [ToLower] and [FmHigher] and the pins [FmLower] and [ToHigher].

This type of interconnection is used if the PID_CTR function blocks are located on the same chart.
2. Interconnection to SEQLINK

The individual PID_CTL function blocks are interconnected via the SEQLINK block.
Interconnection occurs between the pins for function block CTR and a place on the SEQLINK. The sequence of CTR must match the order of the places. However, free places are possible on the SEQLINK. Several SEQLINKs can be interconnected in series.

This type of interconnection is used if the CTR function blocks are located on different charts or if the individual sequence controller elements or components may not be interconnected (CAS library).

The sequence elements must be parameterized in accordance with the interconnection.
The pins [ToLower] and [FmHigher], [FmLower] and [ToHigher] are interconnected only on a sequence controller.
Parameterizing the sequence controller element' control action
The set operating range (e.g. heating, cooling) determines the direction of control action [Actg] for a sequence controller element. Direction of control action changeover during operation is possible (e.g. energy recovery). If component control demands an inverted signal, inversion [Inv] of the controller output [Yctr] helps solve this problem.
In the sequence controller, the direction of control action must feature the following response:

- The first or lowest sequence controller elements have reverse direction for control action [Actg] = Reverse.
- The first or highest sequence controller elements have direct direction of control action [Actg] = Direct.
- A sequence controller element with changing direction of control action (e.g. ERC) can only be in between.
Deviations generate an error signal [ErSta] = Yes. Troubleshooting
Parameterizing setpoints and an energy-free zone
In the sequence controller, the setpoints [Sp] of the sequence controller elements (1...n) must increase monotonously:
[Sp]1 <= [Sp]2 <= [Sp]3 <= ... <= [Sp]n
Modulating control on transition from one control sequence to another is ensured if the control sequences with the same direction of control action have the same setpoint.

The energy-free zone is defined by the setpoints on changeover of the direction of control action (e.g. heating setpoint, cooling setpoint).
