using System; using System.Collections.Generic; using System.Linq; using System.Text; using Aitex.Core.Util; namespace Aitex.Core.RT.Tolerance { public class ToleranceChecker { private DeviceTimer _timer = new DeviceTimer(); private R_TRIG _trigger = new R_TRIG(); private bool _started; public bool Trig { get { return _trigger.Q; } } public bool Result { get { return _trigger.M; } } public bool RST { set { _started = false; _trigger.RST = value; } } public ToleranceChecker() { _timer.Start(0); } public ToleranceChecker(double time) { _timer.Start(time*1000); } public void Reset(double time) { _timer.Start(time * 1000); RST = true; } /// /// /// /// /// /// unit is second public void Monitor(double value, double min, double max, double time) { if (!_started || (value >= min && value <= max)) { _started = true; _timer.Start(time*1000); } _trigger.CLK = _timer.IsTimeout(); } } }