# FilterMonitoringA

## `FilterMonitoringA` (FB)

FUNCTION\_BLOCK FilterMonitoringA

### Short description

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

### Representation

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

### Function description

#### General

This function block is used to detect filter contamination by evaluating the input from the differential pressure sensor *rPressure*.\
If the differential pressure exceeds *rPressure* during the reporting delay **udiControlTime** continuously the threshold value **rControlPressure**, (precondition: enabling of the monitoring **xControl** is active (= TRUE)) then the alarm output *xAlarm* becomes active (= TRUE).

#### 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 fulfilled.\
\
Condition 1:\
\
The input from the differential pressure sensor *rPressure* is greater than the maximum allowable differential pressure **rControlPressure** (= filter contamination).

#### Output - fault message *xAlarm*

The output - fault message *xAlarm* is activated (*xAlarm* = TRUE), if the condition 1 below is fulfilled.\
\
Condition 1:\
\
The input from the differential pressure sensor *rPressure* is at least during the reporting delay **udiControlTime** continuously greater than the maximum allowable differential pressure **rControlPressure** (= filter contamination).\
At the same time the 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 fulfilled 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 *tTimeToAlarm* show different values depending on the operating situation:\
\
Situation 1: Display of the remaining time duration until the triggering of the fault message (conditions: *rPressure* > **rControlPressure**, **xControl** = TRUE)\
\
Situation 2: If situation 1 does not apply, the value 0.0 is output continuously.

### CODESYS

InOut:

| Scope       | Name                      | Type    | Initial |
| ----------- | ------------------------- | ------- | ------- |
| Input       | `rPressure`               | `REAL`  |         |
| Input       | `xAlarmSensor`            | `BOOL`  |         |
| Input       | `xQuit`                   | `BOOL`  | FALSE   |
| Input Const | `rMaxControlPressureVisu` | `REAL`  | 500     |
| Input Const | `rMinControlPressureVisu` | `REAL`  | 10      |
| Input Const | `udiControlTime`          | `UDINT` | 300     |
| Input Const | `rControlPressure`        | `REAL`  | 200     |
| Input Const | `xControl`                | `BOOL`  | TRUE    |
| Output      | `xAlarm`                  | `BOOL`  |         |
| Output      | `xPreAlarm`               | `BOOL`  |         |
| Output      | `tTimeToAlarm`            | `TIME`  |         |
