IoTMSEPressureCtl.cs 3.3 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586
  1. using Aitex.Core.RT.DataCenter;
  2. using Aitex.Core.RT.Device;
  3. using Aitex.Core.RT.Log;
  4. using System;
  5. using Venus_RT.Devices.IODevices;
  6. using System.Collections.Generic;
  7. using System.Linq;
  8. using System.Text;
  9. using System.Threading.Tasks;
  10. using Aitex.Core.RT.Tolerance;
  11. using Aitex.Core.Util;
  12. using Aitex.Core.RT.IOCore;
  13. using System.Xml;
  14. namespace Venus_RT.Devices
  15. {
  16. class IoTMSEPressureCtl:BaseDevice,IDevice
  17. {
  18. public readonly IoPressureMeter TMVacuumGauge;
  19. public readonly IoPressureMeter TMPipelineGauge;
  20. public readonly IoPressureMeter VCEVacuumGauge;
  21. public readonly IoPressureMeter VCEPipelineVacuumGauge;
  22. private readonly ToleranceChecker _tolerance = new ToleranceChecker();
  23. private readonly R_TRIG _trigTMVacuumGauge = new R_TRIG();
  24. private readonly R_TRIG _trigTMPipelineGauge = new R_TRIG();
  25. private readonly R_TRIG _trigVCEVacuumGauge = new R_TRIG();
  26. private readonly R_TRIG _trigVCEPipelineVacuumGauge = new R_TRIG();
  27. private readonly AOAccessor _aoMFPressureSP;
  28. public double TargetPressure { get; set; }
  29. public IoTMSEPressureCtl(string module, XmlElement node, string ioModule = "")
  30. {
  31. base.Module = module;
  32. base.Name = node.GetAttribute("id");
  33. base.Display = node.GetAttribute("display");
  34. base.DeviceID = node.GetAttribute("schematicId");
  35. TMVacuumGauge = ParseDeviceNode<IoPressureMeter>(Module, "MFPressureMeter", node);
  36. TMPipelineGauge = ParseDeviceNode<IoPressureMeter>(Module, "MFForelineMeter", node);
  37. VCEVacuumGauge = ParseDeviceNode<IoPressureMeter>(Module, "VCEPressureMeter", node);
  38. VCEPipelineVacuumGauge = ParseDeviceNode<IoPressureMeter>(Module, "VCEPipelineMeter", node);
  39. _aoMFPressureSP = ParseAoNode("aoMFPressure", node, ioModule);
  40. }
  41. public bool Initialize()
  42. {
  43. //DATA.Subscribe($"{Module}.{Name}.TMChamberSetPoint", () => _GetRealFloat(_aoMFPressureSP));
  44. return true;
  45. }
  46. public void SetTMPressure(float pressure)
  47. {
  48. _SetRealFloat(_aoMFPressureSP, pressure);
  49. }
  50. public void Terminate()
  51. {
  52. }
  53. public void Monitor()
  54. {
  55. _trigTMVacuumGauge.CLK = TMVacuumGauge.GaugeAlarm;
  56. if (_trigTMVacuumGauge.Q) LOG.Write(eEvent.ERR_DEVICE_INFO, Module, "MF pressure gauge Alarm");
  57. _trigTMPipelineGauge.CLK = TMPipelineGauge.GaugeAlarm;
  58. if (_trigTMPipelineGauge.Q) LOG.Write(eEvent.ERR_DEVICE_INFO, Module, "MF Pipeline pressure gauge Alarm");
  59. _trigVCEVacuumGauge.CLK = VCEVacuumGauge.GaugeAlarm;
  60. if (_trigVCEVacuumGauge.Q) LOG.Write(eEvent.ERR_DEVICE_INFO, Module, "VCE pressure gauge Alarm");
  61. _trigVCEPipelineVacuumGauge.CLK = VCEPipelineVacuumGauge.GaugeAlarm;
  62. if (_trigVCEPipelineVacuumGauge.Q) LOG.Write(eEvent.ERR_DEVICE_INFO, Module, "VCE Pipeline pressure Gauge Alarm");
  63. }
  64. public void Reset()
  65. {
  66. _trigTMVacuumGauge.RST = true;
  67. _trigTMPipelineGauge.RST = true;
  68. _trigVCEVacuumGauge.RST = true;
  69. _trigVCEPipelineVacuumGauge.RST = true;
  70. }
  71. }
  72. }