# 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 flap system of a ventilation unit

### Representation

<figure><img src="/files/57e378da9d85eaa0f3eba9a921f078b08c247741" 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          | Runtime of the actuator                                             |
| **udiAbsTime**      | UDINT     | 0 to 3600s                            | 200s          | Duration of the anti-blocking process                               |
| **todAbsStartTime** | TOD       |                                       | TOD#09:00:00  | 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* during 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 by 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-blocking protection.\
The test period in each case covers 168 hours (= 1 week).\
Signals 1 and 2 are active if they are continuously active during the minimum operating duration of 30.0s within the test period (Only signal 1 or only signal 2 or both).\
The anti-blocking process is thus prevented, the test period starts again.\
\
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 is detected during the test period, the anti-blocking process will be on the weekday **eAbsDay** at the time **todAbsStartTime** .\
At the same time the inspection period starts again.\
\
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**).

> **Example**
>
> Inspection period ended on Tuesday morning, triggering of the anti-blocking process only on the following Monday.

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

> **Prerequisite for using the function block Abs3P**
>
> 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-blocking module.

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

Legend: X = any

#### 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-blocking module.

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

Legend: X = any

#### 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 = any

#### 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 = any

#### 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 the signal generation, i.e. even 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* produced.\
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 is *xAlarm* is not activated (= FALSE).

#### Collective automatic-mode message *xAuto*

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

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

#### Forced override *xForce*

The forced override acts directly on the outputs *xHBOpen* and *xHBClose*. The parameter **xForceOption** determines which state the output *xHB* assumes when TRUE at the input *xForce* takes.\
\
At **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.\
\
At **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 |


---

# Agent Instructions: Querying This Documentation

If you need additional information that is not directly available in this page, you can query the documentation dynamically by asking a question.

Perform an HTTP GET request on the current page URL with the `ask` query parameter:

```
GET https://support.powerio.com/hub/codesys-hvac/en/hvac-library/functionblocks/components/damper3p.md?ask=<question>
```

The question should be specific, self-contained, and written in natural language.
The response will contain a direct answer to the question and relevant excerpts and sources from the documentation.

Use this mechanism when the answer is not explicitly present in the current page, you need clarification or additional context, or you want to retrieve related documentation sections.
