Переглянути джерело

1.删除部分不需要插入数据库数据
2.Recipe 添加隐藏扩展功能,隐藏锁放在配置文件
3.RF/Bias RF holdtime移到RecipeHead,从step删除

lixiang 1 рік тому
батько
коміт
3f6c65223f

+ 4 - 0
Venus/Venus_Core/Attributes/IsOnlyReadAttribute.cs

@@ -9,4 +9,8 @@ namespace Venus_Core.Attributes
     public class IsOnlyReadAttribute:Attribute
     {
     }
+    public class IsCanConfigIgnore : Attribute
+    { 
+    
+    }
 }

+ 20 - 23
Venus/Venus_Core/ProcessUnitDefine.cs

@@ -4,6 +4,7 @@ using System;
 using System.Collections.Generic;
 using System.ComponentModel;
 using System.Linq;
+using System.Runtime.Serialization;
 using System.Text;
 using System.Threading.Tasks;
 using Venus_Core.Attributes;
@@ -26,10 +27,10 @@ namespace Venus_Core
     /// </summary>
 
     public enum Suspect
-    { 
-    Home,
-    Position1,
-    Position2
+    {
+        Home,
+        Position1,
+        Position2
     }
     public enum VenusUnits
     {
@@ -57,21 +58,15 @@ namespace Venus_Core
         public string UnitName { get; set; } = "PressureModeUnit";
 
         public PressureUnitMode PressureUnitMode { get; set; }
-
         public int StartValue { get; set; }
 
-
         public int ValvePositionPreset { get; set; }
-
+        [IsCanConfigIgnore]
         public bool EnableRamp { get; set; }
         public int HoldTime { get; set; }
         public int TargetValue { get; set; }
 
-
-
-
         public event PropertyChangedEventHandler PropertyChanged;
-
         public void InvokePropertyChanged(string propertyName)
         {
             if (PropertyChanged != null)
@@ -81,15 +76,15 @@ namespace Venus_Core
         }
     }
 
-    public class PressureByValveModeUnit : ProcessUnitBase
-    {
-        public string UnitName { get; set; } = "PressureByValveModeUnit";
-        public bool EnableRamp { get; set; }
-        public int StartPosition { get; set; }
-        public int TargetPosition { get; set; }
-        public int HoldTime { get; set; }
+    //public class PressureByValveModeUnit : ProcessUnitBase
+    //{
+    //    public string UnitName { get; set; } = "PressureByValveModeUnit";
+    //    public bool EnableRamp { get; set; }
+    //    public int StartPosition { get; set; }
+    //    public int TargetPosition { get; set; }
+    //    public int HoldTime { get; set; }
 
-    }
+    //}
 
     public class HeaterUnit : ProcessUnitBase
     {
@@ -118,8 +113,8 @@ namespace Venus_Core
         public int LoadCapPreset { get; set; }
         public int MaxReflectedPower { get; set; }
 
-
         private bool m_EnableRamp;
+        [IsCanConfigIgnore]
         public bool EnableRamp
         {
             get { return m_EnableRamp;}
@@ -128,7 +123,7 @@ namespace Venus_Core
         
         public int StartPower { get; set; }
         public int TargetPower { get; set; }
-        public int HoldTime { get; set; }
+        //public int HoldTime { get; set; }
         
 
     }
@@ -152,6 +147,7 @@ namespace Venus_Core
         public int BiasTuneCapPreset { get; set; }
         public int BiasLoadCapPreset { get; set; }
         public int BiasMaxReflectedPower { get; set; }
+        [IsCanConfigIgnore]
         public bool EnableRamp { get; set; }
         
         public int StartBiasRFPower { get; set; } 
@@ -177,7 +173,10 @@ namespace Venus_Core
         public int Gas7 { get; set; }
         public int Gas8 { get; set; }
 
+        [IsCanConfigIgnore]
+
         public bool EnableRamp { get; set; }
+        [System.Xml.Serialization.XmlIgnore]
         public int Gas1Target { get; set; }
         public int Gas2Target { get; set; }
         public int Gas3Target { get; set; }
@@ -189,7 +188,6 @@ namespace Venus_Core
         public int FlowRatie { get; set; }
     }
 
-
     public class Kepler2200GasControlUnit : ProcessUnitBase
     {
         public string UnitName { get; set; } = "GasUnit";
@@ -201,7 +199,6 @@ namespace Venus_Core
         public int Gas6 { get; set; }
     }
 
-
     public class ESCHVUnit : ProcessUnitBase
     {
         public string UnitName { get; set; } = "ESCHVUnit";

+ 18 - 0
Venus/Venus_Core/Recipe.cs

@@ -134,6 +134,24 @@ namespace Venus_Core
             get { return m_ChillerTemp;}
             set { m_ChillerTemp = value; InvokePropertyChanged("ChillerTemp"); }
         }
+        private int m_RFHoldTime=1000;
+        public int RFHoldTime
+        {
+            get { return m_RFHoldTime; }
+            set { m_RFHoldTime = value; InvokePropertyChanged("RFHoldTime"); }
+        }
+        private int m_BiasRFHoldTime = 1000;
+        public int BiasRFHoldTime
+        {
+            get { return m_BiasRFHoldTime; }
+            set { m_BiasRFHoldTime = value; InvokePropertyChanged("BiasRFHoldTime"); }
+        }
+        private string m_Comment;
+        public string Comment
+        {
+            get { return m_Comment; }
+            set { m_Comment = value; InvokePropertyChanged("Comment"); }
+        }
         //private string m_ChillerTemp1;
         //public string ChillerTemp1
         //{

+ 10 - 5
Venus/Venus_MainPages/ViewModels/GasLeakCheckViewModel.cs

@@ -91,7 +91,8 @@ 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;
+        public TimeSpan? m_stepTime;
+        private int stepTimeCountValue;
         #endregion
 
         #region  属性
@@ -253,12 +254,12 @@ namespace Venus_MainPages.ViewModels
             {
                 if (value != m_currentStep)
                 {
-                    StepTime = 0;
+                    stepTimeCountValue = 0;
                 }
                 SetProperty(ref m_currentStep, value);
             }
         }
