# FilterMonitoringA

## `FilterMonitoringA` (FB)

FUNCTION\_BLOCK FilterMonitoringA

### Short description

> Detection of filter contamination and generation of an alarm 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 alarm delay **udiControlTime** permanently the threshold value **rControlPressure**, ( prerequisite: release of the monitoring **xControl** is active ( = TRUE )) then the alarm output *xAlarm* becomes active ( = TRUE ).

#### Enable monitoring **xControl**

Monitoring can generally be enabled ( = TRUE ) or disabled ( = FALSE ).\
If monitoring is not enabled, the output - alarm message *xAlarm* is deactivated ( = FALSE ) and the time duration until the triggering of the alarm 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 permissible 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 alarm delay **udiControlTime** permanently greater than the maximum permissible differential pressure **rControlPressure** ( = filter contamination ).\
At the same time, monitoring is generally enabled ( **xControl** = TRUE ).\
\
The output - alarm message *xAlarm* is deactivated in the following cases ( *xAlarm* = FALSE ):\
\
Case 1: Condition 1 is not met and the reset of the alarm message *xQuit* is active ( = TRUE ).\
\
Case 2: Condition 1 is not met and the enabling of the monitoring **xControl** is not active ( = FALSE ).

#### Time duration until triggering of the fault message *tTimeToAlarm*

At the output *tTimeToAlarm* different values are displayed depending on the operating situation:\
\
Situation 1: Output of the remaining time until the triggering of the alarm message ( conditions: *rPressure* > **rControlPressure**, **xControl** = TRUE )\
\
Situation 2: If Situation 1 does not apply, then the value 0.0 is output permanently.

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