ToleranceChecker.cs 1.5 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172
  1. 
  2. using Aitex.Core.Util;
  3. namespace Aitex.Core.RT.Tolerance
  4. {
  5. public class ToleranceChecker
  6. {
  7. private DeviceTimer _timer = new DeviceTimer();
  8. private R_TRIG _trigger = new R_TRIG();
  9. private bool _started;
  10. public bool Trig
  11. {
  12. get
  13. {
  14. return _trigger.Q;
  15. }
  16. }
  17. public bool Result
  18. {
  19. get
  20. {
  21. return _trigger.M;
  22. }
  23. }
  24. public bool RST
  25. {
  26. set
  27. {
  28. _started = false;
  29. _trigger.RST = value;
  30. }
  31. }
  32. public ToleranceChecker()
  33. {
  34. _timer.Start(0);
  35. }
  36. public ToleranceChecker(double time)
  37. {
  38. _timer.Start(time*1000);
  39. }
  40. public void Reset(double time)
  41. {
  42. _timer.Start(time * 1000);
  43. RST = true;
  44. }
  45. /// <summary>
  46. /// </summary>
  47. /// <param name="value"></param>
  48. /// <param name="min"></param>
  49. /// <param name="max"></param>
  50. /// <param name="time">unit is second</param>
  51. public void Monitor(double value, double min, double max, double time)
  52. {
  53. if (!_started || (value >= min && value <= max))
  54. {
  55. _started = true;
  56. _timer.Start(time*1000);
  57. }
  58. _trigger.CLK = _timer.IsTimeout();
  59. }
  60. }
  61. }