# Numeric latch
Numeric latch
V
C
T
R
V
# Eingänge
| ID | Kürzel | Name | Typ | Standard | Beschreibung |
|---|---|---|---|---|---|
value | V | value | NUMBER | 0 | |
capture | C | capture | BOOLEAN | false | |
trigger | T | trigger | BOOLEAN | false | |
reset | R | reset | BOOLEAN | false |
# Ausgänge
| ID | Kürzel | Name | Typ | Standard | Beschreibung |
|---|---|---|---|---|---|
value | V | value | NUMBER | 0 |
# Konfiguration
| ID | Name | Typ | Standard | Einheit | Beschreibung |
|---|---|---|---|---|---|
default_value | default_value | NUMBER | 0 | ||
trigger_on_capture | trigger_on_capture | BOOLEAN | true |
# Zustand
| ID | Name | Typ | Standard | Einheit | Beschreibung |
|---|---|---|---|---|---|
captured_value | captured_value | NUMBER | 0 | ||
prev_capture | prev_capture | BOOLEAN | false | ||
prev_trigger | prev_trigger | BOOLEAN | false | ||
prev_reset | prev_reset | BOOLEAN | false |
# Quellcode
Volang-Quellcode anzeigen
channel = input::channel()
value = input::value()
// Handle "reset" input first (dominant input)
if (channel == "reset") {
prev_reset = state::get("prev_reset")
if (value and !prev_reset) {
// Rising edge on reset - restore default value
default_value = config::get("default_value")
state::set("captured_value", default_value)
output::set("value", default_value)
}
state::set("prev_reset", value)
return
}
// Handle "trigger" input
if (channel == "trigger") {
prev_trigger = state::get("prev_trigger")
if (value and !prev_trigger) {
// Rising edge on trigger - send captured value to output
output::set("value", state::get("captured_value"))
}
state::set("prev_trigger", value)
return
}
// Handle "capture" input
if (channel == "capture") {
prev_capture = state::get("prev_capture")
if (value and !prev_capture) {
// Rising edge on capture - latch current input value internally
captured = input::get("value")
state::set("captured_value", captured)
// Optionally send to output immediately
if (config::get("trigger_on_capture")) {
output::set("value", captured)
}
}
state::set("prev_capture", value)
return
}
// "value" input changes are ignored - output holds until next capture, trigger, or reset
