Browse Source

1.数据库加入Run Recipe失败数据
2.PM Leak Check/Gas Leak Check 加入显示信息数据
3.将Recipe Step默认值都设为0

lixiang 1 year ago
parent
commit
3f2b687dbc

+ 3 - 2
Venus/Framework/Common/DBCore/ProcessDataRecorder.cs

@@ -139,14 +139,15 @@ namespace MECF.Framework.Common.DBCore
             }
         }
 
-        public static void RecordPrecess(string guid, DateTime startTime, DateTime endTime, string recipeName, string waferDataGuid, string processIn, string lotID, string slotID)
+        public static void RecordPrecess(string guid, DateTime startTime, DateTime endTime, string recipeName,string processStatus, string waferDataGuid, string processIn, string lotID, string slotID)
         {
             string sql = string.Format(
-                "INSERT INTO \"process_data\"(\"guid\", \"process_begin_time\",\"process_end_time\", \"recipe_name\" , \"wafer_data_guid\", \"process_in\", \"lot_id\", \"slot_id\" )VALUES ('{0}', '{1}', '{2}', '{3}', '{4}', '{5}', '{6}','{7}' );",
+                "INSERT INTO \"process_data\"(\"guid\", \"process_begin_time\",\"process_end_time\", \"recipe_name\" ,\"process_status\", \"wafer_data_guid\", \"process_in\", \"lot_id\", \"slot_id\" )VALUES ('{0}', '{1}', '{2}', '{3}', '{4}', '{5}', '{6}','{7}','{8}' );",
                 guid,
                 startTime.ToString("yyyy/MM/dd HH:mm:ss.fff"),
                 endTime.ToString("yyyy/MM/dd HH:mm:ss.fff"),
                 recipeName,
+                processStatus,
                 waferDataGuid,
                 processIn,
                 lotID,

+ 12 - 12
Venus/Framework/Common/IOCore/IOManager.cs

@@ -591,7 +591,7 @@ namespace MECF.Framework.Common.IOCore
                 });
 
                 if (!isIgnoreSaveDB)
-                    DATA.Subscribe($"IO.{accessor.Name}", () => accessor.Value);
+                    DATA.Subscribe($"IO.{accessor.Name}", () => accessor.Value,SubscriptionAttribute.FLAG.IgnoreSaveDB);
             }
         }
 
@@ -620,7 +620,7 @@ namespace MECF.Framework.Common.IOCore
                 });
 
                 if (!isIgnoreSaveDB)
-                    DATA.Subscribe($"IO.{accessor.Name}", () => accessor.Value);
+                    DATA.Subscribe($"IO.{accessor.Name}", () => accessor.Value, SubscriptionAttribute.FLAG.IgnoreSaveDB);
             }
         }
 
@@ -654,7 +654,7 @@ namespace MECF.Framework.Common.IOCore
 
                 if (!isIgnoreSaveDB)
                 {
-                    DATA.Subscribe($"IO.{accessor.Name}", () => accessor.Value);
+                    DATA.Subscribe($"IO.{accessor.Name}", () => accessor.Value, SubscriptionAttribute.FLAG.IgnoreSaveDB);
                     DATA.Subscribe($"IO32.{accessor.Name}", () =>
                     {
                         if (accessor.Index < accessor.Buffer.Length - 1)
@@ -667,7 +667,7 @@ namespace MECF.Framework.Common.IOCore
                         {
                             return accessor.Value;
                         }
-                    });
+                    }, SubscriptionAttribute.FLAG.IgnoreSaveDB);
                 }
             }
         }
@@ -698,7 +698,7 @@ namespace MECF.Framework.Common.IOCore
 
                 if (!isIgnoreSaveDB)
                 {
-                    DATA.Subscribe($"IO.{accessor.Name}", () => accessor.Value);
+                    DATA.Subscribe($"IO.{accessor.Name}", () => accessor.Value, SubscriptionAttribute.FLAG.IgnoreSaveDB);
                     DATA.Subscribe($"IO32.{accessor.Name}", () =>
                     {
                         if (accessor.Index < accessor.Buffer.Length - 1)
@@ -711,7 +711,7 @@ namespace MECF.Framework.Common.IOCore
                         {
                             return accessor.Value;
                         }
-                    });
+                    }, SubscriptionAttribute.FLAG.IgnoreSaveDB);
                 }
             }
         }
