| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156 | 
							- using System;
 
- using System.Xml;
 
- using Aitex.Core.RT.Device;
 
- using Aitex.Core.RT.IOCore;
 
- using Aitex.Core.RT.Log;
 
- using Aitex.Core.RT.OperationCenter;
 
- using Venus_RT.Devices.IODevices;
 
- using Aitex.Core.RT.Device.Unit;
 
- namespace Venus_RT.Devices
 
- {
 
-     /// <summary>
 
-     /// 先送Setpoint, 然后再设置控制模式, 切换设置模式后立即生效
 
-     /// </summary>
 
-     public class IoBacksideHe : BaseDevice, IDevice
 
-     {
 
-         private readonly MfcBase1 _mfc;
 
-         private readonly IoValve _DownValve;
 
-         private readonly IoValve _UpValve;
 
-         private readonly IoValve _Up2Valve;
 
-         private AOAccessor _aoPressure;
 
-         private AOAccessor _aoCtrlMode;
 
-         private eEvent _lastEvent;
 
-         private string _lastLogInfo;
 
-         public int MinFlowThreshold { get; set;}
 
-         public int MaxFlowThreshold { get; set; }
 
-         public bool OutOfRange { get; private set; }
 
-         public IoBacksideHe(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);
 
-             _Up2Valve = ParseDeviceNode<IoValve>(Module, "up2valve", node);
 
-             _mfc = ParseDeviceNode<MfcBase1>(Module, "mfc", node);
 
-             _aoPressure = ParseAoNode("aoPressureSP", node, ioModule);
 
-             _aoCtrlMode = ParseAoNode("aoControlMode", node, ioModule);
 
-         }
 
-         public bool Initialize()
 
-         {
 
-             OutOfRange = false;
 
-             return true;
 
-         }
 
-         public void Monitor()
 
-         {
 
-             if (_mfc != null)
 
-             {
 
-                 if (MinFlowThreshold > 0 && _mfc.FeedBack <= MinFlowThreshold)
 
-                 {
 
-                     OutOfRange = true;
 
-                     _noRepeatLog(eEvent.WARN_BACKSIDE_HE, $"Backside Helium Flow: {_mfc.FeedBack} exceed min threshold value: {MinFlowThreshold}");
 
-                 }
 
-                 else if (MaxFlowThreshold > 0 && _mfc.FeedBack >= MaxFlowThreshold)
 
-                 {
 
-                     OutOfRange = true;
 
-                     _noRepeatLog(eEvent.WARN_BACKSIDE_HE, $"Backside Helium Flow: {_mfc.FeedBack} exceed max threshold value: {MaxFlowThreshold}");
 
-                 }
 
-                 else
 
-                 {
 
-                     OutOfRange = false;
 
-                 }
 
-             }
 
-             
 
-             _DownValve.Monitor();
 
-             _mfc?.Monitor();
 
-         }
 
-         public void Terminate()
 
-         {
 
-         }
 
-         public void Reset()
 
-         {
 
-         }
 
-         public bool SetBacksideHelium(float mTorr)
 
-         {
 
-             
 
-             _SetRealFloat(_aoPressure, mTorr);
 
-             if (mTorr >= 0.01)
 
-             {
 
-                 _DownValve.TurnValve(true, out _);
 
-                 //Kepler2300 not define upvalve up2valve
 
-                 _UpValve?.TurnValve(true, out _);
 
-                 _Up2Valve?.TurnValve(true, out _);
 
-                 //this.FlowSP = setpoint;
 
-             }
 
-             else
 
-             {
 
-                 _DownValve.TurnValve(false, out _);
 
-                 //Kepler2300 not define upvalve up2valve
 
-                 _UpValve?.TurnValve(false, out _);
 
-                 _Up2Valve?.TurnValve(false, out _);
 
-             }
 
-             SetESCHeControlMode(true);
 
-             return true;
 
-         }
 
-         public bool SetFlowThreshold(int nMin, int nMax)
 
-         {
 
-             MinFlowThreshold = nMin;
 
-             MaxFlowThreshold = nMax;
 
-             return true;
 
-         }
 
-         public void Flow(double setpoint)
 
-         {
 
-             //setpoint = setpoint / 100 * 4000;
 
-             if (setpoint >= 0.01)
 
-             {
 
-                 _DownValve.TurnValve(true, out _);
 
-                 //this.FlowSP = setpoint;
 
-             }
 
-             else
 
-             {
 
-                 _DownValve.TurnValve(false, out _);
 
-             }
 
-             _mfc.Ramp(setpoint, 1000);
 
-             SetESCHeControlMode(false);
 
-         }
 
-         public void SetESCHeControlMode(bool bPressureMode)
 
-         {
 
-             _SetRealFloat(_aoCtrlMode, bPressureMode ? 1 : 0);
 
-         }
 
-         private void _noRepeatLog(eEvent evt, string logInfo)
 
-         {
 
-             if(evt != _lastEvent || logInfo != _lastLogInfo)
 
-             {
 
-                 LOG.Write(evt, Module, logInfo);
 
-                 _lastEvent = evt;
 
-                 _lastLogInfo = logInfo;
 
-             }
 
-         }
 
-     }
 
- }
 
 
  |