IoTMPressureCtl.cs 3.6 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100
  1. using System;
  2. using System.Xml;
  3. using Aitex.Core.Common.DeviceData;
  4. using Aitex.Core.RT.Device;
  5. using Aitex.Core.RT.Event;
  6. using Aitex.Core.RT.IOCore;
  7. using Aitex.Core.RT.OperationCenter;
  8. using Aitex.Core.RT.SCCore;
  9. using Aitex.Core.RT.Tolerance;
  10. using Aitex.Core.Util;
  11. using Venus_RT.Devices.IODevices;
  12. using Aitex.Core.RT.Log;
  13. namespace Venus_RT.Devices
  14. {
  15. class IoTMPressureCtrl : BaseDevice, IDevice
  16. {
  17. public readonly IoPressureMeter TMPressureGauge;
  18. public readonly IoPressureMeter LLAPressureGauge;
  19. public readonly IoPressureMeter LLBPressureGauge;
  20. public readonly IoPressureMeter MFForelineGauge;
  21. public readonly IoPressureMeter LLForelineGauge;
  22. private readonly ToleranceChecker _tolerance = new ToleranceChecker();
  23. private readonly R_TRIG _trigTMPressureGauge = new R_TRIG();
  24. private readonly R_TRIG _trigLLAPressureGauge = new R_TRIG();
  25. private readonly R_TRIG _trigLLBPressureGauge = new R_TRIG();
  26. private readonly R_TRIG _trigMFForelineGauge = new R_TRIG();
  27. private readonly R_TRIG _trigLLForelineGauge = new R_TRIG();
  28. private readonly AOAccessor _aoMFPressureSP;
  29. // Properties
  30. //
  31. public double TargetPressure { get; set; }
  32. // Constructor
  33. //
  34. public IoTMPressureCtrl(string module, XmlElement node, string ioModule = "")
  35. {
  36. base.Module = module;
  37. base.Name = node.GetAttribute("id");
  38. base.Display = node.GetAttribute("display");
  39. base.DeviceID = node.GetAttribute("schematicId");
  40. TMPressureGauge = ParseDeviceNode<IoPressureMeter>(Module, "MFPressureMeter", node);
  41. LLAPressureGauge = ParseDeviceNode<IoPressureMeter>(Module, "LLAPressureMeter", node);
  42. LLBPressureGauge = ParseDeviceNode<IoPressureMeter>(Module, "LLBPressureMeter", node);
  43. MFForelineGauge = ParseDeviceNode<IoPressureMeter>(Module, "MFForelineMeter", node);
  44. LLForelineGauge = ParseDeviceNode<IoPressureMeter>(Module, "LLForelineMeter", node);
  45. _aoMFPressureSP = ParseAoNode("aoMFPressure", node, ioModule);
  46. }
  47. public bool Initialize()
  48. {
  49. return true;
  50. }
  51. public void SetTMPressure(float pressure)
  52. {
  53. _SetRealFloat(_aoMFPressureSP, pressure);
  54. }
  55. public void Terminate()
  56. {
  57. }
  58. public void Monitor()
  59. {
  60. _trigTMPressureGauge.CLK = TMPressureGauge.GaugeAlarm;
  61. if (_trigTMPressureGauge.Q) LOG.Write(eEvent.ERR_DEVICE_INFO, Module, "MF pressure gauge Alarm");
  62. _trigLLAPressureGauge.CLK = LLAPressureGauge.GaugeAlarm;
  63. if (_trigLLAPressureGauge.Q) LOG.Write(eEvent.ERR_DEVICE_INFO, Module, "Chamber pressure gauge Alarm");
  64. _trigLLBPressureGauge.CLK = LLBPressureGauge.GaugeAlarm;
  65. if (_trigLLBPressureGauge.Q) LOG.Write(eEvent.ERR_DEVICE_INFO, Module, "Foreline pressure gauge Alarm");
  66. _trigMFForelineGauge.CLK = MFForelineGauge.GaugeAlarm;
  67. if (_trigMFForelineGauge.Q) LOG.Write(eEvent.ERR_DEVICE_INFO, Module, "Process High Gauge Alarm");
  68. _trigLLForelineGauge.CLK = LLForelineGauge.GaugeAlarm;
  69. if (_trigLLForelineGauge.Q) LOG.Write(eEvent.ERR_DEVICE_INFO, Module, "Process Low Gauge Alarm");
  70. }
  71. public void Reset()
  72. {
  73. _trigTMPressureGauge.RST = true;
  74. _trigLLAPressureGauge.RST = true;
  75. _trigLLBPressureGauge.RST = true;
  76. _trigMFForelineGauge.RST = true;
  77. _trigLLForelineGauge.RST = true;
  78. }
  79. }
  80. }