# Damper3P

## `Damper3P` (FB)

FUNCTION\_BLOCK Damper3P

### Short description

> Control of a 3-point damper actuator and calculation of the valve position\
> Typical application: Control of a 3-point damper actuator in a recirculation damper system of a ventilation unit

### Representation

<figure><img src="https://2592874069-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FQR4vCFzt6ixgsqlR3pdR%2Fuploads%2Fgit-blob-d91908211a7dcbc13ede1686c765846d10f4298d%2FValve3P_FB.png?alt=media" alt=""><figcaption></figcaption></figure>

### Interfaces

#### Inputs

| Name        | Data type         | Value range                                                               | Initial value | Function                                                       |
| ----------- | ----------------- | ------------------------------------------------------------------------- | ------------- | -------------------------------------------------------------- |
| *xYOpen*    | BOOL              |                                                                           |               | Control signal - valve opening                                 |
| *xYClose*   | BOOL              |                                                                           |               | Control signal - valve closing                                 |
| *xForce*    | BOOL              |                                                                           | FALSE         | Forced override after manual override                          |
| *xAlarmIn*  | BOOL              |                                                                           | FALSE         | Actuator fault message                                         |
| *eAOOOpen*  | HVACTYPES.eManBin | HVACTYPES.eManBin.Auto, HVACTYPES.eManBin.ManOff, HVACTYPES.eManBin.ManOn |               | Operating mode of manual override - hardware for valve opening |
| *eAOOClose* | HVACTYPES.eManBin | HVACTYPES.eManBin.Auto, HVACTYPES.eManBin.ManOff, HVACTYPES.eManBin.ManOn |               | Operating mode of manual override - hardware for valve closing |

#### Outputs

| Name          | Data type       | Value range | Initial value | Function                                          |
| ------------- | --------------- | ----------- | ------------- | ------------------------------------------------- |
| *xHBOpen*     | BOOL            |             |               | Enable - valve opening after manual override      |
| *xHBClose*    | BOOL            |             |               | Enable - valve closing after manual override      |
| *xABOpen*     | BOOL            |             |               | Enable - valve opening before manual override     |
| *xABClose*    | BOOL            |             |               | Enable - valve closing before manual override     |
| *dtAbsLastOn* | DATE\_AND\_TIME |             |               | Start date/time of the last anti-blocking process |
| *rPos*        | REAL            | 0.0 … 100.0 |               | Calculated current valve position                 |
| *xAuto*       | BOOL            |             |               | Collective automatic mode message                 |

#### Setpoints / parameters

| Name                | Data type | Value range                           | Initial value        | Function                                                           |
| ------------------- | --------- | ------------------------------------- | -------------------- | ------------------------------------------------------------------ |
| **tDuration**       | TIME      |                                       | 120s                 | Running time of the actuator                                       |
| **udiAbsTime**      | UDINT     | 0 to 3600s                            | 200s                 | Duration of the anti-blocking process                              |
| **todAbsStartTime** | TOD       |                                       | TOD#09:00:00 o'clock | Start time of the anti-blocking process                            |
| **eAbsDay**         | eDoW      |                                       | eDow\.Monday         | Weekday of the anti-blocking process                               |
| **xForceOption**    | BOOL      |                                       | TRUE                 | State of the outputs *xHBOpen* or *xHBClose* under forced override |
| **eManModeOpen**    | eMANBIN   | eMANBIN.Auto, eMANBIN.Off, eMANBIN.On | eMANBIN.Auto         | Operating mode of manual override - valve opening                  |
| **eManModeClose**   | eMANBIN   | eMANBIN.Auto, eMANBIN.Off, eMANBIN.On | eMANBIN.Auto         | Operating mode of manual override - valve closing                  |

### Function description

#### General

This function block is used to control the position of a 3-point valve actuator via the outputs Enable - valve opening after manual override *xHBOpen* or *xHBClose*.\
The current valve position is continuously calculated and is available at the output *rPos* available.\
The following function blocks are essentially used:

Abs3P

ManBin

Position3P

#### Anti-blocking process