-        public int? StepTime
+        public TimeSpan? StepTime
         {
             get { return m_stepTime; }
             set
@@ -595,16 +596,20 @@ namespace Venus_MainPages.ViewModels
             if ((PMState)RtDataValues[$"{ModuleName}.FsmState"] == PMState.GasBoxLeakCheck)
             {
                 CurrentStep = RtDataValues[$"{ModuleName}.GasLeakCheck.Step"]?.ToString();
-                StepTime += 1;
+                stepTimeCountValue += 1;
+                StepTime=TimeSpan.FromSeconds(stepTimeCountValue);
+                
             }
             else if ((PMState)RtDataValues[$"{ModuleName}.FsmState"] == PMState.LeakCheck)
             {
                 CurrentStep = RtDataValues[$"{ModuleName}.LeakCheck.Step"]?.ToString();
-                StepTime += 1;
+                stepTimeCountValue += 1;
+                StepTime = TimeSpan.FromSeconds(stepTimeCountValue);
             }
             else
             {
                 CurrentStep = "";
+
                 StepTime = null;
             }
         }

+ 2 - 2
Venus/Venus_MainPages/ViewModels/OperationOverViewModel.cs

@@ -818,6 +818,7 @@ namespace Venus_MainPages.ViewModels
                 if (arm == "ArmA")
                 {
                     var robot3Robot3TAction = (WaferRobotTAction)Enum.Parse(typeof(WaferRobotTAction), module, true);
+                    await Task.Delay(2000);
                     await ChangePosition(robot3Robot3TAction);
                     Robot3TAction = robot3Robot3TAction;
                     await Task.Delay(1500);
@@ -832,6 +833,7 @@ namespace Venus_MainPages.ViewModels
                 else if (arm == "ArmB")
                 {
                     var robot4Robot4TAction = (WaferRobotTAction)Enum.Parse(typeof(WaferRobotTAction), module, true);
+                    await Task.Delay(2000);
                     await ChangePosition(robot4Robot4TAction);
                     Robot4TAction = robot4Robot4TAction;
                     await Task.Delay(1500);
@@ -1005,8 +1007,6 @@ namespace Venus_MainPages.ViewModels
 
         private async Task ChangePosition(WaferRobotTAction waferRobotTAction)
         {
-            //CurrentRobotPosition = RobotPosition.Origin;
-            //await Task.Delay(1000);
             if (waferRobotTAction == WaferRobotTAction.LP1)
             {
                 CurrentRobotPosition = RobotPosition.Left;

+ 0 - 82
Venus/Venus_MainPages/ViewModels/OverKepler2300ViewModel.cs

@@ -11,15 +11,11 @@ using Venus_Core;
 using Venus_MainPages.Views;
 using System.Linq;
 using System.Threading.Tasks;
-using Microsoft.Win32;
 using System.IO;
 using Venus_Themes.CustomControls;
 using Venus_MainPages.Unity;
-using Venus_Unity;
 using MECF.Framework.Common.CommonData.DeviceData;
-using System.Windows.Shapes;
 using Path = System.IO.Path;
-using MECF.Framework.Common.Equipment;
 
 namespace Venus_MainPages.ViewModels
 {
@@ -56,10 +52,6 @@ namespace Venus_MainPages.ViewModels
         private bool m_GuageValveIsOpen;
         private bool m_PendulumValveIsOpen;
 
-
-        //private bool m_BRFIsOn;
-        //private bool m_SRFIsOn;
-
         private double m_HeGasSetpoint;
         private int m_HePressureSetpoint;
 
@@ -107,8 +99,6 @@ namespace Venus_MainPages.ViewModels
 
         private AITPendulumValveData m_PendulumValveData;
 
-        //private AITHVData m_ESCHVData;
-
         private PMState m_PMCurrentState;
 
         private bool m_SourceRFFanInterlock;
@@ -180,20 +170,10 @@ namespace Venus_MainPages.ViewModels
         private float m_OuterTemperature;
         private float m_TopTemperature;
 
-        //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;
@@ -1148,11 +1128,9 @@ namespace Venus_MainPages.ViewModels
                 InvokeClient.Instance.Service.DoOperation($"{ModuleName}.MfcGas6.SetPoint", MFC6SetPoint);
                 InvokeClient.Instance.Service.DoOperation($"{ModuleName}.MfcGas7.SetPoint", MFC7SetPoint);
                 InvokeClient.Instance.Service.DoOperation($"{ModuleName}.MfcGas8.SetPoint", MFC8SetPoint);
-
                 await Task.Delay(1000);
                 object[] mfc = new object[8];
                 string[] mfcSetPoint = new string[8];
-
                 mfc[0] = MFC1Data.SetPoint;
                 mfc[1] = MFC2Data.SetPoint;
                 mfc[2] = MFC3Data.SetPoint;
@@ -1250,28 +1228,12 @@ namespace Venus_MainPages.ViewModels
 
         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();
@@ -1301,17 +1263,11 @@ namespace Venus_MainPages.ViewModels
 
         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()
@@ -1321,8 +1277,6 @@ namespace Venus_MainPages.ViewModels
         }
         private void OnOpenTurboPump()
         {
-            //TurboIsOpen = true;
-            //if (RtDataValues[$"{ModuleName}.FsmState"].ToString() == "LaunchingTurbo")
             if (PMCurrentState == PMState.LaunchingTurboPump)
             {
                 InvokeClient.Instance.Service.DoOperation($"{ModuleName}.{RtOperation.Abort}");
@@ -1403,8 +1357,6 @@ namespace Venus_MainPages.ViewModels
         }
         private void OnOpenButterflyValveView()
         {
-            //if (butterflyValveMessageBox == null)
-            //{
             var _mainWindow = Application.Current.Windows.Cast<Window>().FirstOrDefault(window => window is Window) as Window;
             butterflyValveMessageBox = new ButterflyValveView(ModuleName.ToString());
             butterflyValveMessageBox.WindowStartupLocation = WindowStartupLocation.Manual;
@@ -1412,34 +1364,12 @@ namespace Venus_MainPages.ViewModels
             butterflyValveMessageBox.Top = 600;
             butterflyValveMessageBox.Show();
             butterflyValveMessageBox.Owner = _mainWindow;
-            //}
-
         }
         private void OnLoadRecipe()
         {
             CurrentModuleRecipes = GetFilesNames(Path.Combine(QueryDataClient.Instance.Service.GetData("GetRTPath").ToString(), "Recipes", ModuleName)).ToList();
         }
 
-        //private async void OnHV()
-        //{
-        //    if (ESCHVData.IsOn == true)
-        //    {
-        //        InvokeClient.Instance.Service.DoOperation($"{ModuleName}.SetESCHVIsOn", false);
-
-        //    }
-        //    else
-        //    {
-        //        await Task.Run(async () =>
-        //        {
-        //            InvokeClient.Instance.Service.DoOperation($"{ModuleName}.SetESCHVIsOn", true);
-        //            await Task.Delay(1000);
-        //            InvokeClient.Instance.Service.DoOperation($"{ModuleName}.SetESCHV", ESCVoltage);
-
-        //        });
-        //    }
-
-
-        //}
         private void OnHVSet()
         {
             InvokeClient.Instance.Service.DoOperation($"{ModuleName}.SetESCHV", ESCVoltage);
@@ -1490,9 +1420,6 @@ namespace Venus_MainPages.ViewModels
                 default:
                     return;
             }
-            //var value = (QueryDataClient.Instance.Service.GetConfig($"{ModuleName}.Chiller.ChillerTemperatureOffset").ToString());
-            //float x;
-            //float.TryParse(value, out x);
             InvokeClient.Instance.Service.DoOperation($"{ModuleName}.HeatChiller", chillerType.ToString(), setPoint, offset);
         }
 
@@ -1812,12 +1739,6 @@ namespace Venus_MainPages.ViewModels
 
             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");
@@ -1828,9 +1749,6 @@ namespace Venus_MainPages.ViewModels
             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}.InnerChiller.IsOn");
 
 

+ 67 - 34
Venus/Venus_MainPages/ViewModels/RecipeViewModel.cs

@@ -16,6 +16,7 @@ using System.Collections.Generic;
 using System.IO;
 using System.Linq;
 using System.Reflection;
+using System.Runtime.InteropServices;
 using System.Text;
 using System.Threading;
 using System.Windows;
@@ -71,6 +72,7 @@ namespace Venus_MainPages.ViewModels
         private EPDType currentEPDType=EPDType.None;
         private JetChamber currentChamber;
         private bool isInstalledEPD;
+        private TextBox cycleNumberTextBox;
         #endregion
 
         #region  属性
@@ -196,6 +198,7 @@ namespace Venus_MainPages.ViewModels
         }
         private void OnSaveRecipe()
         {
+            CurrentRecipe.Header.EditTime = DateTime.Now.ToString();
             SaveRecipe(CurrentRecipeName, RecipeUnity.RecipeToString(CurrentRecipe));
             LoadHeadWrapPanel(headWrapPanel, CurrentRecipe);
         }
@@ -543,6 +546,7 @@ namespace Venus_MainPages.ViewModels
                         control.SetBinding(ComboBox.SelectedItemProperty, binding);
 
                         break;
+
                     default:
                         control = new TextBox();
 
@@ -792,7 +796,7 @@ namespace Venus_MainPages.ViewModels
                 ColumnDefinition col1 = new ColumnDefinition();
                 //col1.MinWidth = 50;
                 grid.ColumnDefinitions.Insert(index, col1);
-                Binding stepcheckbinding = null;
+                //Binding stepcheckbinding = null;
 
                 //grid.MinWidth = 200;
                 foreach (PropertyInfo propertyInfo in recipeType.GetProperties())
@@ -806,11 +810,12 @@ namespace Venus_MainPages.ViewModels
                         {
                            
                             RowDefinition row1 = new RowDefinition();
-                            grid.RowDefinitions.Add(row1);
                             if ((propertyInfoName == "EPDConfig" || propertyInfoName == "MinEndPointTime" || propertyInfoName == "MaxEndPointTime") && isInstalledEPD == false)
                             {
                                 row1.Height = new GridLength(0);
+                                
                             }
+                            grid.RowDefinitions.Add(row1);
                         }
 
                         if (grid.ColumnDefinitions.Count == 1 && j == 0)
@@ -869,22 +874,38 @@ namespace Venus_MainPages.ViewModels
                                       
                                         break;
                                     }
+                                   
                                     TextBox textBox = new TextBox();
-                                    textBox.HorizontalContentAlignment = HorizontalAlignment.Center;
-                                    textBox.VerticalContentAlignment = VerticalAlignment.Center;
-                                    if (stepcheckbinding == null)
-                                    {
-                                        textBox.IsEnabled = true;
-                                    }
-                                    else
+                                    if (propertyInfoName == "CycleNumber")
                                     {
-                                        textBox.SetBinding(TextBox.IsEnabledProperty, stepcheckbinding);
+                                        if (index + location == 1)
+                                        {
+                                            cycleNumberTextBox = textBox;
+                                            Grid.SetColumnSpan(textBox, CurrentRecipe.Steps.Count);
+                                        }
+                                        else
+                                        {
+                                            Grid.SetColumnSpan(cycleNumberTextBox, CurrentRecipe.Steps.Count);
+                                            break;
+                                        }
                                     }
+                                    textBox.HorizontalContentAlignment = HorizontalAlignment.Center;
+                                    textBox.VerticalContentAlignment   = VerticalAlignment.Center;
+                                    //if (stepcheckbinding == null)
+                                    //{
+                                    //    textBox.IsEnabled = true;
+                                    //}
+                                    //else
+                                    //{
+                                    //    textBox.SetBinding(TextBox.IsEnabledProperty, stepcheckbinding);
+                                    //}
+                                   
                                     textBox.SetBinding(TextBox.TextProperty, binding);
                                     grid.Children.Add(textBox);
                                     Grid.SetRow(textBox, i);
                                     Grid.SetColumn(textBox, index + location);
                                     object[] objAttrs = propertyInfo.GetCustomAttributes(typeof(IsOnlyReadAttribute), true);
+                                   
                                     if (objAttrs.Length > 0)
                                     {
                                         textBox.IsReadOnly = true;
@@ -939,14 +960,14 @@ namespace Venus_MainPages.ViewModels
                                     //{
 
                                     //}
-                                    if (stepcheckbinding == null)
-                                    {
-                                        checkBox.IsEnabled = true;
-                                    }
-                                    else
-                                    {
-                                        checkBox.SetBinding(TextBox.IsEnabledProperty, stepcheckbinding);
-                                    }
+                                    //if (stepcheckbinding == null)
+                                    //{
+                                    //    checkBox.IsEnabled = true;
+                                    //}
+                                    //else
+                                    //{
+                                    //    checkBox.SetBinding(TextBox.IsEnabledProperty, stepcheckbinding);
+                                    //}
 
                                     break;
 
@@ -961,14 +982,14 @@ namespace Venus_MainPages.ViewModels
                                     Grid.SetRow(comboBox, i);
                                     Grid.SetColumn(comboBox, index + location);
 
-                                    if (stepcheckbinding == null)
-                                    {
-                                        comboBox.IsEnabled = true;
-                                    }
-                                    else
-                                    {
-                                        comboBox.SetBinding(TextBox.IsEnabledProperty, stepcheckbinding);
-                                    }
+                                    //if (stepcheckbinding == null)
+                                    //{
+                                    //    comboBox.IsEnabled = true;
+                                    //}
+                                    //else
+                                    //{
+                                    //    comboBox.SetBinding(TextBox.IsEnabledProperty, stepcheckbinding);
+                                    //}
                                     break;
                             }
                         }