@@ -793,7 +793,7 @@ namespace MECF.Framework.Common.IOCore
                 });
 
                 if (!isIgnoreSaveDB)
-                    DATA.Subscribe($"IO.{moduleName}", () => diAccessor.Value);
+                    DATA.Subscribe($"IO.{moduleName}", () => diAccessor.Value, SubscriptionAttribute.FLAG.IgnoreSaveDB);
             }
 
             XmlNodeList lstDo = xml.SelectNodes("IO_DEFINE/Dig_Out/DO_ITEM");
@@ -856,7 +856,7 @@ namespace MECF.Framework.Common.IOCore
                 });
 
                 if (!isIgnoreSaveDB)
-                    DATA.Subscribe($"IO.{moduleName}", () => doAccessor.Value);
+                    DATA.Subscribe($"IO.{moduleName}", () => doAccessor.Value, SubscriptionAttribute.FLAG.IgnoreSaveDB);
             }
 
             XmlNodeList lstAo = xml.SelectNodes("IO_DEFINE/Ana_Out/AO_ITEM");
@@ -920,7 +920,7 @@ namespace MECF.Framework.Common.IOCore
 
                 if (!isIgnoreSaveDB)
                 {
-                    DATA.Subscribe($"IO.{moduleName}", () => aoAccessor.Value);
+                    DATA.Subscribe($"IO.{moduleName}", () => aoAccessor.Value, SubscriptionAttribute.FLAG.IgnoreSaveDB);
                     DATA.Subscribe($"IO32.{moduleName}", () =>
                     {
                         if (aoAccessor.Index < aoAccessor.Buffer.Length-1)
@@ -934,7 +934,7 @@ namespace MECF.Framework.Common.IOCore
                             return aoAccessor.Value;
                         }
 
-                    });
+                    }, SubscriptionAttribute.FLAG.IgnoreSaveDB);
                 }
             }
 
@@ -999,7 +999,7 @@ namespace MECF.Framework.Common.IOCore
 
                 if (!isIgnoreSaveDB)
                 {
-                    DATA.Subscribe($"IO.{moduleName}", () => aiAccessor.Value);
+                    DATA.Subscribe($"IO.{moduleName}", () => aiAccessor.Value, SubscriptionAttribute.FLAG.IgnoreSaveDB);
                     DATA.Subscribe($"IO32.{moduleName}", () =>
                     {
                         if (aiAccessor.Index < aiAccessor.Buffer.Length-1)
@@ -1012,7 +1012,7 @@ namespace MECF.Framework.Common.IOCore
                         {
                             return aiAccessor.Value;
                         }
-                    });
+                    }, SubscriptionAttribute.FLAG.IgnoreSaveDB);
                 }
             }
         }

+ 63 - 77
Venus/Venus_Core/ProcessUnitDefine.cs

@@ -26,10 +26,10 @@ namespace Venus_Core
     /// </summary>
 
     public enum Suspect
