# Binary limiter
Binary limiter
I
V
O
L
# Eingänge
| ID | Kürzel | Name | Typ | Standard | Beschreibung |
|---|---|---|---|---|---|
input | I | input | BOOLEAN | false | |
value | V | value | NUMBER | 0 |
# Ausgänge
| ID | Kürzel | Name | Typ | Standard | Beschreibung |
|---|---|---|---|---|---|
output | O | output | BOOLEAN | false | |
limit_exceeded | L | limit_exceeded | BOOLEAN | false |
# Konfiguration
| ID | Name | Typ | Standard | Einheit | Beschreibung |
|---|---|---|---|---|---|
limit | limit | NUMBER | 0.0 | ||
hysteresis | hysteresis | NUMBER | 0.5 |
# Quellcode
Volang-Quellcode anzeigen
in = input::get("input")
value = input::get("value")
limit_exceeded = output::get("limit_exceeded")
limit = config::get("limit")
hysteresis = config::get("hysteresis")
new_limit_exceeded = false
if (limit >= 0) {
// Positive limit: exceeded when value is too high
if (value <= (limit - hysteresis)) {
new_limit_exceeded = false
} else if ((value > (limit - hysteresis)) and (value < (limit + hysteresis))) {
new_limit_exceeded = limit_exceeded
} else if (value >= (limit + hysteresis)) {
new_limit_exceeded = true
}
} else {
// Negative limit: exceeded when value is too low (more negative)
if (value >= (limit + hysteresis)) {
new_limit_exceeded = false
} else if ((value > (limit - hysteresis)) and (value < (limit + hysteresis))) {
new_limit_exceeded = limit_exceeded
} else if (value <= (limit - hysteresis)) {
new_limit_exceeded = true
}
}
output::set("limit_exceeded", new_limit_exceeded)
output::set("output", in and !new_limit_exceeded)
