| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193 | 
							- using System;
 
- using System.Security.Cryptography;
 
- using System.Xml;
 
- using Aitex.Core.RT.Device;
 
- using Aitex.Core.RT.Device.Unit;
 
- using Aitex.Core.RT.IOCore;
 
- using Aitex.Core.RT.Log;
 
- using Aitex.Core.RT.OperationCenter;
 
- using Aitex.Core.Util;
 
- using Venus_RT.Devices.IODevices;
 
- namespace Venus_RT.Devices
 
- {
 
-     class IoGasStick : BaseDevice, IDevice
 
-     {
 
-         private readonly IoValve _DownValve;
 
-         private readonly IoValve _UpValve;
 
-         //private DIAccessor _diPressureAlarm;
 
-         private DOAccessor _doByPassPressureAlarm;
 
-         public readonly MfcBase1 _mfc;
 
-         // Properties
 
-         //
 
-         public double FlowSP
 
-         {
 
-             get => _mfc.SetPoint;
 
-             //set => _mfc.SetPoint = value;
 
-         }
 
-         public bool IsOutOfRange => _mfc.IsOutOfTolerance;
 
-         private F_TRIG _trigPressureAlarm = new F_TRIG();
 
-         // Constructor
 
-         //
 
-         public IoGasStick(string module, XmlElement node, string ioModule = "")
 
-         {
 
-             base.Module = module;
 
-             base.Name = node.GetAttribute("id");
 
-             base.Display = node.GetAttribute("display");
 
-             base.DeviceID = node.GetAttribute("schematicId");
 
-             _DownValve = ParseDeviceNode<IoValve>(Module, "downvalve", node);
 
-             _UpValve = ParseDeviceNode<IoValve>(Module, "upvalve", node);
 
-             _mfc = ParseDeviceNode<MfcBase1>(Module, "mfc", node);
 
-             //_diPressureAlarm = ParseDiNode("diPressureAlarm", node, ioModule);
 
-             _doByPassPressureAlarm = ParseDoNode("doByPassPressureAlarm", node, ioModule);
 
-         }
 
-         public bool Initialize()
 
-         {
 
-             OP.Subscribe($"{Module}.{_mfc.Name}", (out string reason, int time, object[] para) =>
 
-             {
 
-                 reason = "";
 
-                 double sp = Convert.ToDouble((string)para[0]);
 
-                 Flow(sp);
 
-                 return true;
 
-             });
 
-             return true;
 
-         }
 
-         public void Flow(double setpoint)
 
-         {
 
-             if (setpoint >= 0.01)
 
-             {
 
-                 _DownValve.TurnValve(true, out _);
 
-                 _UpValve?.TurnValve(true, out _);
 
-             }
 
-             else
 
-             {
 
-                 _DownValve.TurnValve(false, out _);
 
-                 _UpValve?.TurnValve(false, out _);
 
-             }
 
-             _mfc.SetPoint = setpoint;
 
-             //_mfc.Ramp(setpoint, 1000);
 
-         }
 
-         public void Pump()
 
-         {
 
-             _UpValve?.TurnValve(true, out _);
 
-             _mfc.SetPoint = _mfc.Scale;
 
-         }
 
-         public void Monitor()
 
-         {
 
-             _DownValve.Monitor();
 
-             if (_mfc.Name == "MfcN2" && _DownValve?.Status == false)
 
-             {
 
-                 return;
 
-             }
 
-             
 
-             _trigPressureAlarm.CLK = _mfc.PressureAlarm;
 
-             if (_trigPressureAlarm.Q )
 
-             {
 
-                 eEvent _eEvent;
 
-                 if (_mfc.SetPoint > 0 && _doByPassPressureAlarm?.Value == false)
 
-                 {
 
-                     switch (_mfc.Display)
 
-                     {
 
-                         case "Gas1":
 
-                             _eEvent = eEvent.ERR_MFC1_PRESSURE;
 
-                             break;
 
-                         case "Gas2":
 
-                             _eEvent = eEvent.ERR_MFC2_PRESSURE;
 
-                             break;
 
-                         case "Gas3":
 
-                             _eEvent = eEvent.ERR_MFC3_PRESSURE;
 
-                             break;
 
-                         case "Gas4":
 
-                             _eEvent = eEvent.ERR_MFC4_PRESSURE;
 
-                             break;
 
-                         case "Gas5":
 
-                             _eEvent = eEvent.ERR_MFC5_PRESSURE;
 
-                             break;
 
-                         case "Gas6":
 
-                             _eEvent = eEvent.ERR_MFC6_PRESSURE;
 
-                             break;
 
-                         case "Gas7":
 
-                             _eEvent = eEvent.ERR_MFC7_PRESSURE;
 
-                             break;
 
-                         case "Gas8":
 
-                             _eEvent = eEvent.ERR_MFC8_PRESSURE;
 
-                             break;
 
-                         case "N2":
 
-                             _eEvent = eEvent.ERR_N2_PRESSURE;
 
-                             break;
 
-                         default:
 
-                             _eEvent = eEvent.WARN_DEVICE_INFO;
 
-                             break;
 
-                     }
 
-                     _DownValve.TurnValve(false, out _);
 
-                     _UpValve?.TurnValve(false, out _);
 
-                     _mfc.SetPoint = 0;
 
-                 }
 
-                 else
 
-                 {
 
-                     switch (_mfc.Display)
 
-                     {
 
-                         case "Gas1":
 
-                             _eEvent = eEvent.WARN_MFC1_PRESSURE;
 
-                             break;
 
-                         case "Gas2":
 
-                             _eEvent = eEvent.WARN_MFC2_PRESSURE;
 
-                             break;
 
-                         case "Gas3":
 
-                             _eEvent = eEvent.WARN_MFC3_PRESSURE;
 
-                             break;
 
-                         case "Gas4":
 
-                             _eEvent = eEvent.WARN_MFC4_PRESSURE;
 
-                             break;
 
-                         case "Gas5":
 
-                             _eEvent = eEvent.WARN_MFC5_PRESSURE;
 
-                             break;
 
-                         case "Gas6":
 
-                             _eEvent = eEvent.WARN_MFC6_PRESSURE;
 
-                             break;
 
-                         case "Gas7":
 
-                             _eEvent = eEvent.WARN_MFC7_PRESSURE;
 
-                             break;
 
-                         case "Gas8":
 
-                             _eEvent = eEvent.WARN_MFC8_PRESSURE;
 
-                             break;
 
-                         case "N2":
 
-                             _eEvent = eEvent.WARN_N2_PRESSURE;
 
-                             break;
 
-                         default:
 
-                             _eEvent = eEvent.WARN_DEVICE_INFO;
 
-                             break;
 
-                     }
 
-                 }
 
-                 LOG.Write(_eEvent, Module, $"{Name}, {_mfc.Display} Pressure Alarm");
 
-             }
 
-         }
 
-         public void Terminate()
 
-         {
 
-         }
 
-         public void Reset()
 
-         {
 
-         }
 
-         public void Stop()
 
-         {
 
-             _DownValve.TurnValve(false, out _);
 
-             _UpValve?.TurnValve(false, out _);
 
-             //_mfc.Ramp(0, 1000);
 
-             _mfc.SetPoint = 0;
 
-         }
 
-     }
 
- }
 
 
  |