# Abs3P

## `Abs3P` (FB)

FUNCTION\_BLOCK Abs3P

### Short description

> Anti-blocking protection for a 3-point actuator

### Representation

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

### Interfaces

#### Inputs

| Name       | Data type | Value range | Initial value | Function               |
| ---------- | --------- | ----------- | ------------- | ---------------------- |
| *xFbOpen*  | BOOL      |             |               | Signal - Input - Plus  |
| *XFbClose* | BOOL      |             |               | Signal - Input - Minus |

#### Outputs

| Name          | Data type       | Value range | Initial value | Function                                          |
| ------------- | --------------- | ----------- | ------------- | ------------------------------------------------- |
| *xOutOpen*    | BOOL            |             |               | Enable - Output - Plus                            |
| *xOutClose*   | BOOL            |             |               | Enable - Output - Minus                           |
| *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                                |
| ---------------- | --------- | ----------- | ------------- | --------------------------------------- |
| **tMinRunTime**  | TIME      |             | 30s           | Minimum runtime                         |
| **tTime**        | TIME      |             | 120s          | 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 |

### Function description

#### General

This function block is used to monitor the signal inputs *xFbOpen* and *XFbClose* for activity. The inspection period covers 168 hours each ( = 1 week ).\
The signal inputs *xFbOpen* and *XFbClose* are active if they are continuously active during the inspection period for the minimum runtime **tMinRunTime** ( Only *xFbOpen* or only *XFbClose* or both ).\
This prevents the anti-blocking process, and the inspection period restarts.\
\
If no activity was recorded during the inspection period, the anti-blocking process is triggered on the weekday **eDay** at the time **todStartTime** .\
At the same time, the inspection period restarts.\
\
The active anti-blocking process is divided into two consecutive time sections (Section 1 and Section 2)\
In Section 1, during the time duration **tTime** the combination Enable - Output *xOutOpen* = TRUE, Enable - Output *xOutClose* = FALSE is output.\
In Section 2, during the time duration **tTime** the combination Enable - Output *xOutOpen* = FALSE, Enable - Output *xOutClose* = TRUE is output.\
\
The initial triggering of the anti-blocking process can be delayed depending on the relevant settings (Weekday **eDay** and **todStartTime** )\\

> **Example**
>
> Inspection period ended Tuesday morning, triggering of the anti-blocking process only next Monday.\\
>
> \\

At the output *dtAbsLastOn* the start date and start time of the last anti-blocking process are available.\
\\

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

#### Enable - Output *xOutOpen*

| *xFbOpen* | Anti-blocking process | *xOutOpen* | Notes                                    |
| --------- | --------------------- | ---------- | ---------------------------------------- |
| X         | FALSE                 | FALSE      | Anti-blocking process not active         |
| X         | TRUE                  | TRUE       | Anti-blocking process active - Section 1 |
| X         | TRUE                  | FALSE      | Anti-blocking process active - Section 2 |

Legend: X = any\\

#### Enable - Output *xOutClose*

| *xFbClose* | Anti-blocking process | *xOutClose* | Notes                                    |
| ---------- | --------------------- | ----------- | ---------------------------------------- |
| X          | FALSE                 | FALSE       | Anti-blocking process not active         |
| X          | TRUE                  | FALSE       | Anti-blocking process active - Section 1 |
| X          | TRUE                  | TRUE        | Anti-blocking process active - Section 2 |

Legend: X = any\\

#### 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 generally locked.\\

### CODESYS

InOut:

| Scope       | Name           | Type   | Initial           |
| ----------- | -------------- | ------ | ----------------- |
| Input       | `xFbOpen`      | `BOOL` |                   |
| Input       | `xFbClose`     | `BOOL` |                   |
| Input Const | `tMinRunTime`  | `TIME` | TIME#30s0ms       |
| Input Const | `tTime`        | `TIME` | TIME#2m0s0ms      |
| Input Const | `eDay`         | eDoW   | eDow\.Monday      |
| Input Const | `todStartTime` | `TOD`  | TIME\_OF\_DAY#8:0 |
| Output      | `xOutOpen`     | `BOOL` |                   |
| Output      | `xOutClose`    | `BOOL` |                   |
| Output      | `xAbsOn`       | `BOOL` |                   |
| Output      | `dtAbsLastOn`  | `DT`   |                   |