-    { 
-    Home,
-    Position1,
-    Position2
+    {
+        Home,
+        Position1,
+        Position2
     }
     public enum VenusUnits
     {
@@ -58,14 +58,14 @@ namespace Venus_Core
 
         public PressureUnitMode PressureUnitMode { get; set; }
 
-        public int StartValue { get; set; } = 10;
+        public int StartValue { get; set; }
 
 
-        public int ValvePositionPreset { get; set; } = 10;
+        public int ValvePositionPreset { get; set; }
 
         public bool EnableRamp { get; set; }
-        public int HoldTime { get; set; } = 1000;
-        public int TargetValue { get; set; } = 100;
+        public int HoldTime { get; set; }
+        public int TargetValue { get; set; }
 
 
 
@@ -85,23 +85,19 @@ namespace Venus_Core
     {
         public string UnitName { get; set; } = "PressureByValveModeUnit";
         public bool EnableRamp { get; set; }
-        public int StartPosition { get; set; } = 10;
-        public int TargetPosition { get; set; } = 100;
-        public int HoldTime { get; set; }= 10000;
-
+        public int StartPosition { get; set; }
+        public int TargetPosition { get; set; }
+        public int HoldTime { get; set; }
     }
 
     public class HeaterUnit : ProcessUnitBase
     {
         public string UnitName { get; set; } = "HeaterUnit";
-
-        public int HeaterPressure { get; set; } = 10;
-        public int HeaterTemp { get; set; } = 10;
-
-        public int HeaterRatio { get; set; } = 10;
+        public int HeaterPressure { get; set; }
+        public int HeaterTemp { get; set; }
+        public int HeaterRatio { get; set; }
         public Suspect SuspectPosition { get; set; } = Suspect.Home;
-
-        public int PositionOffset { get; set; } = 1;
+        public int PositionOffset { get; set; }
 
     }
     public class TCPUnit : ProcessUnitBase
@@ -113,22 +109,20 @@ namespace Venus_Core
             set { m_UnitName = value; }
         }
 
-        public int RFPower { get; set; } = 10;
-        public int TuneCapPreset { get; set; } = 10;
-        public int LoadCapPreset { get; set; } = 10;
-        public int MaxReflectedPower { get; set; } = 100;
-
+        public int RFPower { get; set; }
+        public int TuneCapPreset { get; set; }
+        public int LoadCapPreset { get; set; }
+        public int MaxReflectedPower { get; set; }
 
         private bool m_EnableRamp;
         public bool EnableRamp
         {
             get { return m_EnableRamp;}
             set { m_EnableRamp = value; }
-        }
-        
-        public int StartPower { get; set; } = 10;
-        public int TargetPower { get; set; } = 100;
-        public int HoldTime { get; set; } = 1000;
+        }     
+        public int StartPower { get; set; }
+        public int TargetPower { get; set; }
+        public int HoldTime { get; set; }
         
 
     }
