IoTMPressureCtl.cs 4.7 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126
  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. using Aitex.Core.RT.DataCenter;
  14. namespace Venus_RT.Devices
  15. {
  16. class IoTMPressureCtrl : BaseDevice, IDevice
  17. {
  18. public readonly IoPressureMeter TMPressureGauge;
  19. public readonly IoPressureMeter LLAPressureGauge;
  20. public readonly IoPressureMeter LLBPressureGauge;
  21. public readonly IoPressureMeter MFForelineGauge;
  22. public readonly IoPressureMeter LLAForelineGauge;
  23. public readonly IoPressureMeter LLBForelineGauge;
  24. private readonly ToleranceChecker _tolerance = new ToleranceChecker();
  25. private readonly R_TRIG _trigTMPressureGauge = new R_TRIG();
  26. private readonly R_TRIG _trigLLAPressureGauge = new R_TRIG();
  27. private readonly R_TRIG _trigLLBPressureGauge = new R_TRIG();
  28. private readonly R_TRIG _trigMFForelineGauge = new R_TRIG();
  29. private readonly R_TRIG _trigLLAForelineGauge = new R_TRIG();
  30. private readonly R_TRIG _trigLLBForelineGauge = new R_TRIG();
  31. private readonly AOAccessor _aoMFPressureSP;
  32. private readonly AOAccessor _aoLLAPressureSP;
  33. private readonly AOAccessor _aoLLBPressureSP;
  34. // Properties
  35. //
  36. public double TargetPressure { get; set; }
  37. // Constructor
  38. //
  39. public IoTMPressureCtrl(string module, XmlElement node, string ioModule = "")
  40. {
  41. base.Module = module;
  42. base.Name = node.GetAttribute("id");
  43. base.Display = node.GetAttribute("display");
  44. base.DeviceID = node.GetAttribute("schematicId");
  45. TMPressureGauge = ParseDeviceNode<IoPressureMeter>(Module, "MFPressureMeter", node);
  46. LLAPressureGauge = ParseDeviceNode<IoPressureMeter>(Module, "LLAPressureMeter", node);
  47. LLBPressureGauge = ParseDeviceNode<IoPressureMeter>(Module, "LLBPressureMeter", node);
  48. MFForelineGauge = ParseDeviceNode<IoPressureMeter>(Module, "MFForelineMeter", node);
  49. LLAForelineGauge = ParseDeviceNode<IoPressureMeter>(Module, "LLAForelineMeter", node);
  50. LLBForelineGauge = ParseDeviceNode<IoPressureMeter>(Module, "LLBForelineMeter", node);
  51. _aoMFPressureSP = ParseAoNode("aoMFPressure", node, ioModule);
  52. _aoLLAPressureSP = ParseAoNode("aoLLAPressure", node, ioModule);
  53. _aoLLBPressureSP = ParseAoNode("aoLLBPressure", node, ioModule);
  54. }
  55. public bool Initialize()
  56. {
  57. DATA.Subscribe($"{Module}.{Name}.TMChamberSetPoint", () => _GetRealFloat(_aoMFPressureSP));
  58. DATA.Subscribe($"{Module}.{Name}.LLAChamberSetPoint", () => _GetRealFloat(_aoLLAPressureSP));
  59. DATA.Subscribe($"{Module}.{Name}.LLBChamberSetPoint", () => _GetRealFloat(_aoLLBPressureSP));
  60. return true;
  61. }
  62. public void SetTMPressure(float pressure)
  63. {
  64. _SetRealFloat(_aoMFPressureSP, pressure);
  65. }
  66. public void SetLLAPressure(float pressure)
  67. {
  68. _SetRealFloat(_aoLLAPressureSP, pressure);
  69. }
  70. public void SetLLBPressure(float pressure)
  71. {
  72. _SetRealFloat(_aoLLBPressureSP, pressure);
  73. }
  74. public void Terminate()
  75. {
  76. }
  77. public void Monitor()
  78. {
  79. //_trigTMPressureGauge.CLK = TMPressureGauge.GaugeAlarm;
  80. //if (_trigTMPressureGauge.Q) LOG.Write(eEvent.ERR_DEVICE_INFO, Module, "MF pressure gauge Alarm");
  81. //_trigLLAPressureGauge.CLK = LLAPressureGauge.GaugeAlarm;
  82. //if (_trigLLAPressureGauge.Q) LOG.Write(eEvent.ERR_DEVICE_INFO, Module, "Chamber pressure gauge Alarm");
  83. //_trigLLBPressureGauge.CLK = LLBPressureGauge.GaugeAlarm;
  84. //if (_trigLLBPressureGauge.Q) LOG.Write(eEvent.ERR_DEVICE_INFO, Module, "Foreline pressure gauge Alarm");
  85. //_trigMFForelineGauge.CLK = MFForelineGauge.GaugeAlarm;
  86. //if (_trigMFForelineGauge.Q) LOG.Write(eEvent.ERR_DEVICE_INFO, Module, "Process High Gauge Alarm");
  87. //_trigLLAForelineGauge.CLK = LLAForelineGauge.GaugeAlarm;
  88. //if (_trigLLAForelineGauge.Q) LOG.Write(eEvent.ERR_DEVICE_INFO, Module, "Process Low Gauge Alarm");
  89. }
  90. public void Reset()
  91. {
  92. _trigTMPressureGauge.RST = true;
  93. _trigLLAPressureGauge.RST = true;
  94. _trigLLBPressureGauge.RST = true;
  95. _trigMFForelineGauge.RST = true;
  96. _trigLLAForelineGauge.RST = true;
  97. _trigLLBForelineGauge.RST = true;
  98. }
  99. }
  100. }