> For the complete documentation index, see [llms.txt](https://support.powerio.com/hub/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://support.powerio.com/hub/codesys-hvac/en/hvac-knx-library/funktionen/twopointfun.md).

# TwoPointFun

## `TwoPointFun` (FUN)

FUNCTION TwoPointFun : INT

### Short description

> Linear conversion of a numerical input value by means of a characteristic curve defined by two points.\
> \
> Typical application: Scaling of process raw values\\

### Interfaces

#### Inputs

| Name            | Data type | Value range | Initial value | Function                                              |
| --------------- | --------- | ----------- | ------------- | ----------------------------------------------------- |
| *rIn\_X*        | REAL      |             |               | Analog input                                          |
| *rX1*           | REAL      |             | 0             | Point 1 of the input range                            |
| *rY1*           | REAL      |             | 0             | Point 1 of the output characteristic curve            |
| *rX2*           | REAL      |             | 100           | Point 2 of the input range                            |
| *rY2*           | REAL      |             | 100           | Point 2 of the output characteristic curve            |
| *xMinMaxLimit*  | BOOL      |             |               | Enable / disable the limit at the analog value output |
| *iMinMaxOffset* | INTEGER   |             |               | Values of the limits at the analog value output       |

#### Outputs

| Name          | Data type | Value range | Initial value | Function                                                                                                                       |
| ------------- | --------- | ----------- | ------------- | ------------------------------------------------------------------------------------------------------------------------------ |
| *TwoPointFun* | REAL      |             |               | Linear conversion of a numerical input value                                                                                   |
| *xErr*        | BOOL      |             |               | <p>\* <strong>FALSE:</strong><br>Conversion error-free<br>\* <strong>TRUE:</strong><br>Error during the conversion process</p> |

### Functional description

#### Analog value output

The analog value output is calculated from the analog value input *rIn\_X* depending on the linear characteristic defined by the two points P1(*rX1*/*rY1*) and P2(*rX2*/*rY2*) calculated according to the defined linear characteristic curve.\
In the event of a conversion error ( *xErr* = TRUE ) the analog value output remains unchanged.\\

> **Formula**
>
> rOut\_Y = (((rX1-rIn\_X)\*(rY2-rY1))/(rX1-rX2))+rY1\\
>
> **Restrictions**
>
> The analog value output is of data type REAL. Due to an unsuitable selection of the parameters *rX1*, *rX2*, *rY1* and *rY2* as well as the value of the analog value input *rIn\_X* it can lead to an overflow of the data type limits.\\

#### Enable / disable the limits *xMinMaxLimit*

The limits of the analog value output can generally be enabled and disabled with this input.\\

| *xMinMaxLimit* | Limits            | Notes                                        |
| -------------- | ----------------- | -------------------------------------------- |
| FALSE          | none              | Analog value output without absolute limits  |
| TRUE           | Y\_min and Y\_max | Limitation of the analog value output active |

#### Values of the limits *iMinMaxOffset*

The limits of the analog value output are only active if the input *xMinMaxLimit* is active ( = TRUE ).\
The limit values Y\_min and Y\_max are then calculated as follows:\\

> **Formulas**
>
> > Y\_min = rY1 - ((ABS(rY2-rY1))\*iMinMaxOffset)/100\
> > Y\_max = rY2 + ((ABS(rY2-rY1))\*iMinMaxOffset)/100\\

| *rY1* | *rY2* | *rY2* - *rY1* | *iMinMaxOffset* | *Y\_min* | *Y\_max* | Notes           |
| ----- | ----- | ------------- | --------------- | -------- | -------- | --------------- |
| 0     | 100   | 100           | 0               | 0        | 100      | Standard limits |
| 0     | 100   | 100           | 10              | -10      | 110      | Positive offset |
| 0     | 100   | 100           | -10             | 10       | 90       | Negative offset |

#### Digital output *xErr*

The digital output *xErr* signals an error in the conversion process. The following errors are considered:\
\\

* *rX1* AND *rX2* = 0
* *rX1* = *rX2*
* *rY1* AND *rY2* = 0
* *rY1* = *rY2*

| Error during the conversion process | *xErr* | Notes                               |
| ----------------------------------- | ------ | ----------------------------------- |
| FALSE                               | FALSE  | Conversion error-free               |
| TRUE                                | TRUE   | Error during the conversion process |

Legend: X = any\\

### Codesys

InOut:

| Scope  | Name            | Type   | Initial | Comment                                                                                          |
| ------ | --------------- | ------ | ------- | ------------------------------------------------------------------------------------------------ |
| Return | `TwoPointFun`   | `INT`  |         |                                                                                                  |
| Input  | `iIn_X`         | `INT`  |         | Analog input                                                                                     |
| Input  | `iX1`           | `INT`  | 0       | Point 1 of the input range                                                                       |
| Input  | `iX2`           | `INT`  | 100     | Point 2 of the input range                                                                       |
| Input  | `iY1`           | `INT`  | 0       | Point 1 of the output characteristic curve                                                       |
| Input  | `iY2`           | `INT`  | 100     | Point 2 of the output characteristic curve                                                       |
| Input  | `xMinMaxLimit`  | `BOOL` |         | Enable / disable the limit at the analog value output                                            |
| Input  | `iMinMaxOffset` | `INT`  |         | Values of the limits at the analog value output                                                  |
| Output | `xErr`          | `BOOL` |         | <p>FALSE: conversion error-free<br><br><br>TRUE: error during the conversion process<br><br></p> |


---

# Agent Instructions
This documentation is published with GitBook. GitBook is the documentation platform designed so that both humans and AI agents can read, navigate, and reason over technical content effectively. Learn more at gitbook.com.

## Querying This Documentation
If you need additional information that is not directly available in this page, you can query the documentation by asking a question.

Perform an HTTP GET request on the following URL with the `ask` and `goal` query parameters:

```
GET https://support.powerio.com/hub/codesys-hvac/en/hvac-knx-library/funktionen/twopointfun.md?ask=<question>&goal=<user_goal>
```

`ask` is the immediate question: it should be specific, self-contained, and written in natural language.
`goal` is what the user is ultimately trying to achieve, the reason they need the answer. Sharing it helps GitBook give you a better, more relevant answer. A goal is most helpful when it describes the outcome the user wants rather than restating the question. For example, with `ask=how do I create an API token`, a goal like `automate deployments from our CI pipeline` lets GitBook tailor the answer to that use case.

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.