This process is implemented by monitoring signals 1 and 2 for activity and, if necessary, by triggering the anti-lock protection.\
The inspection period covers 168 hours each time ( = 1 week ).\
Signals 1 and 2 are active if they are continuously active during the minimum operating duration of 30.0s within the inspection period ( Only signal 1 or only signal 2 or both ).\
The anti-lock protection process is thus prevented, the inspection time restarts.\
\
Signal 1: ( *xYOpen* AND *eAOOOpen* = HVACTYPES.eManBin.Auto ) OR ( eAOOOpen = HVACTYPES.eManBin.ManOn )\
\
Signal 2: ( *xYClose* AND *eAOOClose* = HVACTYPES.eManBin.Auto ) OR ( eAOOClose = HVACTYPES.eManBin.ManOn )\
\
If no activity was detected during the inspection period, the anti-lock protection process on the weekday **eAbsDay** at the time **todAbsStartTime** .\
At the same time, the inspection period restarts.\
\
The active anti-blocking process is divided into two consecutive time sections (Section 1 and Section 2)\
In Section 1, during the time duration **udiAbsTime** the combination Enable - Output *xABOpen* = TRUE, Enable - Output *xABClose* = FALSE is output.\
In Section 2, during the time duration **udiAbsTime** the combination Enable - Output *xABOpen* = FALSE, Enable - Output *xABClose* = TRUE is output.\
\
The initial triggering of the anti-blocking process can be delayed depending on the relevant settings (Weekday **eAbsDay** and **todAbsStartTime** ) will be delayed.

> **Example**
>
> Inspection time ended on Tuesday morning, triggering of the anti-lock protection process only on the coming Monday.

At the output *dtAbsLastOn* the start date and start time of the last anti-lock protection process are available.

> **Prerequisite for using the Abs3P function block**
>
> The use of the TimeRead2 function block is required for correct operation.

#### Enable - valve opening before manual override *xABOpen*

The enable - valve opening before manual override *xABOpen* is influenced by the input Request - valve opening *xYOpen* and the anti-lock protection module.

| *xYOpen* | Anti-blocking process | *xABOpen*                        | Notes                                               |
| -------- | --------------------- | -------------------------------- | --------------------------------------------------- |
| FALSE    | FALSE                 | FALSE                            | Request not active, no anti-lock protection process |
| X        | TRUE                  | Section 1: TRUE Section 2: FALSE | Anti-lock protection process active                 |
| TRUE     | FALSE                 | TRUE                             | Request active, no anti-lock protection process     |

Legend: X = don't care

#### Enable - valve closing before manual override *xABClose*

The enable - valve closing before manual override *xABClose* is influenced by the input Request - valve closing *xYClose* and the anti-lock protection module.

| *xYClose* | Anti-blocking process | *xABClose*                       | Notes                                               |
| --------- | --------------------- | -------------------------------- | --------------------------------------------------- |
| FALSE     | FALSE                 | FALSE                            | Request not active, no anti-lock protection process |
| X         | TRUE                  | Section 1: FALSE Section 2: TRUE | Anti-lock protection process active                 |
| TRUE      | FALSE                 | TRUE                             | Request active, no anti-lock protection process     |

Legend: X = don't care

#### Enable - valve opening after manual override *xHBOpen*

The enable - valve opening after manual override *xHBOpen* corresponds to the enable - valve opening before manual override *xABOpen* additionally extended by a manual override module and by a forced override.

| *xABOpen* | **eManModeOpen** | *xForce* | **xForceOption** | *xHBOpen* | Notes                                          |
| --------- | ---------------- | -------- | ---------------- | --------- | ---------------------------------------------- |
| FALSE     | eMANBIN.Auto     | FALSE    | X                | FALSE     | Manual override module in automatic            |
| TRUE      | eMANBIN.Auto     | FALSE    | X                | TRUE      | Manual override module in automatic            |
| X         | eMANBIN.On       | FALSE    | X                | TRUE      | Manual override module in manual operation On  |
| X         | eMANBIN.Off      | FALSE    | X                | FALSE     | Manual override module in manual operation Off |
| X         | X                | TRUE     | FALSE            | FALSE     | Forced override Off                            |
| X         | X                | TRUE     | TRUE             | TRUE      | Forced override On                             |

Legend: X = don't care

#### Enable - valve closing after manual override *xHBClose*

The enable - valve closing after manual override *xHBClose* corresponds to the enable - valve closing before manual override *xABClose* additionally extended by a manual override module and by a forced override.

