# Hysteresis

Przetwarzanie

Przełącznik progowy z histerezą, który analizuje analogową wartość wejściową i odpowiednio przełącza wyjście cyfrowe.

Hysteresis
V
O

# Wejścia

IDSkrótNazwaTypDomyślnieOpis
valueVWartośćNUMBER0Wejście numeryczne do porównania ze skonfigurowanymi progami.

# Wyjścia

IDSkrótNazwaTypDomyślnieOpis
outputOWyjścieBOOLEANfalseWyjście logiczne przełączające się w oparciu o wartość wejściową i progi z histerezą.

# Konfiguracja

IDNazwaTypDomyślnieJednostkaOpis
modeTryb histerezyENUM0Określa sposób konfiguracji histerezy.

Szczegóły:

Wartości: Midpoint + Hysteresis, Threshold (On/Off)
midpointWartość środkowaNUMBER50.0Punkt centralny zakresu histerezy.

Szczegóły:

Widoczne gdymode = Midpoint + Hysteresis
hysteresisZakres histerezyNUMBER5.0Zakres wokół punktu środkowego tworzący efekt histerezy.

Szczegóły:

Widoczne gdymode = Midpoint + Hysteresis
> 0
value_onWartość włączeniaNUMBER55.0Wartość progowa przy której wyjście się włącza.

Szczegóły:

Widoczne gdymode = Threshold (On/Off)
neq value_off
value_offWartość wyłączeniaNUMBER45.0Wartość progowa przy której wyjście się wyłącza.

Szczegóły:

Widoczne gdymode = Threshold (On/Off)
neq value_on

# Kod źródłowy

Pokaż kod Volang
value = input::get("value")
output = output::get("output")
mode = config::get("mode") // 0=midpoint+hysteresis, 1=threshold

new_output = false

if (mode == 0) { // Midpoint + Hysteresis
    midpoint = config::get("midpoint")
    hysteresis = config::get("hysteresis")
    
    threshold_on = midpoint + hysteresis
    threshold_off = midpoint - hysteresis
    
    if (value >= threshold_on) {
        new_output = true
    } else if (value <= threshold_off) {
        new_output = false
    } else {
        // In hysteresis range, maintain current state
        new_output = output
    }
} else if (mode == 1) { // Threshold (On/Off)
    value_on = config::get("value_on")
    value_off = config::get("value_off")
    
    if (value_on > value_off) {
        // Standard hysteresis: on when high, off when low
        if (value >= value_on) {
            new_output = true
        } else if (value <= value_off) {
            new_output = false
        } else {
            // In hysteresis range, maintain current state
            new_output = output
        }
    } else {
        // Inverted hysteresis: on when low, off when high (value_off > value_on)
        if (value <= value_on) {
            new_output = true
        } else if (value >= value_off) {
            new_output = false
        } else {
            // In hysteresis range, maintain current state
            new_output = output
        }
    }
}

output::set("output", new_output)

Przełącznik progowy z histerezą, który analizuje analogową wartość wejściową i odpowiednio przełącza wyjście cyfrowe.