# AbsA

## `AbsA` (FB)

FUNCTION\_BLOCK AbsA

### Short description

> Anti-blocking protection for an analog signal

### Representation

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

### Interfaces

#### Inputs

| Name     | Data type | Value range | Initial value | Function          |
| -------- | --------- | ----------- | ------------- | ----------------- |
| *rPosFb* | REAL      |             |               | Position feedback |

#### Outputs

| Name          | Data type       | Value range | Initial value | Function                                          |
| ------------- | --------------- | ----------- | ------------- | ------------------------------------------------- |
| *rOut*        | REAL            |             |               | Analog - output                                   |
| *xAbsOn*      | BOOL            |             |               | Indicator - anti-blocking process                 |
| *dtAbsLastOn* | DATE\_AND\_TIME |             |               | Start date/time of the last anti-blocking process |

#### Setpoints / parameters

| Name             | Data type | Value range | Initial value | Function                                 |
| ---------------- | --------- | ----------- | ------------- | ---------------------------------------- |
| **rMinChange**   | REAL      |             | 10.0          | Minimum position change                  |
| **tTime**        | TIME      |             | 180s          | Duration of the anti-blocking process    |
| **eDay**         | eDoW      |             | eDow\.Monday  | Weekday of the anti-blocking process     |
| **todStartTime** | TOD       |             | 08:00:00 hrs  | Start time of the anti-blocking process  |
| **rMinLimit**    | REAL      |             | 0             | Lower limit for the analog output *rOut* |
| **rMaxLimit**    | REAL      |             | 100           | Upper limit for the analog output *rOut* |

### Function description

#### General

This function block is used to monitor the position feedback *rPosFb* for activity. The inspection period covers 168 hours each time ( = 1 week ).\
The position feedback *rPosFb* is considered active if its value has changed during the inspection period by an amount greater than the minimum position change **rMinChange** The anti-blocking process is thereby prevented ( = anti-blocking process not active ), and the inspection period starts again.\
\
If no activity is detected during the inspection period, the anti-blocking process is triggered with the duration **tTime** on the weekday **eDay** at the time **todStartTime** Triggered. ( = anti-blocking process active ).\
At the same time the inspection period restarts.\
\
During the anti-blocking process, different signals are output on the analog output *rOut* depending on the current value of the position feedback *rPosFb* at the start of the anti-blocking process.\
\
Condition 1: *rPosFb* > 51% of the upper limit for the analog output *rOut*:\
\
\&#xNAN;*rOut* = **rMinLimit**\
\
Condition 2: *rPosFb* <= 51% of the upper limit for the analog output *rOut*:\
\
\&#xNAN;*rOut* = **rMaxLimit**\
\
When the anti-blocking process is not active, the analog output *rOut* outputs the value 0.0.\
\
The initial triggering of the anti-blocking process may be delayed depending on the relevant settings ( weekday **eDay** and **todStartTime** ). For example: inspection period ends on Tuesday morning, triggering of the anti-blocking process only the following Monday).\
\
At the output *dtAbsLastOn* the start date and start time of the last anti-blocking process are available.\
\\

> **Prerequisite for using the AbsA function block**
>
> For correct operation, the use of the TimeRead2 function block is required.\\

#### Indicator - anti-blocking process *xAbsOn*

This output is used to indicate an active anti-blocking process ( *xAbsOn* = TRUE ).\\

#### Setpoint / parameter **eDay**

The anti-blocking function can be generally disabled by setting **eDay** = eDow\.Inactive.\\

#### Setpoint / parameter **tTime**

The anti-blocking function can be generally disabled by setting **tTime** = 0s can be generally disabled.

### CODESYS

InOut:

| Scope       | Name           | Type   | Initial           |
| ----------- | -------------- | ------ | ----------------- |
| Input       | `rPosFb`       | `REAL` |                   |
| Input Const | `rMinChange`   | `REAL` | 10                |
| Input Const | `tTime`        | `TIME` | TIME#3m0s0ms      |
| Input Const | `eDay`         | eDoW   | eDow\.Monday      |
| Input Const | `todStartTime` | `TOD`  | TIME\_OF\_DAY#8:0 |
| Input Const | `rMinLimit`    | `REAL` | 0                 |
| Input Const | `rMaxLimit`    | `REAL` | 100               |
| Output      | `rOut`         | `REAL` |                   |
| Output      | `xAbsOn`       | `BOOL` |                   |
| Output      | `dtAbsLastOn`  | `DT`   |                   |