@@ -136,69 +130,64 @@ namespace Venus_Core
     public class Kepler2200RFUnit : ProcessUnitBase
     {
         public string UnitName { get; set; } = "RFUnit";
-        public int TuneCapPreset { get; set; } = 10;
-        public int LoadCapPreset { get; set; } = 10;
-         
-
-        
-
+        public int TuneCapPreset { get; set; }
+        public int LoadCapPreset { get; set; }
     }
 
     public class BiasUnit : ProcessUnitBase
     {
         public string UnitName { get; set; } = "BiasUnit";
 
-        public int BiasRFPower { get; set; } = 10;
-        public int BiasTuneCapPreset { get; set; } = 10;
-        public int BiasLoadCapPreset { get; set; } = 10;
-        public int BiasMaxReflectedPower { get; set; } = 1000;
-        public bool EnableRamp { get; set; }
-        
-        public int StartBiasRFPower { get; set; } = 10;
-        public int TargetBiasRFPower { get; set; } = 100;
-        public int BiasRFHoldTime { get; set; } = 1000;
+        public int BiasRFPower { get; set; }
+        public int BiasTuneCapPreset { get; set; }
+        public int BiasLoadCapPreset { get; set; }
+        public int BiasMaxReflectedPower { get; set; }
+        public bool EnableRamp { get; set; }       
+        public int StartBiasRFPower { get; set; }
+        public int TargetBiasRFPower { get; set; }
+        public int BiasRFHoldTime { get; set; }
        
         [JsonConverter(typeof(StringEnumConverter))]
         public GeneratorMode BiasGeneratorMode { get; set; }
-        public int PulseRateFreq { get; set; } = 10;
-        public int PulseDutyCycle { get; set; } = 10;
+        public int PulseRateFreq { get; set; }
+        public int PulseDutyCycle { get; set; }
 
     }
 
     public class GasControlUnit : ProcessUnitBase
     {
         public string UnitName { get; set; } = "GasControlUnit";
-        public int Gas1 { get; set; } = 10;
-        public int Gas2 { get; set; } = 10;
-        public int Gas3 { get; set; } = 10;
-        public int Gas4 { get; set; } = 10;
-        public int Gas5 { get; set; } = 10;
-        public int Gas6 { get; set; } = 100;
-        public int Gas7 { get; set; } = 100;
-        public int Gas8 { get; set; } = 100;
+        public int Gas1 { get; set; }
+        public int Gas2 { get; set; }
+        public int Gas3 { get; set; }
+        public int Gas4 { get; set; }
+        public int Gas5 { get; set; }
+        public int Gas6 { get; set; }
+        public int Gas7 { get; set; }
+        public int Gas8 { get; set; }
 
         public bool EnableRamp { get; set; }
-        public int Gas1Target { get; set; } = 100;
-        public int Gas2Target { get; set; }= 100;
-        public int Gas3Target { get; set; }=100;
-        public int Gas4Target { get; set; } = 100;
-        public int Gas5Target { get; set; } = 100;
-        public int Gas6Target { get; set; } = 10;
-        public int Gas7Target { get; set; } = 10;
-        public int Gas8Target { get; set; } = 10;
-        public int FlowRatie { get; set; } = 100;
+        public int Gas1Target { get; set; }
+        public int Gas2Target { get; set; }
+        public int Gas3Target { get; set; }
+        public int Gas4Target { get; set; }
+        public int Gas5Target { get; set; }
+        public int Gas6Target { get; set; }
+        public int Gas7Target { get; set; }
+        public int Gas8Target { get; set; }
+        public int FlowRatie { get; set; }
     }
 
 
     public class Kepler2200GasControlUnit : ProcessUnitBase
     {
         public string UnitName { get; set; } = "GasUnit";
-        public int Gas1 { get; set; } = 100;
-        public int Gas2 { get; set; } = 100;
-        public int Gas3 { get; set; } = 100;
-        public int Gas4 { get; set; } = 100;
-        public int Gas5 { get; set; } = 100;
-        public int Gas6 { get; set; } = 100;
+        public int Gas1 { get; set; }
+        public int Gas2 { get; set; }
+        public int Gas3 { get; set; }
+        public int Gas4 { get; set; }
+        public int Gas5 { get; set; }
+        public int Gas6 { get; set; }
     }
 
 
@@ -206,11 +195,11 @@ namespace Venus_Core
     {
         public string UnitName { get; set; } = "ESCHVUnit";
 
-        public int BacksideHelum { get; set; } = 10;
-        public int MinHeFlow { get; set; } = 10;
-        public int MaxHeFlow { get; set; } = 100;
-        public int ESCClampValtage { get; set; } = 10;
-        public int Temperature { get; set; } = 20;
+        public int BacksideHelum { get; set; }
+        public int MinHeFlow { get; set; }
+        public int MaxHeFlow { get; set; }
+        public int ESCClampValtage { get; set; }
+        public int Temperature { get; set; }
     }
 
     public class ProcessKitUnit : ProcessUnitBase
@@ -227,8 +216,5 @@ namespace Venus_Core
         }
         [JsonConverter(typeof(StringEnumConverter))]
         public MovementPosition WeprBasrPinPosition { get; set; }
-
-
- 
     }
 }

+ 42 - 0
Venus/Venus_MainPages/ViewModels/GasLeakCheckViewModel.cs

@@ -88,6 +88,9 @@ namespace Venus_MainPages.ViewModels
 
         private List<string> m_RtDataKeys=new List<string> ();
         private Dictionary<string, object> m_RtDataValues=new Dictionary<string, object> ();
+
+        private string m_currentStep;
+        public int? m_stepTime;
         #endregion
 
         #region  属性
