using Aitex.Core.Common.DeviceData; using MECF.Framework.Common.DataCenter; using MECF.Framework.Common.OperationCenter; using Prism.Commands; using Prism.Mvvm; using System; using System.Collections.Generic; using System.Windows; using System.Windows.Threading; using Venus_Core; using Venus_MainPages.Views; using System.Linq; using System.Threading.Tasks; using System.IO; using Venus_Themes.CustomControls; using Venus_MainPages.Unity; using MECF.Framework.Common.CommonData.DeviceData; using Path = System.IO.Path; using System.Windows.Controls; using Aitex.Core.RT.Log; using OpenSEMI.ClientBase; using MECF.Framework.Common.Equipment; namespace Venus_MainPages.ViewModels { internal class OverKepler2200BViewModel : BindableBase { #region 私有字段 private double m_TurboN2FlowSetPoint; private List m_CurrentModuleRecipes = new List(); private bool m_PVN21ValveIsOpen; private bool m_PVN22ValveIsOpen; private bool m_N2ValveIsOpen; private bool m_O2ValveIsOpen; 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_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_GasFinalValveIsOpen; private bool m_SoftPumpValveIsOpen; private bool m_FastPumpValveIsOpen; //private bool m_PVHe1ValveIsOpen; //private bool m_PVHe2ValveIsOpen; private bool m_TurboPumpPumpingValveIsOpen; private bool m_TurboPumpPurgeValveIsOpen; private bool m_GuageValveIsOpen; private bool m_PenningGaugeValveIsOpen; private bool m_PendulumValveIsOpen; private bool m_PurgeValveIsOpen; private bool m_N2Purge1ValveIsOpen; private bool m_N2Purge2ValveIsOpen; //private double m_HeGasSetpoint; //private int m_HePressureSetpoint; private float m_SRFFwdPowerSetpoint; //private float m_BRFFwdPowerSetpoint; private float m_SRFMatchC1SetPoint; private float m_SRFMatchC2SetPoint; //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_N2SetPoint; private double m_RFBoxC1Setpoint; 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_MFCHeData; private AITMfcData m_MFCN2Data; private AITMatchData m_RFBoxData; private AITHeaterData m_PendulumHeaterData; private AITRfData m_SRFData; //private AITRfData m_BRFData; private AITPendulumValveData m_PendulumValveData; //private AITHVData m_ESCHVData; private PMState m_PMCurrentState; private bool m_SourceRFMatchInterlock; 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_SensorN2PurgePressure; private bool m_SensorPN2PurgePressure; private bool m_PumpIsOpen; private bool m_TurboIsOpen; private bool m_IsATM; private bool m_IsVAC; private List m_RtDataKeys; private Dictionary 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 int m_SelectedRecipeIndex = -1; private ComboBoxItem m_SelectedRecipeType; //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_PenningPressure; //private float m_ESCHePressure; ButterflyValveView butterflyValveMessageBox; HeaterView heaterView; private int m_TurboPumpRotationalSpeed; //private bool m_LiftPinIsUp; private bool m_IsSlitDoorClosed = true; private bool m_IsLidClosed = true; //private float m_MatchC1; //private float m_MatchC2; //private string m_MatchWorkMode; private AITMatchData m_MatchData; //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; private AITHighTemperatureHeaterData m_HighTemperatureHeaterData; private ComboBoxItem m_SelectedPosition; private int m_HighTemperatureHeaterTemperatureSetpoint; private float m_HighTemperatureHeaterRatioSetpoint; private PressureType m_PressureType; private bool m_IsInclude; DispatcherTimer timer; private bool m_MFC1IsEnable; private bool m_MFC2IsEnable; private bool m_MFC3IsEnable; private bool m_MFC4IsEnable; private bool m_MFC5IsEnable; private bool m_MFC6IsEnable; private bool m_MFC7IsEnable; private bool m_MFC8IsEnable; private WaferInfo m_PMWafer; private bool m_PVHeaterIsEnbale; //private bool m_IsUpdateChamber; //private bool m_IsUpdateChamber; private ChamberInfo m_ChamberInfo; private bool m_IsEnablePumpSwitch = false; private bool m_HeaterIsAutoRatio; #endregion #region 属性 public bool HeaterIsAutoRatio { get { return m_HeaterIsAutoRatio; } set { SetProperty(ref m_HeaterIsAutoRatio, value); } } public bool IsEnablePumpSwitch { get { return m_IsEnablePumpSwitch; } set { SetProperty(ref m_IsEnablePumpSwitch, value); } } public ChamberInfo ChamberInfo { get { return m_ChamberInfo; } set { SetProperty(ref m_ChamberInfo, value); } } //public bool IsUpdateChamber //{ // get { return m_IsUpdateChamber; } // set { SetProperty(ref m_IsUpdateChamber, value); } //} public bool MFC1IsEnable { get { return m_MFC1IsEnable; } set { SetProperty(ref m_MFC1IsEnable, value); } } public bool MFC2IsEnable { get { return m_MFC2IsEnable; } set { SetProperty(ref m_MFC2IsEnable, value); } } public bool MFC3IsEnable { get { return m_MFC3IsEnable; } set { SetProperty(ref m_MFC3IsEnable, value); } } public bool MFC4IsEnable { get { return m_MFC4IsEnable; } set { SetProperty(ref m_MFC4IsEnable, value); } } public bool MFC5IsEnable { get { return m_MFC5IsEnable; } set { SetProperty(ref m_MFC5IsEnable, value); } } public bool MFC6IsEnable { get { return m_MFC6IsEnable; } set { SetProperty(ref m_MFC6IsEnable, value); } } public bool MFC7IsEnable { get { return m_MFC7IsEnable; } set { SetProperty(ref m_MFC7IsEnable, value); } } public bool MFC8IsEnable { get { return m_MFC8IsEnable; } set { SetProperty(ref m_MFC8IsEnable, value); } } public bool IsInclude { get { return m_IsInclude; } set { SetProperty(ref m_IsInclude, value); } } public PressureType PressureType { get { return m_PressureType; } set { SetProperty(ref m_PressureType, 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 List 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 IsHasWafer { get { return m_IsHasWafer; } set { SetProperty(ref m_IsHasWafer, value); } } public AITMatchData MatchData { get { return m_MatchData; } set { SetProperty(ref m_MatchData, 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 float PenningPressure { get { return m_PenningPressure; } set { SetProperty(ref m_PenningPressure, value); } } public bool SourceRFMatchInterlock { get { return m_SourceRFMatchInterlock; } set { SetProperty(ref m_SourceRFMatchInterlock, 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 SensorN2PurgePressure { get { return m_SensorN2PurgePressure; } set { SetProperty(ref m_SensorN2PurgePressure, value); } } public bool SensorPN2PurgePressure { get { return m_SensorPN2PurgePressure; } set { SetProperty(ref m_SensorPN2PurgePressure, 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 N2SetPoint { get { return m_N2SetPoint; } set { SetProperty(ref m_N2SetPoint, value); } } public double RFBoxC1Setpoint { get { return m_RFBoxC1Setpoint; } set { SetProperty(ref m_RFBoxC1Setpoint, 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 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 AITMatchData RFBoxData { get { return m_RFBoxData; } set { SetProperty(ref m_RFBoxData, 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 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 O2ValveIsOpen { get { return m_O2ValveIsOpen; } set { SetProperty(ref m_O2ValveIsOpen, 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 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 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 TurboPumpPumpingValveIsOpen { get { return m_TurboPumpPumpingValveIsOpen; } set { SetProperty(ref m_TurboPumpPumpingValveIsOpen, value); } } public bool TurboPumpPurgeValveIsOpen { get { return m_TurboPumpPurgeValveIsOpen; } set { if (value != m_TurboPumpPurgeValveIsOpen) { if (value == true) { var setpoint = Convert.ToInt32(QueryDataClient.Instance.Service.GetConfig($"{ModuleName}.TurboN2FlowSetPoint")); InvokeClient.Instance.Service.DoOperation($"{ModuleName}.MfcN2.SetPoint", setpoint); } else { InvokeClient.Instance.Service.DoOperation($"{ModuleName}.MfcN2.SetPoint", 0); } } 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); } } public bool PenningGaugeValveIsOpen { get { return m_PenningGaugeValveIsOpen; } set { SetProperty(ref m_PenningGaugeValveIsOpen, value); } } #endregion public Dictionary 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 PurgeValveIsOpen { get { return m_PurgeValveIsOpen; } set { SetProperty(ref m_PurgeValveIsOpen, value); } } public bool N2Purge1ValveIsOpen { get { return m_N2Purge1ValveIsOpen; } set { SetProperty(ref m_N2Purge1ValveIsOpen, value); } } public bool N2Purge2ValveIsOpen { get { return m_N2Purge2ValveIsOpen; } set { SetProperty(ref m_N2Purge2ValveIsOpen, 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 SRFMatchC1SetPoint { get { return m_SRFMatchC1SetPoint; } set { SetProperty(ref m_SRFMatchC1SetPoint, value); } } public float SRFMatchC2SetPoint { get { return m_SRFMatchC2SetPoint; } set { SetProperty(ref m_SRFMatchC2SetPoint, value); } } //public string MatchWorkMode //{ // get { return m_MatchWorkMode; } // set // { // SetProperty(ref m_MatchWorkMode, 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 int SelectedRecipeIndex { get { return m_SelectedRecipeIndex; } set { SetProperty(ref m_SelectedRecipeIndex, value); } } public ComboBoxItem SelectedRecipeType { get { return m_SelectedRecipeType; } set { SetProperty(ref m_SelectedRecipeType, 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); } } public AITHighTemperatureHeaterData HighTemperatureHeaterData { get { return m_HighTemperatureHeaterData; } set { SetProperty(ref m_HighTemperatureHeaterData, value); } } public ComboBoxItem SelectedPosition { get { return m_SelectedPosition; } set { SetProperty(ref m_SelectedPosition, value); } } public int HighTemperatureHeaterTemperatureSetpoint { get { return m_HighTemperatureHeaterTemperatureSetpoint; } set { SetProperty(ref m_HighTemperatureHeaterTemperatureSetpoint, value); } } public float HighTemperatureHeaterRatioSetpoint { get { return m_HighTemperatureHeaterRatioSetpoint; } set { SetProperty(ref m_HighTemperatureHeaterRatioSetpoint, value); } } public AITHeaterData PendulumHeaterData { get { return m_PendulumHeaterData; } set { SetProperty(ref m_PendulumHeaterData, value); } } public WaferInfo PMWafer { get { return m_PMWafer; } set { SetProperty(ref m_PMWafer, value); } } public bool PVHeaterIsEnbale { get { return m_PVHeaterIsEnbale; } set { SetProperty(ref m_PVHeaterIsEnbale, 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 _PinUpDownCommand; //public DelegateCommand PinUpDownCommand => // _PinUpDownCommand ?? (_PinUpDownCommand = new DelegateCommand(OnPinUpDown)); //private DelegateCommand _LidUpDownCommand; //public DelegateCommand LidUpDownCommand => // _LidUpDownCommand ?? (_LidUpDownCommand = new DelegateCommand(OnLidUpDown)); 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 _SwitchTypeCommand; public DelegateCommand SwitchTypeCommand => _SwitchTypeCommand ?? (_SwitchTypeCommand = new DelegateCommand(OnSwitchType)); private DelegateCommand _ControlValveCommand; public DelegateCommand ControlValveCommand => _ControlValveCommand ?? (_ControlValveCommand = new DelegateCommand(OnControlValve)); private DelegateCommand _RunRecipeCommand; public DelegateCommand RunRecipeCommand => _RunRecipeCommand ?? (_RunRecipeCommand = new DelegateCommand(OnRunRecipe)); private DelegateCommand _SetChillerTempCommand; public DelegateCommand SetChillerTempCommand => _SetChillerTempCommand ?? (_SetChillerTempCommand = new DelegateCommand(OnSetChillerTemp)); private DelegateCommand _SetHeaterRatioCommand; public DelegateCommand SetHeaterRatioCommand => _SetHeaterRatioCommand ?? (_SetHeaterRatioCommand = new DelegateCommand(OnSetHeaterRatio)); //private DelegateCommand _OnOffChillerCommand; //public DelegateCommand OnOffChillerCommand => // _OnOffChillerCommand ?? (_OnOffChillerCommand = new DelegateCommand(OnOffChiller)); private DelegateCommand _HeaterCommand; public DelegateCommand HeaterCommand => _HeaterCommand ?? (_HeaterCommand = new DelegateCommand(OnHeater)); private DelegateCommand _EndStepCommand; public DelegateCommand EndStepCommand => _EndStepCommand ?? (_EndStepCommand = new DelegateCommand(OnEndStep)); private DelegateCommand _GotoPositionCommand; public DelegateCommand GotoPositionCommand => _GotoPositionCommand ?? (_GotoPositionCommand = new DelegateCommand(OnGotoPosition)); private DelegateCommand _SwitchHighTemperatureHeaterCommand; public DelegateCommand SwitchHighTemperatureHeaterCommand => _SwitchHighTemperatureHeaterCommand ?? (_SwitchHighTemperatureHeaterCommand = new DelegateCommand(OnSwitchHighTemperatureHeater)); private DelegateCommand _ResetHighTemperatureHeaterLiftCommand; public DelegateCommand ResetHighTemperatureHeaterLiftCommand => _ResetHighTemperatureHeaterLiftCommand ?? (_ResetHighTemperatureHeaterLiftCommand = new DelegateCommand(OnResetHighTemperatureHeaterLift)); private DelegateCommand _ResetHighTemperatureHeaterCommand; public DelegateCommand ResetHighTemperatureHeaterCommand => _ResetHighTemperatureHeaterCommand ?? (_ResetHighTemperatureHeaterCommand = new DelegateCommand(OnResetHighTemperatureHeater)); private DelegateCommand _AbortRecipeCommnad; public DelegateCommand AbortRecipeCommnad => _AbortRecipeCommnad ?? (_AbortRecipeCommnad = new DelegateCommand(OnAbortRecipe)); private DelegateCommand _SetRfBoxC1Command; public DelegateCommand SetRfBoxC1Command => _SetRfBoxC1Command ?? (_SetRfBoxC1Command = new DelegateCommand(OnSetRfBoxC1)); private DelegateCommand _IncludeCommand; public DelegateCommand IncludeCommand => _IncludeCommand ?? (_IncludeCommand = new DelegateCommand(OnInclude)); private DelegateCommand _SetAutoRatioCommand; public DelegateCommand SetAutoRatioCommand => _SetAutoRatioCommand ?? (_SetAutoRatioCommand = new DelegateCommand(OnSetAutoRatio)); private DelegateCommand _EnableAutoRatioCommand; public DelegateCommand EnableAutoRatioCommand => _EnableAutoRatioCommand ?? (_EnableAutoRatioCommand = new DelegateCommand(OnEnableAutoRatio)); #endregion #region 构造函数 public OverKepler2200BViewModel() { m_RtDataKeys = new List(); m_IsATM = true; ModuleName = "PMA"; //CurrentModuleRecipes = GetFilesNames(Path.Combine(QueryDataClient.Instance.Service.GetData("GetRTPath").ToString(), "Recipes", ModuleName)).ToList(); timer = new DispatcherTimer(); timer.Interval = TimeSpan.FromMilliseconds(500); timer.Tick += timer_Tick; //timer.Start(); //PressureType = (PressureType)Convert.ToInt32(QueryDataClient.Instance.Service.GetConfig("System.PressureUnitType")); //m_ChamberType=(JetChamber)Enum.Parse(typeof(JetChamber), QueryDataClient.Instance.Service.GetConfig($"{ModuleName}.ChamberType").ToString()); PressureType = PressureType.Pa; } #endregion #region 命令方法 private void OnControlValve(object obj) { CommonValveControl commonValveControl = (CommonValveControl)obj; if (commonValveControl.IsCanEdit == true) { InvokeClient.Instance.Service.DoOperation($"{ModuleName}.ControlValve", Convert.ToInt32(commonValveControl.Tag.ToString()), !commonValveControl.Status); string operation = commonValveControl.Status ? "关闭" : "打开"; LOG.Info($"{ModuleName},{operation}{((ValveType)Convert.ToInt32(commonValveControl.Tag.ToString())).ToString()}阀"); } } private void OnPMInit() { InvokeClient.Instance.Service.DoOperation($"{ModuleName}.Home"); LOG.Info($"{ModuleName},初始化"); } private void OnGas() { object[] mfc = new object[8]; mfc[0] = MFC1SetPoint; mfc[1] = MFC2SetPoint; mfc[2] = MFC3SetPoint; mfc[3] = MFC4SetPoint; mfc[4] = MFC5SetPoint; mfc[5] = MFC6SetPoint; mfc[6] = MFC7SetPoint; mfc[7] = MFC8SetPoint; InvokeClient.Instance.Service.DoOperation($"{ModuleName}.{RtOperation.GasFlow}", mfc); string operation = GasIsFlowing ? "关闭" : "打开"; LOG.Info($"{ModuleName},{operation} GasFlow({mfc[0]},{mfc[1]},{mfc[2]},{mfc[3]},{mfc[4]},{mfc[5]},{mfc[6]},{mfc[7]})"); } //private void OnRf() //{ // if (PMCurrentState == PMState.RfPowering) // { // InvokeClient.Instance.Service.DoOperation($"{ModuleName}.{RtOperation.Abort}"); // LOG.Info($"{ModuleName},关闭RF"); // } // else // { // InvokeClient.Instance.Service.DoOperation($"{ModuleName}.{RtOperation.RfPower}"); // LOG.Info($"{ModuleName},开始RF,Power值{SRFFwdPowerSetpoint}"); // } //} private void OnPurge() { if (PMCurrentState == PMState.Purging) { InvokeClient.Instance.Service.DoOperation($"{ModuleName}.{RtOperation.Abort}"); LOG.Info($"{ModuleName},关闭Purge"); } else { InvokeClient.Instance.Service.DoOperation($"{ModuleName}.Purge"); LOG.Info($"{ModuleName},开始Purge"); } } private void OnVent() { if (PMCurrentState == PMState.Venting) { InvokeClient.Instance.Service.DoOperation($"{ModuleName}.{RtOperation.Abort}"); LOG.Info($"{ModuleName},关闭Vent"); } else { InvokeClient.Instance.Service.DoOperation($"{ModuleName}.Vent"); LOG.Info($"{ModuleName},开始Vent"); } } private void OnPump() { if (PMCurrentState == PMState.Pumping) { InvokeClient.Instance.Service.DoOperation($"{ModuleName}.{RtOperation.Abort}"); return; } 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"); LOG.Info($"{ModuleName},开始Pump Down"); } private void OnOpenPump() { if (PMCurrentState == PMState.LaunchingPump) { InvokeClient.Instance.Service.DoOperation($"{ModuleName}.{RtOperation.Abort}"); return; } InvokeClient.Instance.Service.DoOperation($"{ModuleName}.StartPump"); LOG.Info($"{ModuleName},打开Pump"); } private void OnClosePump() { InvokeClient.Instance.Service.DoOperation($"{ModuleName}.ClosePump"); LOG.Info($"{ModuleName},关闭Pump"); } private void OnOpenTurboPump() { if (PMCurrentState == PMState.LaunchingTurboPump) { InvokeClient.Instance.Service.DoOperation($"{ModuleName}.{RtOperation.Abort}"); return; } InvokeClient.Instance.Service.DoOperation($"{ModuleName}.StartTurboPump"); LOG.Info($"{ModuleName},打开分子泵"); } private void OnCloseTurboPump() { InvokeClient.Instance.Service.DoOperation($"{ModuleName}.CloseTurboPump"); LOG.Info($"{ModuleName},关闭分子泵"); } private void OnOpenPendulumValve() { InvokeClient.Instance.Service.DoOperation($"{ModuleName}.TurnPendulumValve", true); LOG.Info($"{ModuleName},打开钟摆阀"); } private void OnClosePendulumValve() { InvokeClient.Instance.Service.DoOperation($"{ModuleName}.TurnPendulumValve", false); LOG.Info($"{ModuleName},关闭钟摆阀"); } //private void OnLidUpDown(object upDown) //{ // if (upDown.ToString() == "Up") // { // InvokeClient.Instance.Service.DoOperation($"{ModuleName}.{VenusDevice.Lid}.{AITCylinderOperation.Open}"); // LOG.Info($"{ModuleName},打开Lid"); // } // else // { // InvokeClient.Instance.Service.DoOperation($"{ModuleName}.{VenusDevice.Lid}.{AITCylinderOperation.Close}"); // LOG.Info($"{ModuleName},关闭Lid"); // } //} private void OnSetSRf() { if (SRFData.IsRfOn == true) { InvokeClient.Instance.Service.DoOperation($"{ModuleName}.SetSRf", SRFFwdPowerSetpoint, false); LOG.Info($"{ModuleName},关闭RF"); } else { if (GasIsFlowing == true) { InvokeClient.Instance.Service.DoOperation($"{ModuleName}.{VenusDevice.Match}.{AITRfOperation.SetMatchPosition}", SRFMatchC1SetPoint, SRFMatchC2SetPoint); InvokeClient.Instance.Service.DoOperation($"{ModuleName}.SetSRf", SRFFwdPowerSetpoint, true); InvokeClient.Instance.Service.DoOperation($"{ModuleName}.{VenusDevice.Match}.{AITRfOperation.SetMatchProcessMode}", "Auto"); LOG.Info($"{ModuleName},开始RF,Power值{SRFFwdPowerSetpoint}"); } } } private void OnPMAbort() { InvokeClient.Instance.Service.DoOperation($"{ModuleName}.Abort"); LOG.Info($"{ModuleName},Abort"); } private void OnOpenButterflyValveView() { var _mainWindow = Application.Current.Windows.Cast().FirstOrDefault(window => window is Window) as Window; if (butterflyValveMessageBox == null || butterflyValveMessageBox.IsVisible == false) { butterflyValveMessageBox = new ButterflyValveView(ModuleName.ToString()); butterflyValveMessageBox.WindowStartupLocation = WindowStartupLocation.Manual; butterflyValveMessageBox.Left = 700; butterflyValveMessageBox.Top = 600; butterflyValveMessageBox.Show(); butterflyValveMessageBox.Owner = _mainWindow; } } private void OnLoadRecipe() { //string recipeName = CurrentModuleRecipes[SelectedRecipeIndex]; string recipeType = SelectedRecipeType.Content.ToString(); CurrentModuleRecipes = GetFilesNames(Path.Combine(QueryDataClient.Instance.Service.GetData("GetRTPath").ToString(), "Recipes", ModuleName, recipeType)).ToList(); } private void OnSwitchType() { SelectedRecipeIndex = -1; } private void OnRunRecipe(object obj) { if (SelectedRecipeIndex == -1) { return; } string recipeName = CurrentModuleRecipes[SelectedRecipeIndex]; string recipeType = SelectedRecipeType.Content.ToString(); ClearData(); var recipePath = Path.Combine(QueryDataClient.Instance.Service.GetData("GetRTPath").ToString(), "Recipes", ModuleName, recipeType, recipeName + ".rcp"); CurrentRecipe = Recipe.Load(File.ReadAllText(recipePath)); InvokeClient.Instance.Service.DoOperation($"{ModuleName}.{RtOperation.RunRecipe}", recipeName, ModuleManager.ModuleInfos[ModuleName].WaferManager.Wafers[0].WaferID, recipeType); LOG.Info($"{ModuleName},Run Recipe {recipeName},"); } private void OnHeater(object obj) { if (IsAutoMode == true) { return; } AITHeaterData heaterData = obj as AITHeaterData; var _mainWindow = Application.Current.Windows.Cast().FirstOrDefault(window => window is Window) as Window; if (heaterView == null || heaterView.IsVisible == false) { heaterView = new HeaterView(heaterData, ModuleName); heaterView.WindowStartupLocation = WindowStartupLocation.CenterScreen; heaterView.Owner = _mainWindow; heaterView.Show(); } } private void OnOnline() { InvokeClient.Instance.Service.DoOperation($"{ModuleName}.{RtOperation.Online}"); LOG.Info($"{ModuleName},Switch to Online"); } private void OnOffline() { InvokeClient.Instance.Service.DoOperation($"{ModuleName}.{RtOperation.Offline}"); LOG.Info($"{ModuleName},Switch to Offline"); } private void OnSetRfBoxC1() { InvokeClient.Instance.Service.DoOperation($"{ModuleName}.{VenusDevice.RFBox}.{AITRfOperation.SetMatchPositionC1}", RFBoxC1Setpoint); } private async void OnEndStep() { if (CurrentRecipeResult.RecipeStepNumber == CurrentRecipeResult.RecipeStepCount) { return; } InvokeClient.Instance.Service.DoOperation($"{ModuleName}.ManualEndStep"); LOG.Info($"{ModuleName},Manual End Step{CurrentRecipeResult.RecipeStepNumber}"); await Task.Delay(500); } private void OnGotoPosition() { InvokeClient.Instance.Service.DoOperation($"{ModuleName}.HighTemperatureHeater.GotoPosition", SelectedPosition.Content); LOG.Info($"{ModuleName},HighTemperatureHeater to {SelectedPosition.Content}"); } private void OnSwitchHighTemperatureHeater() { InvokeClient.Instance.Service.DoOperation($"{ModuleName}.HighTemperatureHeater.SwitchHighTemperatureHeater", !HighTemperatureHeaterData.HighTemperatureHeaterIsonFeedBack); LOG.Info($"{ModuleName},Set HighTemperatureHeater Temperature {!HighTemperatureHeaterData.HighTemperatureHeaterIsonFeedBack}"); } private void OnResetHighTemperatureHeaterLift() { InvokeClient.Instance.Service.DoOperation($"{ModuleName}.HighTemperatureHeater.ResetHighTemperatureHeaterLift"); LOG.Info($"{ModuleName},Reset HighTemperatureHeater Lift"); } private void OnResetHighTemperatureHeater() { InvokeClient.Instance.Service.DoOperation($"{ModuleName}.HighTemperatureHeater.ResetHighTemperatureHeater"); LOG.Info($"{ModuleName},Reset HighTemperatureHeater"); } private void OnSetChillerTemp() { InvokeClient.Instance.Service.DoOperation($"{ModuleName}.HighTemperatureHeater.SetHighTemperatureHeaterTemperature", HighTemperatureHeaterTemperatureSetpoint); LOG.Info($"{ModuleName},Set HighTemperatureHeater Temperature to {HighTemperatureHeaterTemperatureSetpoint}"); } private void OnSetHeaterRatio() { InvokeClient.Instance.Service.DoOperation($"{ModuleName}.HighTemperatureHeater.SetHighTemperatureHeaterRatio", HighTemperatureHeaterRatioSetpoint); LOG.Info($"{ModuleName},Set HighTemperatureHeater Ratio to {HighTemperatureHeaterRatioSetpoint}"); } private DelegateCommand _OnlineCommand; public DelegateCommand OnlineCommand => _OnlineCommand ?? (_OnlineCommand = new DelegateCommand(OnOnline)); private DelegateCommand _OfflineCommand; public DelegateCommand OfflineCommand => _OfflineCommand ?? (_OfflineCommand = new DelegateCommand(OnOffline)); 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"); //if (ESCHVData.IsOn == true) //{ // await Task.Delay(3000); // InvokeClient.Instance.Service.DoOperation($"{ModuleName}.SetESCHVIsOn", false); //} break; case "2": InvokeClient.Instance.Service.DoOperation($"{ModuleName}.Abort"); await Task.Delay(3000); InvokeClient.Instance.Service.DoOperation("ReturnWafer", ModuleName, 0); break; } } private void OnInclude() { if (IsInclude) { InvokeClient.Instance.Service.DoOperation($"{ModuleName}.{RtOperation.Include}"); } else { InvokeClient.Instance.Service.DoOperation($"{ModuleName}.{RtOperation.Exclude}"); } } private void OnSetAutoRatio(object moduleName) { var _mainWindow = Application.Current.Windows.Cast().FirstOrDefault(window => window is Window) as Window; AutoRatioView autoRatioView = new AutoRatioView(ModuleName,HighTemperatureHeaterData.IsAutoRatio); autoRatioView.WindowStartupLocation = WindowStartupLocation.Manual; autoRatioView.Top = 530; autoRatioView.Left = 540; autoRatioView.Owner = _mainWindow; autoRatioView.Show(); } private void OnEnableAutoRatio(object ison) { InvokeClient.Instance.Service.DoOperation("System.SetConfig", $"{ModuleName}.HighTemperatureHeater.IsEnableAutoRatio", ison); } #endregion #region 私有方法 private void ClearData() { SRFFwdPowerSetpoint = 0; SRFMatchC1SetPoint = 0; SRFMatchC2SetPoint = 0; MFC1SetPoint = 0; MFC2SetPoint = 0; MFC3SetPoint = 0; MFC4SetPoint = 0; MFC5SetPoint = 0; MFC6SetPoint = 0; MFC7SetPoint = 0; MFC8SetPoint = 0; RFBoxC1Setpoint = 0; //HighTemperatureHeaterTemperatureSetpoint = 0; //HighTemperatureHeaterRatioSetpoint = 0; } private IEnumerable GetFilesNames(string path) { if (Directory.Exists(path)) { return Directory.GetFiles(path, "*.rcp")? .Select(Path.GetFileNameWithoutExtension); } else { return new List(); } } void timer_Tick(object sender, EventArgs e) { RtDataValues = QueryDataClient.Instance.Service.PollData(m_RtDataKeys); if (RtDataValues == null || RtDataValues.Count == 0) { return; } //var N2SetPoint =Convert.ToInt32( QueryDataClient.Instance.Service.GetConfig("System.TurboN2FlowSetPoint")); //InvokeClient.Instance.Service.DoOperation($"{ModuleName}.MfcN2.SetPoint", N2SetPoint); //TurboN2FlowSetPoint = Convert.ToInt32(QueryDataClient.Instance.Service.GetConfig($"{ModuleName}.TurboN2FlowSetPoint")); PVN21ValveIsOpen = CommonFunction.GetValue(RtDataValues, $"{ModuleName}.ValvePVN21.IsOpen"); GasFinalValveIsOpen = CommonFunction.GetValue(RtDataValues, $"{ModuleName}.ValveGasFinal.IsOpen"); PV11ValveIsOpen = CommonFunction.GetValue(RtDataValues, $"{ModuleName}.ValvePV11.IsOpen"); PV12ValveIsOpen = CommonFunction.GetValue(RtDataValues, $"{ModuleName}.ValvePV12.IsOpen"); PV21ValveIsOpen = CommonFunction.GetValue(RtDataValues, $"{ModuleName}.ValvePV21.IsOpen"); PV22ValveIsOpen = CommonFunction.GetValue(RtDataValues, $"{ModuleName}.ValvePV22.IsOpen"); PV31ValveIsOpen = CommonFunction.GetValue(RtDataValues, $"{ModuleName}.ValvePV31.IsOpen"); PV32ValveIsOpen = CommonFunction.GetValue(RtDataValues, $"{ModuleName}.ValvePV32.IsOpen"); PV41ValveIsOpen = CommonFunction.GetValue(RtDataValues, $"{ModuleName}.ValvePV41.IsOpen"); PV42ValveIsOpen = CommonFunction.GetValue(RtDataValues, $"{ModuleName}.ValvePV42.IsOpen"); MFC1ValveIsOpen = CommonFunction.GetValue(RtDataValues, $"{ModuleName}.ValveMfc1.IsOpen"); MFC2ValveIsOpen = CommonFunction.GetValue(RtDataValues, $"{ModuleName}.ValveMfc2.IsOpen"); MFC3ValveIsOpen = CommonFunction.GetValue(RtDataValues, $"{ModuleName}.ValveMfc3.IsOpen"); MFC4ValveIsOpen = CommonFunction.GetValue(RtDataValues, $"{ModuleName}.ValveMfc4.IsOpen"); MFC5ValveIsOpen = CommonFunction.GetValue(RtDataValues, $"{ModuleName}.ValveMfc5.IsOpen"); MFC6ValveIsOpen = CommonFunction.GetValue(RtDataValues, $"{ModuleName}.ValveMfc6.IsOpen"); MFC7ValveIsOpen = CommonFunction.GetValue(RtDataValues, $"{ModuleName}.ValveMfc7.IsOpen"); MFC8ValveIsOpen = CommonFunction.GetValue(RtDataValues, $"{ModuleName}.ValveMfc8.IsOpen"); N2ValveIsOpen = CommonFunction.GetValue(RtDataValues, $"{ModuleName}.ValveN2.IsOpen"); O2ValveIsOpen = CommonFunction.GetValue(RtDataValues, $"{ModuleName}.ValveO2.IsOpen"); SoftPumpValveIsOpen = CommonFunction.GetValue(RtDataValues, $"{ModuleName}.ValveSoftPump.IsOpen"); FastPumpValveIsOpen = CommonFunction.GetValue(RtDataValues, $"{ModuleName}.ValveFastPump.IsOpen"); GuageValveIsOpen = CommonFunction.GetValue(RtDataValues, $"{ModuleName}.ValveGuage.IsOpen"); //PVHe1ValveIsOpen = CommonFunction.GetValue(RtDataValues, $"{ModuleName}.ValvePVHe1.IsOpen"); //PVHe2ValveIsOpen = CommonFunction.GetValue(RtDataValues, $"{ModuleName}.ValvePVHe2.IsOpen"); PVN21ValveIsOpen = CommonFunction.GetValue(RtDataValues, $"{ModuleName}.ValvePVN21.IsOpen"); PVN22ValveIsOpen = CommonFunction.GetValue(RtDataValues, $"{ModuleName}.ValvePVN22.IsOpen"); TurboPumpPumpingValveIsOpen = CommonFunction.GetValue(RtDataValues, $"{ModuleName}.ValveTurboPumpPumping.IsOpen"); TurboPumpPurgeValveIsOpen = CommonFunction.GetValue(RtDataValues, $"{ModuleName}.ValveTurboPumpPurge.IsOpen"); PurgeValveIsOpen = CommonFunction.GetValue(RtDataValues, $"{ModuleName}.ValvePurge.IsOpen"); N2Purge1ValveIsOpen = CommonFunction.GetValue(RtDataValues, $"{ModuleName}.ValveN2Purge1.IsOpen"); N2Purge2ValveIsOpen = CommonFunction.GetValue(RtDataValues, $"{ModuleName}.ValveN2Purge2.IsOpen"); PenningGaugeValveIsOpen = CommonFunction.GetValue(RtDataValues, $"{ModuleName}.ValvePenningGauge.IsOpen"); PumpIsOpen = CommonFunction.GetValue(RtDataValues, $"{ModuleName}.PumpIsRunning"); TurboIsOpen = CommonFunction.GetValue(RtDataValues, $"{ModuleName}.TurboPumpIsRunning"); //LiftPinIsUp = CommonFunction.GetValue(RtDataValues, $"{ModuleName}.LiftPinIsUp"); IsSlitDoorClosed = CommonFunction.GetValue(RtDataValues, $"TM.{ModuleName}SlitDoor.IsClosed"); IsLidClosed = CommonFunction.GetValue(RtDataValues, $"{ModuleName}.IsLidClosed"); //PendulumValvePosition = CommonFunction.GetValue(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 || PMCurrentState == PMState.Clean; MFC1Data = CommonFunction.GetValue(RtDataValues, $"{ModuleName}.MfcGas1"); MFC2Data = CommonFunction.GetValue(RtDataValues, $"{ModuleName}.MfcGas2"); MFC3Data = CommonFunction.GetValue(RtDataValues, $"{ModuleName}.MfcGas3"); MFC4Data = CommonFunction.GetValue(RtDataValues, $"{ModuleName}.MfcGas4"); MFC5Data = CommonFunction.GetValue(RtDataValues, $"{ModuleName}.MfcGas5"); MFC6Data = CommonFunction.GetValue(RtDataValues, $"{ModuleName}.MfcGas6"); MFC7Data = CommonFunction.GetValue(RtDataValues, $"{ModuleName}.MfcGas7"); MFC8Data = CommonFunction.GetValue(RtDataValues, $"{ModuleName}.MfcGas8"); //MFCHeData = CommonFunction.GetValue(RtDataValues, $"{ModuleName}.MfcHe"); MFCN2Data = CommonFunction.GetValue(RtDataValues, $"{ModuleName}.MfcN2"); SRFData = CommonFunction.GetValue(RtDataValues, $"{ModuleName}.{VenusDevice.Rf}.DeviceData"); //BRFData = CommonFunction.GetValue(RtDataValues, $"{ModuleName}.{VenusDevice.BiasRf}.DeviceData"); PendulumValveData = CommonFunction.GetValue(RtDataValues, $"{ModuleName}.{VenusDevice.PendulumValve}.DeviceData"); //ESCHVData= CommonFunction.GetValue(RtDataValues, $"{ModuleName}.{VenusDevice.ESCHV}.DeviceData"); //ValveHeaterData = (AITHeaterData)RtDataValues[$"{ModuleName}.ValveHeater.DeviceData"]; //ForelineHeaterData = (AITHeaterData)RtDataValues[$"{ModuleName}.ForelineHeater.DeviceData"]; //WallHeaterData = (AITHeaterData)RtDataValues[$"{ModuleName}.WallHeater.DeviceData"]; PendulumHeaterData = (AITHeaterData)RtDataValues[$"{ModuleName}.PendulumHeater.DeviceData"]; ChamberPressure = CommonFunction.GetValue(RtDataValues, $"{ModuleName}.ChamberPressure"); ProcessPressure = CommonFunction.GetValue(RtDataValues, $"{ModuleName}.ProcessPressure"); ForelinePressure = CommonFunction.GetValue(RtDataValues, $"{ModuleName}.ForelinePressure"); PenningPressure = CommonFunction.GetValue(RtDataValues, $"{ModuleName}.PenningPressure"); ChamberPressureFeedBack = CommonFunction.GetValue(RtDataValues, $"{ModuleName}.CalculationPressure"); //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(RtDataValues, $"{ModuleName}.Chiller.IsOn"); SourceRFMatchInterlock = CommonFunction.GetValue(RtDataValues, $"{ModuleName}.SourceRFMatchInterlock"); IsWLK = CommonFunction.GetValue(RtDataValues, $"{ModuleName}.IsWLK"); IsWaterFlowOk = CommonFunction.GetValue(RtDataValues, $"{ModuleName}.IsWaterFlowOk"); IsTurboPumpInterlock = CommonFunction.GetValue(RtDataValues, $"{ModuleName}.IsTurboPumpInterlock"); IsCDAOK = CommonFunction.GetValue(RtDataValues, $"{ModuleName}.IsCDA_OK"); SensorGasBoxDoor = CommonFunction.GetValue(RtDataValues, $"{ModuleName}.IoSensor.GasBoxDoorSW.Value"); SensorGasBoxPressure = CommonFunction.GetValue(RtDataValues, $"{ModuleName}.IoSensor.GasBoxPressureSW.Value"); SensorN2PurgePressure = CommonFunction.GetValue(RtDataValues, $"{ModuleName}.IoSensor.N2PurgePressureSwitch.Value"); SensorPN2PurgePressure = CommonFunction.GetValue(RtDataValues, $"{ModuleName}.IoSensor.PN2PurgePressureSwitch.Value"); IsATM = CommonFunction.GetValue(RtDataValues, $"{ModuleName}.IsATM"); IsVAC = CommonFunction.GetValue(RtDataValues, $"{ModuleName}.IsVAC"); //ESCHVOutputVoltage = CommonFunction.GetValue(RtDataValues, $"{ModuleName}.ESCHV.OutputVoltage"); //MatchC1 = CommonFunction.GetValue(RtDataValues, $"{ModuleName}.{VenusDevice.Match}.C1"); //MatchC2 = CommonFunction.GetValue(RtDataValues, $"{ModuleName}.{VenusDevice.Match}.C2"); //MatchWorkMode = CommonFunction.GetValue(RtDataValues, $"{ModuleName}.{VenusDevice.Match}.WorkMode"); //TurboPumpWaterFlowSwitch = CommonFunction.GetValue(RtDataValues, $"{ModuleName}.TurboPumpWaterFlowSwitch.Value"); IsTurboPumpAtSpeed = CommonFunction.GetValue(RtDataValues, $"{ModuleName}.IsTurboPumpAtSpeed"); IsHasWafer = CommonFunction.GetValue(RtDataValues, $"{ModuleName}.HasWafer"); WaferID = IsHasWafer ? ModuleManager.ModuleInfos[ModuleName].WaferManager.Wafers[0].SourceName : ""; MatchData = CommonFunction.GetValue(RtDataValues, $"{ModuleName}.{VenusDevice.Match}.DeviceData"); RFBoxData = CommonFunction.GetValue(RtDataValues, $"{ModuleName}.{VenusDevice.RFBox}.DeviceData"); CurrentRecipeResult = CommonFunction.GetValue(RtDataValues, $"{ModuleName}.CurrentRecipeResult"); //if (IsProcessing) //{ // if (CurrentRecipeResult!=null && CurrentRecipeResult.RecipeStepNumber != null && CurrentRecipeResult.RecipeStepNumber != currentRecipeNumber) // { // var recipePath = Path.Combine(QueryDataClient.Instance.Service.GetData("GetRTPath").ToString(), "Recipes", ModuleName, CurrentRecipeResult.RecipeType, CurrentRecipeResult.RecipeName + ".rcp"); // CurrentRecipe = Recipe.Load(File.ReadAllText(recipePath)); // CurrentRecipeStep = CurrentRecipe.Steps[Convert.ToInt32(CurrentRecipeResult.RecipeStepNumber) - 1]; // currentRecipeNumber = CurrentRecipeResult?.RecipeStepNumber; // } //} //if (Math.Abs(100 - ProcessPressure) > 1 && ProcessPressure < 2000) //{ // ChamberPressureFeedBack = ProcessPressure; //} //else //{ // ChamberPressureFeedBack = ChamberPressure; //} HighTemperatureHeaterData = CommonFunction.GetValue(RtDataValues, $"{ModuleName}.HighTemperatureHeater.DeviceData"); IsAutoMode = CommonFunction.GetValue(RtDataValues, $"{ModuleName}.IsOnline"); IsInclude = CommonFunction.GetValue(RtDataValues, $"{ModuleName}.IsInclude"); PMWafer = ModuleManager.ModuleInfos[$"{ModuleName}"].WaferManager.Wafers[0]; } 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}.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}.PenningPressure"); m_RtDataKeys.Add($"{ModuleName}.CalculationPressure"); //m_RtDataKeys.Add($"{ModuleName}.ESCHePressure"); m_RtDataKeys.Add($"{ModuleName}.IsATM"); m_RtDataKeys.Add($"{ModuleName}.IsVAC"); 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}.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}.ValveGasFinal.IsOpen"); m_RtDataKeys.Add($"{ModuleName}.ValveSoftPump.IsOpen"); m_RtDataKeys.Add($"{ModuleName}.ValveFastPump.IsOpen"); m_RtDataKeys.Add($"{ModuleName}.ValveN2.IsOpen"); m_RtDataKeys.Add($"{ModuleName}.ValveO2.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}.ValvePenningGauge.IsOpen"); m_RtDataKeys.Add($"{ModuleName}.ValvePurge.IsOpen"); m_RtDataKeys.Add($"{ModuleName}.ValveN2Purge1.IsOpen"); m_RtDataKeys.Add($"{ModuleName}.ValveN2Purge2.IsOpen"); m_RtDataKeys.Add($"{ModuleName}.TurboPumpIsRunning"); m_RtDataKeys.Add($"{ModuleName}.PumpIsRunning"); m_RtDataKeys.Add($"TM.{ModuleName}SlitDoor.IsClosed"); 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}.DeviceData"); m_RtDataKeys.Add($"{ModuleName}.{VenusDevice.RFBox}.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.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}.IsWaterFlowOk"); m_RtDataKeys.Add($"{ModuleName}.IsWLK"); m_RtDataKeys.Add($"{ModuleName}.IsCDA_OK"); m_RtDataKeys.Add($"{ModuleName}.SourceRFMatchInterlock"); m_RtDataKeys.Add($"{ModuleName}.IsTurboPumpInterlock"); m_RtDataKeys.Add($"{ModuleName}.IoSensor.GasBoxDoorSW.Value"); m_RtDataKeys.Add($"{ModuleName}.IoSensor.GasBoxPressureSW.Value"); m_RtDataKeys.Add($"{ModuleName}.PendulumHeater.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"); m_RtDataKeys.Add($"{ModuleName}.HighTemperatureHeater.DeviceData"); m_RtDataKeys.Add($"{ModuleName}.IsOnline"); m_RtDataKeys.Add($"{ModuleName}.IsInclude"); m_RtDataKeys.Add($"{ModuleName}.IoSensor.N2PurgePressureSwitch.Value"); m_RtDataKeys.Add($"{ModuleName}.IoSensor.PN2PurgePressureSwitch.Value"); } public void EnterExitView(bool isEnter) { if (isEnter) { RtDataValues = QueryDataClient.Instance.Service.PollData(m_RtDataKeys); bool doorisOpen = !CommonFunction.GetValue(RtDataValues, $"TM.{ModuleName}SlitDoor.IsClosed"); string position = CommonFunction.GetValue(RtDataValues, $"{ModuleName}.HighTemperatureHeater.DeviceData").HighTemperatureHeaterPositionFeedBack; ChamberInfo = new ChamberInfo(doorisOpen, position); timer_Tick(null, null); timer.Start(); MFC1IsEnable = (bool)QueryDataClient.Instance.Service.GetConfig($"{ModuleName}.MfcGas1.Enable"); MFC2IsEnable = (bool)(QueryDataClient.Instance.Service.GetConfig($"{ModuleName}.MfcGas2.Enable")); MFC3IsEnable = (bool)(QueryDataClient.Instance.Service.GetConfig($"{ModuleName}.MfcGas3.Enable")); MFC4IsEnable = (bool)(QueryDataClient.Instance.Service.GetConfig($"{ModuleName}.MfcGas4.Enable")); MFC5IsEnable = (bool)(QueryDataClient.Instance.Service.GetConfig($"{ModuleName}.MfcGas5.Enable")); MFC6IsEnable = (bool)(QueryDataClient.Instance.Service.GetConfig($"{ModuleName}.MfcGas6.Enable")); MFC7IsEnable = (bool)(QueryDataClient.Instance.Service.GetConfig($"{ModuleName}.MfcGas7.Enable")); MFC8IsEnable = (bool)(QueryDataClient.Instance.Service.GetConfig($"{ModuleName}.MfcGas8.Enable")); PVHeaterIsEnbale = (bool)(QueryDataClient.Instance.Service.GetConfig($"{ModuleName}.PendulumHeater.IsOn")); IsEnablePumpSwitch = (bool)(QueryDataClient.Instance.Service.GetConfig($"{ModuleName}.DryPump.EnableSwitch")); HighTemperatureHeaterTemperatureSetpoint = Convert.ToInt32(QueryDataClient.Instance.Service.GetConfig($"{ModuleName}.HighTemperatureHeater.Temperature")); HighTemperatureHeaterRatioSetpoint = Convert.ToSingle(QueryDataClient.Instance.Service.GetConfig($"{ModuleName}.HighTemperatureHeater.Ratio")); } else { timer.Stop(); } } #endregion } }