| *xABClose* | **eManModeOpen** | *xForce* | **xForceOption** | *xHBClose* | Notes                                          |
| ---------- | ---------------- | -------- | ---------------- | ---------- | ---------------------------------------------- |
| FALSE      | eMANBIN.Auto     | FALSE    | X                | FALSE      | Manual override module in automatic            |
| TRUE       | eMANBIN.Auto     | FALSE    | X                | TRUE       | Manual override module in automatic            |
| X          | eMANBIN.On       | FALSE    | X                | TRUE       | Manual override module in manual operation On  |
| X          | eMANBIN.Off      | FALSE    | X                | FALSE      | Manual override module in manual operation Off |
| X          | X                | TRUE     | FALSE            | FALSE      | Forced override Off                            |
| X          | X                | TRUE     | TRUE             | TRUE       | Forced override On                             |

Legend: X = don't care

#### Forced control of the manual overrides of the outputs

If the operating mode of manual override - valve opening **eManModeOpen** is in the state eMANBIN.On ( = manual override open active ), then the operating mode of manual override - valve closing **eManModeClose** is forced into the state eMANBIN.Off ( = manual override close not active ).\
\
If the operating mode of manual override - valve closing **eManModeClose** is in the state eMANBIN.On ( = manual override close active ), then the operating mode of manual override - valve opening **eManModeOpen** is forced into the state eMANBIN.Off ( = manual override open not active ).

#### Current valve position *rPos*

It is used to display the current position of the 3-point actuator in the range 0 - 100% and is calculated from the duration of the signals at the outputs Enable - valve opening after manual override *xHBOpen* and Enable - valve closing after manual override *xHBClose* in combination with the runtime of the actuator **tDuration** calculated.\
\
The position display is independent of signal generation, i.e. if the position display reaches an end position ( 0% or 100% ), signals will still continue to be generated at the outputs *xABOpen* and *xABClose* or *xHBOpen* and *xHBClose* generated.\
The position display does not take into account any position changes caused by the manual override - hardware.

#### Aggregate fault *xAlarm*

The aggregate fault *xAlarm* is activated ( = TRUE ) if the input *xAlarmIn* is active.\
In all other cases the collective fault *xAlarm* is not activated ( = FALSE ).

#### Collective automatic mode message *xAuto*

The collective automatic mode message *xAuto* is set active ( = TRUE ) if the following conditions are met simultaneously:\\

* Input *eAOOUp* = HVACTYPES.eManBin.Auto
* Input *eAOODown* = HVACTYPES.eManBin.Auto
* Setpoint / parameter **eManModeUp** = eMANBIN.Auto
* Setpoint / parameter **eManModeDown** = eMANBIN.Auto

#### Forced override *xForce*

The forced override acts directly on the outputs *xHBOpen* and *xHBClose*. With the parameter **xForceOption** it is defined which state the output *xHB* assumes at TRUE on the input *xForce* takes.\
\
When **xForceOption** = FALSE\
If the input *xForce* is TRUE, then the output *xHBOpen* is set to FALSE and at the same time the output *xHBClose* is set to TRUE.\
\
When **xForceOption** = TRUE\
If the input *xForce* is TRUE, then the output *xHBOpen* is TRUE and at the same time the output *xHBClose* is set to FALSE.

### CODESYS

InOut:

| Scope       | Name            | Type    | Initial      |
| ----------- | --------------- | ------- | ------------ |
| Input       | `xYOpen`        | `BOOL`  |              |
| Input       | `xYClose`       | `BOOL`  |              |
| Input       | `xForce`        | `BOOL`  | FALSE        |
| Input       | `xAlarmIn`      | `BOOL`  | FALSE        |
| Input       | `eAOOOpen`      | eManBin |              |
| Input       | `eAOOClose`     | eManBin |              |
| Output      | `xHBOpen`       | `BOOL`  |              |
| Output      | `xHBClose`      | `BOOL`  |              |
| Output      | `xABOpen`       | `BOOL`  |              |
| Output      | `xABClose`      | `BOOL`  |              |
| Output      | `rPos`          | `REAL`  |              |
| Output      | `xAlarm`        | `BOOL`  |              |
| Output      | `xAuto`         | `BOOL`  |              |
| Input Const | `udiDuration`   | `UDINT` | 120          |
| Input Const | `xForceOption`  | `BOOL`  | FALSE        |
| Input Const | `eManModeOpen`  | eMANBIN | eMANBIN.Auto |
| Input Const | `eManModeClose` | eMANBIN | eMANBIN.Auto |