@@ -383,6 +386,26 @@ namespace Venus_MainPages.ViewModels
             get { return m_GasIsFlowing; }
             set { SetProperty(ref m_GasIsFlowing, value); }
         }
+        public string CurrentStep
+        {
+            get { return m_currentStep; }
+            set 
+            {
+                if (value != m_currentStep)
+                {
+                    StepTime = 0;
+                }
+                SetProperty(ref m_currentStep, value); 
+            }
+        }
+        public int? StepTime
+        {
+            get { return m_stepTime; }
+            set 
+            {        
+                SetProperty(ref m_stepTime, value); 
+            }
+        }
         #endregion
         #endregion
 
@@ -562,6 +585,23 @@ namespace Venus_MainPages.ViewModels
             PMCurrentState = (PMState)Enum.Parse(typeof(PMState), RtDataValues[$"{ModuleName}.FsmState"].ToString());
 
             GasIsFlowing = (PMState)RtDataValues[$"{ModuleName}.FsmState"] == PMState.GasFlowing;
+
+            if ((PMState)RtDataValues[$"{ModuleName}.FsmState"] == PMState.GasBoxLeakCheck)
+            {
+                CurrentStep = RtDataValues[$"{ModuleName}.GasLeakCheck.Step"]?.ToString();
+                StepTime += 1;
+            }
+            else if ((PMState)RtDataValues[$"{ModuleName}.FsmState"] == PMState.LeakCheck)
+            {
+                CurrentStep = RtDataValues[$"{ModuleName}.LeakCheck.Step"]?.ToString();
+                StepTime += 1;
+            }
+            else
+            {
+                CurrentStep = "";
+                StepTime = null;
+            }
+
         }
         public void addDataKeys()
         {
@@ -606,6 +646,8 @@ namespace Venus_MainPages.ViewModels
             m_RtDataKeys.Add($"{ModuleName}.ValvePVN22.IsOpen");
             m_RtDataKeys.Add($"{ModuleName}.ValveGuage.IsOpen");
             m_RtDataKeys.Add($"{ModuleName}.FsmState");
+            m_RtDataKeys.Add($"{ModuleName}.LeakCheck.Step");
+            m_RtDataKeys.Add($"{ModuleName}.GasLeakCheck.Step");
         }
         #endregion
     }

+ 2 - 2
Venus/Venus_MainPages/Views/GasLeakCheckView.xaml

@@ -562,8 +562,8 @@
                 <CheckBox x:Name="gas7CheckBox" Grid.Row="13" Grid.Column="1" HorizontalAlignment="Center" VerticalAlignment="Center" IsEnabled="{Binding LeakCheckModeSelectedIndex}"  IsChecked="{Binding GasIsCheck[7]}"/>
                 <CheckBox x:Name="gas8CheckBox" Grid.Row="14" Grid.Column="1" HorizontalAlignment="Center" VerticalAlignment="Center" IsEnabled="{Binding LeakCheckModeSelectedIndex}"  IsChecked="{Binding GasIsCheck[8]}"/>
 
-                <TextBlock Grid.Row="15" Grid.Column="1"/>
-                <TextBlock Grid.Row="16" Grid.Column="1"/>
+                <TextBlock Grid.Row="15" Grid.Column="1" Text="{Binding CurrentStep}" Padding="2,5,0,0"/>
+                <TextBlock Grid.Row="16" Grid.Column="1" Text="{Binding StepTime}" Padding="2,5,0,0"/>
                 <TextBlock Grid.Row="17" Grid.Column="1"/>
                 
             </Grid>

+ 38 - 34
Venus/Venus_RT/Devices/JetVenusPM.cs

@@ -633,7 +633,7 @@ namespace Venus_RT.Devices
                 SetSlitDoor(false, out _);
             }
 
-            SetSlitDoor(true, out _);
+            SetSlitDoor(false, out _);
             //2023/03/08添加
             OpenValve(ValveType.PVN22, true);
             //2023/04/25临时添加
