Skip to main content

BitResetOnDelay

Struct BitResetOnDelay 

Source
pub struct BitResetOnDelay { /* private fields */ }
Expand description

Resets a boolean value after it has been true for a specified duration.

This function block monitors a boolean value and, once it has been continuously true for the preset time pt, resets it to false. It uses a Ton timer internally.

IEC 61131-3 equivalent:

tonValue(IN := Value^, PT := PT);
IF tonValue.Q THEN
    Value^ := FALSE;
END_IF

§Example

use autocore_std::fb::BitResetOnDelay;
use std::time::Duration;

let mut reset_delay = BitResetOnDelay::new();
let mut flag = true;

// Flag is true, timer starts counting
reset_delay.call(&mut flag, Duration::from_millis(50));
assert_eq!(flag, true); // Not yet reset

// After delay elapses, flag is reset to false
std::thread::sleep(Duration::from_millis(60));
reset_delay.call(&mut flag, Duration::from_millis(50));
assert_eq!(flag, false);

§Use Cases

  • Auto-clearing acknowledgment flags
  • Resetting one-shot signals after a hold time
  • Automatically turning off indicators after a display period

Implementations§

Source§

impl BitResetOnDelay

Source

pub fn new() -> Self

Creates a new BitResetOnDelay with the internal timer in its default state.

§Example
use autocore_std::fb::BitResetOnDelay;

let reset_delay = BitResetOnDelay::new();
Source

pub fn call(&mut self, value: &mut bool, pt: Duration)

Call cyclically. Resets value to false after it has been true for the duration pt.

When value is false, the internal timer resets. When value is true, the timer counts up. Once the timer reaches pt, value is set to false.

§Arguments
  • value - Mutable reference to the boolean to monitor and reset
  • pt - Duration that value must be true before it is reset
§Example
use autocore_std::fb::BitResetOnDelay;
use std::time::Duration;

let mut reset_delay = BitResetOnDelay::new();
let mut alarm_ack = false;

// No effect when value is false
reset_delay.call(&mut alarm_ack, Duration::from_millis(100));
assert_eq!(alarm_ack, false);

// Set the flag
alarm_ack = true;
reset_delay.call(&mut alarm_ack, Duration::from_millis(100));
assert_eq!(alarm_ack, true); // Still true, timer just started

Trait Implementations§

Source§

impl Clone for BitResetOnDelay

Source§

fn clone(&self) -> BitResetOnDelay

Returns a duplicate of the value. Read more
1.0.0 · Source§

fn clone_from(&mut self, source: &Self)

Performs copy-assignment from source. Read more
Source§

impl Debug for BitResetOnDelay

Source§

fn fmt(&self, f: &mut Formatter<'_>) -> Result

Formats the value using the given formatter. Read more
Source§

impl Default for BitResetOnDelay

Source§

fn default() -> Self

Returns the “default value” for a type. Read more

Auto Trait Implementations§

Blanket Implementations§

Source§

impl<T> Any for T
where T: 'static + ?Sized,

Source§

fn type_id(&self) -> TypeId

Gets the TypeId of self. Read more
Source§

impl<T> Borrow<T> for T
where T: ?Sized,

Source§

fn borrow(&self) -> &T

Immutably borrows from an owned value. Read more
Source§

impl<T> BorrowMut<T> for T
where T: ?Sized,

Source§

fn borrow_mut(&mut self) -> &mut T

Mutably borrows from an owned value. Read more
Source§

impl<T> CloneToUninit for T
where T: Clone,

Source§

unsafe fn clone_to_uninit(&self, dest: *mut u8)

🔬This is a nightly-only experimental API. (clone_to_uninit)
Performs copy-assignment from self to dest. Read more
Source§

impl<T> From<T> for T

Source§

fn from(t: T) -> T

Returns the argument unchanged.

Source§

impl<T, U> Into<U> for T
where U: From<T>,

Source§

fn into(self) -> U

Calls U::from(self).

That is, this conversion is whatever the implementation of From<T> for U chooses to do.

Source§

impl<T> Same for T

Source§

type Output = T

Should always be Self
Source§

impl<T> ToOwned for T
where T: Clone,

Source§

type Owned = T

The resulting type after obtaining ownership.
Source§

fn to_owned(&self) -> T

Creates owned data from borrowed data, usually by cloning. Read more
Source§

fn clone_into(&self, target: &mut T)

Uses borrowed data to replace owned data, usually by cloning. Read more
Source§

impl<T, U> TryFrom<U> for T
where U: Into<T>,

Source§

type Error = Infallible

The type returned in the event of a conversion error.
Source§

fn try_from(value: U) -> Result<T, <T as TryFrom<U>>::Error>

Performs the conversion.
Source§

impl<T, U> TryInto<U> for T
where U: TryFrom<T>,

Source§

type Error = <U as TryFrom<T>>::Error

The type returned in the event of a conversion error.
Source§

fn try_into(self) -> Result<U, <U as TryFrom<T>>::Error>

Performs the conversion.
Source§

impl<V, T> VZip<V> for T
where V: MultiLane<T>,

Source§

fn vzip(self) -> V