pub struct OutOfRangeDetector {Show 13 fields
pub high_limit: f32,
pub low_limit: f32,
pub deadband: f32,
pub limit_enable: LimitEnable,
pub notification_class: u32,
pub notify_type: u32,
pub event_enable: u8,
pub time_delay: u32,
pub time_delay_normal: Option<u32>,
pub event_state: EventState,
pub acked_transitions: u8,
pub pending: Option<PendingTransition>,
pub fault_reliability: Option<u32>,
}Expand description
OUT_OF_RANGE event detector for analog objects.
Implements the OUT_OF_RANGE event state machine:
- NORMAL → HIGH_LIMIT when
present_value > high_limit(if high_limit enabled) - NORMAL → LOW_LIMIT when
present_value < low_limit(if low_limit enabled) - HIGH_LIMIT → NORMAL when
present_value < high_limit - deadband - LOW_LIMIT → NORMAL when
present_value > low_limit + deadband - HIGH_LIMIT → LOW_LIMIT when
present_value < low_limit - LOW_LIMIT → HIGH_LIMIT when
present_value > high_limit
Time_Delay (and Time_Delay_Normal for the NORMAL direction) is
honored via the split Self::probe / Self::tick entry points: a
present-value write calls probe, which seeds a pending transition (or
fires immediately when the direction-appropriate delay is zero,
[delay_toward]); a one-second periodic task calls tick to advance the
countdown and fire on expiry.
Fields§
§high_limit: f32§low_limit: f32§deadband: f32§limit_enable: LimitEnable§notification_class: u32§notify_type: u32§event_enable: u8§time_delay: u32§time_delay_normal: Option<u32>Time_Delay_Normal (property 356): the Clause 13.3.6 pTimeDelayNormal
parameter — seconds that Normal conditions must persist before a
NORMAL event state is indicated. None is the not-configured case
and takes on time_delay: “If no value is available for this
parameter, then it takes on the value of the pTimeDelay parameter.”
event_state: EventState§acked_transitions: u8Acknowledged-transitions bitfield (3 bits: TO_OFFNORMAL, TO_FAULT, TO_NORMAL). A set bit means the corresponding transition has been acknowledged.
pending: Option<PendingTransition>Pending delayed transition, or None when no delay is in progress.
fault_reliability: Option<u32>Reliability value in force at the last entry to FAULT; None outside FAULT.
Implementations§
Source§impl OutOfRangeDetector
impl OutOfRangeDetector
Sourcepub const ALGORITHM: EventType = EventType::OUT_OF_RANGE
pub const ALGORITHM: EventType = EventType::OUT_OF_RANGE
BACnet Event Type corresponding to this detector’s event algorithm.
Sourcepub fn evaluate(
&mut self,
present_value: f32,
reliability: u32,
) -> Option<TransitionOutcome>
pub fn evaluate( &mut self, present_value: f32, reliability: u32, ) -> Option<TransitionOutcome>
Evaluate the present value against configured limits.
This is the per-write entry point: it seeds a pending delayed
transition (or fires immediately when the direction-appropriate delay
is zero) but never advances the countdown — so repeated writes to the
same value do not shorten the delay. Returns Some(TransitionOutcome)
whenever a transition fires; the outcome’s distribute flag carries
the event_enable bit rather than withholding the transition.
Sourcepub fn probe(
&mut self,
present_value: f32,
reliability: u32,
) -> Option<TransitionOutcome>
pub fn probe( &mut self, present_value: f32, reliability: u32, ) -> Option<TransitionOutcome>
Per-write probe: seed or cancel a pending transition, fire on zero delay.
When the direction-appropriate delay ([delay_toward]) is zero the
transition is confirmed immediately and event_state is updated,
preserving the legacy instant-transition behavior. Otherwise a
PendingTransition is seeded (or cleared if the condition
reverted) and None is returned; the periodic Self::tick
advances and eventually confirms it.
Sourcepub fn tick(
&mut self,
present_value: f32,
reliability: u32,
) -> Option<TransitionOutcome>
pub fn tick( &mut self, present_value: f32, reliability: u32, ) -> Option<TransitionOutcome>
Periodic tick: advance the countdown and fire on expiry.
Returns Some(TransitionOutcome) when the pending transition’s delay
elapses this tick, or None if still counting down / no pending
transition / the condition reverted (which cancels the pending).
Trait Implementations§
Source§impl Clone for OutOfRangeDetector
impl Clone for OutOfRangeDetector
Source§fn clone(&self) -> OutOfRangeDetector
fn clone(&self) -> OutOfRangeDetector
1.0.0 (const: unstable) · Source§fn clone_from(&mut self, source: &Self)
fn clone_from(&mut self, source: &Self)
source. Read more