@@ -663,37 +663,38 @@ namespace Venus_RT.Devices
 
         public override bool SetSlitDoor(bool open, out string reason)
         {
-            if (open)
-            {
-                if (RouteManager.IsATMMode)
-                {
-                    if (!IsATM)
-                    {
-                        reason = $"{Module} is not ATM, can not open slit door";
-                        LOG.Write(eEvent.ERR_DEVICE_INFO, Module, reason);
-                        return false;
-                    }
-
-                    if (!IsTMATM)
-                    {
-                        reason = $"LoadLock is not ATM, can not open slit door";
-                        LOG.Write(eEvent.ERR_DEVICE_INFO, Module, reason);
-                        return false;
-                    }
-                }
-                else
-                {
-
-                    double maxPressureDifference = SC.GetValue<double>("System.PMTMMaxPressureDifference");
-                    if (Math.Abs(TMPressure - ChamberPressure) > maxPressureDifference)
-                    {
-                        reason = $"{Module} and TM pressure difference exceeds the max limit {maxPressureDifference}";
-                        LOG.Write(eEvent.ERR_DEVICE_INFO, Module, reason);
-                        return false;
-                    }
-                }
-
-            }
+            //2023/09/04注释  Venus无TM
+            //if (open)
+            //{
+            //    if (RouteManager.IsATMMode)
+            //    {
+            //        if (!IsATM)
+            //        {
+            //            reason = $"{Module} is not ATM, can not open slit door";
+            //            LOG.Write(eEvent.ERR_DEVICE_INFO, Module, reason);
+            //            return false;
+            //        }
+
+            //        if (!IsTMATM)
+            //        {
+            //            reason = $"LoadLock is not ATM, can not open slit door";
+            //            LOG.Write(eEvent.ERR_DEVICE_INFO, Module, reason);
+            //            return false;
+            //        }
+            //    }
+            //    else
+            //    {
+
+            //        double maxPressureDifference = SC.GetValue<double>("System.PMTMMaxPressureDifference");
+            //        if (Math.Abs(TMPressure - ChamberPressure) > maxPressureDifference)
+            //        {
+            //            reason = $"{Module} and TM pressure difference exceeds the max limit {maxPressureDifference}";
+            //            LOG.Write(eEvent.ERR_DEVICE_INFO, Module, reason);
+            //            return false;
+            //        }
+            //    }
+
+            //}
 
             return _slitDoor.SetCylinder(open, out reason);
         }
@@ -768,9 +769,12 @@ namespace Venus_RT.Devices
 
         public override async void HeatChiller(ChillerType chillerType, double value, double offset)
         {
+            if (!ChillerIsRunning)
+            {
+                _Chiller?.SetChillerOnOff(true);
+                await Task.Delay(1000);
+            }
             _Chiller?.SetChillerTemp((float)value, (float)offset);
-            await Task.Delay(1000);
-            _Chiller?.SetChillerOnOff(true);
         }
 
         public override void OnOffChiller(ChillerType chillerType, bool onoff)

+ 5 - 1
Venus/Venus_RT/Modules/PMs/GasBoxLeakCheckRoutine.cs

@@ -39,6 +39,8 @@ namespace Venus_RT.Modules.PMs
         PMLeakCheckResult pMLeakCheckResult;
         Stopwatch _routineTimer = new Stopwatch();
         StringBuilder  gasLines=new StringBuilder();
