# ValveTherm

## `ValveTherm` (FB)

FUNCTION\_BLOCK ValveTherm

### Short description

> Control of a thermal actuator with anti-blocking function\
> \
> Typical application: valve actuator on the radiator

### Representation

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

### Interfaces

#### Inputs

| Name       | Data type         | Value range                                                               | Initial value          | Function                                     |
| ---------- | ----------------- | ------------------------------------------------------------------------- | ---------------------- | -------------------------------------------- |
| *xY*       | BOOL              |                                                                           |                        | Request                                      |
| *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 |

#### Outputs

| Name             | Data type       | Value range | Initial value | Function                                        |
| ---------------- | --------------- | ----------- | ------------- | ----------------------------------------------- |
| *xHB*            | BOOL            |             |               | Release after manual override                   |
| *xAB*            | BOOL            |             |               | Release before manual override                  |
| *xEnergyRequest* | BOOL            |             |               | Request - energy generation                     |
| *dtAbsLastOn*    | DATE\_AND\_TIME |             |               | Date / time of the last anti-blocking operation |
| *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 in seconds |
| **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             |
| **xForceOption**    | BOOL      |                                             | TRUE             | State of the output *xHB* during forced override   |
| **eManModeB**       | eMANBIN   | eMANBIN.Auto, eMANBIN.Off, eMANBIN.On       | eMANBIN.Auto     | Operating mode of the manual override              |

### Function description

#### Release before manual override *xAB*

The output Release before manual override *xAB* is influenced by the input *xY* and the anti-blocking module.

| *xY*  | Anti-blocking module | *xAB* | Notes                                                   |
| ----- | -------------------- | ----- | ------------------------------------------------------- |
| TRUE  | X                    | TRUE  | Release before manual override via request              |
| X     | TRUE                 | TRUE  | Release before manual override via anti-blocking module |
| FALSE | FALSE                | FALSE | Lock release before manual override via the requests    |

Legend: X = any

#### Release after manual override *xHB*

The output Release after manual override *xHB* corresponds to the release before manual override *xAB*, additionally extended by a manual override module and by 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.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

#### Request - energy generation *xEnergyRequest*

The request - energy generation *xEnergyRequest* is influenced by the anti-blocking process, the release after manual override *xHB* and the operating mode of the manual override - hardware *eAOO* is affected.

| Anti-blocking process | *xHB* | *eAOO*                  | *xEnergyRequest* | Notes                                                       |
| --------------------- | ----- | ----------------------- | ---------------- | ----------------------------------------------------------- |
| FALSE                 | TRUE  | HVACTYPES.eManBin.Auto  | TRUE             | Request in automatic mode of the manual override - hardware |
| X                     | X     | HVACTYPES.eManBin.ManOn | TRUE             | Request in manual mode of the manual override - hardware    |

In all other situations the request - energy generation *xEnergyRequest* is not active (= FALSE).\
\
Legend: X = arbitrary

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

#### 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 input *eAOO* has the value HVACTYPES.eManBin.Auto and the setpoint / parameter **eManModeB** contains the value eMANBIN.Auto. In all other cases the collective message Automatic mode is *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      |
| Output      | `xHB`             | `BOOL`  |                   |
| Output      | `xAB`             | `BOOL`  |                   |
| Output      | `xEnergyRequest`  | `BOOL`  |                   |
| Output      | `dtAbsLastOn`     | `DT`    |                   |
| Output      | `xAlarm`          | `BOOL`  |                   |
| Output      | `xAuto`           | `BOOL`  |                   |
| Input Const | `udiAbsTime`      | `UDINT` | 200               |
| Input Const | `todAbsStartTime` | `TOD`   | TIME\_OF\_DAY#9:0 |
| Input Const | `eAbsDay`         | eDoW    | eDow\.Monday      |
| Input Const | `xForceOption`    | `BOOL`  | TRUE              |
| 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/valvetherm.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.
