| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217 | 
							- using System;
 
- using System.Collections.Generic;
 
- using System.Linq;
 
- using System.Text;
 
- using System.Threading.Tasks;
 
- using System.Xml;
 
- using Aitex.Core.Common.DeviceData;
 
- using Aitex.Core.RT.DataCenter;
 
- using Aitex.Core.RT.Device;
 
- using Aitex.Core.RT.Event;
 
- using Aitex.Core.RT.IOCore;
 
- using Aitex.Core.RT.SCCore;
 
- using Aitex.Core.RT.Tolerance;
 
- using Aitex.Core.Util;
 
- namespace Aitex.Core.RT.Device.Unit
 
- {
 
-     public class IoPressureMeter2 : BaseDevice, IDevice, IPressureMeter
 
-     {
 
-         public enum UnitType
 
-         {
 
-             Torr,
 
-             Pascal,
 
-             Mbar,
 
-             Pascal972B,
 
-         }
 
-         public double UnitValue
 
-         {
 
-             get
 
-             {
 
-                 if (unitType == UnitType.Torr)
 
-                     return GetTorr();
 
-                 else if (unitType == UnitType.Pascal)
 
-                     return GetPascal();
 
-                 else if (unitType == UnitType.Pascal972B)
 
-                     return GetPascal972B();
 
-                 else
 
-                     return GetMbar();
 
-             }
 
-         }
 
-         //Torr unit
 
-         public double PressureValue
 
-         {
 
-             get
 
-             {
 
-                 if (_type == "MKS.901P")
 
-                     return PressureValue901P;
 
-                 if (_type == "MKS.974B")
 
-                     return PressureValue974B;
 
-                 return RawValue;
 
-             }
 
-         }
 
-         
 
-         private double PressureValue901P
 
-         {
 
-             get
 
-             {
 
-                 int offset = 0;
 
-                 int rawValve = RawValue;
 
-                 if (SC.ContainsItem("LoadLock.PressureOffset"))
 
-                     offset = SC.GetConfigItem("LoadLock.PressureOffset").IntValue;
 
-                 rawValve -= offset;
 
-                 var voltage = Converter.Phy2Logic(rawValve, 1, 9, 3276.7, 29490.3);
 
-                 var torValue = Math.Pow(10.0, voltage - 6.0);
 
-                 return Unit == "mTorr" ? torValue * 1000 : torValue;
 
-             }
 
-         }
 
-         private double PressureValue974B
 
-         {
 
-             get
 
-             {
 
-                 var voltage = Converter.Phy2Logic(RawValue, 1.5, 7, 4915.05, 22936.9);
 
-                 var torValue = Math.Pow(10.0, 2 * voltage - 11.0);
 
-                 return Unit == "mTorr" ? torValue * 1000 : torValue;
 
-             }
 
-         }
 
-         public short RawValue
 
-         {
 
-             get { return BitConverter.ToInt16(new byte[] {(byte) _aiLow.Value, (byte) _aiHigh.Value}, 0); }
 
-         }
 
-         private AITPressureMeterData DeviceData
 
-         {
 
-             get
 
-             {
 
-                 AITPressureMeterData data = new AITPressureMeterData()
 
-                 {
 
-                     DeviceName = Name,
 
-                     DeviceSchematicId = DeviceID,
 
-                     DisplayName = Display,
 
-                     FeedBack = PressureValue,
 
-                     Unit = Unit,
 
-                     FormatString = _formatString,
 
-                 };
 
-                 return data;
 
-             }
 
-         }
 
-         public string Unit { get; set; }
 
-         private AIAccessor _aiLow = null;
 
-         private AIAccessor _aiHigh = null;
 
-         //private SCConfigItem _scMinFlow;
 
-         //private SCConfigItem _scMaxFlow;
 
-  
 
-         private UnitType unitType = UnitType.Pascal;
 
-         private string _type = string.Empty;
 
-         // 
 
-         private double rangeMin = Int16.MinValue * 0.1;
 
-         private double rangeMax = Int16.MaxValue * 0.9;
 
-         private double min = Int16.MinValue * 0.1;
 
-         private double max = Int16.MaxValue * 0.9;
 
-         private string _formatString = "F5";
 
-         public IoPressureMeter2(string module, XmlElement node, string ioModule = "")
 
-         {
 
-             Module = node.GetAttribute("module");
 
-             Name = node.GetAttribute("id");
 
-             Display = node.GetAttribute("display");
 
-             DeviceID = node.GetAttribute("schematicId");
 
-             Unit = node.GetAttribute("unit");
 
-             
 
-             _aiLow = ParseAiNode("aiLow", node, ioModule);
 
-             _aiHigh = ParseAiNode("aiHigh", node, ioModule);
 
-             _type = node.GetAttribute("type");
 
-             if (node.HasAttribute("formatString"))
 
-                 _formatString = string.IsNullOrEmpty(node.GetAttribute("formatString")) ? "F5": node.GetAttribute("formatString");
 
-             //Full Scale 0-10V
 
-             this.min = Int16.MaxValue * min / 10.0;
 
-             this.max = Int16.MaxValue * max / 10.0;
 
-         }
 
-         public bool Initialize()
 
-         {
 
-             DATA.Subscribe($"{Module}.{Name}.Value", () => UnitValue);
 
-             DATA.Subscribe($"{Module}.{Name}.DeviceData", () => DeviceData);
 
-             return true;
 
-         }
 
-         public void Terminate()
 
-         {
 
-         }
 
-         public void Monitor()
 
-         {
 
-         }
 
-         public void Reset()
 
-         {
 
-         }
 
-         public static double Voltage(double pressure)
 
-         {
 
-             double logic = 4.0 + Math.Log10(pressure);
 
-             double min = Int16.MaxValue * 1 / 10.0;
 
-             double max = Int16.MaxValue * 9 / 10.0;
 
-             return Converter.Logic2Phy(logic, 1, 9, min, max);
 
-         }
 
-         public static double Voltage2(double pressure)
 
-         {
 
-             return Converter.Logic2Phy(pressure, 0, 1333 * 100, 0x0000, 0x5B6D);
 
-         }
 
-         private double GetPascal()
 
-         {
 
-             double voltage = Converter.Phy2Logic(RawValue, rangeMin, rangeMax, min, max);
 
-             return Math.Pow(10.0, voltage - 4.0);      //pascal
 
-         }
 
-         private double GetPascal972B()
 
-         {
 
-             double voltage = Converter.Phy2Logic(RawValue, rangeMin, rangeMax, min, max);
 
-             return Math.Pow(10.0, 2 * voltage - 9);      //pascal
 
-         }
 
-         private double GetMbar()
 
-         {
 
-             double voltage = Converter.Phy2Logic(RawValue, rangeMin, rangeMax, min, max);
 
-             return Math.Pow(10.0, voltage - 6.0);      //mbar
 
-         }
 
-         private double GetTorr()
 
-         {
 
-             double voltage = Converter.Phy2Logic(RawValue, rangeMin, rangeMax, min, max);
 
-             return Math.Pow(10.0, voltage - 6.125);      //torr
 
-         }
 
-         private double GetAIScale()
 
-         {
 
-             return Converter.Phy2Logic(RawValue, 0, 1333, 0x0000, 0x7fff);
 
-         }
 
-     }
 
- }
 
 
  |