+        public string CurrentStep;
+
         public GasBoxLeakCheckRoutine(JetPMBase chamber) : base(chamber)
         {
             Name = "GasBox Leakcheck";
@@ -114,7 +116,8 @@ namespace Venus_RT.Modules.PMs
 
         private bool LeakCheckPumping()
         {
-            foreach(var num in _gasLineNums)
+            CurrentStep = "Check Pump";
+            foreach (var num in _gasLineNums)
             {             
                 var _MfcN2Scale = SC.GetValue<int>($"{Module}.MfcGas{num}.MfcN2Scale");
                 var _MfcScaleFactor = SC.GetValue<Double>($"{Module}.MfcGas{num}.MfcScaleFactor");
@@ -156,6 +159,7 @@ namespace Venus_RT.Modules.PMs
 
         private bool StartLeakCheck()
         {
+            CurrentStep = "Leak Check";
             _startPressure = _chamber.ChamberPressure;
             pMLeakCheckResult.StartPressure = _startPressure;
             Notify($"PM 压力开始值 {_startPressure} mt");

+ 6 - 1
Venus/Venus_RT/Modules/PMs/PMEntity.cs

@@ -623,7 +623,12 @@ namespace Venus_RT.Modules.PMs
 
 
             DATA.Subscribe($"{Module}.CurrentRecipeResult", () => _processRoutine.currentRecipeResult, SubscriptionAttribute.FLAG.IgnoreSaveDB);
-            
+
+            DATA.Subscribe($"{Module}.LeakCheck.Step",    () => _leakCheckRoutine.CurrentStep, SubscriptionAttribute.FLAG.IgnoreSaveDB);
+            DATA.Subscribe($"{Module}.GasLeakCheck.Step", () => _gasBoxLeakCheckRoutine.CurrentStep, SubscriptionAttribute.FLAG.IgnoreSaveDB);
+
+
+
 
 
 

+ 11 - 4
Venus/Venus_RT/Modules/PMs/PMLeakCheckRoutine.cs

@@ -29,6 +29,7 @@ namespace Venus_RT.Modules.PMs
         private double _endPressure = 0;
         private double _leakRate = 30.0;
         private double _leakCheckBasePressure = 1;
+        public string CurrentStep;
 
         Stopwatch _leakCheckTimer = new Stopwatch();
         PMLeakCheckResult pMLeakCheckResult;
@@ -70,9 +71,9 @@ namespace Venus_RT.Modules.PMs
         public RState Monitor()
         {
             Runner.Wait((int)LeakCheckStep.kPumpToBasePressure, PumpingToBasePressure)
-                .Run((int)LeakCheckStep.kPumpingDelay,          HOFs.WrapAction(_chamber.OpenValve, ValveType.GasFinal, false),     PumpingDelay)
-                .Run((int)LeakCheckStep.kLeakCheckDelay,        StartLeakCheck,                                                     _leakcheckHoldTime * 1000)
-                .End((int)LeakCheckStep.kEnd,                   CalcLeakCheckResult,                                                _delay_50ms);
+                .Run((int)LeakCheckStep.kPumpingDelay,          StartPumpDelay,             PumpingDelay)
+                .Run((int)LeakCheckStep.kLeakCheckDelay,        StartLeakCheck,             _leakcheckHoldTime * 1000)
+                .End((int)LeakCheckStep.kEnd,                   CalcLeakCheckResult,        _delay_50ms);
 
             return Runner.Status;
         }
@@ -107,9 +108,15 @@ namespace Venus_RT.Modules.PMs
 
             return false;
         }
-
+        private bool StartPumpDelay()
+        {
+            _chamber.OpenValve(ValveType.GasFinal, false);
+            CurrentStep = "Check Pump";
+            return true;
+        }
         private bool StartLeakCheck()
         {
+            CurrentStep = "Leak Check";
             _startPressure = _chamber.ChamberPressure;
             pMLeakCheckResult.StartPressure = _startPressure;
 

+ 6 - 4
Venus/Venus_RT/Modules/PMs/PMProcessRoutine.cs

@@ -246,14 +246,14 @@ namespace Venus_RT.Modules.PMs
             //    return true;
             //}
 
-            _needPumpDown = true;
+            //_needPumpDown = true;
             return _pumpDownRoutine.Start(BasePressure) == RState.Running;
         }
 
         private bool IsPressureReady()
         {
-            if (_needPumpDown == false)
-                return true;          
+            //if (_needPumpDown == false)
+            //    return true;          
 
             var status = _pumpDownRoutine.Monitor();
             if(status == RState.End)
@@ -357,6 +357,8 @@ namespace Venus_RT.Modules.PMs
             if(result == RState.Failed)
             {
                 UpdateWaferStatus(false);
+                ProcessDataRecorder.RecordPrecess(Guid.NewGuid().ToString(), RecipeStartTime, DateTime.Now, CurrentRunningRecipe, "Fail", "", _chamber.Name, "", "");
+
                 Runner.Stop($"Recipe:{CurrentRunningRecipe}, Step:{_currentStep + 1} Failed");
                 FaEvent.FaPostAlarm(Module.ToString(), $"Recipe:{CurrentRunningRecipe}, Step:{_currentStep + 1} Failed");
                 return true;
@@ -419,7 +421,7 @@ namespace Venus_RT.Modules.PMs
 
         
 
-            ProcessDataRecorder.RecordPrecess(Guid.NewGuid().ToString(), RecipeStartTime, DateTime.Now, CurrentRunningRecipe, "", _chamber.Name, "", "");
+            ProcessDataRecorder.RecordPrecess(Guid.NewGuid().ToString(), RecipeStartTime, DateTime.Now, CurrentRunningRecipe, "Success", "", _chamber.Name, "", "");
             return true;
         }
 

+ 1 - 1
Venus/Venus_RT/Modules/PMs/PMRoutineBase.cs

@@ -135,7 +135,7 @@ namespace Venus_RT.Modules.PMs
                 Notify($"水冷当前温度{_chamber.CoolantOutletTempFB} ℃, 大于目标 {target.ToString()} ℃");
             }
 
-            //_chamber.HeatChiller(target, offset);
+            _chamber.HeatChiller(ChillerType.Chiller,target, offset);
             Notify($"检查水冷温度值,当前温度{_chamber.CoolantOutletTempFB} ℃, 目标 {target.ToString()} ℃");
 
             return true;

+ 21 - 21
Venus/Venus_Simulator/Devices/SMCChillerMockPMB.cs

@@ -29,28 +29,28 @@ namespace Venus_Simulator.Devices
 
         protected override void ProcessUnsplitMessage(string message)
         {
-            if (string.IsNullOrEmpty(message))
-                throw new ArgumentException("Hardware command message is invalid");
+            //if (string.IsNullOrEmpty(message))
+            //    throw new ArgumentException("Hardware command message is invalid");
 
-            string[] separatingStrings = { EOF };
-            string[] msgs = message.Trim().Split(separatingStrings, System.StringSplitOptions.RemoveEmptyEntries);
-            foreach (var msg in msgs)
-            {
-                if(msg.StartsWith(":0106000B"))
-                {
-                    int temp = Convert.ToInt32(msg.Substring(9, 8), 16);
-                    Console.WriteLine($"Chiller Set Temp: {temp}");
-                    SetTemp(temp);
-                }
-                else if(msg.StartsWith(":0106000C0001"))
-                {
-                    _simPumpStatus = SMCChillerStatus.Open;
-                }
-                else if(msg.StartsWith(":0106000C0000"))
-                {
-                    _simPumpStatus = SMCChillerStatus.Close;
-                }
-            }
+            //string[] separatingStrings = { EOF };
+            //string[] msgs = message.Trim().Split(separatingStrings, System.StringSplitOptions.RemoveEmptyEntries);
+            //foreach (var msg in msgs)
+            //{
+            //    if(msg.StartsWith(":0106000B"))
+            //    {
+            //        int temp = Convert.ToInt32(msg.Substring(9, 8), 16);
+            //        Console.WriteLine($"Chiller Set Temp: {temp}");
+            //        SetTemp(temp);
+            //    }
+            //    else if(msg.StartsWith(":0106000C0001"))
+            //    {
+            //        _simPumpStatus = SMCChillerStatus.Open;
+            //    }
+            //    else if(msg.StartsWith(":0106000C0000"))
+            //    {
+            //        _simPumpStatus = SMCChillerStatus.Close;
+            //    }
+            //}
             
         }