# Valve2P

## `Valve2P` (FB)

FUNCTION\_BLOCK Valve2P

### Short description

> Control of a binary valve actuator with two position feedbacks\
> \
> Typical application: actuator of a boiler system with shut-off dampers

### Representation

<figure><img src="/files/a868f87d37b129c4cf779ad08d73352b49f568ea" alt=""><figcaption></figcaption></figure>

### Interfaces

#### Inputs

| Name       | Data type         | Value range                                                               | Initial value          | Function                                     |
| ---------- | ----------------- | ------------------------------------------------------------------------- | ---------------------- | -------------------------------------------- |
| *xY*       | BOOL              |                                                                           |                        | Control signal                               |
| *xForce*   | BOOL              |                                                                           | FALSE                  | Forced override after manual override        |
| *xAlarmIn* | BOOL              |                                                                           | FALSE                  | Actuator fault message                       |
| *eAOO*     | HVACTYPES.eManBin | HVACTYPES.eManBin.Auto, HVACTYPES.eManBin.ManOff, HVACTYPES.eManBin.ManOn | HVACTYPES.eManBin.Auto | Operating mode of manual override - hardware |
| *xOpen*    | BOOL              |                                                                           |                        | Feedback valve open                          |
| *xClosed*  | BOOL              |                                                                           |                        | Feedback valve closed                        |

#### Outputs

| Name           | Data type       | Value range | Initial value | Function                                        |
| -------------- | --------------- | ----------- | ------------- | ----------------------------------------------- |
| *xHB*          | BOOL            |             |               | Actuator enable after manual override           |
| *xAB*          | BOOL            |             |               | Actuator enable before manual override          |
| *xAlarmOpen*   | BOOL            |             |               | Fault position valve open                       |
| *xAlarmClosed* | BOOL            |             |               | Fault position valve closed                     |
| *dtAbsLastOn*  | DATE\_AND\_TIME |             |               | Date / time of the last anti-blocking operation |
| *xAlarm*       | BOOL            |             |               | Aggregate fault                                 |
| *xAuto*        | BOOL            |             |               | Collective automatic-mode message               |

#### Setpoints / parameters

| Name                | Data type | Value range                                 | Initial value    | Function                                                           |
| ------------------- | --------- | ------------------------------------------- | ---------------- | ------------------------------------------------------------------ |
| **udiAbsTime**      | UDINT     | 0 … 600s                                    | 200s             | Duration of the anti-blocking operation                            |
| **todAbsStartTime** | TOD       | 00:00:00 - 23:59:59                         | 09:00:00 o'clock | Time of the anti-blocking operation                                |
| **eAbsDay**         | eDoW      | eDow\.Inactive, eDoW\.Monday … eDoW\.Sunday | eDoW\.Monday     | Weekday of the anti-blocking operation                             |
| **udiControlTime**  | UDINT     | 10s … 600s                                  | 150s             | Reporting delay of position monitoring                             |
| **xControl**        | BOOL      |                                             | TRUE             | Enablement of the position monitoring                              |
| **xForceOption**    | BOOL      |                                             | FALSE            | State of the output *xHB* during forced override                   |
| **eManModeB**       | eMANBIN   | eMANBIN.Auto, eMANBIN.ManOff, eMANBIN.ManOn | eMANBIN.Auto     | Operating mode of the manual override for the digital output *xHB* |

### Function description

#### Automatic output *xAB*

The actuator enable before manual override *xAB* is passed unchanged from the enable input *xY* adopted.

#### Manual output *xHB*

The actuator enable after manual override *xHB* corresponds to the actuator enable before manual override *xAB* additionally extended by a manual override module and a forced override.

| *xAB* | **eManModeB**  | *xForce* | **xForceOption** | *xHB* | 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.ManOff | FALSE    | X                | FALSE | Manual override module in manual operation Off |
| X     | eMANBIN.ManOn  | FALSE    | X                | TRUE  | Manual override module in manual operation On  |
| X     | X              | TRUE     | FALSE            | FALSE | Forced override Off                            |
| X     | X              | TRUE     | TRUE             | TRUE  | Forced override On                             |

Legend: X = any

#### Fault position valve open *xAlarmOpen*

