# func::Hysteresis

    sys::Obj
      sys::Virtual
        sys::Component
          func::Hysteresis

`public class Hysteresis` `[niagaraIcon="module://icons/x16/control/util/hysteresis.png"]`

Applies hysteresis to an input value to set a boolean out.

NOTE: If "Rising Edge" > "Falling Edge", then out behaves "normally", ie

      out switches to "true" when in rises above "Rising Edge", and switches back
      to "false" when in falls below "Falling Edge"
                      Falling    Rising
                       Edge       Edge
                         |----------|-------
                         |          |
                 --------|----------|

NOTE: If "Rising Edge" < "Falling Edge", then out behaves "inverted", ie

      out switches to "false" when in rises above "Falling Edge", and switches back
      to "true" when in falls below "Rising Edge"
                      Rising     Falling
                       Edge        Edge
                 --------|----------|
                         |          |
                         |----------|-------

NOTE: If "Rising Edge" == "Falling Edge", this object become a simple

     comparator, where if in > Rising Edge, then out = true

fallingEdge

  `public property float fallingEdge [config, defaultOnClone]`

  threshold for falling edge

in

  `public property float in`

  input value to which hysteresis is to be applied

out

  `public property bool out [readonly]`

  boolean output

risingEdge

  `public property float risingEdge [config, defaultOnClone]`

  threshold for rising edge

execute

  `public virtual override void execute()`

  Execute is called once every scan.