# FilterMonitoringB

## `FilterMonitoringB` (FB)

FUNCTION\_BLOCK FilterMonitoringB

### Short description

> Detection of filter contamination and generation of a fault message\
> \
> Typical application: Monitoring the contamination of an air filter with a differential pressure switch

### Representation

<figure><img src="/files/8d8f9f3714658ce5e6c0e28acc51c8d3fbe57340" alt=""><figcaption></figcaption></figure>

### Interfaces

#### Inputs

| Name    | Data type | Value range | Initial value | Function                             |
| ------- | --------- | ----------- | ------------- | ------------------------------------ |
| *xIn*   | BOOL      |             |               | Input - Differential pressure switch |
| *xQuit* | BOOL      |             | FALSE         | Reset - Fault message                |

#### Outputs

| Name           | Data type | Value range | Initial value | Function                                           |
| -------------- | --------- | ----------- | ------------- | -------------------------------------------------- |
| *xAlarm*       | BOOL      |             |               | Output - fault message                             |
| *xPreAlarm*    | BOOL      |             |               | Output - pre-alarm                                 |
| *tTimeToAlarm* | TIME      |             |               | Time duration until the fault message is triggered |

#### Setpoints / parameters

| Name             | Data type | Value range | Initial value | Function          |
| ---------------- | --------- | ----------- | ------------- | ----------------- |
| *udiControlTime* | UDINT     | 1s … 3600s  | 300s          | Waiting time      |
| **xControl**     | BOOL      |             | TRUE          | Enable monitoring |

### Function description

#### General

This function block is used to detect filter contamination by evaluating the input for the differential pressure switch *xIn*.

#### Enable monitoring **xControl**

The monitoring can generally be enabled (= TRUE) or disabled (= FALSE).\
If monitoring is not enabled the output - fault message *xAlarm* is deactivated (= FALSE) and the time duration until the triggering of the fault message *tTimeToAlarm* takes the value 0s.

#### Output - pre-alarm *xPreAlarm*

The output - fault message *xPreAlarm* is activated (*xPreAlarm* = TRUE), if the condition 1 below is met.\
\
Condition 1:\
\
The input for the differential pressure switch *xIn* is in the TRUE state (= filter contamination).

#### Output - fault message *xAlarm*

The output - fault message *xAlarm* is activated (*xAlarm* = TRUE), if the condition 1 below is met.\
\
Condition 1: The input for the differential pressure switch *xIn* is in the state FALSE for at least the waiting time *udiControlTime* permanently in the TRUE state (= filter contamination).\
At the same time, monitoring is generally enabled (**xControl** = TRUE).\
\
The output - fault message *xAlarm* is deactivated in the following cases (*xAlarm* = FALSE):\
\
Case 1: Condition 1 is not met and the reset of the fault message *xQuit* is active (= TRUE).\
\
Case 2: Condition 1 is not fulfilled and the enabling of the monitoring **xControl** is not active (= FALSE).

#### Time duration until the fault message is triggered *tTimeToAlarm*

At the output time duration until the fault message is triggered *tTimeToAlarm* different values are displayed depending on the operating situation.\
\
Situation 1: Output of the remaining time until the fault message is triggered (conditions: *xIn* = TRUE, **xControl** = TRUE)\
\
Situation 2: If situation 1 does not apply, the value 0.0 is output continuously.

### CODESYS

InOut:

| Scope       | Name             | Type    | Initial |
| ----------- | ---------------- | ------- | ------- |
| Input       | `xIn`            | `BOOL`  |         |
| Input       | `xQuit`          | `BOOL`  | FALSE   |
| Input Const | `udiControlTime` | `UDINT` | 300     |
| Input Const | `xControl`       | `BOOL`  | TRUE    |
| Output      | `xAlarm`         | `BOOL`  |         |
| Output      | `xPreAlarm`      | `BOOL`  |         |
| Output      | `tTimeToAlarm`   | `TIME`  |         |


---

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