@@ -980,17 +1001,28 @@ namespace Venus_MainPages.ViewModels
                 recipeStep.LstUnit.ToList().ForEach(x =>
                 {
                     Type unitType = x.GetType();
+                   
+
                     Binding checkbinding = null;
                     foreach (PropertyInfo propertyInfo in unitType.GetProperties())
                     {
+                        object[] IgnoreAttrs = propertyInfo.GetCustomAttributes(typeof(IsCanConfigIgnore), true);
+                        bool IsEnableRecipeExtension= Convert.ToBoolean( QueryDataClient.Instance.Service.GetConfig($"{ModuleName}.IsEnableRecipeExtension"));
+                        if (IgnoreAttrs.Length > 0 && IsEnableRecipeExtension==false)
+                        {
+                            break;
+                        }
+
                         if (index == 0 && grid.ColumnDefinitions.Count == 1)
                         {
                             RowDefinition row1 = new RowDefinition();
                             grid.RowDefinitions.Add(row1);
                         }
-
+                       
                         if (grid.ColumnDefinitions.Count == 1 && j == 0)
                         {
+                           
+
                             TextBox textBlock = new TextBox();
                             textBlock.IsReadOnly = true;
                             switch (propertyInfo.Name)
@@ -1082,6 +1114,10 @@ namespace Venus_MainPages.ViewModels
                                 {
                                     case "Int32":
                                     case "String":
+                                        //if (checkbinding != null)
+                                        //{
+                                        //    break;
+                                        //}
                                         TextBox textBox = new TextBox();
                                         textBox.HorizontalContentAlignment = HorizontalAlignment.Center;
                                         textBox.VerticalContentAlignment = VerticalAlignment.Center;
@@ -1162,6 +1198,10 @@ namespace Venus_MainPages.ViewModels
                                         break;
 
                                     default:
+                                        //if (checkbinding != null)
+                                        //{
+                                        //    break;
+                                        //}
                                         ComboBox comboBox = new ComboBox();
                                         comboBox.BorderBrush = Brushes.Gray;
                                         comboBox.Style = (Style)recipeView.FindResource("customeComboBoxStyle");
@@ -1284,13 +1324,6 @@ namespace Venus_MainPages.ViewModels
                 if (copyIndex == -1)
                 {
                     recipeStep = new RecipeStep();
-
-                    //recipeStep.LstUnit.Add(new PressureByPressureModeUnit());
-                    //recipeStep.LstUnit.Add(new TCPUnit());
-                    //recipeStep.LstUnit.Add(new BiasUnit());
-                    //recipeStep.LstUnit.Add(new GasControlUnit());
-                    //recipeStep.LstUnit.Add(new ESCHVUnit());
-                    //recipeStep.LstUnit.Add(new ProcessKitUnit());
                     switch (currentChamber)
                     {
                         case JetChamber.Venus:

+ 0 - 1
Venus/Venus_MainPages/ViewModels/TMOperationViewModel.cs

@@ -461,7 +461,6 @@ namespace Venus_MainPages.ViewModels
         private void OnCloseLLPump()
         {
             InvokeClient.Instance.Service.DoOperation("LL.ControlPump", false);
-
         }
         private void OnDoorUpDown(object obj)
         {

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

@@ -506,7 +506,7 @@
                     <RowDefinition/>
                     <RowDefinition/>
                     <RowDefinition/>
-                    <RowDefinition/>
+                    <RowDefinition Height="0"/>
                 </Grid.RowDefinitions>
                 <Grid.ColumnDefinitions>
                     <ColumnDefinition Width="3*"/>
@@ -563,7 +563,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" 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="16" Grid.Column="1" Text="{Binding StepTime, StringFormat=hh\\:mm\\:ss}" Padding="2,5,0,0"/>
                 <TextBlock Grid.Row="17" Grid.Column="1"/>
                 
             </Grid>

+ 1 - 1
Venus/Venus_MainPages/Views/TMOperationView.xaml

@@ -717,7 +717,7 @@
             </Grid>
         </StackPanel>
 
-        <StackPanel Canvas.Top="205" Canvas.Right="10" Width="720" >
+        <StackPanel Canvas.Top="205" Canvas.Right="10" Width="720" Visibility="Collapsed">
             <Grid>
                 <Grid.RowDefinitions>
                     <RowDefinition Height="30"/>

+ 5 - 1
Venus/Venus_RT/Config/System.sccfg

@@ -261,6 +261,7 @@
 		<config default="5" name="RecipeToleranceIgnoreTime" nameView="Ignore Time Before Check Recipe Step Tolerance" description="" max="60" min="0" paramter="" tag="" unit="s" type="Integer" />
 		<config default="1" name="RecipeRunningMode" nameView="0, only run current recipe; 1, include chuck/dechuck recipe" description="" max="5" min="0" paramter="" tag="" unit="" type="Integer" />
 		<config default="751" name="ForelineInterlockPressure" nameView="Foreline Interlock Pressure" description="" max="2000" min="500" paramter="" tag="" unit="°C" type="Double" />
+		<config default="false" name="IsEnableRecipeExtension" nameView="Is Enable Recipe Extension"  description="" max="10" min="0" paramter="" tag="" unit="" type="Bool" />
 
 		<configs name="MFCVerification" nameView="MFC Verification" >
 			<config default="1" name="BasePressure" nameView="开始条件:腔体压力达到时开始流气" max="100" min="1" paramter="" tag="" unit="mTorr" visible="true" type="Double" />
@@ -790,6 +791,7 @@
 		<config default="1" name="RecipeRunningMode" nameView="0, only run current recipe; 1, include chuck/dechuck recipe" description="" max="5" min="0" paramter="" tag="" unit="" type="Integer" />
 		<config default="751" name="ForelineInterlockPressure" nameView="Foreline Interlock Pressure" description="" max="2000" min="500" paramter="" tag="" unit="°C" type="Double" />
 		<config default="150" name="PendulumHeaterSetPointLimit" nameView="Pendulum Heater Set Point Limit" description="" max="500" min="0" paramter="" tag="" unit="" type="Integer" />
+		<config default="false" name="IsEnableRecipeExtension" nameView="Is Enable Recipe Extension"  description="" max="10" min="0" paramter="" tag="" unit="" type="Bool" />
 
 		<configs name="MFCVerification" nameView="MFC Verification" >
 			<config default="1" name="BasePressure" nameView="开始条件:腔体压力达到时开始流气" max="100" min="1" paramter="" tag="" unit="mTorr" visible="true" type="Double" />
@@ -1304,6 +1306,7 @@
 		<config default="1" name="RecipeRunningMode" nameView="0, only run current recipe; 1, include chuck/dechuck recipe" description="" max="5" min="0" paramter="" tag="" unit="" type="Integer" />
 		<config default="751" name="ForelineInterlockPressure" nameView="Foreline Interlock Pressure" description="" max="2000" min="500" paramter="" tag="" unit="°C" type="Double" />
 		<config default="150" name="PendulumHeaterSetPointLimit" nameView="Pendulum Heater Set Point Limit" description="" max="500" min="0" paramter="" tag="" unit="" type="Integer" />
+		<config default="false" name="IsEnableRecipeExtension" nameView="Is Enable Recipe Extension"  description="" max="10" min="0" paramter="" tag="" unit="" type="Bool" />
 
 		<configs name="MFCVerification" nameView="MFC Verification" >
 			<config default="1" name="BasePressure" nameView="开始条件:腔体压力达到时开始流气" max="100" min="1" paramter="" tag="" unit="mTorr" visible="true" type="Double" />
@@ -1818,8 +1821,9 @@
     <config default="1" name="RecipeRunningMode" nameView="0, only run current recipe; 1, include chuck/dechuck recipe" description="" max="5" min="0" paramter="" tag="" unit="" type="Integer" />
     <config default="751" name="ForelineInterlockPressure" nameView="Foreline Interlock Pressure" description="" max="2000" min="500" paramter="" tag="" unit="°C" type="Double" />
 	<config default="150" name="PendulumHeaterSetPointLimit" nameView="Pendulum Heater Set Point Limit" description="" max="500" min="0" paramter="" tag="" unit="" type="Integer" />
+	<config default="false" name="IsEnableRecipeExtension" nameView="Is Enable Recipe Extension"  description="" max="10" min="0" paramter="" tag="" unit="" type="Bool" />
 
-	  <configs name="MFCVerification" nameView="MFC Verification" >
+		<configs name="MFCVerification" nameView="MFC Verification" >
       <config default="1" name="BasePressure" nameView="开始条件:腔体压力达到时开始流气" max="100" min="1" paramter="" tag="" unit="mTorr" visible="true" type="Double" />
       <config default="180" name="PumpingTime" nameView="抽气时间" max="7200" min="0" paramter="" tag="" unit="second" visible="true" type="Integer" />
       <config default="10" name="GasFlowTime" nameView="结束条件:流气多长时间" max="600" min="0" paramter="" tag="" unit="second" visible="true" type="Integer" />

+ 40 - 40
Venus/Venus_RT/Devices/AdTecRF.cs

@@ -325,48 +325,48 @@ namespace Venus_RT.Devices
 
 
 
-                if (_recipeAlarmRange > 0 && _recipeAlarmRange / 100.0 * PowerSetPoint < _scPowerAlarmRange)
-                {
-                    if (_recipeIgnoreTimer.GetElapseTime() > _recipeIgnoreTimeMS)
-                    {
-                        _recipeAlarmChecker.Monitor(ForwardPower, PowerSetPoint - Math.Abs(_recipeAlarmRange / 100.0 * PowerSetPoint), PowerSetPoint + Math.Abs(_recipeAlarmRange / 100.0 * PowerSetPoint), _scPowerAlarmTime);
-                        if (_recipeAlarmChecker.Trig)
-                        {
-                            LOG.Write(eEvent.ERR_RF, Module, Display + $" out of tolerance in {_scPowerAlarmTime:0} seconds");
-
-                            SetPowerOnOff(false, out _);
-                        }
-                    }
-                }
-                else
-                {
-                    _alarmChecker.Monitor(ForwardPower, PowerSetPoint - Math.Abs(_scPowerAlarmRange), PowerSetPoint + Math.Abs(_scPowerAlarmRange), _scPowerAlarmTime);
-                    if (_alarmChecker.Trig)
-                    {
-                        LOG.Write(eEvent.ERR_RF, Module, Display + $" out of tolerance in {_scPowerAlarmTime:0} seconds");
-                    }
-                }
+                //if (_recipeAlarmRange > 0 && _recipeAlarmRange / 100.0 * PowerSetPoint < _scPowerAlarmRange)
+                //{
+                //    if (_recipeIgnoreTimer.GetElapseTime() > _recipeIgnoreTimeMS)
+                //    {
+                //        _recipeAlarmChecker.Monitor(ForwardPower, PowerSetPoint - Math.Abs(_recipeAlarmRange / 100.0 * PowerSetPoint), PowerSetPoint + Math.Abs(_recipeAlarmRange / 100.0 * PowerSetPoint), _scPowerAlarmTime);
+                //        if (_recipeAlarmChecker.Trig)
+                //        {
+                //            LOG.Write(eEvent.ERR_RF, Module, Display + $" out of tolerance in {_scPowerAlarmTime:0} seconds");
+
+                //            SetPowerOnOff(false, out _);
+                //        }
+                //    }
+                //}
+                //else
+                //{
+                //    _alarmChecker.Monitor(ForwardPower, PowerSetPoint - Math.Abs(_scPowerAlarmRange), PowerSetPoint + Math.Abs(_scPowerAlarmRange), _scPowerAlarmTime);
+                //    if (_alarmChecker.Trig)
+                //    {
+                //        LOG.Write(eEvent.ERR_RF, Module, Display + $" out of tolerance in {_scPowerAlarmTime:0} seconds");
+                //    }
+                //}
 
 
-                if (_recipeWarningRange > 0 && _recipeWarningRange / 100.0 * PowerSetPoint < _scPowerWarningRange)
-                {
-                    if (_recipeIgnoreTimer.GetElapseTime() > _recipeIgnoreTimeMS)
-                    {
-                        _recipeWarningChecker.Monitor(ForwardPower, PowerSetPoint - Math.Abs(_recipeWarningRange / 100.0 * PowerSetPoint), PowerSetPoint + Math.Abs(_recipeWarningRange / 100.0 * PowerSetPoint), _scPowerWarningTime);
-                        if (_recipeWarningChecker.Trig)
-                        {
-                            EV.PostWarningLog(Module, Display + $" out of tolerance in {_scPowerWarningTime:0} seconds");
-                        }
-                    }
-                }
-                else
-                {
-                    _warningChecker.Monitor(ForwardPower, PowerSetPoint - Math.Abs(_scPowerWarningRange), PowerSetPoint + Math.Abs(_scPowerWarningRange), _scPowerWarningTime);
-                    if (_warningChecker.Trig)
-                    {
-                        EV.PostWarningLog(Module, Display + $" out of tolerance in {_scPowerWarningTime:0} seconds");
-                    }
-                }
+                //if (_recipeWarningRange > 0 && _recipeWarningRange / 100.0 * PowerSetPoint < _scPowerWarningRange)
+                //{
+                //    if (_recipeIgnoreTimer.GetElapseTime() > _recipeIgnoreTimeMS)
+                //    {
+                //        _recipeWarningChecker.Monitor(ForwardPower, PowerSetPoint - Math.Abs(_recipeWarningRange / 100.0 * PowerSetPoint), PowerSetPoint + Math.Abs(_recipeWarningRange / 100.0 * PowerSetPoint), _scPowerWarningTime);
+                //        if (_recipeWarningChecker.Trig)
+                //        {
+                //            EV.PostWarningLog(Module, Display + $" out of tolerance in {_scPowerWarningTime:0} seconds");
+                //        }
+                //    }
+                //}
+                //else
+                //{
+                //    _warningChecker.Monitor(ForwardPower, PowerSetPoint - Math.Abs(_scPowerWarningRange), PowerSetPoint + Math.Abs(_scPowerWarningRange), _scPowerWarningTime);
+                //    if (_warningChecker.Trig)
+                //    {
+                //        EV.PostWarningLog(Module, Display + $" out of tolerance in {_scPowerWarningTime:0} seconds");
+                //    }
+                //}
 
 
 

+ 1 - 1
Venus/Venus_RT/Devices/TM/JetTM.cs

@@ -354,7 +354,7 @@ namespace Venus_RT.Devices
                 _TMPump.SetPumpOnOff((bool)args[0]);
                 return true;
             });
-            DATA.Subscribe("LL.PumpIsRunning", () => LLPumpIsRunning);
+            DATA.Subscribe("LL.PumpIsRunning", () => LLPumpIsRunning, SubscriptionAttribute.FLAG.IgnoreSaveDB);
             OP.Subscribe("LL.ControlPump", (cmd, args) =>
             {
                 _LLPump.SetPumpOnOff((bool)args[0]);

+ 8 - 8
Venus/Venus_RT/FAs/FaManager.cs

@@ -49,16 +49,16 @@ namespace Venus_RT.HostWrapper
 
             OP.Subscribe("System.FACommand", InvokeFaCommand);
 
-            DATA.Subscribe("System.CommunicationStatus", () => FaCommunicationState);
-            DATA.Subscribe("System.ControlStatus", () => FaControlState);
+            DATA.Subscribe("System.CommunicationStatus", () => FaCommunicationState, SubscriptionAttribute.FLAG.IgnoreSaveDB);
+            DATA.Subscribe("System.ControlStatus", () => FaControlState, SubscriptionAttribute.FLAG.IgnoreSaveDB);
             DATA.Subscribe("System.ControlSubStatus", () => FaControlSubState);
 
-            DATA.Subscribe("System.SpoolingState", () => SpoolingState);
-            DATA.Subscribe("System.SpoolingActual", () => SpoolingActual);
-            DATA.Subscribe("System.SpoolingTotal", () => SpoolingTotal);
-            DATA.Subscribe("System.SpoolingFullTime", () => SpoolingFullTime);
-            DATA.Subscribe("System.SpoolingStartTime", () => SpoolingStartTime);
-            DATA.Subscribe("System.IsSpoolingEnable", () => IsSpoolingEnable);
+            DATA.Subscribe("System.SpoolingState", () => SpoolingState, SubscriptionAttribute.FLAG.IgnoreSaveDB);
+            DATA.Subscribe("System.SpoolingActual", () => SpoolingActual, SubscriptionAttribute.FLAG.IgnoreSaveDB);
+            DATA.Subscribe("System.SpoolingTotal", () => SpoolingTotal, SubscriptionAttribute.FLAG.IgnoreSaveDB);
+            DATA.Subscribe("System.SpoolingFullTime", () => SpoolingFullTime, SubscriptionAttribute.FLAG.IgnoreSaveDB);
+            DATA.Subscribe("System.SpoolingStartTime", () => SpoolingStartTime, SubscriptionAttribute.FLAG.IgnoreSaveDB);
+            DATA.Subscribe("System.IsSpoolingEnable", () => IsSpoolingEnable, SubscriptionAttribute.FLAG.IgnoreSaveDB);
 
             EV.Subscribe(new EventItem(PROCESS_START_INQUIRY));
         }

+ 3 - 3
Venus/Venus_RT/Modules/AutoCycle.cs

@@ -125,9 +125,9 @@ namespace Venus_RT.Modules
 
             _efemRobotSingleArmOption = SC.GetValue<int>("EFEM.SingleArmOption");
 
-            DATA.Subscribe("Scheduler.CycledCount", () => _cycledCount);
-            DATA.Subscribe("Scheduler.CycledWafer", () => _cycledWafer);
-            DATA.Subscribe("Scheduler.CycleSetPoint", () => _cycleSetPoint);
+            DATA.Subscribe("Scheduler.CycledCount", () => _cycledCount,SubscriptionAttribute.FLAG.IgnoreSaveDB);
+            DATA.Subscribe("Scheduler.CycledWafer", () => _cycledWafer, SubscriptionAttribute.FLAG.IgnoreSaveDB);
+            DATA.Subscribe("Scheduler.CycleSetPoint", () => _cycleSetPoint, SubscriptionAttribute.FLAG.IgnoreSaveDB);
 
 
             DATA.Subscribe("Scheduler.PjIdList", () => Array.ConvertAll(_lstProcessJobs.ToArray(), x => x.InnerId.ToString()).ToList());

+ 4 - 4
Venus/Venus_RT/Modules/EFEM/EfemEntity.cs

@@ -210,10 +210,10 @@ namespace Venus_RT.Modules
             OP.Subscribe($"{ModuleName.Cooling1}.{EfemOperation.Lift}",     (cmd, args) => { PostMsg(MSG.Lift, ModuleName.Cooling1); return true; });
             OP.Subscribe($"{ModuleName.Cooling2}.{EfemOperation.Lift}",     (cmd, args) => { PostMsg(MSG.Lift, ModuleName.Cooling2); return true; });
 
-            DATA.Subscribe($"{Name}.FsmState", () => ((STATE)fsm.State).ToString());
-            DATA.Subscribe($"{Name}.FsmPrevState", () => ((STATE)fsm.PrevState).ToString());
-            DATA.Subscribe($"{Name}.FsmLastMessage", GetFsmLastMessage);
-            DATA.Subscribe($"{Name}.RobotMoveAction", () => (_efem.TMRobotMoveInfo));
+            DATA.Subscribe($"{Name}.FsmState", () => ((STATE)fsm.State).ToString(),Aitex.Core.Util.SubscriptionAttribute.FLAG.IgnoreSaveDB);
+            DATA.Subscribe($"{Name}.FsmPrevState", () => ((STATE)fsm.PrevState).ToString(), Aitex.Core.Util.SubscriptionAttribute.FLAG.IgnoreSaveDB);
+            DATA.Subscribe($"{Name}.FsmLastMessage", GetFsmLastMessage, Aitex.Core.Util.SubscriptionAttribute.FLAG.IgnoreSaveDB);
+            DATA.Subscribe($"{Name}.RobotMoveAction", () => (_efem.TMRobotMoveInfo), Aitex.Core.Util.SubscriptionAttribute.FLAG.IgnoreSaveDB);
 
             return true;
         }

+ 4 - 4
Venus/Venus_RT/Modules/LPs/LoadPortModule.cs

@@ -149,10 +149,10 @@ namespace Venus_RT.Modules.LPs
             OP.Subscribe($"{Name}.CloseDoor", (string cmd, object[] args) =>{return CheckToPostMessage((int)MSG.CloseDoor);});
 
 
-            DATA.Subscribe($"{Module}.Status", () => ((STATE)FsmState).ToString());
-            DATA.Subscribe($"{Module}.FsmState", () => ((STATE)FsmState).ToString());
-            DATA.Subscribe($"{Module}.FsmPrevState", () => ((STATE)FsmPreviousState).ToString());
-            DATA.Subscribe($"{Module}.FsmLastMessage", GetFsmLastMessage);
+            DATA.Subscribe($"{Module}.Status", () => ((STATE)FsmState).ToString(), Aitex.Core.Util.SubscriptionAttribute.FLAG.IgnoreSaveDB);
+            DATA.Subscribe($"{Module}.FsmState", () => ((STATE)FsmState).ToString(), Aitex.Core.Util.SubscriptionAttribute.FLAG.IgnoreSaveDB);
+            DATA.Subscribe($"{Module}.FsmPrevState", () => ((STATE)FsmPreviousState).ToString(), Aitex.Core.Util.SubscriptionAttribute.FLAG.IgnoreSaveDB);
+            DATA.Subscribe($"{Module}.FsmLastMessage", GetFsmLastMessage, Aitex.Core.Util.SubscriptionAttribute.FLAG.IgnoreSaveDB);
 
             _lpDevice = efem[module] as Loadport;
 

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

@@ -34,7 +34,7 @@ namespace Venus_RT.Modules.PMs
         private readonly PumpDownRoutine _pumpDownRoutine;
         private readonly ProcessHelper _processHelper;
         private bool _withWafer = true;
-        private bool _needPumpDown = false;
+        //private bool _needPumpDown = false;
         public Recipe _currentRecipe = null;
         private int _currentStep = 0;
         private Queue<Recipe> _qeRecipes = new Queue<Recipe>();
@@ -177,6 +177,7 @@ namespace Venus_RT.Modules.PMs
                     }
 
                     ProcessRecipeHead = recipe.Header;
+                    _processHelper.m_RecipeHead = ProcessRecipeHead;
                     ProcessRecipeName = recipeName;
                     _qeRecipes.Enqueue(recipe);
 
@@ -246,14 +247,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)

+ 34 - 33
Venus/Venus_RT/Modules/PMs/ProcessDefine.cs

@@ -17,6 +17,7 @@ namespace Venus_RT.Modules.PMs
     {
         protected JetPMBase Chamber;
         private string Module;
+        public RecipeHead m_RecipeHead;
 
         private static Dictionary<string, Func<ProcessUnitBase, RecipeStep, RState>> startHelper = new Dictionary<string, Func<ProcessUnitBase, RecipeStep, RState>>();
         private static Dictionary<string, Func<ProcessUnitBase, RecipeStep, RState>> checkerHelper = new Dictionary<string, Func<ProcessUnitBase, RecipeStep, RState>>();
@@ -35,9 +36,9 @@ namespace Venus_RT.Modules.PMs
             checkerHelper   [$"{Module}.PressureByPressureModeUnit"]  = (ProcessUnitBase unit, RecipeStep step) => PressureByPressureModeUnit_Check(unit, step);
             endHelper       [$"{Module}.PressureByPressureModeUnit"]  = (ProcessUnitBase unit, RecipeStep step) => PressureByPressureModeUnit_End(unit, step);
 
-            startHelper     [$"{Module}.PressureByValveModeUnit"]     = (ProcessUnitBase unit, RecipeStep step) => PressureByValveModeUnit_Start(unit, step);
-            checkerHelper   [$"{Module}.PressureByValveModeUnit"]     = (ProcessUnitBase unit, RecipeStep step) => PressureByValveModeUnit_Check(unit, step);
-            endHelper       [$"{Module}.PressureByValveModeUnit"]     = (ProcessUnitBase unit, RecipeStep step) => PressureByValveModeUnit_End(unit, step);
+            //startHelper     [$"{Module}.PressureByValveModeUnit"]     = (ProcessUnitBase unit, RecipeStep step) => PressureByValveModeUnit_Start(unit, step);
+            //checkerHelper   [$"{Module}.PressureByValveModeUnit"]     = (ProcessUnitBase unit, RecipeStep step) => PressureByValveModeUnit_Check(unit, step);
+            //endHelper       [$"{Module}.PressureByValveModeUnit"]     = (ProcessUnitBase unit, RecipeStep step) => PressureByValveModeUnit_End(unit, step);
 
             startHelper     [$"{Module}.TCPUnit"]                     = (ProcessUnitBase unit, RecipeStep step) => TCPUnit_Start(unit, step);
             checkerHelper   [$"{Module}.TCPUnit"]                     = (ProcessUnitBase unit, RecipeStep step) => TCPUnit_Check(unit, step);
@@ -128,34 +129,34 @@ namespace Venus_RT.Modules.PMs
         }
 
         #region Valve Mode已取消,合并到压力模式
-        private RState PressureByValveModeUnit_Start(ProcessUnitBase unit, RecipeStep step)
-        {
-            var ProcessUnit = unit as PressureByValveModeUnit;
-            if (Chamber.SetPVPostion(ProcessUnit.StartPosition))
-            {
-                return RState.Running;
-            }
-            return RState.Failed;
-        }
-
-        private RState PressureByValveModeUnit_Check(ProcessUnitBase unit, RecipeStep step)
-        {
-            var ProcessUnit = unit as PressureByValveModeUnit;
-            if (ProcessUnit.EnableRamp)
-            {
-                if (Chamber.SetPVPostion(ProcessUnit.StartPosition + (int)((ProcessUnit.TargetPosition - ProcessUnit.StartPosition) * step.RampFactor())))
-                    return RState.Running;
-                else
-                    return RState.Failed;
-            }
-
-            return RState.Running;
-        }
-
-        private void PressureByValveModeUnit_End(ProcessUnitBase unit, RecipeStep step)
-        {
-
-        }
+        //private RState PressureByValveModeUnit_Start(ProcessUnitBase unit, RecipeStep step)
+        //{
+        //    var ProcessUnit = unit as PressureByValveModeUnit;
+        //    if (Chamber.SetPVPostion(ProcessUnit.StartPosition))
+        //    {
+        //        return RState.Running;
+        //    }
+        //    return RState.Failed;
+        //}
+
+        //private RState PressureByValveModeUnit_Check(ProcessUnitBase unit, RecipeStep step)
+        //{
+        //    var ProcessUnit = unit as PressureByValveModeUnit;
+        //    if (ProcessUnit.EnableRamp)
+        //    {
+        //        if (Chamber.SetPVPostion(ProcessUnit.StartPosition + (int)((ProcessUnit.TargetPosition - ProcessUnit.StartPosition) * step.RampFactor())))
+        //            return RState.Running;
+        //        else
+        //            return RState.Failed;
+        //    }
+
+        //    return RState.Running;
+        //}
+
+        //private void PressureByValveModeUnit_End(ProcessUnitBase unit, RecipeStep step)
+        //{
+
+        //}
         #endregion
 
 
@@ -187,7 +188,7 @@ namespace Venus_RT.Modules.PMs
                 return RState.Failed;
             }
 
-            if (step.ElapsedTime() > ProcessUnit.HoldTime * 1000)
+            if (step.ElapsedTime() > m_RecipeHead.RFHoldTime * 1000)
             {
                 Chamber.GeneratorSetpower(0);
                 Chamber.GeneratorPowerOn(false);
@@ -232,7 +233,7 @@ namespace Venus_RT.Modules.PMs
                 return RState.Failed;
             }
 
-            if (step.ElapsedTime() > ProcessUnit.BiasRFHoldTime * 1000)
+            if (step.ElapsedTime() > m_RecipeHead.BiasRFHoldTime * 1000)
             {
                 Chamber.GeneratorBiasSetpower(0);
                 Chamber.GeneratorBiasPowerOn(false);

+ 8 - 8
Venus/Venus_RT/Modules/RouteManager.cs

@@ -200,16 +200,16 @@ namespace Venus_RT.Modules
 
         void SubscribeDataVariable()
         {
-            DATA.Subscribe("Rt.Status", () => ((RtState)fsm.State).ToString());
+            DATA.Subscribe("Rt.Status", () => ((RtState)fsm.State).ToString(), SubscriptionAttribute.FLAG.IgnoreSaveDB);
 
-            DATA.Subscribe(ModuleName.System.ToString(), "AlarmEvent", EV.GetAlarmEvent);
+            DATA.Subscribe(ModuleName.System.ToString(), "AlarmEvent", EV.GetAlarmEvent, SubscriptionAttribute.FLAG.IgnoreSaveDB);
 
-            DATA.Subscribe("System.IsAutoMode", () => IsAutoMode);
-            DATA.Subscribe("System.IsIdle", () => IsIdle || IsInit);
-            DATA.Subscribe("System.IsAlarm", () => IsAlarm || IsEntityError);
-            DATA.Subscribe("System.IsBusy", () => IsRunning);
-            DATA.Subscribe("System.IsWaitUnload", () => _isWaitUnload && IsAutoMode);
-            DATA.Subscribe("System.IsConnectedWithHost", () => Singleton<FaManager>.Instance.IsConnected);
+            DATA.Subscribe("System.IsAutoMode", () => IsAutoMode, SubscriptionAttribute.FLAG.IgnoreSaveDB);
+            DATA.Subscribe("System.IsIdle", () => IsIdle || IsInit, SubscriptionAttribute.FLAG.IgnoreSaveDB);
+            DATA.Subscribe("System.IsAlarm", () => IsAlarm || IsEntityError, SubscriptionAttribute.FLAG.IgnoreSaveDB);
+            DATA.Subscribe("System.IsBusy", () => IsRunning, SubscriptionAttribute.FLAG.IgnoreSaveDB);
+            DATA.Subscribe("System.IsWaitUnload", () => _isWaitUnload && IsAutoMode, SubscriptionAttribute.FLAG.IgnoreSaveDB);
+            DATA.Subscribe("System.IsConnectedWithHost", () => Singleton<FaManager>.Instance.IsConnected, SubscriptionAttribute.FLAG.IgnoreSaveDB);
 
             DATA.Subscribe("EquipmentMode", () => IsAutoMode ? 0 : 1, SubscriptionAttribute.FLAG.IgnoreSaveDB);
 

+ 0 - 1
Venus/Venus_Themes/UserControls/EFEMFrontView.xaml

@@ -70,7 +70,6 @@
                                 <DropShadowEffect Direction="270" BlurRadius="0" ShadowDepth="1"/>
                             </Rectangle.Effect>
                         </Rectangle>
-
                     </StackPanel>
                 </Grid>
             </Grid>