The fault message for the position at valve opening *xAlarmOpen* is activated\
(*xAlarmOpen* = TRUE), if the following conditions are met simultaneously:

1\) The enable of position monitoring *xControl* is enabled (= TRUE)\
\
2\) As operating mode of the manual override - hardware \*eAOO\* automatic operation is selected (eAOO = HVACTYPES.eManBin.Auto)\
\
3\) The states of the actuator enable after manual override xHB and the feedback for valve opening xOpen are continuously different for at least the reporting delay of the position monitoring udiControlTime ((xHB = FALSE and xOpen = TRUE) OR (xHB = TRUE and xOpen = FALSE)).\
\
The fault message for the position at valve opening xAlarmOpen is deactivated if at least one of the above conditions is no longer met.

#### Fault position valve open *xAlarmClosed*

The fault message for the position at valve opening *xAlarmClosed* is activated (*xAlarmClosed* = TRUE), if the following conditions are met simultaneously:

1\) The enable of position monitoring *xControl* is enabled (= TRUE)\
\
2\) As operating mode of the manual override - hardware eAOO automatic operation is selected (eAOO = HVACTYPES.eManBin.Auto)\
\
3\) The states of the actuator enable after manual override xHB and the feedback for valve closing xClosed are continuously equal for at least the reporting delay of the position monitoring udiControlTime ((xHB = TRUE and xOpen = TRUE) OR (xHB = FALSE and xOpen = FALSE)).\
\
The fault message for the position at valve opening xAlarmClosed is deactivated if at least one of the above conditions is no longer met.

#### Aggregate fault *xAlarm*

The aggregate fault *xAlarm* is activated (= TRUE), if at least one of the two faults for the flap positions (*xAlarmOpen* and *xAlarmClosed*) or the input *xAlarmIn* is active.\
In all other cases the collective fault is *xAlarm* is not activated (= FALSE).

#### Anti-blocking module

The anti-blocking module is implemented by the binary anti-blocking module with adjustable duration (FB: AbsB).\
The duration *udiAbsTime*, the time **todAbsStartTime** and the weekday **eAbsDay** are adjustable.\
The minimum runtime to lock the anti-blocking operation is 30s.\
The timestamp (date / time) of the last anti-blocking operation *dtAbsLastOn* is available.

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

The collective automatic-mode message *xAuto* is activated (= TRUE) if the input *eAOO* has the value HVACTYPES.eManBin.Auto and the setpoint / parameter **eManModeB** has the value eMANBIN.Auto.\
In all other cases the collective automatic-mode message *xAuto* is not activated (= FALSE).

#### Forced override *xForce*

The forced override acts directly on the output *xHB*. The parameter **xForceOption** determines which state the output *xHB* assumes when TRUE at the input *xForce* .

### CODESYS

InOut:

| Scope       | Name              | Type    | Initial           |
| ----------- | ----------------- | ------- | ----------------- |
| Input       | `xY`              | `BOOL`  |                   |
| Input       | `xForce`          | `BOOL`  | FALSE             |
| Input       | `xAlarmIn`        | `BOOL`  | FALSE             |
| Input       | `eAOO`            | eManBin | eManBin.Auto      |
| Input       | `xOpen`           | `BOOL`  |                   |
| Input       | `xClosed`         | `BOOL`  |                   |
| Output      | `xHB`             | `BOOL`  |                   |
| Output      | `xAB`             | `BOOL`  |                   |
| Output      | `xAlarmOpen`      | `BOOL`  |                   |
| Output      | `xAlarmClosed`    | `BOOL`  |                   |
| Output      | `dtAbsLastOn`     | `DT`    |                   |
| Output      | `xAlarm`          | `BOOL`  |                   |
| Output      | `xAuto`           | `BOOL`  |                   |
| Input Const | `udiAbsTime`      | `UDINT` | 120               |
| Input Const | `todAbsStartTime` | `TOD`   | TIME\_OF\_DAY#8:0 |
| Input Const | `eAbsDay`         | eDoW    | eDow\.Monday      |
| Input Const | `udiControlTime`  | `UDINT` | 200               |
| Input Const | `xControl`        | `BOOL`  | TRUE              |
| Input Const | `xForceOption`    | `BOOL`  | FALSE             |
| Input Const | `eManModeB`       | 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/valve2p.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.
