| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691692693694695696697698699700701702703704705706707708709710711712713714715716717718719720721722723724725726727728729730731732733734735736737738739740741742743744745746747748749750751752753754755756757758759760761762763764765766767768769770771772773774775776777778779780781782783784785786787788789790791792793794795796797798799800801802803804805806807808809810811812813814815816817818819820821822823824825826827828829830831832833834835836837838839840841842843844845846847848849850851852853854855856857858859860861862863864865866867868869870871872873874875876877878879880881882883884885886887888889890891892893894895896897898899900901902903904905906907908909910911912913914915916917918919920921922923924925926927928929930931932933934935936937938939940941942943944945946947948949950951952953954955956957958959960961962963964965966967968969970971972973974975976977978979980981982983984985986987988989990991992993994995996997998999100010011002100310041005100610071008100910101011101210131014101510161017101810191020102110221023102410251026102710281029103010311032103310341035103610371038103910401041104210431044104510461047104810491050105110521053105410551056105710581059106010611062106310641065106610671068106910701071107210731074107510761077107810791080108110821083108410851086108710881089109010911092109310941095109610971098109911001101110211031104110511061107110811091110111111121113111411151116111711181119112011211122112311241125112611271128112911301131113211331134113511361137113811391140114111421143114411451146114711481149115011511152115311541155115611571158115911601161116211631164116511661167116811691170117111721173117411751176117711781179118011811182118311841185118611871188118911901191119211931194119511961197119811991200120112021203120412051206120712081209121012111212121312141215121612171218121912201221122212231224122512261227122812291230123112321233123412351236123712381239124012411242124312441245124612471248124912501251125212531254125512561257125812591260126112621263126412651266126712681269127012711272127312741275127612771278127912801281128212831284128512861287128812891290129112921293129412951296129712981299130013011302130313041305130613071308130913101311131213131314131513161317131813191320132113221323132413251326132713281329133013311332133313341335133613371338133913401341134213431344134513461347134813491350135113521353135413551356135713581359136013611362136313641365136613671368136913701371137213731374137513761377137813791380138113821383138413851386138713881389139013911392139313941395139613971398139914001401140214031404140514061407140814091410141114121413141414151416141714181419142014211422142314241425142614271428142914301431143214331434143514361437143814391440144114421443144414451446144714481449145014511452145314541455145614571458145914601461146214631464146514661467146814691470147114721473147414751476147714781479148014811482148314841485148614871488148914901491149214931494149514961497149814991500150115021503150415051506150715081509151015111512151315141515151615171518151915201521152215231524152515261527152815291530153115321533153415351536153715381539154015411542154315441545154615471548154915501551155215531554155515561557155815591560156115621563156415651566156715681569157015711572157315741575157615771578157915801581158215831584158515861587158815891590159115921593159415951596159715981599160016011602160316041605160616071608160916101611161216131614161516161617161816191620162116221623162416251626162716281629163016311632163316341635163616371638163916401641164216431644164516461647164816491650165116521653165416551656165716581659166016611662166316641665166616671668166916701671167216731674167516761677167816791680168116821683168416851686168716881689169016911692169316941695169616971698169917001701170217031704170517061707170817091710171117121713171417151716171717181719172017211722172317241725172617271728172917301731173217331734173517361737173817391740174117421743174417451746174717481749175017511752175317541755175617571758175917601761176217631764176517661767176817691770177117721773177417751776177717781779178017811782178317841785178617871788178917901791179217931794179517961797179817991800180118021803180418051806180718081809181018111812181318141815181618171818181918201821182218231824182518261827182818291830183118321833183418351836183718381839184018411842184318441845184618471848184918501851185218531854185518561857185818591860186118621863186418651866186718681869187018711872187318741875187618771878187918801881188218831884188518861887188818891890189118921893189418951896189718981899190019011902190319041905190619071908190919101911191219131914191519161917191819191920192119221923192419251926192719281929193019311932193319341935193619371938193919401941194219431944194519461947194819491950195119521953195419551956195719581959196019611962196319641965196619671968196919701971197219731974197519761977197819791980198119821983198419851986198719881989199019911992199319941995199619971998199920002001200220032004200520062007200820092010201120122013201420152016201720182019 | using MECF.Framework.Common.CommonData;using Prism.Mvvm;using System;using System.Collections.Generic;using System.Linq;using System.Text;using System.Windows;using System.Threading.Tasks;using static Venus_Themes.UserControls.EFEM;using Venus_Core;using OpenSEMI.ClientBase;using Venus_MainPages.Unity;using Venus_Themes.CustomControls;using Aitex.Core.Common.DeviceData;using MECF.Framework.Common.CommonData.DeviceData;using MECF.Framework.Common.OperationCenter;using Venus_MainPages.Views;using System.Windows.Threading;using RecipeStep = Venus_Core.RecipeStep;using Aitex.Core.RT.Log;using Venus_Themes.UserControls;using Prism.Commands;using MECF.Framework.Common.DataCenter;using System.IO;namespace Venus_MainPages.ViewModels{    public class OverVenusSEViewModel : BindableBase    {        #region 私有字段        private List<string> m_CurrentModuleRecipes = new List<string>();        private bool m_PVN21ValveIsOpen;        private bool m_PVN22ValveIsOpen;        private bool m_N2ValveIsOpen;        private bool m_PV11ValveIsOpen;        private bool m_PV12ValveIsOpen;        private bool m_PV21ValveIsOpen;        private bool m_PV22ValveIsOpen;        private bool m_PV31ValveIsOpen;        private bool m_PV32ValveIsOpen;        private bool m_PV41ValveIsOpen;        private bool m_PV42ValveIsOpen;        private bool m_PV51ValveIsOpen;        private bool m_PV52ValveIsOpen;        private bool m_PV61ValveIsOpen;        private bool m_PV62ValveIsOpen;        private bool m_PV71ValveIsOpen;        private bool m_PV72ValveIsOpen;        private bool m_PV81ValveIsOpen;        private bool m_PV82ValveIsOpen;        private bool m_PV91ValveIsOpen;        private bool m_PV92ValveIsOpen;        private bool m_PVA1ValveIsOpen;        private bool m_PVA2ValveIsOpen;        private bool m_PVB1ValveIsOpen;        private bool m_PVB2ValveIsOpen;        private bool m_PVC1ValveIsOpen;        private bool m_PVC2ValveIsOpen;        private bool m_MFC1ValveIsOpen;        private bool m_MFC2ValveIsOpen;        private bool m_MFC3ValveIsOpen;        private bool m_MFC4ValveIsOpen;        private bool m_MFC5ValveIsOpen;        private bool m_MFC6ValveIsOpen;        private bool m_MFC7ValveIsOpen;        private bool m_MFC8ValveIsOpen;        private bool m_MFC9ValveIsOpen;        private bool m_MFC10ValveIsOpen;        private bool m_MFC11ValveIsOpen;        private bool m_MFC12ValveIsOpen;        private bool m_GasFinalValveIsOpen;        private bool m_SoftPumpValveIsOpen;        private bool m_FastPumpValveIsOpen;        private bool m_PVHe1ValveIsOpen;        private bool m_PVHe2ValveIsOpen;        private bool m_PVHe3ValveIsOpen;        private bool m_HeISOValveIsOpen;        private bool m_PV14ValveIsOpen;        private bool m_TurboPumpPumpingValveIsOpen;        private bool m_TurboPumpPurgeValveIsOpen;        private bool m_GuageValveIsOpen;        private bool m_PendulumValveIsOpen;        private bool m_Valve9Visible;        private bool m_Valve10Visible;        private bool m_Valve11Visible;        private bool m_Valve12Visible;        //private bool m_BRFIsOn;        //private bool m_SRFIsOn;        private double m_HeGasSetpoint;        private int m_HePressureSetpoint;        private float m_SRFFwdPowerSetpoint;        private float m_BRFFwdPowerSetpoint;        private float m_SRFMatchC1;        private float m_SRFMatchC2;        private float m_BRFMatchC1;        private float m_BRFMatchC2;        private double m_MFC1SetPoint;        private double m_MFC2SetPoint;        private double m_MFC3SetPoint;        private double m_MFC4SetPoint;        private double m_MFC5SetPoint;        private double m_MFC6SetPoint;        private double m_MFC7SetPoint;        private double m_MFC8SetPoint;        private double m_MFC9SetPoint;        private double m_MFC10SetPoint;        private double m_MFC11SetPoint;        private double m_MFC12SetPoint;        private double m_N2SetPoint;        private double m_TurboN2FlowSetPoint;        private AITMfcData m_MFC1Data;        private AITMfcData m_MFC2Data;        private AITMfcData m_MFC3Data;        private AITMfcData m_MFC4Data;        private AITMfcData m_MFC5Data;        private AITMfcData m_MFC6Data;        private AITMfcData m_MFC7Data;        private AITMfcData m_MFC8Data;        private AITMfcData m_MFC9Data;        private AITMfcData m_MFC10Data;        private AITMfcData m_MFC11Data;        private AITMfcData m_MFC12Data;        private AITMfcData m_MFCHeData;        private AITMfcData m_MFCN2Data;        private AITHeaterData m_ValveHeaterData;        private AITHeaterData m_ForelineHeaterData;        private AITHeaterData m_WallHeaterData;        private AITRfData m_SRFData;        private AITRfData m_BRFData;        private AITPendulumValveData m_PendulumValveData;        private AITHVData m_ESCHVData;        private PMState m_PMCurrentState;        private bool m_SourceRFFanInterlock;        private bool m_IsWLK;        private bool m_IsWaterFlowOk;        private bool m_IsTurboPumpInterlock;        private bool m_IsCDAOK;        private bool m_SensorGasBoxDoor;        private bool m_SensorGasBoxPressure;        private bool m_PumpIsOpen;        private bool m_TurboIsOpen;        private bool m_IsATM;        private bool m_IsVAC;        private List<string> m_RtDataKeys;        private Dictionary<string, object> m_RtDataValues;        private int m_PositionValue;        private bool m_IsPositionMode;        private int m_ESCVoltage;        private bool m_GasIsFlowing;        private bool m_IsProcessing;        private bool m_IsAutoMode;        private string m_SelectedRecipe;        private float m_ChillerTempSetpoint;        private float m_WallTempSetpoint;        private bool m_HeIsPressureMode = true;        private bool m_ChillerIsOn;        private float m_ChamberPressure;        private float m_ProcessPressure;        private float m_ForelinePressurePressure;        private float m_ESCHePressure;        ButterflyValveView butterflyValveMessageBox;        HeaterView heaterView;        private int m_TurboPumpRotationalSpeed;        private bool m_LiftPinIsUp;        private bool m_IsSlitDoorClosed;        private bool m_IsLidClosed;        private float m_ChillerTemperature;        private float m_HVTemperature;        private int m_ESCHVOutputVoltage;        //private float m_SRfReflectPower;        //private float m_SRfForwardPowerFeedBack;        //private float m_BRfReflectPower;        //private float m_BRfForwardPowerFeedBack;        //private int m_MatchWorkMode;        //private int m_BiasMatchWorkMode;        private float m_MatchC1;        private float m_MatchC2;        private float m_BiasMatchC1;        private float m_BiasMatchC2;        private float m_PendulumValvePosition;        private bool m_IsTurboPumpAtSpeed;        private bool m_TurboPumpWaterFlowSwitch;        private bool m_IsHasWafer;        private Recipe m_CurrentRecipe = new Recipe();        private RecipeResult m_CurrentRecipeResult = new RecipeResult();        private RecipeStep m_CurrentRecipeStep = new RecipeStep();        private double m_ChamberPressureFeedBack;        private string m_WaferID;        private string m_ModuleName;        private int? currentRecipeNumber;        #endregion        #region  属性        public List<string> CurrentModuleRecipes        {            get { return m_CurrentModuleRecipes; }            set { SetProperty(ref m_CurrentModuleRecipes, value); }        }        public Recipe CurrentRecipe        {            get { return m_CurrentRecipe; }            set { SetProperty(ref m_CurrentRecipe, value); }        }        public RecipeResult CurrentRecipeResult        {            get { return m_CurrentRecipeResult; }            set { SetProperty(ref m_CurrentRecipeResult, value); }        }        public RecipeStep CurrentRecipeStep        {            get { return m_CurrentRecipeStep; }            set { SetProperty(ref m_CurrentRecipeStep, value); }        }        public bool PV14ValveIsOpen        {            get { return m_PV14ValveIsOpen; }            set { SetProperty(ref m_PV14ValveIsOpen, value); }        }        public bool IsHasWafer        {            get { return m_IsHasWafer; }            set { SetProperty(ref m_IsHasWafer, value); }        }        public bool IsTurboPumpAtSpeed        {            get { return m_IsTurboPumpAtSpeed; }            set { SetProperty(ref m_IsTurboPumpAtSpeed, value); }        }        public bool TurboPumpWaterFlowSwitch        {            get { return m_TurboPumpWaterFlowSwitch; }            set { SetProperty(ref m_TurboPumpWaterFlowSwitch, value); }        }        public float PendulumValvePosition        {            get { return m_PendulumValvePosition; }            set { SetProperty(ref m_PendulumValvePosition, value); }        }        public float BiasMatchC1        {            get { return m_BiasMatchC1; }            set            {                SetProperty(ref m_BiasMatchC1, value);            }        }        public float BiasMatchC2        {            get { return m_BiasMatchC2; }            set            {                SetProperty(ref m_BiasMatchC2, value);            }        }        public float MatchC1        {            get { return m_MatchC1; }            set            {                SetProperty(ref m_MatchC1, value);            }        }        public float MatchC2        {            get { return m_MatchC2; }            set            {                SetProperty(ref m_MatchC2, value);            }        }        public AITPendulumValveData PendulumValveData        {            get { return m_PendulumValveData; }            set            {                SetProperty(ref m_PendulumValveData, value);            }        }        public AITHVData ESCHVData        {            get { return m_ESCHVData; }            set            {                SetProperty(ref m_ESCHVData, value);            }        }        public int ESCHVOutputVoltage        {            get { return m_ESCHVOutputVoltage; }            set            {                SetProperty(ref m_ESCHVOutputVoltage, value);            }        }        public float ChillerTemperature        {            get { return m_ChillerTemperature; }            set            {                SetProperty(ref m_ChillerTemperature, value);            }        }        public float HVTemperature        {            get { return m_HVTemperature; }            set            {                SetProperty(ref m_HVTemperature, value);            }        }        public bool IsLidClosed        {            get { return m_IsLidClosed; }            set            {                SetProperty(ref m_IsLidClosed, value);            }        }        public bool IsSlitDoorClosed        {            get { return m_IsSlitDoorClosed; }            set            {                SetProperty(ref m_IsSlitDoorClosed, value);            }        }        public bool LiftPinIsUp        {            get { return m_LiftPinIsUp; }            set            {                SetProperty(ref m_LiftPinIsUp, value);            }        }        public int TurboPumpRotationalSpeed        {            get { return m_TurboPumpRotationalSpeed; }            set            {                SetProperty(ref m_TurboPumpRotationalSpeed, value);            }        }        public float ESCHePressure        {            get { return m_ESCHePressure; }            set            {                SetProperty(ref m_ESCHePressure, value);            }        }        public float ChamberPressure        {            get { return m_ChamberPressure; }            set            {                SetProperty(ref m_ChamberPressure, value);            }        }        public float ProcessPressure        {            get { return m_ProcessPressure; }            set            {                SetProperty(ref m_ProcessPressure, value);            }        }        public float ForelinePressure        {            get { return m_ForelinePressurePressure; }            set            {                SetProperty(ref m_ForelinePressurePressure, value);            }        }        public bool SourceRFFanInterlock        {            get { return m_SourceRFFanInterlock; }            set            {                SetProperty(ref m_SourceRFFanInterlock, value);            }        }        public bool IsWLK        {            get { return m_IsWLK; }            set            {                SetProperty(ref m_IsWLK, value);            }        }        public bool IsWaterFlowOk        {            get { return m_IsWaterFlowOk; }            set            {                SetProperty(ref m_IsWaterFlowOk, value);            }        }        public bool IsCDAOK        {            get { return m_IsCDAOK; }            set            {                SetProperty(ref m_IsCDAOK, value);            }        }        public bool SensorGasBoxDoor        {            get { return m_SensorGasBoxDoor; }            set            {                SetProperty(ref m_SensorGasBoxDoor, value);            }        }        public bool SensorGasBoxPressure        {            get { return m_SensorGasBoxPressure; }            set            {                SetProperty(ref m_SensorGasBoxPressure, value);            }        }        public bool IsTurboPumpInterlock        {            get { return m_IsTurboPumpInterlock; }            set            {                SetProperty(ref m_IsTurboPumpInterlock, value);            }        }        public string ModuleName        {            get { return m_ModuleName; }            set            {                SetProperty(ref m_ModuleName, value);            }        }        public double MFC1SetPoint        {            get { return m_MFC1SetPoint; }            set { SetProperty(ref m_MFC1SetPoint, value); }        }        public double MFC2SetPoint        {            get { return m_MFC2SetPoint; }            set { SetProperty(ref m_MFC2SetPoint, value); }        }        public double MFC3SetPoint        {            get { return m_MFC3SetPoint; }            set { SetProperty(ref m_MFC3SetPoint, value); }        }        public double MFC4SetPoint        {            get { return m_MFC4SetPoint; }            set { SetProperty(ref m_MFC4SetPoint, value); }        }        public double MFC5SetPoint        {            get { return m_MFC5SetPoint; }            set { SetProperty(ref m_MFC5SetPoint, value); }        }        public double MFC6SetPoint        {            get { return m_MFC6SetPoint; }            set { SetProperty(ref m_MFC6SetPoint, value); }        }        public double MFC7SetPoint        {            get { return m_MFC7SetPoint; }            set { SetProperty(ref m_MFC7SetPoint, value); }        }        public double MFC8SetPoint        {            get { return m_MFC8SetPoint; }            set { SetProperty(ref m_MFC8SetPoint, value); }        }        public double MFC9SetPoint        {            get { return m_MFC9SetPoint; }            set { SetProperty(ref m_MFC9SetPoint, value); }        }        public double MFC10SetPoint        {            get { return m_MFC10SetPoint; }            set { SetProperty(ref m_MFC10SetPoint, value); }        }        public double MFC11SetPoint        {            get { return m_MFC11SetPoint; }            set { SetProperty(ref m_MFC11SetPoint, value); }        }        public double MFC12SetPoint        {            get { return m_MFC12SetPoint; }            set { SetProperty(ref m_MFC12SetPoint, value); }        }        public double N2SetPoint        {            get { return m_N2SetPoint; }            set { SetProperty(ref m_N2SetPoint, value); }        }        public double TurboN2FlowSetPoint        {            get { return m_TurboN2FlowSetPoint; }            set            {                if (value != m_TurboN2FlowSetPoint)                {                    InvokeClient.Instance.Service.DoOperation($"{ModuleName}.MfcN2.SetPoint", value);                }                SetProperty(ref m_TurboN2FlowSetPoint, value);            }        }        public AITMfcData MFC1Data        {            get { return m_MFC1Data; }            set { SetProperty(ref m_MFC1Data, value); }        }        public AITMfcData MFC2Data        {            get { return m_MFC2Data; }            set { SetProperty(ref m_MFC2Data, value); }        }        public AITMfcData MFC3Data        {            get { return m_MFC3Data; }            set { SetProperty(ref m_MFC3Data, value); }        }        public AITMfcData MFC4Data        {            get { return m_MFC4Data; }            set { SetProperty(ref m_MFC4Data, value); }        }        public AITMfcData MFC5Data        {            get { return m_MFC5Data; }            set { SetProperty(ref m_MFC5Data, value); }        }        public AITMfcData MFC6Data        {            get { return m_MFC6Data; }            set { SetProperty(ref m_MFC6Data, value); }        }        public AITMfcData MFC7Data        {            get { return m_MFC7Data; }            set { SetProperty(ref m_MFC7Data, value); }        }        public AITMfcData MFC8Data        {            get { return m_MFC8Data; }            set { SetProperty(ref m_MFC8Data, value); }        }        public AITMfcData MFC9Data        {            get { return m_MFC9Data; }            set { SetProperty(ref m_MFC9Data, value); }        }        public AITMfcData MFC10Data        {            get { return m_MFC10Data; }            set { SetProperty(ref m_MFC10Data, value); }        }        public AITMfcData MFC11Data        {            get { return m_MFC11Data; }            set { SetProperty(ref m_MFC11Data, value); }        }        public AITMfcData MFC12Data        {            get { return m_MFC12Data; }            set { SetProperty(ref m_MFC12Data, value); }        }        public AITMfcData MFCHeData        {            get { return m_MFCHeData; }            set { SetProperty(ref m_MFCHeData, value); }        }        public AITMfcData MFCN2Data        {            get { return m_MFCN2Data; }            set { SetProperty(ref m_MFCN2Data, value); }        }        public AITHeaterData ValveHeaterData        {            get { return m_ValveHeaterData; }            set { SetProperty(ref m_ValveHeaterData, value); }        }        public AITHeaterData ForelineHeaterData        {            get { return m_ForelineHeaterData; }            set { SetProperty(ref m_ForelineHeaterData, value); }        }        public AITHeaterData WallHeaterData        {            get { return m_WallHeaterData; }            set { SetProperty(ref m_WallHeaterData, value); }        }        public AITRfData SRFData        {            get { return m_SRFData; }            set { SetProperty(ref m_SRFData, value); }        }        public AITRfData BRFData        {            get { return m_BRFData; }            set { SetProperty(ref m_BRFData, value); }        }        public PMState PMCurrentState        {            get { return m_PMCurrentState; }            set { SetProperty(ref m_PMCurrentState, value); }        }        #region 阀        public bool Valve9Visible        {            get { return m_Valve9Visible; }            set { SetProperty(ref m_Valve9Visible, value); }        }        public bool Valve10Visible        {            get { return m_Valve10Visible; }            set { SetProperty(ref m_Valve10Visible, value); }        }        public bool Valve11Visible        {            get { return m_Valve11Visible; }            set { SetProperty(ref m_Valve11Visible, value); }        }        public bool Valve12Visible        {            get { return m_Valve12Visible; }            set { SetProperty(ref m_Valve12Visible, value); }        }        public bool GasFinalValveIsOpen        {            get { return m_GasFinalValveIsOpen; }            set { SetProperty(ref m_GasFinalValveIsOpen, value); }        }        public bool PVN21ValveIsOpen        {            get { return m_PVN21ValveIsOpen; }            set { SetProperty(ref m_PVN21ValveIsOpen, value); }        }        public bool PVN22ValveIsOpen        {            get { return m_PVN22ValveIsOpen; }            set { SetProperty(ref m_PVN22ValveIsOpen, value); }        }        public bool N2ValveIsOpen        {            get { return m_N2ValveIsOpen; }            set { SetProperty(ref m_N2ValveIsOpen, value); }        }        public bool PV11ValveIsOpen        {            get { return m_PV11ValveIsOpen; }            set { SetProperty(ref m_PV11ValveIsOpen, value); }        }        public bool PV12ValveIsOpen        {            get { return m_PV12ValveIsOpen; }            set { SetProperty(ref m_PV12ValveIsOpen, value); }        }        public bool MFC1ValveIsOpen        {            get { return m_MFC1ValveIsOpen; }            set { SetProperty(ref m_MFC1ValveIsOpen, value); }        }        public bool PV21ValveIsOpen        {            get { return m_PV21ValveIsOpen; }            set { SetProperty(ref m_PV21ValveIsOpen, value); }        }        public bool PV22ValveIsOpen        {            get { return m_PV22ValveIsOpen; }            set { SetProperty(ref m_PV22ValveIsOpen, value); }        }        public bool PV51ValveIsOpen { get { return m_PV51ValveIsOpen; } set { SetProperty(ref m_PV51ValveIsOpen, value); } }        public bool PV52ValveIsOpen { get { return m_PV52ValveIsOpen; } set { SetProperty(ref m_PV52ValveIsOpen, value); } }        public bool PV61ValveIsOpen { get { return m_PV61ValveIsOpen; } set { SetProperty(ref m_PV61ValveIsOpen, value); } }        public bool PV62ValveIsOpen { get { return m_PV62ValveIsOpen; } set { SetProperty(ref m_PV62ValveIsOpen, value); } }        public bool PV71ValveIsOpen { get { return m_PV71ValveIsOpen; } set { SetProperty(ref m_PV71ValveIsOpen, value); } }        public bool PV72ValveIsOpen { get { return m_PV72ValveIsOpen; } set { SetProperty(ref m_PV72ValveIsOpen, value); } }        public bool PV81ValveIsOpen { get { return m_PV81ValveIsOpen; } set { SetProperty(ref m_PV81ValveIsOpen, value); } }        public bool PV82ValveIsOpen { get { return m_PV82ValveIsOpen; } set { SetProperty(ref m_PV82ValveIsOpen, value); } }        public bool PV91ValveIsOpen { get { return m_PV91ValveIsOpen; } set { SetProperty(ref m_PV91ValveIsOpen, value); } }        public bool PV92ValveIsOpen { get { return m_PV92ValveIsOpen; } set { SetProperty(ref m_PV92ValveIsOpen, value); } }        public bool PVA1ValveIsOpen { get { return m_PVA1ValveIsOpen; } set { SetProperty(ref m_PVA1ValveIsOpen, value); } }        public bool PVA2ValveIsOpen { get { return m_PVA2ValveIsOpen; } set { SetProperty(ref m_PVA2ValveIsOpen, value); } }        public bool PVB1ValveIsOpen { get { return m_PVB1ValveIsOpen; } set { SetProperty(ref m_PVB1ValveIsOpen, value); } }        public bool PVB2ValveIsOpen { get { return m_PVB2ValveIsOpen; } set { SetProperty(ref m_PVB2ValveIsOpen, value); } }        public bool PVC1ValveIsOpen { get { return m_PVC1ValveIsOpen; } set { SetProperty(ref m_PVC1ValveIsOpen, value); } }        public bool PVC2ValveIsOpen { get { return m_PVC2ValveIsOpen; } set { SetProperty(ref m_PVC2ValveIsOpen, value); } }        public bool MFC2ValveIsOpen        {            get { return m_MFC2ValveIsOpen; }            set { SetProperty(ref m_MFC2ValveIsOpen, value); }        }        public bool PV31ValveIsOpen        {            get { return m_PV31ValveIsOpen; }            set { SetProperty(ref m_PV31ValveIsOpen, value); }        }        public bool PV32ValveIsOpen        {            get { return m_PV32ValveIsOpen; }            set { SetProperty(ref m_PV32ValveIsOpen, value); }        }        public bool MFC3ValveIsOpen        {            get { return m_MFC3ValveIsOpen; }            set { SetProperty(ref m_MFC3ValveIsOpen, value); }        }        public bool PV41ValveIsOpen        {            get { return m_PV41ValveIsOpen; }            set { SetProperty(ref m_PV41ValveIsOpen, value); }        }        public bool PV42ValveIsOpen        {            get { return m_PV42ValveIsOpen; }            set { SetProperty(ref m_PV42ValveIsOpen, value); }        }        public bool MFC4ValveIsOpen        {            get { return m_MFC4ValveIsOpen; }            set { SetProperty(ref m_MFC4ValveIsOpen, value); }        }        public bool MFC5ValveIsOpen        {            get { return m_MFC5ValveIsOpen; }            set { SetProperty(ref m_MFC5ValveIsOpen, value); }        }        public bool MFC6ValveIsOpen        {            get { return m_MFC6ValveIsOpen; }            set { SetProperty(ref m_MFC6ValveIsOpen, value); }        }        public bool MFC7ValveIsOpen        {            get { return m_MFC7ValveIsOpen; }            set { SetProperty(ref m_MFC7ValveIsOpen, value); }        }        public bool MFC8ValveIsOpen        {            get { return m_MFC8ValveIsOpen; }            set { SetProperty(ref m_MFC8ValveIsOpen, value); }        }        public bool MFC9ValveIsOpen        {            get { return m_MFC9ValveIsOpen; }            set { SetProperty(ref m_MFC9ValveIsOpen, value); }        }        public bool MFC10ValveIsOpen        {            get { return m_MFC10ValveIsOpen; }            set { SetProperty(ref m_MFC10ValveIsOpen, value); }        }        public bool MFC11ValveIsOpen        {            get { return m_MFC11ValveIsOpen; }            set { SetProperty(ref m_MFC11ValveIsOpen, value); }        }        public bool MFC12ValveIsOpen        {            get { return m_MFC12ValveIsOpen; }            set { SetProperty(ref m_MFC12ValveIsOpen, value); }        }        public bool PVHe1ValveIsOpen        {            get { return m_PVHe1ValveIsOpen; }            set { SetProperty(ref m_PVHe1ValveIsOpen, value); }        }        public bool PVHe2ValveIsOpen        {            get { return m_PVHe2ValveIsOpen; }            set { SetProperty(ref m_PVHe2ValveIsOpen, value); }        }        public bool PVHe3ValveIsOpen        {            get { return m_PVHe3ValveIsOpen; }            set { SetProperty(ref m_PVHe3ValveIsOpen, value); }        }        public bool HeISOValveIsOpen        {            get { return m_HeISOValveIsOpen; }            set { SetProperty(ref m_HeISOValveIsOpen, value); }        }        private bool m_MainPurgeValveIsOpen;        public bool MainPurgeValveIsOpen        {            get { return m_MainPurgeValveIsOpen; }            set { SetProperty(ref m_MainPurgeValveIsOpen, value); }        }        private bool m_SecondPurgeValveIsOpen;        public bool SecondPurgeValveIsOpen        {            get { return m_SecondPurgeValveIsOpen; }            set { SetProperty(ref m_SecondPurgeValveIsOpen, value); }        }        public bool TurboPumpPumpingValveIsOpen        {            get { return m_TurboPumpPumpingValveIsOpen; }            set { SetProperty(ref m_TurboPumpPumpingValveIsOpen, value); }        }        public bool TurboPumpPurgeValveIsOpen        {            get { return m_TurboPumpPurgeValveIsOpen; }            set { SetProperty(ref m_TurboPumpPurgeValveIsOpen, value); }        }        public bool SoftPumpValveIsOpen        {            get { return m_SoftPumpValveIsOpen; }            set { SetProperty(ref m_SoftPumpValveIsOpen, value); }        }        public bool FastPumpValveIsOpen        {            get { return m_FastPumpValveIsOpen; }            set { SetProperty(ref m_FastPumpValveIsOpen, value); }        }        public bool GuageValveIsOpen        {            get { return m_GuageValveIsOpen; }            set { SetProperty(ref m_GuageValveIsOpen, value); }        }        #endregion        public Dictionary<string, object> RtDataValues        {            get { return m_RtDataValues; }            set { SetProperty(ref m_RtDataValues, value); }        }        public bool PumpIsOpen        {            get { return m_PumpIsOpen; }            set { SetProperty(ref m_PumpIsOpen, value); }        }        public bool PendulumValveIsOpen        {            get { return m_PendulumValveIsOpen; }            set { SetProperty(ref m_PendulumValveIsOpen, value); }        }        public bool TurboIsOpen        {            get { return m_TurboIsOpen; }            set { SetProperty(ref m_TurboIsOpen, value); }        }        public bool IsATM        {            get { return m_IsATM; }            set { SetProperty(ref m_IsATM, value); }        }        public bool IsVAC        {            get { return m_IsVAC; }            set { SetProperty(ref m_IsVAC, value); }        }        //public bool BRFIsOn        //{        //    get { return m_BRFIsOn; }        //    set { SetProperty(ref m_BRFIsOn, value); }        //}        //public bool SRFIsOn        //{        //    get { return m_SRFIsOn; }        //    set { SetProperty(ref m_SRFIsOn, value); }        //}        public int PositionValue        {            get { return m_PositionValue; }            set { SetProperty(ref m_PositionValue, value); }        }        public bool IsPositionMode        {            get { return m_IsPositionMode; }            set { SetProperty(ref m_IsPositionMode, value); }        }        public double HeGasSetpoint        {            get { return m_HeGasSetpoint; }            set            {                SetProperty(ref m_HeGasSetpoint, value);            }        }        public int HePressureSetpoint        {            get { return m_HePressureSetpoint; }            set            {                SetProperty(ref m_HePressureSetpoint, value);            }        }        public float SRFFwdPowerSetpoint        {            get { return m_SRFFwdPowerSetpoint; }            set { SetProperty(ref m_SRFFwdPowerSetpoint, value); }        }        public float BRFFwdPowerSetpoint        {            get { return m_BRFFwdPowerSetpoint; }            set { SetProperty(ref m_BRFFwdPowerSetpoint, value); }        }        public int ESCVoltage        {            get { return m_ESCVoltage; }            set { SetProperty(ref m_ESCVoltage, value); }        }        public float SRFMatchC1        {            get { return m_SRFMatchC1; }            set { SetProperty(ref m_SRFMatchC1, value); }        }        public float SRFMatchC2        {            get { return m_SRFMatchC2; }            set { SetProperty(ref m_SRFMatchC2, value); }        }        public float BRFMatchC1        {            get { return m_BRFMatchC1; }            set { SetProperty(ref m_BRFMatchC1, value); }        }        public float BRFMatchC2        {            get { return m_BRFMatchC2; }            set { SetProperty(ref m_BRFMatchC2, value); }        }        public bool GasIsFlowing        {            get { return m_GasIsFlowing; }            set { SetProperty(ref m_GasIsFlowing, value); }        }        public bool IsProcessing        {            get { return m_IsProcessing; }            set { SetProperty(ref m_IsProcessing, value); }        }        public bool IsAutoMode        {            get { return m_IsAutoMode; }            set { SetProperty(ref m_IsAutoMode, value); }        }        public string SelectedRecipe        {            get { return m_SelectedRecipe; }            set { SetProperty(ref m_SelectedRecipe, value); }        }        public float ChillerTempSetpoint        {            get { return m_ChillerTempSetpoint; }            set { SetProperty(ref m_ChillerTempSetpoint, value); }        }        public float WallTempSetpoint        {            get { return m_WallTempSetpoint; }            set { SetProperty(ref m_WallTempSetpoint, value); }        }        public bool HeIsPressureMode        {            get { return m_HeIsPressureMode; }            set { SetProperty(ref m_HeIsPressureMode, value); }        }        public bool ChillerIsOn        {            get { return m_ChillerIsOn; }            set { SetProperty(ref m_ChillerIsOn, value); }        }        public double ChamberPressureFeedBack        {            get { return m_ChamberPressureFeedBack; }            set { SetProperty(ref m_ChamberPressureFeedBack, value); }        }        public string WaferID        {            get { return m_WaferID; }            set { SetProperty(ref m_WaferID, value); }        }        #endregion        #region 命令        private DelegateCommand _PMInitCommnad;        public DelegateCommand PMInitCommnad =>            _PMInitCommnad ?? (_PMInitCommnad = new DelegateCommand(OnPMInit));        private DelegateCommand _PMAbortCommnad;        public DelegateCommand PMAbortCommnad =>            _PMAbortCommnad ?? (_PMAbortCommnad = new DelegateCommand(OnPMAbort));        private DelegateCommand _GasCommand;        public DelegateCommand GasCommand =>            _GasCommand ?? (_GasCommand = new DelegateCommand(OnGas));        private DelegateCommand _HeCommand;        public DelegateCommand HeCommand =>            _HeCommand ?? (_HeCommand = new DelegateCommand(OnHe));        private DelegateCommand _RfCommand;        public DelegateCommand RfCommand =>            _RfCommand ?? (_RfCommand = new DelegateCommand(OnRf));        private DelegateCommand _PurgeCommand;        public DelegateCommand PurgeCommand =>            _PurgeCommand ?? (_PurgeCommand = new DelegateCommand(OnPurge));        private DelegateCommand _VentCommand;        public DelegateCommand VentCommand =>            _VentCommand ?? (_VentCommand = new DelegateCommand(OnVent));        private DelegateCommand _PumpCommand;        public DelegateCommand PumpCommand =>            _PumpCommand ?? (_PumpCommand = new DelegateCommand(OnPump));        private DelegateCommand _OpenPumpCommand;        public DelegateCommand OpenPumpCommand =>            _OpenPumpCommand ?? (_OpenPumpCommand = new DelegateCommand(OnOpenPump));        private DelegateCommand _ClosePumpCommand;        public DelegateCommand ClosePumpCommand =>            _ClosePumpCommand ?? (_ClosePumpCommand = new DelegateCommand(OnClosePump));        private DelegateCommand _OpenTurboPumpCommand;        public DelegateCommand OpenTurboPumpCommand =>            _OpenTurboPumpCommand ?? (_OpenTurboPumpCommand = new DelegateCommand(OnOpenTurboPump));        private DelegateCommand _CloseTurboPumpCommand;        public DelegateCommand CloseTurboPumpCommand =>            _CloseTurboPumpCommand ?? (_CloseTurboPumpCommand = new DelegateCommand(OnCloseTurboPump));        private DelegateCommand _OpenPendulumValveCommand;        public DelegateCommand OpenPendulumValveCommand =>            _OpenPendulumValveCommand ?? (_OpenPendulumValveCommand = new DelegateCommand(OnOpenPendulumValve));        private DelegateCommand _ClosePendulumValveCommand;        public DelegateCommand ClosePendulumValveCommand =>            _ClosePendulumValveCommand ?? (_ClosePendulumValveCommand = new DelegateCommand(OnClosePendulumValve));        private DelegateCommand<object> _PinUpDownCommand;        public DelegateCommand<object> PinUpDownCommand =>            _PinUpDownCommand ?? (_PinUpDownCommand = new DelegateCommand<object>(OnPinUpDown));        private DelegateCommand _SetSRfCommand;        public DelegateCommand SetSRfCommand =>            _SetSRfCommand ?? (_SetSRfCommand = new DelegateCommand(OnSetSRf));        private DelegateCommand _SetBRfCommand;        public DelegateCommand SetBRfCommand =>            _SetBRfCommand ?? (_SetBRfCommand = new DelegateCommand(OnSetBRf));        private DelegateCommand _OpenButterflyValveViewCommand;        public DelegateCommand OpenButterflyValveViewCommand =>            _OpenButterflyValveViewCommand ?? (_OpenButterflyValveViewCommand = new DelegateCommand(OnOpenButterflyValveView));        private DelegateCommand _HVCommand;        public DelegateCommand HVCommand =>            _HVCommand ?? (_HVCommand = new DelegateCommand(OnHV));        private DelegateCommand _HVSetCommand;        public DelegateCommand HVSetCommand =>            _HVSetCommand ?? (_HVSetCommand = new DelegateCommand(OnHVSet));        private DelegateCommand _LoadRecipeCommand;        public DelegateCommand LoadRecipeCommand =>            _LoadRecipeCommand ?? (_LoadRecipeCommand = new DelegateCommand(OnLoadRecipe));        private DelegateCommand<object> _ControlValveCommand;        public DelegateCommand<object> ControlValveCommand =>            _ControlValveCommand ?? (_ControlValveCommand = new DelegateCommand<object>(OnControlValve));        private DelegateCommand<object> _RunRecipeCommand;        public DelegateCommand<object> RunRecipeCommand =>            _RunRecipeCommand ?? (_RunRecipeCommand = new DelegateCommand<object>(OnRunRecipe));        private DelegateCommand _SetChillerTempCommand;        public DelegateCommand SetChillerTempCommand =>            _SetChillerTempCommand ?? (_SetChillerTempCommand = new DelegateCommand(OnSetChillerTemp));        private DelegateCommand _OnOffChillerCommand;        public DelegateCommand OnOffChillerCommand =>            _OnOffChillerCommand ?? (_OnOffChillerCommand = new DelegateCommand(OnOffChiller));        private DelegateCommand<object> _HeaterCommand;        public DelegateCommand<object> HeaterCommand =>            _HeaterCommand ?? (_HeaterCommand = new DelegateCommand<object>(OnHeater));        private DelegateCommand _EndStepCommand;        public DelegateCommand EndStepCommand =>            _EndStepCommand ?? (_EndStepCommand = new DelegateCommand(OnEndStep));        private DelegateCommand _OnlineCommand;        public DelegateCommand OnlineCommand =>            _OnlineCommand ?? (_OnlineCommand = new DelegateCommand(OnOnline));        private DelegateCommand _OfflineCommand;        public DelegateCommand OfflineCommand =>            _OfflineCommand ?? (_OfflineCommand = new DelegateCommand(OnOffline));        private DelegateCommand<object> _AbortRecipeCommnad;        public DelegateCommand<object> AbortRecipeCommnad =>            _AbortRecipeCommnad ?? (_AbortRecipeCommnad = new DelegateCommand<object>(OnAbortRecipe));        #endregion        #region 构造函数        public OverVenusSEViewModel()        {            m_RtDataKeys = new List<string>();            m_IsATM = true;            ModuleName = "PMA";            CurrentModuleRecipes = GetFilesNames(Path.Combine(QueryDataClient.Instance.Service.GetData("GetRTPath").ToString(), "Recipes", ModuleName, "Process")).ToList();            HeIsPressureMode = true;            DispatcherTimer timer = new DispatcherTimer();            timer.Interval = TimeSpan.FromSeconds(0.5);            timer.Tick += timer_Tick;            timer.Start();        }        #endregion        #region 命令方法        private void OnControlValve(object obj)        {            CommonValveControl commonValveControl = (CommonValveControl)obj;            if (commonValveControl.IsCanEdit == true)            {                InvokeClient.Instance.Service.DoOperation($"{ModuleName}.ControlValve", commonValveControl.Tag.ToString(), !commonValveControl.Status);            }        }        private void OnPMInit()        {            InvokeClient.Instance.Service.DoOperation($"{ModuleName}.Home");        }        private async void OnGas()        {            await Task.Run(async () =>            {                InvokeClient.Instance.Service.DoOperation($"{ModuleName}.MfcGas1.SetPoint", MFC1SetPoint);                InvokeClient.Instance.Service.DoOperation($"{ModuleName}.MfcGas2.SetPoint", MFC2SetPoint);                InvokeClient.Instance.Service.DoOperation($"{ModuleName}.MfcGas3.SetPoint", MFC3SetPoint);                InvokeClient.Instance.Service.DoOperation($"{ModuleName}.MfcGas4.SetPoint", MFC4SetPoint);                InvokeClient.Instance.Service.DoOperation($"{ModuleName}.MfcGas5.SetPoint", MFC5SetPoint);                InvokeClient.Instance.Service.DoOperation($"{ModuleName}.MfcGas6.SetPoint", MFC6SetPoint);                InvokeClient.Instance.Service.DoOperation($"{ModuleName}.MfcGas7.SetPoint", MFC7SetPoint);                InvokeClient.Instance.Service.DoOperation($"{ModuleName}.MfcGas8.SetPoint", MFC8SetPoint);                InvokeClient.Instance.Service.DoOperation($"{ModuleName}.MfcGas9.SetPoint", MFC9SetPoint);                InvokeClient.Instance.Service.DoOperation($"{ModuleName}.MfcGas10.SetPoint", MFC10SetPoint);                InvokeClient.Instance.Service.DoOperation($"{ModuleName}.MfcGas11.SetPoint", MFC11SetPoint);                InvokeClient.Instance.Service.DoOperation($"{ModuleName}.MfcGas12.SetPoint", MFC12SetPoint);                await Task.Delay(1000);                object[] mfc = new object[12];                string[] mfcSetPoint = new string[12];                mfc[0] = MFC1Data.SetPoint;                mfc[1] = MFC2Data.SetPoint;                mfc[2] = MFC3Data.SetPoint;                mfc[3] = MFC4Data.SetPoint;                mfc[4] = MFC5Data.SetPoint;                mfc[5] = MFC6Data.SetPoint;                mfc[6] = MFC7Data.SetPoint;                mfc[7] = MFC8Data.SetPoint;                mfc[8] = MFC9Data.SetPoint;                mfc[9] = MFC10Data.SetPoint;                mfc[10] = MFC11Data.SetPoint;                mfc[11] = MFC12Data.SetPoint;                InvokeClient.Instance.Service.DoOperation($"{ModuleName}.{RtOperation.GasFlow}", mfc);            });        }        private void OnHe()        {            if (PVHe1ValveIsOpen == true)            {                InvokeClient.Instance.Service.DoOperation($"{ModuleName}.SetBacksideHeFlow", 0.0d);                InvokeClient.Instance.Service.DoOperation($"{ModuleName}.SetBacksideHePressure", 0);                InvokeClient.Instance.Service.DoOperation($"{ModuleName}.ControlValve", (int)ValveType.PVHe3, false);                InvokeClient.Instance.Service.DoOperation($"{ModuleName}.ControlValve", (int)ValveType.HeISO, false);            }            else            {                if (HeIsPressureMode)                {                    InvokeClient.Instance.Service.DoOperation($"{ModuleName}.SetBacksideHePressure", HeGasSetpoint / 50 * 8000);                }                else                {                    InvokeClient.Instance.Service.DoOperation($"{ModuleName}.SetBacksideHeFlow", HeGasSetpoint / 50 * 8000);                }                InvokeClient.Instance.Service.DoOperation($"{ModuleName}.ControlValve", (int)ValveType.PVHe3, true);                InvokeClient.Instance.Service.DoOperation($"{ModuleName}.ControlValve", (int)ValveType.HeISO, true);            }        }        private void OnRf()        {            if (PMCurrentState == PMState.RfPowering)            {                InvokeClient.Instance.Service.DoOperation($"{ModuleName}.{RtOperation.Abort}");            }            else            {                InvokeClient.Instance.Service.DoOperation($"{ModuleName}.{RtOperation.RfPower}");            }        }        private void OnPurge()        {            //if (RtDataValues[$"{ModuleName}.FsmState"].ToString() ==PMState.Purge.ToString())            //if (PMCurrentState == PMState.Purging || N2SetPoint<=0)            //{            //    InvokeClient.Instance.Service.DoOperation($"{ModuleName}.MfcN2.SetPoint", 0);            //    await Task.Delay(1000);            //    //InvokeClient.Instance.Service.DoOperation($"{ModuleName}.StopPurge");            //    InvokeClient.Instance.Service.DoOperation($"{ModuleName}.{RtOperation.Abort}");            //}            //else            //{            //    InvokeClient.Instance.Service.DoOperation($"{ModuleName}.MfcN2.SetPoint", N2SetPoint);            //    await Task.Delay(1000);            //    InvokeClient.Instance.Service.DoOperation($"{ModuleName}.Purge");            //}            if (PMCurrentState == PMState.Purging)            {                //InvokeClient.Instance.Service.DoOperation($"{ModuleName}.MfcN2.SetPoint", 0);                //await Task.Delay(1000);                ////InvokeClient.Instance.Service.DoOperation($"{ModuleName}.StopPurge");                InvokeClient.Instance.Service.DoOperation($"{ModuleName}.{RtOperation.Abort}");            }            else            {                //InvokeClient.Instance.Service.DoOperation($"{ModuleName}.MfcN2.SetPoint", N2SetPoint);                //await Task.Delay(1000);                InvokeClient.Instance.Service.DoOperation($"{ModuleName}.Purge");            }        }        private void OnVent()        {            //if (RtDataValues[$"{ModuleName}.FsmState"].ToString()==PMState.Venting.ToString())            if (PMCurrentState == PMState.Venting)            {                //InvokeClient.Instance.Service.DoOperation($"{ModuleName}.StopVent");                InvokeClient.Instance.Service.DoOperation($"{ModuleName}.{RtOperation.Abort}");            }            else            {                InvokeClient.Instance.Service.DoOperation($"{ModuleName}.Vent");            }        }        private void OnPump()        {            //if (RtDataValues[$"{ModuleName}.FsmState"].ToString() == PMState.Pumping.ToString())            if (PMCurrentState == PMState.Pumping)            {                InvokeClient.Instance.Service.DoOperation($"{ModuleName}.{RtOperation.Abort}");                return;            }            //if (PMCurrentState == PMState.pum)            //{            //    InvokeClient.Instance.Service.DoOperation($"{ModuleName}.StopPump");            //    return;            //}            //string BasePressureSetPoint= RtConfigValues[$"{ModuleName}.Pump.PumpBasePressure"].ToString(); ;            //{            //    get { return RtConfigValues[$"{ModuleName}.Pump.PumpBasePressure"].ToString(); }            //}            //string PumpLimitSetPoint= RtConfigValues[$"{ModuleName}.Pump.PumpTimeLimit"].ToString();            //{            //    get { return RtConfigValues[$"{ModuleName}.Pump.PumpTimeLimit"].ToString(); }            //}            string BasePressureSetPoint = QueryDataClient.Instance.Service.GetConfig($"{ModuleName}.Pump.PumpBasePressure").ToString();            string PumpLimitSetPoint = QueryDataClient.Instance.Service.GetConfig($"{ModuleName}.Pump.PumpTimeLimit").ToString();            // 设置底压            double basePressure = string.IsNullOrEmpty(BasePressureSetPoint) ? 0 : Convert.ToDouble(BasePressureSetPoint);            if (basePressure <= 0.01 || basePressure >= 1000)            {                MessageBox.Show($"基准压力设定值 {basePressure} 无效,应该在0到1000毫托之间");                return;            }            double pumpLimit = string.IsNullOrEmpty(PumpLimitSetPoint) ? 0 : Convert.ToDouble(PumpLimitSetPoint);            if (pumpLimit <= 0.01 || pumpLimit >= 1200)            {                MessageBox.Show($"抽气时间应该在0到1200之间,当前设定值{pumpLimit}");                return;            }            InvokeClient.Instance.Service.DoOperation("System.SetConfig", $"{ModuleName}.Pump.PumpBasePressure", basePressure.ToString());            InvokeClient.Instance.Service.DoOperation("System.SetConfig", $"{ModuleName}.Pump.PumpTimeLimit", pumpLimit.ToString());            InvokeClient.Instance.Service.DoOperation($"{ModuleName}.Pump");        }        private void OnOpenPump()        {            //if (RtDataValues[$"{ModuleName}.FsmState"].ToString() == "LaunchingPump")            if (PMCurrentState == PMState.LaunchingPump)            {                InvokeClient.Instance.Service.DoOperation($"{ModuleName}.{RtOperation.Abort}");                return;            }            //if (PumpIsOpen == true)            //{            //    return;            //}            InvokeClient.Instance.Service.DoOperation($"{ModuleName}.StartPump");        }        private void OnClosePump()        {            InvokeClient.Instance.Service.DoOperation($"{ModuleName}.ClosePump");        }        private void OnOpenTurboPump()        {            //TurboIsOpen = true;            //if (RtDataValues[$"{ModuleName}.FsmState"].ToString() == "LaunchingTurbo")            if (PMCurrentState == PMState.LaunchingTurboPump)            {                InvokeClient.Instance.Service.DoOperation($"{ModuleName}.{RtOperation.Abort}");                return;            }            InvokeClient.Instance.Service.DoOperation($"{ModuleName}.StartTurboPump");        }        private void OnCloseTurboPump()        {            InvokeClient.Instance.Service.DoOperation($"{ModuleName}.CloseTurboPump");        }        private void OnOpenPendulumValve()        {            InvokeClient.Instance.Service.DoOperation($"{ModuleName}.TurnPendulumValve", true);        }        private void OnClosePendulumValve()        {            InvokeClient.Instance.Service.DoOperation($"{ModuleName}.TurnPendulumValve", false);        }        private void OnPinUpDown(object upDown)        {            InvokeClient.Instance.Service.DoOperation($"{ModuleName}.SetLiftPin", Convert.ToBoolean(upDown));        }        private async void OnSetSRf()        {            if (SRFData.IsRfOn == true)            {                InvokeClient.Instance.Service.DoOperation($"{ModuleName}.SetSRf", SRFFwdPowerSetpoint, false);            }            else            {                if (GasIsFlowing == true)                {                    InvokeClient.Instance.Service.DoOperation($"{ModuleName}.{VenusDevice.Match}.{AITRfOperation.SetMatchPosition}", SRFMatchC1, SRFMatchC2);                    InvokeClient.Instance.Service.DoOperation($"{ModuleName}.SetSRf", SRFFwdPowerSetpoint, true);                    InvokeClient.Instance.Service.DoOperation($"{ModuleName}.{VenusDevice.BiasMatch}.{AITRfOperation.SetMatchProcessMode}", "Auto");                }            }        }        private async void OnSetBRf()        {            if (BRFData.IsRfOn == true)            {                InvokeClient.Instance.Service.DoOperation($"{ModuleName}.SetBRf", BRFFwdPowerSetpoint, false);            }            else            {                if (GasIsFlowing == true)                {                    InvokeClient.Instance.Service.DoOperation($"{ModuleName}.{VenusDevice.BiasMatch}.{AITRfOperation.SetMatchPosition}", BRFMatchC1, BRFMatchC2);                    InvokeClient.Instance.Service.DoOperation($"{ModuleName}.SetBRf", BRFFwdPowerSetpoint, true);                    InvokeClient.Instance.Service.DoOperation($"{ModuleName}.{VenusDevice.BiasMatch}.{AITRfOperation.SetMatchProcessMode}", "Auto");                }            }        }        private void OnPMAbort()        {            InvokeClient.Instance.Service.DoOperation($"{ModuleName}.Abort");        }        private void OnOpenButterflyValveView()        {            var _mainWindow = Application.Current.Windows.Cast<Window>().FirstOrDefault(window => window is Window) as Window;            butterflyValveMessageBox = new ButterflyValveView(ModuleName.ToString());            butterflyValveMessageBox.WindowStartupLocation = WindowStartupLocation.Manual;            butterflyValveMessageBox.Left = 700;            butterflyValveMessageBox.Top = 600;            butterflyValveMessageBox.Show();            butterflyValveMessageBox.Owner = _mainWindow;        }        private void OnLoadRecipe()        {            CurrentModuleRecipes = GetFilesNames(Path.Combine(QueryDataClient.Instance.Service.GetData("GetRTPath").ToString(), "Recipes", ModuleName, "Process")).ToList();        }        private void OnHV()        {            if (ESCHVData.IsOn == true)            {                InvokeClient.Instance.Service.DoOperation($"{ModuleName}.SetESCHVIsOn", false);            }            else            {                InvokeClient.Instance.Service.DoOperation($"{ModuleName}.SetESCHV", ESCVoltage);                //await Task.Run(async () =>                //{                //    //InvokeClient.Instance.Service.DoOperation($"{ModuleName}.SetESCHVIsOn", true);                //    //await Task.Delay(1000);                //});            }        }        private void OnHVSet()        {            InvokeClient.Instance.Service.DoOperation($"{ModuleName}.SetESCHV", ESCVoltage);        }        private void OnRunRecipe(object obj)        {            string recipeName = SelectedRecipe;            if (recipeName == null)            {                return;            }            ClearData();            var recipePath = Path.Combine(QueryDataClient.Instance.Service.GetData("GetRTPath").ToString(), "Recipes", ModuleName, "Process", recipeName + ".rcp");            CurrentRecipe = Recipe.Load(File.ReadAllText(recipePath));            InvokeClient.Instance.Service.DoOperation($"{ModuleName}.{RtOperation.RunRecipe}", recipeName, ModuleManager.ModuleInfos[ModuleName].WaferManager.Wafers[0].WaferID, "Process");        }        private void OnSetChillerTemp()        {            var value = (QueryDataClient.Instance.Service.GetConfig($"{ModuleName}.Chiller.ChillerTemperatureOffset").ToString());            float x;            float.TryParse(value, out x);            InvokeClient.Instance.Service.DoOperation($"{ModuleName}.HeatChiller", ChillerType.Chiller.ToString(), ChillerTempSetpoint, x);        }        private void OnOffChiller()        {            InvokeClient.Instance.Service.DoOperation($"{ModuleName}.OnOffChiller", ChillerType.Chiller.ToString(), !ChillerIsOn);        }        private void OnHeater(object obj)        {            if (IsAutoMode == true)            {                return;            }            AITHeaterData heaterData = obj as AITHeaterData;            var _mainWindow = Application.Current.Windows.Cast<Window>().FirstOrDefault(window => window is Window) as Window;            heaterView = new HeaterView(heaterData, ModuleName);            heaterView.WindowStartupLocation = WindowStartupLocation.CenterScreen;            heaterView.Owner = _mainWindow;            heaterView.Show();        }        private void OnEndStep()        {            if (CurrentRecipeResult?.RecipeStepNumber != null && CurrentRecipeResult?.RecipeStepNumber != CurrentRecipeResult?.RecipeStepCount)            {                InvokeClient.Instance.Service.DoOperation($"{ModuleName}.ManualEndStep");            }            else if (CurrentRecipeResult?.RecipeStepNumber != null && CurrentRecipeResult?.RecipeStepNumber == CurrentRecipeResult?.RecipeStepCount)            {                InvokeClient.Instance.Service.DoOperation($"{ModuleName}.Abort");            }        }        private void OnOnline()        {            InvokeClient.Instance.Service.DoOperation($"{ModuleName}.{RtOperation.Online}");        }        private void OnOffline()        {            InvokeClient.Instance.Service.DoOperation($"{ModuleName}.{RtOperation.Offline}");        }        private async void OnAbortRecipe(object obj)        {            if (PMCurrentState != PMState.Processing)            {                return;            }            switch (obj.ToString())            {                case "0":                    InvokeClient.Instance.Service.DoOperation($"{ModuleName}.Abort");                    break;                case "1":                    InvokeClient.Instance.Service.DoOperation($"{ModuleName}.Abort");                    await Task.Delay(1000);                    if (CurrentRecipe.Header.DechuckRecipe != "")                    {                        InvokeClient.Instance.Service.DoOperation($"{ModuleName}.{RtOperation.RunRecipe}", CurrentRecipe.Header.DechuckRecipe, ModuleManager.ModuleInfos[ModuleName].WaferManager.Wafers[0].WaferID, RecipeType.DeChuck.ToString());                    }                    break;                case "2":                    InvokeClient.Instance.Service.DoOperation($"{ModuleName}.Abort");                    await Task.Delay(1000);                    if (CurrentRecipe.Header.DechuckRecipe != "")                    {                        InvokeClient.Instance.Service.DoOperation($"{ModuleName}.{RtOperation.RunRecipe}", CurrentRecipe.Header.DechuckRecipe, ModuleManager.ModuleInfos[ModuleName].WaferManager.Wafers[0].WaferID, RecipeType.DeChuck.ToString());                    }                    await Task.Delay(3000);                    while (PMCurrentState == PMState.Processing)                    {                        await Task.Delay(500);                    }                    InvokeClient.Instance.Service.DoOperation("ReturnWafer", ModuleName, 0);                    break;            }        }        #endregion        #region 私有方法        private void ClearData()        {            ESCVoltage = 0;            SRFFwdPowerSetpoint = 0;            SRFMatchC1 = 0;            SRFMatchC2 = 0;            BRFFwdPowerSetpoint = 0;            BRFMatchC1 = 0;            BRFMatchC2 = 0;            HeGasSetpoint = 0;            MFC1SetPoint = 0;            MFC2SetPoint = 0;            MFC3SetPoint = 0;            MFC4SetPoint = 0;            MFC5SetPoint = 0;            MFC6SetPoint = 0;            MFC7SetPoint = 0;            MFC8SetPoint = 0;            MFC9SetPoint = 0;            MFC10SetPoint = 0;            MFC11SetPoint = 0;            MFC12SetPoint = 0;        }        private IEnumerable<string> GetFilesNames(string path)        {            if (Directory.Exists(path))            {                return Directory.GetFiles(path, "*.rcp")?          .Select(Path.GetFileNameWithoutExtension);            }            else            {                return new List<string>();            }        }        void timer_Tick(object sender, EventArgs e)        {            try            {                RtDataValues = QueryDataClient.Instance.Service.PollData(m_RtDataKeys);                if (RtDataValues == null)                {                    return;                }                Valve9Visible = (bool)QueryDataClient.Instance.Service.GetConfig($"{ModuleName}.MfcGas9.Enable");                Valve10Visible = (bool)QueryDataClient.Instance.Service.GetConfig($"{ModuleName}.MfcGas10.Enable");                Valve11Visible = (bool)QueryDataClient.Instance.Service.GetConfig($"{ModuleName}.MfcGas11.Enable");                Valve12Visible = (bool)QueryDataClient.Instance.Service.GetConfig($"{ModuleName}.MfcGas12.Enable");                TurboN2FlowSetPoint = Convert.ToInt32(QueryDataClient.Instance.Service.GetConfig($"{ModuleName}.TurboN2FlowSetPoint"));                PVN21ValveIsOpen = CommonFunction.GetValue<bool>(RtDataValues, $"{ModuleName}.ValvePVN21.IsOpen");                GasFinalValveIsOpen = CommonFunction.GetValue<bool>(RtDataValues, $"{ModuleName}.ValveGasFinal.IsOpen");                PV11ValveIsOpen = CommonFunction.GetValue<bool>(RtDataValues, $"{ModuleName}.ValvePV11.IsOpen");                PV12ValveIsOpen = CommonFunction.GetValue<bool>(RtDataValues, $"{ModuleName}.ValvePV12.IsOpen");                PV21ValveIsOpen = CommonFunction.GetValue<bool>(RtDataValues, $"{ModuleName}.ValvePV21.IsOpen");                PV22ValveIsOpen = CommonFunction.GetValue<bool>(RtDataValues, $"{ModuleName}.ValvePV22.IsOpen");                PV31ValveIsOpen = CommonFunction.GetValue<bool>(RtDataValues, $"{ModuleName}.ValvePV31.IsOpen");                PV32ValveIsOpen = CommonFunction.GetValue<bool>(RtDataValues, $"{ModuleName}.ValvePV32.IsOpen");                PV41ValveIsOpen = CommonFunction.GetValue<bool>(RtDataValues, $"{ModuleName}.ValvePV41.IsOpen");                PV42ValveIsOpen = CommonFunction.GetValue<bool>(RtDataValues, $"{ModuleName}.ValvePV42.IsOpen");                PV51ValveIsOpen = CommonFunction.GetValue<bool>(RtDataValues, $"{ModuleName}.ValvePV51.IsOpen");                PV52ValveIsOpen = CommonFunction.GetValue<bool>(RtDataValues, $"{ModuleName}.ValvePV52.IsOpen");                PV61ValveIsOpen = CommonFunction.GetValue<bool>(RtDataValues, $"{ModuleName}.ValvePV61.IsOpen");                PV62ValveIsOpen = CommonFunction.GetValue<bool>(RtDataValues, $"{ModuleName}.ValvePV62.IsOpen");                PV71ValveIsOpen = CommonFunction.GetValue<bool>(RtDataValues, $"{ModuleName}.ValvePV71.IsOpen");                PV72ValveIsOpen = CommonFunction.GetValue<bool>(RtDataValues, $"{ModuleName}.ValvePV72.IsOpen");                PV81ValveIsOpen = CommonFunction.GetValue<bool>(RtDataValues, $"{ModuleName}.ValvePV81.IsOpen");                PV82ValveIsOpen = CommonFunction.GetValue<bool>(RtDataValues, $"{ModuleName}.ValvePV82.IsOpen");                PV91ValveIsOpen = CommonFunction.GetValue<bool>(RtDataValues, $"{ModuleName}.ValvePV91.IsOpen");                PV92ValveIsOpen = CommonFunction.GetValue<bool>(RtDataValues, $"{ModuleName}.ValvePV92.IsOpen");                PVA1ValveIsOpen = CommonFunction.GetValue<bool>(RtDataValues, $"{ModuleName}.ValvePVA1.IsOpen");                PVA2ValveIsOpen = CommonFunction.GetValue<bool>(RtDataValues, $"{ModuleName}.ValvePVA2.IsOpen");                PVB1ValveIsOpen = CommonFunction.GetValue<bool>(RtDataValues, $"{ModuleName}.ValvePVB1.IsOpen");                PVB2ValveIsOpen = CommonFunction.GetValue<bool>(RtDataValues, $"{ModuleName}.ValvePVB2.IsOpen");                PVC1ValveIsOpen = CommonFunction.GetValue<bool>(RtDataValues, $"{ModuleName}.ValvePVC1.IsOpen");                PVC2ValveIsOpen = CommonFunction.GetValue<bool>(RtDataValues, $"{ModuleName}.ValvePVC2.IsOpen");                MFC1ValveIsOpen = CommonFunction.GetValue<bool>(RtDataValues, $"{ModuleName}.ValveMfc1.IsOpen");                MFC2ValveIsOpen = CommonFunction.GetValue<bool>(RtDataValues, $"{ModuleName}.ValveMfc2.IsOpen");                MFC3ValveIsOpen = CommonFunction.GetValue<bool>(RtDataValues, $"{ModuleName}.ValveMfc3.IsOpen");                MFC4ValveIsOpen = CommonFunction.GetValue<bool>(RtDataValues, $"{ModuleName}.ValveMfc4.IsOpen");                MFC5ValveIsOpen = CommonFunction.GetValue<bool>(RtDataValues, $"{ModuleName}.ValveMfc5.IsOpen");                MFC6ValveIsOpen = CommonFunction.GetValue<bool>(RtDataValues, $"{ModuleName}.ValveMfc6.IsOpen");                MFC7ValveIsOpen = CommonFunction.GetValue<bool>(RtDataValues, $"{ModuleName}.ValveMfc7.IsOpen");                MFC8ValveIsOpen = CommonFunction.GetValue<bool>(RtDataValues, $"{ModuleName}.ValveMfc8.IsOpen");                MFC9ValveIsOpen = CommonFunction.GetValue<bool>(RtDataValues, $"{ModuleName}.ValveMfc9.IsOpen");                MFC10ValveIsOpen = CommonFunction.GetValue<bool>(RtDataValues, $"{ModuleName}.ValveMfc10.IsOpen");                MFC11ValveIsOpen = CommonFunction.GetValue<bool>(RtDataValues, $"{ModuleName}.ValveMfc11.IsOpen");                MFC12ValveIsOpen = CommonFunction.GetValue<bool>(RtDataValues, $"{ModuleName}.ValveMfc12.IsOpen");                N2ValveIsOpen = CommonFunction.GetValue<bool>(RtDataValues, $"{ModuleName}.ValveN2.IsOpen");                SoftPumpValveIsOpen = CommonFunction.GetValue<bool>(RtDataValues, $"{ModuleName}.ValveSoftPump.IsOpen");                FastPumpValveIsOpen = CommonFunction.GetValue<bool>(RtDataValues, $"{ModuleName}.ValveFastPump.IsOpen");                GuageValveIsOpen = CommonFunction.GetValue<bool>(RtDataValues, $"{ModuleName}.ValveGuage.IsOpen");                PVHe1ValveIsOpen = CommonFunction.GetValue<bool>(RtDataValues, $"{ModuleName}.ValvePVHe1.IsOpen");                PVHe2ValveIsOpen = CommonFunction.GetValue<bool>(RtDataValues, $"{ModuleName}.ValvePVHe2.IsOpen");                PVN21ValveIsOpen = CommonFunction.GetValue<bool>(RtDataValues, $"{ModuleName}.ValvePVN21.IsOpen");                PVN22ValveIsOpen = CommonFunction.GetValue<bool>(RtDataValues, $"{ModuleName}.ValvePVN22.IsOpen");                TurboPumpPumpingValveIsOpen = CommonFunction.GetValue<bool>(RtDataValues, $"{ModuleName}.ValveTurboPumpPumping.IsOpen");                TurboPumpPurgeValveIsOpen = CommonFunction.GetValue<bool>(RtDataValues, $"{ModuleName}.ValveTurboPumpPurge.IsOpen");                PVHe3ValveIsOpen = CommonFunction.GetValue<bool>(RtDataValues, $"{ModuleName}.ValvePVHe3.IsOpen");                HeISOValveIsOpen = CommonFunction.GetValue<bool>(RtDataValues, $"{ModuleName}.ValveHeISO.IsOpen");                MainPurgeValveIsOpen = CommonFunction.GetValue<bool>(RtDataValues, $"{ModuleName}.ValveMainPurge.IsOpen");                SecondPurgeValveIsOpen = CommonFunction.GetValue<bool>(RtDataValues, $"{ModuleName}.ValveSecondPurge.IsOpen");                PV14ValveIsOpen = CommonFunction.GetValue<bool>(RtDataValues, $"{ModuleName}.ValvePV14.IsOpen");                PumpIsOpen = CommonFunction.GetValue<bool>(RtDataValues, $"{ModuleName}.PumpIsRunning");                TurboIsOpen = CommonFunction.GetValue<bool>(RtDataValues, $"{ModuleName}.TurboPumpIsRunning");                LiftPinIsUp = CommonFunction.GetValue<bool>(RtDataValues, $"{ModuleName}.LiftPinIsUp");                IsSlitDoorClosed = CommonFunction.GetValue<bool>(RtDataValues, $"{ModuleName}.IsSlitDoorClosed");                IsLidClosed = CommonFunction.GetValue<bool>(RtDataValues, $"{ModuleName}.IsLidClosed");                PendulumValvePosition = CommonFunction.GetValue<float>(RtDataValues, $"{ModuleName}.GetPVPosition");                TurboPumpRotationalSpeed = Convert.ToInt32(RtDataValues[$"{ModuleName}.TurboPumpRotationalSpeed"].ToString());                PositionValue = -((int)((PendulumValvePosition) * 0.09));                PMCurrentState = (PMState)Enum.Parse(typeof(PMState), RtDataValues[$"{ModuleName}.FsmState"].ToString());                GasIsFlowing = PMCurrentState == PMState.GasFlowing;                IsProcessing = PMCurrentState == PMState.Processing;                MFC1Data = CommonFunction.GetValue<AITMfcData>(RtDataValues, $"{ModuleName}.MfcGas1");                MFC2Data = CommonFunction.GetValue<AITMfcData>(RtDataValues, $"{ModuleName}.MfcGas2");                MFC3Data = CommonFunction.GetValue<AITMfcData>(RtDataValues, $"{ModuleName}.MfcGas3");                MFC4Data = CommonFunction.GetValue<AITMfcData>(RtDataValues, $"{ModuleName}.MfcGas4");                MFC5Data = CommonFunction.GetValue<AITMfcData>(RtDataValues, $"{ModuleName}.MfcGas5");                MFC6Data = CommonFunction.GetValue<AITMfcData>(RtDataValues, $"{ModuleName}.MfcGas6");                MFC7Data = CommonFunction.GetValue<AITMfcData>(RtDataValues, $"{ModuleName}.MfcGas7");                MFC8Data = CommonFunction.GetValue<AITMfcData>(RtDataValues, $"{ModuleName}.MfcGas8");                MFC9Data = CommonFunction.GetValue<AITMfcData>(RtDataValues, $"{ModuleName}.MfcGas9");                MFC10Data = CommonFunction.GetValue<AITMfcData>(RtDataValues, $"{ModuleName}.MfcGas10");                MFC11Data = CommonFunction.GetValue<AITMfcData>(RtDataValues, $"{ModuleName}.MfcGas11");                MFC12Data = CommonFunction.GetValue<AITMfcData>(RtDataValues, $"{ModuleName}.MfcGas12");                MFCHeData = CommonFunction.GetValue<AITMfcData>(RtDataValues, $"{ModuleName}.MfcHe");                MFCN2Data = CommonFunction.GetValue<AITMfcData>(RtDataValues, $"{ModuleName}.MfcN2");                SRFData = CommonFunction.GetValue<AITRfData>(RtDataValues, $"{ModuleName}.{VenusDevice.Rf}.DeviceData");                BRFData = CommonFunction.GetValue<AITRfData>(RtDataValues, $"{ModuleName}.{VenusDevice.BiasRf}.DeviceData");                PendulumValveData = CommonFunction.GetValue<AITPendulumValveData>(RtDataValues, $"{ModuleName}.{VenusDevice.PendulumValve}.DeviceData");                ESCHVData = CommonFunction.GetValue<AITHVData>(RtDataValues, $"{ModuleName}.{VenusDevice.ESCHV}.DeviceData");                ValveHeaterData = (AITHeaterData)RtDataValues[$"{ModuleName}.ValveHeater.DeviceData"];                ForelineHeaterData = (AITHeaterData)RtDataValues[$"{ModuleName}.ForelineHeater.DeviceData"];                WallHeaterData = (AITHeaterData)RtDataValues[$"{ModuleName}.WallHeater.DeviceData"];                ChamberPressure = CommonFunction.GetValue<float>(RtDataValues, $"{ModuleName}.ChamberPressure");                ProcessPressure = CommonFunction.GetValue<float>(RtDataValues, $"{ModuleName}.ProcessPressure");                ForelinePressure = float.Parse(RtDataValues[$"{ModuleName}.ForelinePressure"].ToString());                ESCHePressure = float.Parse(RtDataValues[$"{ModuleName}.ESCHePressure"].ToString());                ChillerTemperature = float.Parse(RtDataValues[$"{ModuleName}.Chiller.Temp"].ToString());                HVTemperature = float.Parse(RtDataValues[$"{ModuleName}.{VenusDevice.ESCHV}.Temp"].ToString());                ChillerIsOn = CommonFunction.GetValue<bool>(RtDataValues, $"{ModuleName}.Chiller.IsOn");                SourceRFFanInterlock = CommonFunction.GetValue<bool>(RtDataValues, $"{ModuleName}.SourceRFFanInterlock");                IsWLK = CommonFunction.GetValue<bool>(RtDataValues, $"{ModuleName}.IsWLK");                IsWaterFlowOk = CommonFunction.GetValue<bool>(RtDataValues, $"{ModuleName}.IsWaterFlowOk");                IsTurboPumpInterlock = CommonFunction.GetValue<bool>(RtDataValues, $"{ModuleName}.IsTurboPumpInterlock");                IsCDAOK = CommonFunction.GetValue<bool>(RtDataValues, $"{ModuleName}.IsCDA_OK");                SensorGasBoxDoor = CommonFunction.GetValue<bool>(RtDataValues, $"{ModuleName}.GasBoxDoorSW.Value");                SensorGasBoxPressure = CommonFunction.GetValue<bool>(RtDataValues, $"{ModuleName}.GasBoxPressureSW.Value");                IsATM = CommonFunction.GetValue<bool>(RtDataValues, $"{ModuleName}.IsATM");                IsVAC = CommonFunction.GetValue<bool>(RtDataValues, $"{ModuleName}.IsVAC");                ESCHVOutputVoltage = CommonFunction.GetValue<int>(RtDataValues, $"{ModuleName}.ESCHV.OutputVoltage");                MatchC1 = CommonFunction.GetValue<float>(RtDataValues, $"{ModuleName}.{VenusDevice.Match}.C1");                MatchC2 = CommonFunction.GetValue<float>(RtDataValues, $"{ModuleName}.{VenusDevice.Match}.C2");                BiasMatchC1 = CommonFunction.GetValue<float>(RtDataValues, $"{ModuleName}.{VenusDevice.BiasMatch}.C1");                BiasMatchC2 = CommonFunction.GetValue<float>(RtDataValues, $"{ModuleName}.{VenusDevice.BiasMatch}.C2");                TurboPumpWaterFlowSwitch = CommonFunction.GetValue<bool>(RtDataValues, $"{ModuleName}.TurboPumpWaterFlowSwitch.Value");                IsTurboPumpAtSpeed = CommonFunction.GetValue<bool>(RtDataValues, $"{ModuleName}.IsTurboPumpAtSpeed");                IsHasWafer = CommonFunction.GetValue<bool>(RtDataValues, $"{ModuleName}.HasWafer");                WaferID = IsHasWafer ? ModuleManager.ModuleInfos[ModuleName].WaferManager.Wafers[0].SourceName : "";                if (PMCurrentState == PMState.Processing || PMCurrentState == PMState.Clean)                {                    CurrentRecipeResult = CommonFunction.GetValue<RecipeResult>(RtDataValues, $"{ModuleName}.CurrentRecipeResult");                    if (CurrentRecipeResult.RecipeStepNumber != null && CurrentRecipeResult.RecipeStepNumber != currentRecipeNumber)                    {                        var recipePath = Path.Combine(QueryDataClient.Instance.Service.GetData("GetRTPath").ToString(), "Recipes", ModuleName, CurrentRecipe.Header.Type.ToString(), CurrentRecipeResult.RecipeName + ".rcp");                        CurrentRecipe = Recipe.Load(File.ReadAllText(recipePath));                        CurrentRecipeStep = CurrentRecipe.Steps[Convert.ToInt32(CurrentRecipeResult.RecipeStepNumber) - 1];                    }                    currentRecipeNumber = CurrentRecipeResult.RecipeStepNumber;                }                else                {                    CurrentRecipeResult = null;                    CurrentRecipeStep = null;                }                if (Math.Abs(100 - ProcessPressure) > 1 && ProcessPressure < 100)                {                    ChamberPressureFeedBack = ProcessPressure;                }                else                {                    ChamberPressureFeedBack = ChamberPressure;                }            }            catch (Exception ex)            {                LOG.WriteExeption(ex.Message, ex);            }        }        public void addDataKeys()        {            m_RtDataKeys.Clear();            m_RtDataKeys.Add($"{ModuleName}.MfcGas1");            m_RtDataKeys.Add($"{ModuleName}.MfcGas2");            m_RtDataKeys.Add($"{ModuleName}.MfcGas3");            m_RtDataKeys.Add($"{ModuleName}.MfcGas4");            m_RtDataKeys.Add($"{ModuleName}.MfcGas5");            m_RtDataKeys.Add($"{ModuleName}.MfcGas6");            m_RtDataKeys.Add($"{ModuleName}.MfcGas7");            m_RtDataKeys.Add($"{ModuleName}.MfcGas8");            m_RtDataKeys.Add($"{ModuleName}.MfcGas9");            m_RtDataKeys.Add($"{ModuleName}.MfcGas10");            m_RtDataKeys.Add($"{ModuleName}.MfcGas11");            m_RtDataKeys.Add($"{ModuleName}.MfcGas12");            m_RtDataKeys.Add($"{ModuleName}.MfcHe");            m_RtDataKeys.Add($"{ModuleName}.MfcN2");            m_RtDataKeys.Add($"{ModuleName}.ForelinePressure");            m_RtDataKeys.Add($"{ModuleName}.ChamberPressure");            m_RtDataKeys.Add($"{ModuleName}.ProcessPressure");            //m_RtDataKeys.Add($"{ModuleName}.ChamberPressure");            m_RtDataKeys.Add($"{ModuleName}.ESCHePressure");            m_RtDataKeys.Add($"{ModuleName}.IsATM");            m_RtDataKeys.Add($"{ModuleName}.IsVAC");            m_RtDataKeys.Add($"{ModuleName}.LiftPinIsUp");            m_RtDataKeys.Add($"{ModuleName}.LiftPinIsDown");            m_RtDataKeys.Add($"{ModuleName}.ValvePVN21.IsOpen");            m_RtDataKeys.Add($"{ModuleName}.ValvePVN22.IsOpen");            m_RtDataKeys.Add($"{ModuleName}.ValvePV11.IsOpen");            m_RtDataKeys.Add($"{ModuleName}.ValvePV12.IsOpen");            m_RtDataKeys.Add($"{ModuleName}.ValvePV21.IsOpen");            m_RtDataKeys.Add($"{ModuleName}.ValvePV22.IsOpen");            m_RtDataKeys.Add($"{ModuleName}.ValvePV31.IsOpen");            m_RtDataKeys.Add($"{ModuleName}.ValvePV32.IsOpen");            m_RtDataKeys.Add($"{ModuleName}.ValvePV41.IsOpen");            m_RtDataKeys.Add($"{ModuleName}.ValvePV42.IsOpen");            m_RtDataKeys.Add($"{ModuleName}.ValvePV51.IsOpen");            m_RtDataKeys.Add($"{ModuleName}.ValvePV52.IsOpen");            m_RtDataKeys.Add($"{ModuleName}.ValvePV61.IsOpen");            m_RtDataKeys.Add($"{ModuleName}.ValvePV62.IsOpen");            m_RtDataKeys.Add($"{ModuleName}.ValvePV71.IsOpen");            m_RtDataKeys.Add($"{ModuleName}.ValvePV72.IsOpen");            m_RtDataKeys.Add($"{ModuleName}.ValvePV81.IsOpen");            m_RtDataKeys.Add($"{ModuleName}.ValvePV82.IsOpen");            m_RtDataKeys.Add($"{ModuleName}.ValvePV91.IsOpen");            m_RtDataKeys.Add($"{ModuleName}.ValvePV92.IsOpen");            m_RtDataKeys.Add($"{ModuleName}.ValvePVA1.IsOpen");            m_RtDataKeys.Add($"{ModuleName}.ValvePVA2.IsOpen");            m_RtDataKeys.Add($"{ModuleName}.ValvePVB1.IsOpen");            m_RtDataKeys.Add($"{ModuleName}.ValvePVB2.IsOpen");            m_RtDataKeys.Add($"{ModuleName}.ValvePVC1.IsOpen");            m_RtDataKeys.Add($"{ModuleName}.ValvePVC2.IsOpen");            m_RtDataKeys.Add($"{ModuleName}.ValveMfc1.IsOpen");            m_RtDataKeys.Add($"{ModuleName}.ValveMfc2.IsOpen");            m_RtDataKeys.Add($"{ModuleName}.ValveMfc3.IsOpen");            m_RtDataKeys.Add($"{ModuleName}.ValveMfc4.IsOpen");            m_RtDataKeys.Add($"{ModuleName}.ValveMfc5.IsOpen");            m_RtDataKeys.Add($"{ModuleName}.ValveMfc6.IsOpen");            m_RtDataKeys.Add($"{ModuleName}.ValveMfc7.IsOpen");            m_RtDataKeys.Add($"{ModuleName}.ValveMfc8.IsOpen");            m_RtDataKeys.Add($"{ModuleName}.ValveMfc9.IsOpen");            m_RtDataKeys.Add($"{ModuleName}.ValveMfc10.IsOpen");            m_RtDataKeys.Add($"{ModuleName}.ValveMfc11.IsOpen");            m_RtDataKeys.Add($"{ModuleName}.ValveMfc12.IsOpen");            m_RtDataKeys.Add($"{ModuleName}.ValveGasFinal.IsOpen");            m_RtDataKeys.Add($"{ModuleName}.ValveSoftPump.IsOpen");            m_RtDataKeys.Add($"{ModuleName}.ValveFastPump.IsOpen");            m_RtDataKeys.Add($"{ModuleName}.ValveN2.IsOpen");            m_RtDataKeys.Add($"{ModuleName}.ValvePVHe1.IsOpen");            m_RtDataKeys.Add($"{ModuleName}.ValvePVHe2.IsOpen");            m_RtDataKeys.Add($"{ModuleName}.ValveTurboPumpPumping.IsOpen");            m_RtDataKeys.Add($"{ModuleName}.ValveTurboPumpPurge.IsOpen");            m_RtDataKeys.Add($"{ModuleName}.ValvePVN21.IsOpen");            m_RtDataKeys.Add($"{ModuleName}.ValvePVN22.IsOpen");            m_RtDataKeys.Add($"{ModuleName}.ValveGuage.IsOpen");            m_RtDataKeys.Add($"{ModuleName}.ValvePVHe3.IsOpen");            m_RtDataKeys.Add($"{ModuleName}.ValveHeISO.IsOpen");            m_RtDataKeys.Add($"{ModuleName}.ValveMainPurge.IsOpen");            m_RtDataKeys.Add($"{ModuleName}.ValveSecondPurge.IsOpen");            m_RtDataKeys.Add($"{ModuleName}.ValvePV14.IsOpen");            m_RtDataKeys.Add($"{ModuleName}.TurboPumpIsRunning");            m_RtDataKeys.Add($"{ModuleName}.PumpIsRunning");            m_RtDataKeys.Add($"{ModuleName}.IsSlitDoorClosed");            m_RtDataKeys.Add($"{ModuleName}.IsLidClosed");            m_RtDataKeys.Add($"{ModuleName}.{VenusDevice.Rf}.DeviceData");            m_RtDataKeys.Add($"{ModuleName}.{VenusDevice.BiasRf}.DeviceData");            m_RtDataKeys.Add($"{ModuleName}.{VenusDevice.Match}.C1");            m_RtDataKeys.Add($"{ModuleName}.{VenusDevice.Match}.C2");            // m_RtDataKeys.Add($"{ModuleName}.{VenusDevice.Match}.WorkMode");            m_RtDataKeys.Add($"{ModuleName}.{VenusDevice.BiasMatch}.C1");            m_RtDataKeys.Add($"{ModuleName}.{VenusDevice.BiasMatch}.C2");            m_RtDataKeys.Add($"{ModuleName}.{VenusDevice.PendulumValve}.DeviceData");            m_RtDataKeys.Add($"{ModuleName}.{VenusDevice.ESCHV}.DeviceData");            m_RtDataKeys.Add($"{ModuleName}.TurboPumpRotationalSpeed");            m_RtDataKeys.Add($"{ModuleName}.GetPVPosition");            m_RtDataKeys.Add($"{ModuleName}.Chiller.Temp");            m_RtDataKeys.Add($"{ModuleName}.{VenusDevice.ESCHV}.Temp");            //m_RtDataKeys.Add($"{ModuleName}.ESCHV.OutputVoltage");            //m_RtDataKeys.Add($"{ModuleName}.ESCHV.IsOn");            m_RtDataKeys.Add($"{ModuleName}.IsWaterFlowOk");            m_RtDataKeys.Add($"{ModuleName}.IsWLK");            m_RtDataKeys.Add($"{ModuleName}.IsCDA_OK");            m_RtDataKeys.Add($"{ModuleName}.SourceRFFanInterlock");            m_RtDataKeys.Add($"{ModuleName}.IsTurboPumpInterlock");            m_RtDataKeys.Add($"{ModuleName}.GasBoxDoorSW.Value");            m_RtDataKeys.Add($"{ModuleName}.GasBoxPressureSW.Value");            //m_RtDataKeys.Add($"{ModuleName}.WallTempFeedBack");            m_RtDataKeys.Add($"{ModuleName}.Chiller.IsOn");            m_RtDataKeys.Add($"{ModuleName}.ValveHeater.DeviceData");            m_RtDataKeys.Add($"{ModuleName}.ForelineHeater.DeviceData");            m_RtDataKeys.Add($"{ModuleName}.WallHeater.DeviceData");            m_RtDataKeys.Add($"{ModuleName}.FsmState");            m_RtDataKeys.Add($"{ModuleName}.IsTurboPumpAtSpeed");            m_RtDataKeys.Add($"{ModuleName}.TurboPumpWaterFlowSwitch.Value");            m_RtDataKeys.Add($"{ModuleName}.HasWafer");            m_RtDataKeys.Add($"{ModuleName}.CurrentRecipeResult");        }        #endregion    }}
 |