Browse Source

1.添加Recipe内部外部名称,chamberTYpe 比对
2.添加Foup Unload 不可以创建Job功能
3.删除mfc calibration 全开钟摆阀

lixiang 1 year ago
parent
commit
d4d56a3cf3

+ 31 - 22
Venus/Venus_MainPages/ViewModels/OperationOverViewModel.cs

@@ -388,7 +388,7 @@ namespace Venus_MainPages.ViewModels
             get { return m_ATMModeIsOn; }
             set { SetProperty(ref m_ATMModeIsOn, value); }
         }
-      
+
         public float TMPressure
         {
             get { return m_TMPressure; }
@@ -538,13 +538,21 @@ namespace Venus_MainPages.ViewModels
         {
             var info = obj as WaferAssociationInfo;
 
-            info.SlotFrom = 1;
-            info.SlotTo = 25;
-            AssociateSequence(info, true);
+            var module = info.ModuleData.ModuleID;
+
+            if (CommonFunction.GetValue<bool>(RtDataValues, $"{module}.IsLoaded"))
+            {
+                info.SlotFrom = 1;
+                info.SlotTo = 25;
+                AssociateSequence(info, true);
+            }
         }
         private void OnUnSelectAll(object obj)
         {
             var info = obj as WaferAssociationInfo;
+
+            var module = info.ModuleData.ModuleID;
+
             info.SlotFrom = 1;
             info.SlotTo = 25;
             AssociateSequence(info, false);
@@ -559,15 +567,15 @@ namespace Venus_MainPages.ViewModels
         private void OnStop(object obj)
         {
             var info = obj as WaferAssociationInfo;
-            InvokeClient.Instance.Service.DoOperation("System.StopJob", info.JobID);
-            LOG.Info("System,Pause Job");
+            InvokeClient.Instance.Service.DoOperation("System.AbortJob", info.JobID);
+            LOG.Info($"System,Stop Job{info.JobID}");
         }
         private void OnAbort(object obj)
         {
             var info = obj as WaferAssociationInfo;
 
-            InvokeClient.Instance.Service.DoOperation("System.ResumeJob", info.JobID);
-            LOG.Info("System,Resume Job");
+            InvokeClient.Instance.Service.DoOperation("System.StopJob", info.JobID);
+            LOG.Info($"System,Stop Job{info.JobID}");
 
         }
         private void OnHomeAll()
@@ -585,10 +593,12 @@ namespace Venus_MainPages.ViewModels
             }
             if (CommonFunction.GetValue<int>(RtDataValues, "EquipmentStatus") == 4)
             {
-                t.ForEach(x => 
+                t.ForEach(x =>
                 {
                     InvokeClient.Instance.Service.DoOperation("System.ResumeJob", x);
-                });               
+                });
+                LOG.Info("System,Resume All Job");
+
             }
             else
             {
@@ -596,9 +606,8 @@ namespace Venus_MainPages.ViewModels
                 {
                     InvokeClient.Instance.Service.DoOperation("System.PauseJob", x);
                 });
+                LOG.Info("System,Pause All Job");
             }
-            LOG.Info("System,Resume All Job");
-
         }
         private void OnAbortAll()
         {
@@ -642,15 +651,15 @@ namespace Venus_MainPages.ViewModels
         {
             var info = obj as WaferInfo;
             bool flag = info.SequenceName != "" ? false : true;
-            if (info.ModuleID == "LP1")
+            if (info.ModuleID == "LP1" && (CommonFunction.GetValue<bool>(RtDataValues, "LP1.IsLoaded")))
             {
                 AssociateSequence(LP1WaferAssociation, flag, info.SlotID);
             }
-            else if (info.ModuleID == "LP2")
+            else if (info.ModuleID == "LP2" && (CommonFunction.GetValue<bool>(RtDataValues, "LP2.IsLoaded")))
             {
                 AssociateSequence(LP2WaferAssociation, flag, info.SlotID);
             }
-            else if (info.ModuleID == "LP3")
+            else if (info.ModuleID == "LP3" && (CommonFunction.GetValue<bool>(RtDataValues, "LP3.IsLoaded")))
             {
                 AssociateSequence(LP3WaferAssociation, flag, info.SlotID);
             }
@@ -721,7 +730,7 @@ namespace Venus_MainPages.ViewModels
             if (PMAIsInstalled == true)
             {
                 PMAWafer = ModuleManager.ModuleInfos["PMA"].WaferManager.Wafers[0];
-                PMARecipeResult = CommonFunction.GetValue<RecipeResult>(RtDataValues, $"PMA.CurrentRecipeResult");               
+                PMARecipeResult = CommonFunction.GetValue<RecipeResult>(RtDataValues, $"PMA.CurrentRecipeResult");
             }
             if (PMBIsInstalled == true)
             {
@@ -745,7 +754,7 @@ namespace Venus_MainPages.ViewModels
             {
                 TMBladeAWafer = ModuleManager.ModuleInfos["TMRobot"].WaferManager.Wafers[0];
                 TMBladeBWafer = ModuleManager.ModuleInfos["TMRobot"].WaferManager.Wafers[1];
-                TMPressure= CommonFunction.GetValue<float>(RtDataValues, $"TM.TMProcessGauge.Value");             
+                TMPressure = CommonFunction.GetValue<float>(RtDataValues, $"TM.TMProcessGauge.Value");
             }
 
             if (EFEMIsInstalled == true)
@@ -773,14 +782,14 @@ namespace Venus_MainPages.ViewModels
             else
             {
                 RouteState = "Pause";
-            }          
+            }
         }
         /// <summary>
         /// 更新Wafer情况
         /// </summary>
         /// <param name="info"></param>
         /// <param name="cjInfo"></param>
-        private void UPdateWaferAssociation(WaferAssociationInfo info,ControlJobInfo cjInfo)
+        private void UPdateWaferAssociation(WaferAssociationInfo info, ControlJobInfo cjInfo)
         {
             if (cjInfo != null)
             {
@@ -791,7 +800,7 @@ namespace Venus_MainPages.ViewModels
                 {
                     for (int i = 0; i < cjInfo.SequenceNameList.Length; i++)
                     {
-                        info.ModuleData.WaferManager.Wafers[24-i].SequenceName = cjInfo.SequenceNameList[i];
+                        info.ModuleData.WaferManager.Wafers[24 - i].SequenceName = cjInfo.SequenceNameList[i];
                     }
                 }
                 info.PreCleanRecipeName = cjInfo.PreJobClean;
@@ -1249,13 +1258,13 @@ namespace Venus_MainPages.ViewModels
             }
 
             m_RtDataKeys.Add("System.IsAutoMode");
-            m_RtDataKeys.Add("System.IsBusy");      
+            m_RtDataKeys.Add("System.IsBusy");
             m_RtDataKeys.Add("Scheduler.CycledCount");
             m_RtDataKeys.Add("Scheduler.CycledWafer");
             m_RtDataKeys.Add("Scheduler.CycleSetPoint");
             m_RtDataKeys.Add("Scheduler.Throughput");
             m_RtDataKeys.Add("EquipmentStatus");
-            m_RtDataKeys.Add("Scheduler.PjNameList");          
+            m_RtDataKeys.Add("Scheduler.PjNameList");
         }
         private void AssociateSequence(WaferAssociationInfo info, bool flag, int slot = -1)
         {

+ 2 - 1
Venus/Venus_MainPages/ViewModels/RFCalibrationViewModel.cs

@@ -403,7 +403,8 @@ namespace Venus_MainPages.ViewModels
             {
                 SetPointLineSeries.Add(TableData[i].SetPoint);
                 FeedBackLineSeries.Add(TableData[i].ForwardPowerUI);
-            } 
+            }
+            InvokeClient.Instance.Service.DoOperation("System.SetConfig", $"{rf.Module}.{rf.DeviceName}.RFCalibratedMaxPower", RFCalibratedMaxPower);
         }
         #endregion
     }

+ 2 - 1
Venus/Venus_MainPages/ViewModels/RecipeViewModel.cs

@@ -226,7 +226,8 @@ namespace Venus_MainPages.ViewModels
             {
                 di.Create();
             }
-            File.WriteAllText(newrecipePath, RecipeUnity.RecipeToString(CurrentRecipe));
+            //File.WriteAllText(newrecipePath, RecipeUnity.RecipeToString(CurrentRecipe),Encoding.UTF8);
+            SaveAsRecipe2(CurrentRecipe.Header.Name, CurrentRecipe.Header.Type.ToString(), RecipeUnity.RecipeToString(CurrentRecipe));
             LoadHeadWrapPanel(headWrapPanel, CurrentRecipe);
         }
         private void OnSaveToRecipe(object obj)

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

@@ -389,7 +389,7 @@
                     </StackPanel>
                 </TabPanel>
                 <TabPanel Canvas.Left="900"  Canvas.Top="140" Visibility="{Binding ElementName=JobRadioButton1,Path=IsChecked,Converter={StaticResource boolToVisibility2}}" >
-                    <local:WaferAssociationUnit                  WAInfo="{Binding LP1WaferAssociation}" />
+                    <local:WaferAssociationUnit                  WAInfo="{Binding LP1WaferAssociation}" ButtonIsEnable="{Binding RtDataValues[System.IsAutoMode],Converter={StaticResource BoolToBool}}"/>
                 </TabPanel>
                 <TabPanel Canvas.Left="900"  Canvas.Top="140" Visibility="{Binding ElementName=JobRadioButton2,Path=IsChecked,Converter={StaticResource boolToVisibility2}}" >
                     <local:WaferAssociationUnit   WAInfo="{Binding LP2WaferAssociation}"/>

+ 6 - 4
Venus/Venus_MainPages/Views/OverKepler2200BView.xaml

@@ -988,14 +988,16 @@
                         <MenuItem Header="Stop Recipe"                       Cursor="Hand"   Command="{Binding AbortRecipeCommnad}" CommandParameter="0"/>
                         <MenuItem Header="Stop Recipe=>Return Wafer To Foup" Cursor="Hand"   Command="{Binding AbortRecipeCommnad}" CommandParameter="2"/>
                     </customControls:SplitButton>
-                    <RadioButton Content="OffLine" GroupName="Online"    Width="100" Height="28" Margin="30 0 5 0" Style="{StaticResource Button_RadioButton}"  IsChecked="{Binding IsAutoMode,Converter={StaticResource BoolToBool},UpdateSourceTrigger=PropertyChanged}" FontSize="15" Command="{Binding OfflineCommand}"/>
-                    <RadioButton Content="OnLine"  GroupName="Online"    Width="100" Height="28" Margin="0 0 0 0" Style="{StaticResource Button_RadioButton}"   IsChecked="{Binding IsAutoMode,UpdateSourceTrigger=PropertyChanged}" FontSize="15"                                       Command="{Binding OnlineCommand}"/>
+                    <RadioButton Content="OffLine"    Width="100" Height="28" Margin="30 0 5 0" Style="{StaticResource Button_RadioButton}"  IsChecked="{Binding IsAutoMode,Converter={StaticResource BoolToBool},UpdateSourceTrigger=PropertyChanged}" FontSize="15" Command="{Binding OfflineCommand}"/>
+                    <RadioButton Content="OnLine"      Width="100" Height="28" Margin="0 0 0 0" Style="{StaticResource Button_RadioButton}"   IsChecked="{Binding IsAutoMode,UpdateSourceTrigger=PropertyChanged}" FontSize="15"                                       Command="{Binding OnlineCommand}"/>
                     <customControls:PathButton  Width="120" Height="30" Content="Vent"          Command="{Binding VentCommand}"          Margin="30,0,0,0"  IsEnabled="{Binding IsAutoMode,Converter={StaticResource BoolToBool}}" />
                     <customControls:PathButton  Width="120" Height="30" Content="Pump Purge"    Command="{Binding PurgeCommand}"         Margin="30,0,0,0"  IsEnabled="{Binding IsAutoMode,Converter={StaticResource BoolToBool}}" />
                     <customControls:PathButton  Width="120" Height="30" Content="Pump Down"     Command="{Binding PumpCommand}"          Margin="30,0,0,0"  IsEnabled="{Binding IsAutoMode,Converter={StaticResource BoolToBool}}"/>
 
-                    <RadioButton Content="Exclude"  GroupName="Include"    Width="100" Height="28" Margin="30 0 5 0" Style="{StaticResource Button_RadioButton}"  IsChecked="{Binding IsInclude,Converter={StaticResource BoolToBool},UpdateSourceTrigger=PropertyChanged}" FontSize="15" Command="{Binding IncludeCommand}"/>
-                    <RadioButton Content="Include"  GroupName="Include"    Width="100" Height="28" Margin="0 0 0 0" Style="{StaticResource Button_RadioButton}"   IsChecked="{Binding IsInclude,UpdateSourceTrigger=PropertyChanged}" FontSize="15"   Command="{Binding IncludeCommand}"/>
+                    <StackPanel Orientation="Horizontal" Margin="30 0 0 0">
+                        <RadioButton Content="Exclude"  Margin="0 0 5 0"    Width="100" Height="28"  Style="{StaticResource Button_RadioButton}"   IsChecked="{Binding IsInclude,Converter={StaticResource BoolToBool},UpdateSourceTrigger=PropertyChanged}" FontSize="15" Command="{Binding IncludeCommand}"/>
+                        <RadioButton Content="Include"                      Width="100" Height="28"   Style="{StaticResource Button_RadioButton}"   IsChecked="{Binding IsInclude,UpdateSourceTrigger=PropertyChanged}" FontSize="15"                                       Command="{Binding IncludeCommand}"/>
+                    </StackPanel>
                 </StackPanel>
             </Border>
 

+ 6 - 14
Venus/Venus_MainPages/Views/WaferAssociationUnit.xaml

@@ -72,18 +72,19 @@
                     <TextBlock Text="Status" Grid.Column="2" TextWrapping="Wrap" Foreground="{DynamicResource FG_Black}" FontSize="15" FontFamily="Arial" VerticalAlignment="Center"></TextBlock>
                    
                 </Grid>
-                <StackPanel Grid.Row="6" Orientation="Horizontal"  HorizontalAlignment="Center" VerticalAlignment="Center">
+                <StackPanel Grid.Row="6" Orientation="Horizontal"  HorizontalAlignment="Center" VerticalAlignment="Center" IsEnabled="{Binding ElementName=WaferUnit,Path=ButtonIsEnable,Converter={StaticResource BoolToBool}}">
                     <Button Content="Create Job" Width="120" Height="25"  Command="{Binding CreateJobCommand}" CommandParameter="{Binding ElementName=WaferUnit,Path=WAInfo}"/>
                     <Button Content="Abort Job"  Width="120" Height="25"  Command="{Binding AbortJobCommand}"  CommandParameter="{Binding WAInfo.JobID,RelativeSource={RelativeSource FindAncestor, AncestorType={x:Type UserControl}}}"/>
                 </StackPanel>
-                <StackPanel Grid.Row="7" Orientation="Horizontal"  VerticalAlignment="Center" HorizontalAlignment="Center">
+                <StackPanel Grid.Row="7" Orientation="Horizontal"  VerticalAlignment="Center" HorizontalAlignment="Center" IsEnabled="{Binding ElementName=WaferUnit,Path=ButtonIsEnable,Converter={StaticResource BoolToBool}}">
                     <Button Content="Start" Width="100" Height="25" Command="{Binding StartCommand}"  CommandParameter="{Binding ElementName=WaferUnit,Path=WAInfo}"/>
                     <Button Content="Stop" Width="100" Height="25" Margin="30,0,0,0" Command="{Binding StopCommand}" CommandParameter="{Binding ElementName=WaferUnit,Path=WAInfo}"/>
                     <Button Content="Abort" Width="100" Height="25" Margin="30,0,0,0" Command="{Binding AbortCommand}" CommandParameter="{Binding ElementName=WaferUnit,Path=WAInfo}"/>
                 </StackPanel>
             </Grid>
 
-            <ListBox Grid.Row="1"                 
+            <ListBox Grid.Row="1"    
+                 
                  ItemsSource="{Binding ElementName=WaferUnit,Path=WAInfo.ModuleData.WaferManager.Wafers}" Name="list1">
                 <ListBox.Resources>
                     <Style TargetType="ListBoxItem" BasedOn="{StaticResource ResourceKey={x:Type ListBoxItem}}">
@@ -115,19 +116,10 @@
                                     </Style>
                                 </Border.Style>
                                 <TextBlock Name="txtSeqName" ToolTip="{Binding RelativeSource={RelativeSource Self}, Path=Text}" Text="{Binding SequenceName}" Foreground="{DynamicResource FG_Black}" FontSize="12" FontFamily="Arial" HorizontalAlignment="Center" VerticalAlignment="Center"></TextBlock>
-                                <!--<ComboBox  FontSize="12" FontFamily="Arial" HorizontalAlignment="Center" VerticalAlignment="Center" Width="360" SelectedIndex="{Binding ElementName=WaferUnit,Path=SelectedIndex,Mode=OneWay}">
-                                    <i:Interaction.Triggers>
-                                        <i:EventTrigger EventName="SelectionChanged">
-                                            <i:InvokeCommandAction  Command="{Binding Path=DataContext.SetSequenceCommand, RelativeSource={RelativeSource Mode=FindAncestor,AncestorType=ListBox}}" CommandParameter="{Binding}"/>
-                                        </i:EventTrigger>
-                                    </i:Interaction.Triggers>
-                                    <ComboBoxItem Content="{Binding ElementName=WaferUnit,Path=WAInfo.SequenceName}"></ComboBoxItem>
-                                    <ComboBoxItem Content=""></ComboBoxItem>
-                                </ComboBox>-->
                             </Border>
                            
-                            <Border  Grid.Column="2" BorderBrush="{DynamicResource Table_BD}" BorderThickness="0,1,1,1"  Width="110" Padding="5,1">
-                                <Button Width="60" Height="16"  Command="{Binding Path=DataContext.SetSequenceCommand, RelativeSource={RelativeSource Mode=FindAncestor,AncestorType=ListBox}}" CommandParameter="{Binding}">
+                            <Border  Grid.Column="2" BorderBrush="{DynamicResource Table_BD}" BorderThickness="0,1,1,1"  Width="110" Padding="5,1" >
+                                <Button Width="60" Height="14"  Command="{Binding Path=DataContext.SetSequenceCommand, RelativeSource={RelativeSource Mode=FindAncestor,AncestorType=ListBox}}" CommandParameter="{Binding}" IsEnabled="{Binding ElementName=WaferUnit,Path=ButtonIsEnable}">
                                     <Button.Style>
                                         <Style TargetType="{x:Type Button}" BasedOn="{StaticResource ResourceKey={x:Type Button}}">
                                             <Setter Property="Button.Content" Value="Remove"/>

+ 7 - 0
Venus/Venus_MainPages/Views/WaferAssociationUnit.xaml.cs

@@ -39,6 +39,13 @@ namespace Venus_MainPages.Views
         }
         public static readonly DependencyProperty SelectedIndexProperty = DependencyProperty.Register("SelectedIndex", typeof(int), typeof(WaferAssociationUnit),new PropertyMetadata(1));
 
+        public bool ButtonIsEnable
+        {
+            get { return (bool)GetValue(ButtonIsEnableProperty); }
+            set { SetValue(ButtonIsEnableProperty, value); }
+        }
+        public static readonly DependencyProperty ButtonIsEnableProperty = DependencyProperty.Register("ButtonIsEnable", typeof(bool), typeof(WaferAssociationUnit), new PropertyMetadata(true));
+
         private void cb_DropDownOpened(object sender, EventArgs e)
         {
             cb.ItemsSource=GetFilesNames(System.IO.Path.Combine(QueryDataClient.Instance.Service.GetData("GetRTPath").ToString(), "Recipes", "Sequence")).ToList();

+ 132 - 342
Venus/Venus_RT/Config/System_Kepler2300.sccfg

@@ -21,7 +21,7 @@
 		<config default="True" name="IsIgnoreSaveDB" nameView="IsIgnoreSaveDB" description="IO实时数据是否保存数据库,2023/09/02暂时加参数设计" max="" min="" paramter="" tag="" unit="" type="Bool" visible="false"/>
 		<config default="10"  name="CheckResourceInterval" nameView="CheckResourceInterval" description="进程资源监视间隔,单位为分钟,0为不监视" max="60" min="0" paramter="" tag="" unit="min" type="Integer"/>
 		<config default="1000"  name="DataCollectionInterval" nameView="DataCollectionInterval" description="插入数据时间间隔" max="2000" min="200" paramter="" tag="" unit="ms" type="Integer"/>
-		<config default="false" name="IsEnableEthercat" nameView="Is Enable Ethercat" description="I是否开启凌华Ethercat" max="" min="" paramter="" tag="" unit="" type="Bool" visible="false"/>
+		<config default="false" name="IsEnableEthercat" nameView="Is Enable Ethercat" description="是否开启凌华Ethercat" max="" min="" paramter="" tag="" unit="" type="Bool" visible="false"/>
 		<config default="Kepler" name="Name" nameView="Name" description="Name" tag="" unit="" type="String" />
 		<configs name="SetUp" nameView="Set Up" visible="false">
 			<config default="true" name="EPDInstalled" nameView="Is EPD installed" description="EPD是否安装" max="" min="" paramter="" tag="" unit="" type="Bool" />
@@ -834,7 +834,7 @@
 
 	<!--PMB-->
 	<configs name="PMB" nameView="PMB" >
-		<config default="1" name="ChamberType"  nameView="Chamber Type" description="0=>Venus,1=>Kepler2300,2=>Kepler2200A,3=>Kepler2200B" max="5" min="0" paramter="" tag=""  unit="" type="Integer" visible="false"/>
+		<config default="0" name="ChamberType"  nameView="Chamber Type" description="0=>Venus,1=>Kepler2300,2=>Kepler2200A,3=>Kepler2200B" max="5" min="0" paramter="" tag=""  unit="" type="Integer" visible="false"/>
 		<config default="100" name="TurboN2FlowSetPoint" nameView="TurboN2SetPoint" description="" max="200" min="0" paramter="" tag="" unit="sccm" type="Double" />
 		<config default="120" name="PrepareTransferTimeout" nameView="Prepare Transfer Timeout" description="prepare transfer time out" max="99999" min="1" paramter="" tag="" unit="s" type="Integer" />
 		<config default="120" name="TransferWaferTimeout" nameView="Transfer Wafer Timeout" description="Transfer Wafer Timeout" max="99999" min="1" paramter="" tag="" unit="s" type="Integer" />
@@ -863,14 +863,15 @@
 		<config default="Strip" name="ChamberLabel"  nameView="Chamber Label" description="Chamber名称" max="" min="" paramter="" tag=""  unit="" type="String" />
 		<config default="30" name="MaxDeviationInMFCVerification" nameView="MFC verification允许的最大偏差值(%)" max="100000" min="0" paramter="" tag="" unit="%" visible="false" type="Double" />
 		<config default="150" name="WallHeaterSetPointLimit" nameView="Wall Heater Set Point Limit" description="" max="500" min="0" paramter="" tag="" unit="" type="Integer" />
+		<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="EnableWallHeater" nameView="Enable Chamber Wall Heater" description="" max="10" min="0" paramter="" tag="" unit="" type="Bool" />
 		<config default="false" name="EnableGridHeater" nameView="Enable Chamber Grid Heater" description="" max="10" min="0" paramter="" tag="" unit="" type="Bool" />
 		<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="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" />
-		<config default="80"  name="ControlPressureSetPoint"   nameView="Control Pressure SetPoint"   description="PM Chamber 控压 设定值" max="2000" min="0" paramter="" tag="" unit="mTorr" type="Integer" />
+		<config default="80"   name="ControlPressureSetPoint"       nameView="Control Pressure SetPoint"   description="PM Chamber 控压 设定值" max="2000" min="0" paramter="" tag="" unit="mTorr" type="Integer" />
 		<config default="300"  name="ControlPressureN2FlowSetPoint"   nameView="Control Pressure N2 Flow SetPoint"   description="PM Chamber 控压 设定值" max="500" min="0" paramter="" tag="" unit="sccm" type="Integer" />
 
 		<configs name="MFCVerification" nameView="MFC Verification" >
@@ -888,24 +889,26 @@
 			<config default="5" name="CheckStableTimeout" nameView="稳定条件:在多长时间内处于稳定状态" max="100" min="0" paramter="" tag="" unit="%" visible="false" type="Double" />
 		</configs>
 
-		<configs name="Chiller" nameView="Chiller" >
+		<!--<configs name="Chiller" nameView="Chiller">
 			<config default="true" name="EnableChiller" nameView="Enable Chiller" description="enable chiller or not" max="1" min="0" tag="" unit="" type="Bool" />
-			<config default="false" name="ChillerSameWithPMA" nameView="Chiller Same With PMA" description="enable chiller same with PMA or not" max="1" min="0" tag="" unit="" type="Bool" />
+			-->
+		<!--<config default="false" name="ChillerSameWithPMB" nameView="Chiller Same With PMB" description="enable chiller same with PMB or not" max="1" min="0" tag="" unit="" type="Bool" />-->
+		<!--
 			<config default="1" name="MFG" nameView="MFG" description="厂商, 1:SMC; 2, AIRSYS" max="10" min="0" paramter="" tag="" unit="" type="Integer" />
 			<config default="1" name="CommunicationType" nameView="Communication Type" description="0:Analogue; 1:RS232; 2:Ethernet" max="10" min="0" paramter="" tag="" unit="" type="Integer" />
-			<config default="COM46" name="Port" nameView="Port" description="serial port name of pump" max="" min="" paramter="" tag="" unit="" type="String" />
+			<config default="COM44" name="Port" nameView="Port" description="serial port name of pump" max="" min="" paramter="" tag="" unit="" type="String" />
 			<config default="10" name="ChillerTemperatureOffset" nameView="Chiller Temperature Offset" description="" max="100" min="0" paramter="" tag="" unit="degree" type="Double" />
 			<config default="300" name="SetPointLimitMax" nameView="Chiller Set Point Limit Max" description="" max="500" min="0" paramter="" tag="" unit="degree" type="Double" />
 			<config default="0" name="SetPointLimitMin" nameView="Chiller Set Point Limit Min" description="" max="500" min="0" paramter="" tag="" unit="degree" type="Double" />
 			<config default="true" name="EnableToleranceAlarm" nameView="Enable Tolerance Alarm" description="Enable Tolerance Alarm" max="1" min="0" paramter="" tag="" unit="" type="Bool" />
 			<config default="20" name="ToleranceAlarmRange" nameView="Tolerance Alarm Range" description="Tolerance Alarm Range" max="200" min="0" paramter="" tag="" unit="℃" type="Integer" />
 			<config default="60" name="ToleranceAlarmTime" nameView="Tolerance Alarm Time" description="Tolerance Alarm Time" max="60" min="0" paramter="" tag="" unit="second" type="Integer" />
-		</configs>
+		</configs>-->
 		<configs name="InnerChiller" nameView="InnerChiller" >
-			<config default="true" name="EnableChiller" nameView="Enable Chiller" description="enable chiller or not" max="1" min="0" tag="" unit="" type="Bool" />
+			<config default="false" name="EnableChiller" nameView="Enable Chiller" description="enable chiller or not" max="1" min="0" tag="" unit="" type="Bool" />
 			<config default="1" name="MFG" nameView="MFG" description="厂商, 1:SMC; 2, AIRSYS" max="10" min="0" paramter="" tag="" unit="" type="Integer" />
 			<config default="1" name="CommunicationType" nameView="Communication Type" description="0:Analogue; 1:RS232; 2:Ethernet" max="10" min="0" paramter="" tag="" unit="" type="Integer" />
-			<config default="COM71" name="Port" nameView="Port" description="serial port name of pump" max="" min="" paramter="" tag="" unit="" type="String" />
+			<config default="COM45" name="Port" nameView="Port" description="serial port name of pump" max="" min="" paramter="" tag="" unit="" type="String" />
 			<config default="10" name="ChillerTemperatureOffset" nameView="Chiller Temperature Offset" description="" max="100" min="0" paramter="" tag="" unit="degree" type="Double" />
 			<config default="300" name="SetPointLimitMax" nameView="Chiller Set Point Limit Max" description="" max="500" min="0" paramter="" tag="" unit="degree" type="Double" />
 			<config default="0" name="SetPointLimitMin" nameView="Chiller Set Point Limit Min" description="" max="500" min="0" paramter="" tag="" unit="degree" type="Double" />
@@ -914,7 +917,7 @@
 			<config default="60" name="ToleranceAlarmTime" nameView="Tolerance Alarm Time" description="Tolerance Alarm Time" max="60" min="0" paramter="" tag="" unit="second" type="Integer" />
 		</configs>
 		<configs name="OuterChiller" nameView="OuterChiller" >
-			<config default="true" name="EnableChiller" nameView="Enable Chiller" description="enable chiller or not" max="1" min="0" tag="" unit="" type="Bool" />
+			<config default="false" name="EnableChiller" nameView="Enable Chiller" description="enable chiller or not" max="1" min="0" tag="" unit="" type="Bool" />
 			<config default="1" name="MFG" nameView="MFG" description="厂商, 1:SMC; 2, AIRSYS" max="10" min="0" paramter="" tag="" unit="" type="Integer" />
 			<config default="1" name="CommunicationType" nameView="Communication Type" description="0:Analogue; 1:RS232; 2:Ethernet" max="10" min="0" paramter="" tag="" unit="" type="Integer" />
 			<config default="COM46" name="Port" nameView="Port" description="serial port name of pump" max="" min="" paramter="" tag="" unit="" type="String" />
@@ -926,7 +929,7 @@
 			<config default="60" name="ToleranceAlarmTime" nameView="Tolerance Alarm Time" description="Tolerance Alarm Time" max="60" min="0" paramter="" tag="" unit="second" type="Integer" />
 		</configs>
 		<configs name="TopChiller" nameView="TopChiller" >
-			<config default="true" name="EnableChiller" nameView="Enable Chiller" description="enable chiller or not" max="1" min="0" tag="" unit="" type="Bool" />
+			<config default="false" name="EnableChiller" nameView="Enable Chiller" description="enable chiller or not" max="1" min="0" tag="" unit="" type="Bool" />
 			<config default="1" name="MFG" nameView="MFG" description="厂商, 1:SMC; 2, AIRSYS" max="10" min="0" paramter="" tag="" unit="" type="Integer" />
 			<config default="1" name="CommunicationType" nameView="Communication Type" description="0:Analogue; 1:RS232; 2:Ethernet" max="10" min="0" paramter="" tag="" unit="" type="Integer" />
 			<config default="COM47" name="Port" nameView="Port" description="serial port name of pump" max="" min="" paramter="" tag="" unit="" type="String" />
@@ -940,24 +943,15 @@
 		<configs name="DryPump" nameView="Dry Pump" >
 			<config default="1" name="MFG" nameView="MFG" description="厂商, 1:Sky; 2:Edwards" max="10" min="0" paramter="" tag="" unit="" type="Integer" />
 			<config default="1" name="CommunicationType" nameView="Communication Type" description="0:Analogue; 1:RS232; 2:Ethernet" max="10" min="0" paramter="" tag="" unit="" type="Integer" />
-			<config default="COM34" name="Port" nameView="Port" description="serial port name of pump" max="" min="" paramter="" tag="" unit="" type="String" />
+			<config default="COM22" name="Port" nameView="Port" description="serial port name of pump" max="" min="" paramter="" tag="" unit="" type="String" />
 			<config default="1000" name="ChamberForelinePressureThreshold" nameView="Chamber Foreline Pressure Threshold" description="" max="10000" min="0" paramter="" tag="" unit="mtorr" type="Double" />
 			<config default="20" name="ChamberForelinePressureTimeout" nameView="Chamber Foreline Pressure Timeout" description="" max="3000" min="0" paramter="" tag="" unit="s" type="Integer" />
 		</configs>
-    <configs name="Magnet" nameView="Magnet" visible="false">
-      <config default="1" name="Magnetwareform" nameView="Magnet wareform" description="厂商, 0:SIN,1:Squre,2:Single" max="2" min="0" paramter="" tag="" unit="" type="Integer" visible="true"/>
-      <config default="0.25" name="MagentFieldRatio" nameView="Magent Field Ratio" description="" max="1" min="0" paramter="" tag="" unit="" type="Integer" visible="true"/>
-      <config default="4s" name="Magnetcycleperiod" nameView="Magnet cycle period" description="serial port name of pump" max="10" min="0" paramter="" tag="" unit="s" type="String" visible="true"/>
-      <config default="50" name="Magnet 1A output full scale" nameView="Magnet 1A output full scale" description="" max="100" min="50" paramter="" tag="" unit="gs" type="Double" visible="true"/>
-      <config default="50" name="Magnet 1B output full scale" nameView="Magnet 1B output full scale" description="" max="100" min="0" paramter="" tag="" unit="gs" type="Integer" visible="true" />
-      <config default="50" name="Magnet 2A output full scale" nameView="Magnet 2A output full scale" description="" max="100" min="0" paramter="" tag="" unit="gs" type="Integer" visible="true" />
-      <config default="50" name="Magnet 2B output full scale" nameView="Magnet 2B output full scale" description="" max="100" min="0" paramter="" tag="" unit="gs" type="Integer" visible="true" />
-      <config default="3" name="Min Magnet Coil current" nameView="Min Magnet Coil current" description="" max="100" min="0" paramter="" tag="" unit="A" type="Integer" visible="true" />
-    </configs>
+
 		<configs name="Rf" nameView="Source RF" >
 			<config default="1" name="MFG" nameView="MFG" description="厂商, 1:AdTec; 2:Comet" max="10" min="0" paramter="" tag="" unit="" type="Integer" />
 			<config default="1" name="CommunicationType" nameView="Communication Type" description="0:Analogue; 1:RS232; 2:Ethernet" max="10" min="0" paramter="" tag="" unit="" type="Integer" />
-			<config default="COM36" name="Port" nameView="Port" description="serial port name of RFG" max="" min="" paramter="" tag="" unit="" type="String" />
+			<config default="COM38" name="Port" nameView="Port" description="serial port name of RFG" max="" min="" paramter="" tag="" unit="" type="String" />
 			<config default="192.168.10.21:502" name="IPAddress" nameView="IP Address" description="RF IP,default 127.0.0.1:502" max="" min="" paramter="" tag="" unit="" type="String" />
 			<config default="500" name="PowerAlarmRange" nameView="Power Alarm Range" description="" max="1000" min="0" paramter="" tag="" unit="" type="Double" />
 			<config default="10" name="PowerAlarmTime" nameView="Power Alarm Time" description="" max="10" min="0" paramter="" tag="" unit="" type="Double" />
@@ -976,25 +970,27 @@
 			<config default="3" name="RFTurnOnTimeout" nameView="RF Turn On Timeout" description="" max="10" min="0" paramter="" tag="" unit="S" type="Integer" />
 			<config default="false" name="EnableCalibration" nameView="是否校准" max="" min="" paramter="" tag="" unit="" visible="true" type="Bool" />
 			<config default="100#100;200#200;" name="CalibrationTable" nameView="校准表" max="" min="0" paramter="" tag="" unit="" visible="false" type="String" />
+
+			<config default="" name="GeneratorSerialNumber" nameView="RF电源序列号" max="" min="0" paramter="" tag="" unit="" type="String" />
+			<config default="" name="SensorSerialNumber" nameView="SensorHead序列号" max="" min="0" paramter="" tag="" unit="" type="String" />
+			<config default="2000" name="RFPhysicalMaxPower" nameView="RF Physical Max Power" description="" max="9999" min="0" paramter="" tag="" unit="" type="Double"  visible="false"/>
+			<config default="2000" name="CurrentRFMaxPower" nameView="Current RF Max Power" description="" max="2200" min="1800" paramter="" tag="" unit="" type="Double" />
+			<config default="2000" name="RFCalibratedMaxPower" nameView="RF Calibrated Max Power" description="" max="9999" min="0" paramter="" tag="" unit="" type="Double" />
+			<config default="" name="CalibrationTableDetail" nameView="详细校准表" max="" min="0" paramter="" tag="" unit="" visible="false" type="String" />
+
 		</configs>
 		<configs name="Match" nameView="Source Match" >
 			<config default="false" name="EnableMatch" nameView="Enable Source Match" description="enable match or not" max="1" min="0" tag="" unit="" type="Bool" />
 			<config default="1" name="MFG" nameView="MFG" description="厂商, 1:AdTec; 2:Comet; 3:Revtech" max="10" min="0" paramter="" tag="" unit="" type="Integer" />
 			<config default="1" name="CommunicationType" nameView="Communication Type" description="0:Analogue; 1:RS232; 2:Ethernet" max="10" min="0" paramter="" tag="" unit="" type="Integer" />
-			<config default="COM42" name="Port" nameView="Port" description="serial port name of match" max="" min="" paramter="" tag="" unit="" type="String" />
+			<config default="COM40" name="Port" nameView="Port" description="serial port name of match" max="" min="" paramter="" tag="" unit="" type="String" />
 			<config default="192.168.10.21:502" name="IPAddress" nameView="IP Address" description="Match IP,default 127.0.0.1:502" max="" min="" paramter="" tag="" unit="" type="String" />
 			<config default="1" name="MatchMode" nameView="Match Mode" description="" max="10" min="0" paramter="" tag="" unit="" type="Integer" />
 			<config default="false" name="EnableC1C2Position" nameView="Enable Source C1 C2 Position" description="" max="10" min="0" paramter="" tag="" unit="" type="Bool" />
 			<config default="false" name="EnableC1C2StepOffset" nameView="Enable Bias C1 C2 Position" description="" max="10" min="0" paramter="" tag="" unit="" type="Bool" />
 			<config default="1"     name="C1C2StepOffsetValue"  nameView="Bias C1 C2 Step Offset Value" description="" max="10" min="0" paramter="" tag="" unit="" type="Integer" />
 		</configs>
-		<configs name="RFBox" nameView="RF Box" >
-			<config default="false" name="EnableMatch" nameView="Enable Source Match" description="enable match or not" max="1" min="0" tag="" unit="" type="Bool" />
-			<config default="1" name="MFG" nameView="MFG" description="厂商, 1:AdTec; 2:Comet; 3:Revtech" max="10" min="0" paramter="" tag="" unit="" type="Integer" />
-			<config default="1" name="CommunicationType" nameView="Communication Type" description="0:Analogue; 1:RS232; 2:Ethernet" max="10" min="0" paramter="" tag="" unit="" type="Integer" />
-			<config default="COM40" name="Port" nameView="Port" description="serial port name of match" max="" min="" paramter="" tag="" unit="" type="String" />
-			<config default="192.168.10.21:502" name="IPAddress" nameView="IP Address" description="Match IP,default 127.0.0.1:502" max="" min="" paramter="" tag="" unit="" type="String" />
-		</configs>
+
 		<configs name="BiasRf" nameView="Bias RF" >
 			<config default="true" name="EnableBiasRF" nameView="Enable Bias RF" description="enable bias RF or not" max="1" min="0" tag="" unit="" type="Bool" />
 			<config default="2" name="MFG" nameView="MFG" description="厂商, 1:AdTec; 2:Comet" max="10" min="0" paramter="" tag="" unit="" type="Integer" />
@@ -1017,6 +1013,14 @@
 			<config default="3000" name="RfPowerAlarmTime" nameView="RF Power Alarm Time" description="" max="10000" min="0" paramter="" tag="" unit="" type="Integer" />
 			<config default="false" name="EnableCalibration" nameView="是否校准" max="" min="" paramter="" tag="" unit="" visible="true" type="Bool" />
 			<config default="100#100;200#200;" name="CalibrationTable" nameView="校准表" max="" min="0" paramter="" tag="" unit="" visible="false" type="String" />
+
+			<config default="" name="GeneratorSerialNumber" nameView="RF电源序列号" max="" min="0" paramter="" tag="" unit="" type="String" />
+			<config default="" name="SensorSerialNumber" nameView="SensorHead序列号" max="" min="0" paramter="" tag="" unit="" type="String" />
+			<config default="2000" name="RFPhysicalMaxPower" nameView="RF Physical Max Power" description="" max="9999" min="0" paramter="" tag="" unit="" type="Double"  visible="false"/>
+			<config default="2000" name="CurrentRFMaxPower" nameView="Current RF Max Power" description="" max="2200" min="1800" paramter="" tag="" unit="" type="Double" />
+			<config default="2000" name="RFCalibratedMaxPower" nameView="RF Calibrated Max Power" description="" max="9999" min="0" paramter="" tag="" unit="" type="Double" />
+			<config default="" name="CalibrationTableDetail" nameView="详细校准表" max="" min="0" paramter="" tag="" unit="" visible="false" type="String" />
+
 		</configs>
 		<configs name="BiasMatch" nameView="Bias Match" >
 			<config default="false" name="EnableBiasMatch" nameView="Enable Bias Match" description="enable bias match or not" max="1" min="0" tag="" unit="" type="Bool" />
@@ -1042,7 +1046,6 @@
 			<config default="10" name="MfcWarningRange" nameView="MFC Warning Range" description="" max="200" min="0" paramter="" tag="" unit="sccm" type="Integer" />
 			<config default="10" name="MfcWarningTime" nameView="MFC Warning Time" description="" max="60" min="0" paramter="" tag="" unit="second" type="Integer" />
 			<config default="0" name="MFCWriteMode" nameView="MFCWriteMode" description=" 0:Flow; 1:Percent" max="1" min="0" paramter="" tag="" unit="" type="Integer" />
-
 		</configs>
 		<configs name="MfcGas2" nameView="MFC Gas2" >
 			<config default="true" name="Enable" nameView="Enable" description="Enable gas 2 or not" tag="" unit="" type="Bool" />
@@ -1149,62 +1152,7 @@
 			<config default="0" name="MFCWriteMode" nameView="MFCWriteMode" description=" 0:Flow; 1:Percent" max="1" min="0" paramter="" tag="" unit="" type="Integer" />
 
 		</configs>
-		<configs name="MfcGas9" nameView="MFC Gas9" >
-			<config default="true" name="Enable" nameView="Enable" description="Enable gas 9 or not" tag="" unit="" type="Bool" />
-			<config default="Gas6" name="GasName" nameView="Gas Name" description="Name of NO.9 gas stick" tag="" unit="" type="String" />
-			<config default="100" name="MfcN2Scale" nameView="MFC N2 Scale" description="Max scale by N2 tuning" max="10000" min="0" tag="" unit="sccm" type="Integer" />
-			<config default="1" name="MfcScaleFactor" nameView="MFC Scale Factor" description="Scale factor" max="10" min="0" tag="" unit="sccm" type="Double" />
-			<config default="100" name="DefaultSetPoint" nameView="Default Set Point" description="default setpoint" max="1000" min="0" tag="" unit="sccm" type="Integer" />
-			<config default="1" name="FlowRegulationFactor" nameView="Flow Regulation Factor" description="flow regulation factor" max="10" min="0" tag="" unit="sccm" type="Integer" />
-			<config default="true" name="MfcEnableAlarm" nameView="MFC Enable Alarm" description="Mfc Enable Alarm" max="1" min="0" paramter="" tag="" unit="" type="Bool" />
-			<config default="10" name="MfcAlarmRange" nameView="MFC Alarm Range" description="Mfc Alarm Range" max="200" min="0" paramter="" tag="" unit="sccm" type="Integer" />
-			<config default="10" name="MfcAlarmTime" nameView="MFC Alarm Time" description="Mfc Alarm Time" max="60" min="0" paramter="" tag="" unit="second" type="Integer" />
-			<config default="10" name="MfcWarningRange" nameView="MFC Warning Range" description="" max="200" min="0" paramter="" tag="" unit="sccm" type="Integer" />
-			<config default="10" name="MfcWarningTime" nameView="MFC Warning Time" description="" max="60" min="0" paramter="" tag="" unit="second" type="Integer" />
-			<config default="0" name="MFCWriteMode" nameView="MFCWriteMode" description=" 0:Flow; 1:Percent" max="1" min="0" paramter="" tag="" unit="" type="Integer" />
-		</configs>
-		<configs name="MfcGas10" nameView="MFC Gas10" >
-			<config default="true" name="Enable" nameView="Enable" description="Enable gas 10 or not" tag="" unit="" type="Bool" />
-			<config default="Gas7" name="GasName" nameView="Gas Name" description="Name of NO.10 gas stick" tag="" unit="" type="String" />
-			<config default="100" name="MfcN2Scale" nameView="MFC N2 Scale" description="Max scale by N2 tuning" max="10000" min="0" tag="" unit="sccm" type="Integer" />
-			<config default="1" name="MfcScaleFactor" nameView="MFC Scale Factor" description="Scale factor" max="10" min="0" tag="" unit="sccm" type="Double" />
-			<config default="100" name="DefaultSetPoint" nameView="Default Set Point" description="default setpoint" max="1000" min="0" tag="" unit="sccm" type="Integer" />
-			<config default="1" name="FlowRegulationFactor" nameView="Flow Regulation Factor" description="flow regulation factor" max="10" min="0" tag="" unit="sccm" type="Integer" />
-			<config default="true" name="MfcEnableAlarm" nameView="MFC Enable Alarm" description="Mfc Enable Alarm" max="1" min="0" paramter="" tag="" unit="" type="Bool" />
-			<config default="10" name="MfcAlarmRange" nameView="MFC Alarm Range" description="Mfc Alarm Range" max="200" min="0" paramter="" tag="" unit="sccm" type="Integer" />
-			<config default="10" name="MfcAlarmTime" nameView="MFC Alarm Time" description="Mfc Alarm Time" max="60" min="0" paramter="" tag="" unit="second" type="Integer" />
-			<config default="10" name="MfcWarningRange" nameView="MFC Warning Range" description="" max="200" min="0" paramter="" tag="" unit="sccm" type="Integer" />
-			<config default="10" name="MfcWarningTime" nameView="MFC Warning Time" description="" max="60" min="0" paramter="" tag="" unit="second" type="Integer" />
-			<config default="0" name="MFCWriteMode" nameView="MFCWriteMode" description=" 0:Flow; 1:Percent" max="1" min="0" paramter="" tag="" unit="" type="Integer" />
-		</configs>
-		<configs name="MfcGas11" nameView="MFC Gas8" >
-			<config default="true" name="Enable" nameView="Enable" description="Enable gas 11 or not" tag="" unit="" type="Bool" />
-			<config default="Gas8" name="GasName" nameView="Gas Name" description="Name of NO.11 gas stick" tag="" unit="" type="String" />
-			<config default="100" name="MfcN2Scale" nameView="MFC N2 Scale" description="Max scale by N2 tuning" max="10000" min="0" tag="" unit="sccm" type="Integer" />
-			<config default="1" name="MfcScaleFactor" nameView="MFC Scale Factor" description="Scale factor" max="10" min="0" tag="" unit="sccm" type="Double" />
-			<config default="100" name="DefaultSetPoint" nameView="Default Set Point" description="default setpoint" max="1000" min="0" tag="" unit="sccm" type="Integer" />
-			<config default="1" name="FlowRegulationFactor" nameView="Flow Regulation Factor" description="flow regulation factor" max="10" min="0" tag="" unit="sccm" type="Integer" />
-			<config default="true" name="MfcEnableAlarm" nameView="MFC Enable Alarm" description="Mfc Enable Alarm" max="1" min="0" paramter="" tag="" unit="" type="Bool" />
-			<config default="10" name="MfcAlarmRange" nameView="MFC Alarm Range" description="Mfc Alarm Range" max="200" min="0" paramter="" tag="" unit="sccm" type="Integer" />
-			<config default="10" name="MfcAlarmTime" nameView="MFC Alarm Time" description="Mfc Alarm Time" max="60" min="0" paramter="" tag="" unit="second" type="Integer" />
-			<config default="10" name="MfcWarningRange" nameView="MFC Warning Range" description="" max="200" min="0" paramter="" tag="" unit="sccm" type="Integer" />
-			<config default="10" name="MfcWarningTime" nameView="MFC Warning Time" description="" max="60" min="0" paramter="" tag="" unit="second" type="Integer" />
-			<config default="0" name="MFCWriteMode" nameView="MFCWriteMode" description=" 0:Flow; 1:Percent" max="1" min="0" paramter="" tag="" unit="" type="Integer" />
-		</configs>
-		<configs name="MfcGas12" nameView="MFC Gas12" >
-			<config default="true" name="Enable" nameView="Enable" description="Enable gas 12 or not" tag="" unit="" type="Bool" />
-			<config default="Gas9" name="GasName" nameView="Gas Name" description="Name of NO.12 gas stick" tag="" unit="" type="String" />
-			<config default="100" name="MfcN2Scale" nameView="MFC N2 Scale" description="Max scale by N2 tuning" max="10000" min="0" tag="" unit="sccm" type="Integer" />
-			<config default="1" name="MfcScaleFactor" nameView="MFC Scale Factor" description="Scale factor" max="10" min="0" tag="" unit="sccm" type="Double" />
-			<config default="100" name="DefaultSetPoint" nameView="Default Set Point" description="default setpoint" max="1000" min="0" tag="" unit="sccm" type="Integer" />
-			<config default="1" name="FlowRegulationFactor" nameView="Flow Regulation Factor" description="flow regulation factor" max="10" min="0" tag="" unit="sccm" type="Integer" />
-			<config default="true" name="MfcEnableAlarm" nameView="MFC Enable Alarm" description="Mfc Enable Alarm" max="1" min="0" paramter="" tag="" unit="" type="Bool" />
-			<config default="10" name="MfcAlarmRange" nameView="MFC Alarm Range" description="Mfc Alarm Range" max="200" min="0" paramter="" tag="" unit="sccm" type="Integer" />
-			<config default="10" name="MfcAlarmTime" nameView="MFC Alarm Time" description="Mfc Alarm Time" max="60" min="0" paramter="" tag="" unit="second" type="Integer" />
-			<config default="10" name="MfcWarningRange" nameView="MFC Warning Range" description="" max="200" min="0" paramter="" tag="" unit="sccm" type="Integer" />
-			<config default="10" name="MfcWarningTime" nameView="MFC Warning Time" description="" max="60" min="0" paramter="" tag="" unit="second" type="Integer" />
-			<config default="0" name="MFCWriteMode" nameView="MFCWriteMode" description=" 0:Flow; 1:Percent" max="1" min="0" paramter="" tag="" unit="" type="Integer" />
-		</configs>
+
 		<configs name="MfcN2" nameView="MFC N2" >
 			<config default="true" name="Enable" nameView="Enable" description="Enable N2 or not" tag="" unit="" type="Bool" />
 			<config default="N2" name="GasName" nameView="Gas Name" description="Name of N2 stick" tag="" unit="" type="String" />
@@ -1235,7 +1183,7 @@
 			<config default="0" name="MFCWriteMode" nameView="MFCWriteMode" description=" 0:Flow; 1:Percent" max="1" min="0" paramter="" tag="" unit="" type="Integer" />
 
 		</configs>
-		<configs name="Pump" nameView="Pump" >
+		<configs name="Pump" nameView="Pump">
 			<config default="30" name="LeakRate" nameView="Leak Rate" description="" max="756000" min="0" paramter="" tag="" unit="mTorrPerMin" type="Double" />
 			<config default="300" name="LeakCheckPumpingTime" nameView="Leak Check Pumping Time" description="" max="3000" min="0" paramter="" tag="" unit="" type="Integer" />
 			<config default="180" name="LeakCheckHoldTime" nameView="Leak Check Hold Time" description="" max="3000" min="0" paramter="" tag="" unit="" type="Integer" />
@@ -1245,7 +1193,7 @@
 			<config default="120" name="PumpTimeLimit" nameView="Pump Time Limit" description="" max="3000" min="0" paramter="" tag="" unit="" type="Double" />
 			<config default="5" name="PumpValveDelay" nameView="Pump Valve Delay" description="" max="3000" min="0" paramter="" tag="" unit="s" type="Integer" />
 			<config default="75000" name="PumpCrossingPressure" description="PM Rough Pumping Pressure" max="200000" min="0" paramter="" tag="" unit="mTorr" type="Integer" />
-			<config default="200" name="PumpVHe2FlowPressure" nameView="He2 Flow Pressure" description="" max="756000" min="0" paramter="" tag="" unit="mTorr" type="Integer" />
+			<config default="200" name="PumpVHe2FlowPressure" nameView="He2 Flow Pressure" description="" max="400" min="0" paramter="" tag="" unit="mTorr" type="Integer" />
 			<config default="100" name="LoadLockPumpBasePressure" description="LoadLock Pump Base Pressure" max="756000" min="0" paramter="" tag="" unit="mTorr" type="Integer" />
 			<config default="120" name="LoadLockPumpTimeLimit" description="LoadLock Pump Time Limit" max="3000" min="0" paramter="" tag="" unit="second" type="Integer" />
 			<config default="10" name="LoadLockPurgeVentPressure" description="LoadLock Purge Vent Pressure" max="760" min="0" paramter="" tag="" unit="Torr" type="Integer" />
@@ -1293,7 +1241,6 @@
 			<config name="TempOffsetPoint_9" nameView="Temp Offset Point 9" description="温度补偿点 9" unit="degree" type="Integer" max="300" min="0" />
 			<config name="OffsetValue_9" nameView="Offset Value 9" description="补偿值 9" unit="degree" type="Double" max="300" min="0" />
 		</configs>
-
 		<configs name="WallHeater" nameView="Heater Wall" >
 			<config default="false" name="HeaterEnableTolerance" nameView="Enable Heater Deviation Check" description="" max="0" min="0" paramter="" tag="" unit="" type="Bool" />
 			<config default="200" name="HeaterAlarmRange" nameView="Heater deviation Alarm Range" description="" max="200" min="0" paramter="" tag="" unit="℃" type="Integer" />
@@ -1320,7 +1267,6 @@
 			<config name="TempOffsetPoint_9" nameView="Temp Offset Point 9" description="温度补偿点 9" unit="degree" type="Integer" max="300" min="0" />
 			<config name="OffsetValue_9" nameView="Offset Value 9" description="补偿值 9" unit="degree" type="Double" max="300" min="0" />
 		</configs>
-
 		<configs name="ForelineHeater" nameView="Heater Foreline" >
 			<config default="false" name="HeaterEnableTolerance" nameView="Enable Heater Deviation Check" description="" max="0" min="0" paramter="" tag="" unit="" type="Bool" />
 			<config default="200" name="HeaterAlarmRange" nameView="Heater deviation Alarm Range" description="" max="200" min="0" paramter="" tag="" unit="℃" type="Integer" />
@@ -1347,7 +1293,6 @@
 			<config name="TempOffsetPoint_9" nameView="Temp Offset Point 9" description="温度补偿点 9" unit="degree" type="Integer" max="300" min="0" />
 			<config name="OffsetValue_9" nameView="Offset Value 9" description="补偿值 9" unit="degree" type="Double" max="300" min="0" />
 		</configs>
-
 		<configs name="ValveHeater" nameView="Valve Heater" >
 			<config default="false" name="HeaterEnableTolerance" nameView="Enable Heater Deviation Check" description="" max="0" min="0" paramter="" tag="" unit="" type="Bool" />
 			<config default="200" name="HeaterAlarmRange" nameView="Heater deviation Alarm Range" description="" max="200" min="0" paramter="" tag="" unit="℃" type="Integer" />
@@ -1400,23 +1345,22 @@
 			<config name="TempOffsetPoint_9" nameView="Temp Offset Point 9" description="温度补偿点 9" unit="degree" type="Integer" max="300" min="0" />
 			<config name="OffsetValue_9" nameView="Offset Value 9" description="补偿值 9" unit="degree" type="Double" max="300" min="0" />
 		</configs>
-
-		<configs name="ElectrostaticVoltageSource" nameView="Electrostatic Voltage Source">
-			<config default="COM82" name="Port" nameView="Port" description="serial port name of ElectrostaticVoltageSource" max="" min="" paramter="" tag="" unit="" type="String" />
-		</configs>
+		<!--<configs name="ElectrostaticVoltageSource" nameView="Electrostatic Voltage Source">
+			<config default="COM64" name="Port" nameView="Port" description="serial port name of ElectrostaticVoltageSource" max="" min="" paramter="" tag="" unit="" type="String" />
+		</configs>-->
 		<configs name="TurboPump" nameView="Turbo Pump">
-			<config default="COM8" name="Port" nameView="Port" description="serial port name of TurboPump" max="" min="" paramter="" tag="" unit="" type="String" />
+			<config default="COM62" name="Port" nameView="Port" description="serial port name of TurboPump" max="" min="" paramter="" tag="" unit="" type="String" />
 			<config default="500" name="ChamberForelinePressureThreshold" nameView="Chamber Foreline Pressure Threshold" description="" max="10000" min="0" paramter="" tag="" unit="mtorr" type="Double" />
 			<config default="30" name="ChamberForelinePressureTimeout" nameView="Chamber Foreline Pressure Timeout" description="" max="3000" min="0" paramter="" tag="" unit="s" type="Integer" />
 		</configs>
 		<configs name="PendulumValve" nameView="Pendulum Valve">
-			<config default="COM74" name="Port" nameView="Port" description="serial port name of PendulumValve" max="" min="" paramter="" tag="" unit="" type="String" />
+			<config default="COM66" name="Port" nameView="Port" description="serial port name of PendulumValve" max="" min="" paramter="" tag="" unit="" type="String" />
 			<config default="400" name="PressureFullRange" nameView="PressureFullRange" description="Pressure Full Range of PendulumValve" max="100000" min="0" paramter="" tag="" unit="mtorr" type="Integer" />
 			<config default="750"  name="ForelinePressureLimit" nameView="ForelinePressureLimit" description="" max="3000" min="0" paramter="" tag="" unit="mtorr" type="Integer" />
 			<config default="600"  name="ChamberPressureLimit" nameView="ForelinePressureLimit" description="" max="3000" min="0" paramter="" tag="" unit="mtorr" type="Integer" />
 			<config default="100"  name="TurboPumpSpeedLimit"  nameView="Turbo PumpSpeed Limit" description="" max="3000" min="0" paramter="" tag="" unit="" type="Integer" />
-		</configs>
 
+		</configs>
 		<!--Clean-->
 		<configs name="IdleClean" nameView="Idle Clean" visible="false">
 			<config default="0" name="Option" nameView="Idle Clean Option" description="0, disable; 1, By Idle Time; 2, By Wafer Count" max="2" min="0" paramter="" tag="" unit="" type="Integer" />
@@ -1426,31 +1370,18 @@
 			<config default="0" name="WaferCountSinceLastClean" nameView="Wafer Count Since Last Clean" description="Wafer Count Since Last Runing Clean" max="100000" min="0" paramter="" tag="" unit="pcs" type="Integer" />
 			<config default="" name="LastRunTime" nameView="The Time Chamber Last Run Wafer" description="The Time Chamber Last Run Wafer" max="" min="" paramter="" tag="" unit="" type="String" />
 		</configs>
-
 		<configs name="EPD" nameView="EPD Setting">
 			<config default="true" name="IsEnabled" nameView="Is Enabled" description="IsEnabled" max="0" min="0" paramter="" tag="" unit="" type="Bool" />
-			<config default="0" name="ChannelNumber" nameView="EPD Channel Number"  description="channel number" max="32" min="0" paramter="" tag="" unit="" type="Integer" />
+			<config default="0" name="ChannelNumber" nameView="EPD Channel Number" description="channel number" max="32" min="0" paramter="" tag="" unit="" type="Integer" />
 			<config default="127.0.0.1:1102" name="IPAddress" nameView="IP Address" description="EPD IP、端口设置;default 10.0.0.100:13000" max="" min="" paramter="" tag="" unit="" type="String" />
 			<config default="0" name="EPDType" nameView="EPD Type" description="EPD type, 0) by socket, 1) by WCF" max="32" min="0" paramter="" tag="" unit="" type="Integer" />
 		</configs>
-		<configs name="HighTemperatureHeater" nameView="HighTemperatureHeater" >
-			<config default="60" name="LiftServoPosition1"    nameView="Lift Servo Position1"     description="Lift Servo Position1" max="600" min="-600" paramter="" tag="" unit="mm" type="Double" />
-			<config default="60" name="LiftServoPosition2"    nameView="Lift Servo Position2"     description="Lift Servo Position1" max="600" min="-600" paramter="" tag="" unit="mm" type="Double" />
-			<config default="60" name="LiftServoPosition3"    nameView="Lift Servo Position3"     description="Lift Servo Position1" max="600" min="-600" paramter="" tag="" unit="mm" type="Double" />
-			<config default="60" name="LiftServoPosition4"    nameView="Lift Servo Position4"     description="Lift Servo Position1" max="600" min="-600" paramter="" tag="" unit="mm" type="Double" />
-			<config default="60" name="LiftServoPosition5"    nameView="Lift Servo Position5"     description="Lift Servo Position1" max="600" min="-600" paramter="" tag="" unit="mm" type="Double" />
-			<config default="60" name="OriginSearchHighSpeed" nameView="Origin Search High Speed" description="Lift Servo Position1" max="600" min="-600" paramter="" tag="" unit="mm" type="Double" />
-			<config default="60" name="OriginSearchLowSpeed"  nameView="Origin Search Low Speed"  description="Lift Servo Position1" max="600" min="-600" paramter="" tag="" unit="mm" type="Double" />
-			<config default="60" name="AbsMoveSpeed"          nameView="Abs Move Speed"           description="Lift Servo Position1" max="600" min="-600" paramter="" tag="" unit="mm" type="Double" />
-			<config default="60" name="MaximusMoveSpeed"      nameView="Maximus Move Speed"       description="Lift Servo Position1" max="600" min="-600" paramter="" tag="" unit="mm" type="Double" />
-			<config default="60" name="SoftDownLimit"         nameView="Soft Down Limit"          description="Lift Servo Position1" max="600" min="-600" paramter="" tag="" unit="mm" type="Double" />
-			<config default="60" name="SoftUpLimit"           nameView="Soft Up Limit"            description="Lift Servo Position1" max="600" min="-600" paramter="" tag="" unit="mm" type="Double" />
-		</configs>
+
 	</configs>
 
 	<!--PMC-->
 	<configs name="PMC" nameView="PMC" >
-		<config default="2" name="ChamberType"  nameView="Chamber Type" description="0=>Venus,1=>Kepler2300,2=>Kepler2200A,3=>Kepler2200B" max="5" min="0" paramter="" tag=""  unit="" type="Integer" visible="false"/>
+		<config default="0" name="ChamberType"  nameView="Chamber Type" description="0=>Venus,1=>Kepler2300,2=>Kepler2200A,3=>Kepler2200B" max="5" min="0" paramter="" tag=""  unit="" type="Integer" visible="false"/>
 		<config default="100" name="TurboN2FlowSetPoint" nameView="TurboN2SetPoint" description="" max="200" min="0" paramter="" tag="" unit="sccm" type="Double" />
 		<config default="120" name="PrepareTransferTimeout" nameView="Prepare Transfer Timeout" description="prepare transfer time out" max="99999" min="1" paramter="" tag="" unit="s" type="Integer" />
 		<config default="120" name="TransferWaferTimeout" nameView="Transfer Wafer Timeout" description="Transfer Wafer Timeout" max="99999" min="1" paramter="" tag="" unit="s" type="Integer" />
@@ -1466,7 +1397,7 @@
 		<config default="140" name="ForeLineHeaterSetPointLimit" nameView="ForeLine Heater Set Point Limit" description="" max="500" min="0" paramter="" tag="" unit="" type="Integer" />
 		<config default="120" name="CheckSubstrateTempTimeout" nameView="Check Substrate Temp Timeout" description="" max="3600" min="0" paramter="" tag="" unit="" type="Integer" />
 		<config default="90" name="CheckATMTimeout" nameView="Check ATM Timeout" description="" max="3000" min="0" paramter="" tag="" unit="s" type="Integer" />
-		<config default="2000" name="OverVentTime" nameView="Over Vent Time Delay" description="" max="60000" min="0" paramter="" tag="" unit="s" type="Integer" />
+		<config default="2000" name="OverVentTime" nameView="Over Vent Time Delay" description="" max="60000" min="0" paramter="" tag="" unit="ms" type="Integer" />
 		<config default="780000" name="ChamberBasePressureThreshold" nameView="Chamber Base Pressure Threshold" description="" max="1000000" min="0" paramter="" tag="" unit="mtorr" type="Double" />
 		<config default="120" name="ChamberBaseTemperatureThreshold" nameView="Chamber Base Temperature Threshold" description="" max="1000" min="0" paramter="" tag="" unit="°C" type="Double" />
 		<config default="10" name="ProcessPressureOffset" nameView="Process Pressure Offset" description="" max="100" min="0" paramter="" tag="" unit="mtorr" type="Double" />
@@ -1479,14 +1410,15 @@
 		<config default="Strip" name="ChamberLabel"  nameView="Chamber Label" description="Chamber名称" max="" min="" paramter="" tag=""  unit="" type="String" />
 		<config default="30" name="MaxDeviationInMFCVerification" nameView="MFC verification允许的最大偏差值(%)" max="100000" min="0" paramter="" tag="" unit="%" visible="false" type="Double" />
 		<config default="150" name="WallHeaterSetPointLimit" nameView="Wall Heater Set Point Limit" description="" max="500" min="0" paramter="" tag="" unit="" type="Integer" />
+		<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="EnableWallHeater" nameView="Enable Chamber Wall Heater" description="" max="10" min="0" paramter="" tag="" unit="" type="Bool" />
 		<config default="false" name="EnableGridHeater" nameView="Enable Chamber Grid Heater" description="" max="10" min="0" paramter="" tag="" unit="" type="Bool" />
 		<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="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" />
-		<config default="80"  name="ControlPressureSetPoint"   nameView="Control Pressure SetPoint"   description="PM Chamber 控压 设定值" max="2000" min="0" paramter="" tag="" unit="mTorr" type="Integer" />
+		<config default="80"   name="ControlPressureSetPoint"       nameView="Control Pressure SetPoint"   description="PM Chamber 控压 设定值" max="2000" min="0" paramter="" tag="" unit="mTorr" type="Integer" />
 		<config default="300"  name="ControlPressureN2FlowSetPoint"   nameView="Control Pressure N2 Flow SetPoint"   description="PM Chamber 控压 设定值" max="500" min="0" paramter="" tag="" unit="sccm" type="Integer" />
 
 		<configs name="MFCVerification" nameView="MFC Verification" >
@@ -1504,19 +1436,21 @@
 			<config default="5" name="CheckStableTimeout" nameView="稳定条件:在多长时间内处于稳定状态" max="100" min="0" paramter="" tag="" unit="%" visible="false" type="Double" />
 		</configs>
 
-		<configs name="Chiller" nameView="Chiller" >
+		<!--<configs name="Chiller" nameView="Chiller">
 			<config default="true" name="EnableChiller" nameView="Enable Chiller" description="enable chiller or not" max="1" min="0" tag="" unit="" type="Bool" />
-			<config default="false" name="ChillerSameWithPMA" nameView="Chiller Same With PMA" description="enable chiller same with PMA or not" max="1" min="0" tag="" unit="" type="Bool" />
+			-->
+		<!--<config default="false" name="ChillerSameWithPMB" nameView="Chiller Same With PMB" description="enable chiller same with PMB or not" max="1" min="0" tag="" unit="" type="Bool" />-->
+		<!--
 			<config default="1" name="MFG" nameView="MFG" description="厂商, 1:SMC; 2, AIRSYS" max="10" min="0" paramter="" tag="" unit="" type="Integer" />
 			<config default="1" name="CommunicationType" nameView="Communication Type" description="0:Analogue; 1:RS232; 2:Ethernet" max="10" min="0" paramter="" tag="" unit="" type="Integer" />
-			<config default="COM86" name="Port" nameView="Port" description="serial port name of pump" max="" min="" paramter="" tag="" unit="" type="String" />
+			<config default="COM44" name="Port" nameView="Port" description="serial port name of pump" max="" min="" paramter="" tag="" unit="" type="String" />
 			<config default="10" name="ChillerTemperatureOffset" nameView="Chiller Temperature Offset" description="" max="100" min="0" paramter="" tag="" unit="degree" type="Double" />
 			<config default="300" name="SetPointLimitMax" nameView="Chiller Set Point Limit Max" description="" max="500" min="0" paramter="" tag="" unit="degree" type="Double" />
 			<config default="0" name="SetPointLimitMin" nameView="Chiller Set Point Limit Min" description="" max="500" min="0" paramter="" tag="" unit="degree" type="Double" />
 			<config default="true" name="EnableToleranceAlarm" nameView="Enable Tolerance Alarm" description="Enable Tolerance Alarm" max="1" min="0" paramter="" tag="" unit="" type="Bool" />
 			<config default="20" name="ToleranceAlarmRange" nameView="Tolerance Alarm Range" description="Tolerance Alarm Range" max="200" min="0" paramter="" tag="" unit="℃" type="Integer" />
 			<config default="60" name="ToleranceAlarmTime" nameView="Tolerance Alarm Time" description="Tolerance Alarm Time" max="60" min="0" paramter="" tag="" unit="second" type="Integer" />
-		</configs>
+		</configs>-->
 		<configs name="InnerChiller" nameView="InnerChiller" >
 			<config default="false" name="EnableChiller" nameView="Enable Chiller" description="enable chiller or not" max="1" min="0" tag="" unit="" type="Bool" />
 			<config default="1" name="MFG" nameView="MFG" description="厂商, 1:SMC; 2, AIRSYS" max="10" min="0" paramter="" tag="" unit="" type="Integer" />
@@ -1556,24 +1490,15 @@
 		<configs name="DryPump" nameView="Dry Pump" >
 			<config default="1" name="MFG" nameView="MFG" description="厂商, 1:Sky; 2:Edwards" max="10" min="0" paramter="" tag="" unit="" type="Integer" />
 			<config default="1" name="CommunicationType" nameView="Communication Type" description="0:Analogue; 1:RS232; 2:Ethernet" max="10" min="0" paramter="" tag="" unit="" type="Integer" />
-			<config default="COM96" name="Port" nameView="Port" description="serial port name of pump" max="" min="" paramter="" tag="" unit="" type="String" />
+			<config default="COM22" name="Port" nameView="Port" description="serial port name of pump" max="" min="" paramter="" tag="" unit="" type="String" />
 			<config default="1000" name="ChamberForelinePressureThreshold" nameView="Chamber Foreline Pressure Threshold" description="" max="10000" min="0" paramter="" tag="" unit="mtorr" type="Double" />
 			<config default="20" name="ChamberForelinePressureTimeout" nameView="Chamber Foreline Pressure Timeout" description="" max="3000" min="0" paramter="" tag="" unit="s" type="Integer" />
 		</configs>
-    <configs name="Magnet" nameView="Magnet" visible="false">
-      <config default="1" name="Magnetwareform" nameView="Magnet wareform" description="厂商, 0:SIN,1:Squre,2:Single" max="2" min="0" paramter="" tag="" unit="" type="Integer" visible="true"/>
-      <config default="0.25" name="MagentFieldRatio" nameView="Magent Field Ratio" description="" max="1" min="0" paramter="" tag="" unit="" type="Integer" visible="true"/>
-      <config default="4s" name="Magnetcycleperiod" nameView="Magnet cycle period" description="serial port name of pump" max="10" min="0" paramter="" tag="" unit="s" type="String" visible="true"/>
-      <config default="50" name="Magnet 1A output full scale" nameView="Magnet 1A output full scale" description="" max="100" min="50" paramter="" tag="" unit="gs" type="Double" visible="true"/>
-      <config default="50" name="Magnet 1B output full scale" nameView="Magnet 1B output full scale" description="" max="100" min="0" paramter="" tag="" unit="gs" type="Integer" visible="true" />
-      <config default="50" name="Magnet 2A output full scale" nameView="Magnet 2A output full scale" description="" max="100" min="0" paramter="" tag="" unit="gs" type="Integer" visible="true" />
-      <config default="50" name="Magnet 2B output full scale" nameView="Magnet 2B output full scale" description="" max="100" min="0" paramter="" tag="" unit="gs" type="Integer" visible="true" />
-      <config default="3" name="Min Magnet Coil current" nameView="Min Magnet Coil current" description="" max="100" min="0" paramter="" tag="" unit="A" type="Integer" visible="true" />
-    </configs>
+
 		<configs name="Rf" nameView="Source RF" >
 			<config default="1" name="MFG" nameView="MFG" description="厂商, 1:AdTec; 2:Comet" max="10" min="0" paramter="" tag="" unit="" type="Integer" />
 			<config default="1" name="CommunicationType" nameView="Communication Type" description="0:Analogue; 1:RS232; 2:Ethernet" max="10" min="0" paramter="" tag="" unit="" type="Integer" />
-			<config default="COM59" name="Port" nameView="Port" description="serial port name of RFG" max="" min="" paramter="" tag="" unit="" type="String" />
+			<config default="COM38" name="Port" nameView="Port" description="serial port name of RFG" max="" min="" paramter="" tag="" unit="" type="String" />
 			<config default="192.168.10.21:502" name="IPAddress" nameView="IP Address" description="RF IP,default 127.0.0.1:502" max="" min="" paramter="" tag="" unit="" type="String" />
 			<config default="500" name="PowerAlarmRange" nameView="Power Alarm Range" description="" max="1000" min="0" paramter="" tag="" unit="" type="Double" />
 			<config default="10" name="PowerAlarmTime" nameView="Power Alarm Time" description="" max="10" min="0" paramter="" tag="" unit="" type="Double" />
@@ -1592,26 +1517,27 @@
 			<config default="3" name="RFTurnOnTimeout" nameView="RF Turn On Timeout" description="" max="10" min="0" paramter="" tag="" unit="S" type="Integer" />
 			<config default="false" name="EnableCalibration" nameView="是否校准" max="" min="" paramter="" tag="" unit="" visible="true" type="Bool" />
 			<config default="100#100;200#200;" name="CalibrationTable" nameView="校准表" max="" min="0" paramter="" tag="" unit="" visible="false" type="String" />
-		</configs>
 
+			<config default="" name="GeneratorSerialNumber" nameView="RF电源序列号" max="" min="0" paramter="" tag="" unit="" type="String" />
+			<config default="" name="SensorSerialNumber" nameView="SensorHead序列号" max="" min="0" paramter="" tag="" unit="" type="String" />
+			<config default="2000" name="RFPhysicalMaxPower" nameView="RF Physical Max Power" description="" max="9999" min="0" paramter="" tag="" unit="" type="Double"  visible="false"/>
+			<config default="2000" name="CurrentRFMaxPower" nameView="Current RF Max Power" description="" max="2200" min="1800" paramter="" tag="" unit="" type="Double" />
+			<config default="2000" name="RFCalibratedMaxPower" nameView="RF Calibrated Max Power" description="" max="9999" min="0" paramter="" tag="" unit="" type="Double" />
+			<config default="" name="CalibrationTableDetail" nameView="详细校准表" max="" min="0" paramter="" tag="" unit="" visible="false" type="String" />
+
+		</configs>
 		<configs name="Match" nameView="Source Match" >
 			<config default="false" name="EnableMatch" nameView="Enable Source Match" description="enable match or not" max="1" min="0" tag="" unit="" type="Bool" />
 			<config default="1" name="MFG" nameView="MFG" description="厂商, 1:AdTec; 2:Comet; 3:Revtech" max="10" min="0" paramter="" tag="" unit="" type="Integer" />
 			<config default="1" name="CommunicationType" nameView="Communication Type" description="0:Analogue; 1:RS232; 2:Ethernet" max="10" min="0" paramter="" tag="" unit="" type="Integer" />
-			<config default="COM75" name="Port" nameView="Port" description="serial port name of match" max="" min="" paramter="" tag="" unit="" type="String" />
+			<config default="COM40" name="Port" nameView="Port" description="serial port name of match" max="" min="" paramter="" tag="" unit="" type="String" />
 			<config default="192.168.10.21:502" name="IPAddress" nameView="IP Address" description="Match IP,default 127.0.0.1:502" max="" min="" paramter="" tag="" unit="" type="String" />
 			<config default="1" name="MatchMode" nameView="Match Mode" description="" max="10" min="0" paramter="" tag="" unit="" type="Integer" />
 			<config default="false" name="EnableC1C2Position" nameView="Enable Source C1 C2 Position" description="" max="10" min="0" paramter="" tag="" unit="" type="Bool" />
 			<config default="false" name="EnableC1C2StepOffset" nameView="Enable Bias C1 C2 Position" description="" max="10" min="0" paramter="" tag="" unit="" type="Bool" />
 			<config default="1"     name="C1C2StepOffsetValue"  nameView="Bias C1 C2 Step Offset Value" description="" max="10" min="0" paramter="" tag="" unit="" type="Integer" />
 		</configs>
-		<configs name="RFBox" nameView="RF Box" >
-			<config default="false" name="EnableMatch" nameView="Enable Source Match" description="enable match or not" max="1" min="0" tag="" unit="" type="Bool" />
-			<config default="1" name="MFG" nameView="MFG" description="厂商, 1:AdTec; 2:Comet; 3:Revtech" max="10" min="0" paramter="" tag="" unit="" type="Integer" />
-			<config default="1" name="CommunicationType" nameView="Communication Type" description="0:Analogue; 1:RS232; 2:Ethernet" max="10" min="0" paramter="" tag="" unit="" type="Integer" />
-			<config default="COM40" name="Port" nameView="Port" description="serial port name of match" max="" min="" paramter="" tag="" unit="" type="String" />
-			<config default="192.168.10.21:502" name="IPAddress" nameView="IP Address" description="Match IP,default 127.0.0.1:502" max="" min="" paramter="" tag="" unit="" type="String" />
-		</configs>
+
 		<configs name="BiasRf" nameView="Bias RF" >
 			<config default="true" name="EnableBiasRF" nameView="Enable Bias RF" description="enable bias RF or not" max="1" min="0" tag="" unit="" type="Bool" />
 			<config default="2" name="MFG" nameView="MFG" description="厂商, 1:AdTec; 2:Comet" max="10" min="0" paramter="" tag="" unit="" type="Integer" />
@@ -1634,6 +1560,14 @@
 			<config default="3000" name="RfPowerAlarmTime" nameView="RF Power Alarm Time" description="" max="10000" min="0" paramter="" tag="" unit="" type="Integer" />
 			<config default="false" name="EnableCalibration" nameView="是否校准" max="" min="" paramter="" tag="" unit="" visible="true" type="Bool" />
 			<config default="100#100;200#200;" name="CalibrationTable" nameView="校准表" max="" min="0" paramter="" tag="" unit="" visible="false" type="String" />
+
+			<config default="" name="GeneratorSerialNumber" nameView="RF电源序列号" max="" min="0" paramter="" tag="" unit="" type="String" />
+			<config default="" name="SensorSerialNumber" nameView="SensorHead序列号" max="" min="0" paramter="" tag="" unit="" type="String" />
+			<config default="2000" name="RFPhysicalMaxPower" nameView="RF Physical Max Power" description="" max="9999" min="0" paramter="" tag="" unit="" type="Double"  visible="false"/>
+			<config default="2000" name="CurrentRFMaxPower" nameView="Current RF Max Power" description="" max="2200" min="1800" paramter="" tag="" unit="" type="Double" />
+			<config default="2000" name="RFCalibratedMaxPower" nameView="RF Calibrated Max Power" description="" max="9999" min="0" paramter="" tag="" unit="" type="Double" />
+			<config default="" name="CalibrationTableDetail" nameView="详细校准表" max="" min="0" paramter="" tag="" unit="" visible="false" type="String" />
+
 		</configs>
 		<configs name="BiasMatch" nameView="Bias Match" >
 			<config default="false" name="EnableBiasMatch" nameView="Enable Bias Match" description="enable bias match or not" max="1" min="0" tag="" unit="" type="Bool" />
@@ -1659,7 +1593,6 @@
 			<config default="10" name="MfcWarningRange" nameView="MFC Warning Range" description="" max="200" min="0" paramter="" tag="" unit="sccm" type="Integer" />
 			<config default="10" name="MfcWarningTime" nameView="MFC Warning Time" description="" max="60" min="0" paramter="" tag="" unit="second" type="Integer" />
 			<config default="0" name="MFCWriteMode" nameView="MFCWriteMode" description=" 0:Flow; 1:Percent" max="1" min="0" paramter="" tag="" unit="" type="Integer" />
-
 		</configs>
 		<configs name="MfcGas2" nameView="MFC Gas2" >
 			<config default="true" name="Enable" nameView="Enable" description="Enable gas 2 or not" tag="" unit="" type="Bool" />
@@ -1766,62 +1699,7 @@
 			<config default="0" name="MFCWriteMode" nameView="MFCWriteMode" description=" 0:Flow; 1:Percent" max="1" min="0" paramter="" tag="" unit="" type="Integer" />
 
 		</configs>
-		<configs name="MfcGas9" nameView="MFC Gas9" >
-			<config default="true" name="Enable" nameView="Enable" description="Enable gas 9 or not" tag="" unit="" type="Bool" />
-			<config default="Gas6" name="GasName" nameView="Gas Name" description="Name of NO.9 gas stick" tag="" unit="" type="String" />
-			<config default="100" name="MfcN2Scale" nameView="MFC N2 Scale" description="Max scale by N2 tuning" max="10000" min="0" tag="" unit="sccm" type="Integer" />
-			<config default="1" name="MfcScaleFactor" nameView="MFC Scale Factor" description="Scale factor" max="10" min="0" tag="" unit="sccm" type="Double" />
-			<config default="100" name="DefaultSetPoint" nameView="Default Set Point" description="default setpoint" max="1000" min="0" tag="" unit="sccm" type="Integer" />
-			<config default="1" name="FlowRegulationFactor" nameView="Flow Regulation Factor" description="flow regulation factor" max="10" min="0" tag="" unit="sccm" type="Integer" />
-			<config default="true" name="MfcEnableAlarm" nameView="MFC Enable Alarm" description="Mfc Enable Alarm" max="1" min="0" paramter="" tag="" unit="" type="Bool" />
-			<config default="10" name="MfcAlarmRange" nameView="MFC Alarm Range" description="Mfc Alarm Range" max="200" min="0" paramter="" tag="" unit="sccm" type="Integer" />
-			<config default="10" name="MfcAlarmTime" nameView="MFC Alarm Time" description="Mfc Alarm Time" max="60" min="0" paramter="" tag="" unit="second" type="Integer" />
-			<config default="10" name="MfcWarningRange" nameView="MFC Warning Range" description="" max="200" min="0" paramter="" tag="" unit="sccm" type="Integer" />
-			<config default="10" name="MfcWarningTime" nameView="MFC Warning Time" description="" max="60" min="0" paramter="" tag="" unit="second" type="Integer" />
-			<config default="0" name="MFCWriteMode" nameView="MFCWriteMode" description=" 0:Flow; 1:Percent" max="1" min="0" paramter="" tag="" unit="" type="Integer" />
-		</configs>
-		<configs name="MfcGas10" nameView="MFC Gas10" >
-			<config default="true" name="Enable" nameView="Enable" description="Enable gas 10 or not" tag="" unit="" type="Bool" />
-			<config default="Gas7" name="GasName" nameView="Gas Name" description="Name of NO.10 gas stick" tag="" unit="" type="String" />
-			<config default="100" name="MfcN2Scale" nameView="MFC N2 Scale" description="Max scale by N2 tuning" max="10000" min="0" tag="" unit="sccm" type="Integer" />
-			<config default="1" name="MfcScaleFactor" nameView="MFC Scale Factor" description="Scale factor" max="10" min="0" tag="" unit="sccm" type="Double" />
-			<config default="100" name="DefaultSetPoint" nameView="Default Set Point" description="default setpoint" max="1000" min="0" tag="" unit="sccm" type="Integer" />
-			<config default="1" name="FlowRegulationFactor" nameView="Flow Regulation Factor" description="flow regulation factor" max="10" min="0" tag="" unit="sccm" type="Integer" />
-			<config default="true" name="MfcEnableAlarm" nameView="MFC Enable Alarm" description="Mfc Enable Alarm" max="1" min="0" paramter="" tag="" unit="" type="Bool" />
-			<config default="10" name="MfcAlarmRange" nameView="MFC Alarm Range" description="Mfc Alarm Range" max="200" min="0" paramter="" tag="" unit="sccm" type="Integer" />
-			<config default="10" name="MfcAlarmTime" nameView="MFC Alarm Time" description="Mfc Alarm Time" max="60" min="0" paramter="" tag="" unit="second" type="Integer" />
-			<config default="10" name="MfcWarningRange" nameView="MFC Warning Range" description="" max="200" min="0" paramter="" tag="" unit="sccm" type="Integer" />
-			<config default="10" name="MfcWarningTime" nameView="MFC Warning Time" description="" max="60" min="0" paramter="" tag="" unit="second" type="Integer" />
-			<config default="0" name="MFCWriteMode" nameView="MFCWriteMode" description=" 0:Flow; 1:Percent" max="1" min="0" paramter="" tag="" unit="" type="Integer" />
-		</configs>
-		<configs name="MfcGas11" nameView="MFC Gas8" >
-			<config default="true" name="Enable" nameView="Enable" description="Enable gas 11 or not" tag="" unit="" type="Bool" />
-			<config default="Gas8" name="GasName" nameView="Gas Name" description="Name of NO.11 gas stick" tag="" unit="" type="String" />
-			<config default="100" name="MfcN2Scale" nameView="MFC N2 Scale" description="Max scale by N2 tuning" max="10000" min="0" tag="" unit="sccm" type="Integer" />
-			<config default="1" name="MfcScaleFactor" nameView="MFC Scale Factor" description="Scale factor" max="10" min="0" tag="" unit="sccm" type="Double" />
-			<config default="100" name="DefaultSetPoint" nameView="Default Set Point" description="default setpoint" max="1000" min="0" tag="" unit="sccm" type="Integer" />
-			<config default="1" name="FlowRegulationFactor" nameView="Flow Regulation Factor" description="flow regulation factor" max="10" min="0" tag="" unit="sccm" type="Integer" />
-			<config default="true" name="MfcEnableAlarm" nameView="MFC Enable Alarm" description="Mfc Enable Alarm" max="1" min="0" paramter="" tag="" unit="" type="Bool" />
-			<config default="10" name="MfcAlarmRange" nameView="MFC Alarm Range" description="Mfc Alarm Range" max="200" min="0" paramter="" tag="" unit="sccm" type="Integer" />
-			<config default="10" name="MfcAlarmTime" nameView="MFC Alarm Time" description="Mfc Alarm Time" max="60" min="0" paramter="" tag="" unit="second" type="Integer" />
-			<config default="10" name="MfcWarningRange" nameView="MFC Warning Range" description="" max="200" min="0" paramter="" tag="" unit="sccm" type="Integer" />
-			<config default="10" name="MfcWarningTime" nameView="MFC Warning Time" description="" max="60" min="0" paramter="" tag="" unit="second" type="Integer" />
-			<config default="0" name="MFCWriteMode" nameView="MFCWriteMode" description=" 0:Flow; 1:Percent" max="1" min="0" paramter="" tag="" unit="" type="Integer" />
-		</configs>
-		<configs name="MfcGas12" nameView="MFC Gas12" >
-			<config default="true" name="Enable" nameView="Enable" description="Enable gas 12 or not" tag="" unit="" type="Bool" />
-			<config default="Gas9" name="GasName" nameView="Gas Name" description="Name of NO.12 gas stick" tag="" unit="" type="String" />
-			<config default="100" name="MfcN2Scale" nameView="MFC N2 Scale" description="Max scale by N2 tuning" max="10000" min="0" tag="" unit="sccm" type="Integer" />
-			<config default="1" name="MfcScaleFactor" nameView="MFC Scale Factor" description="Scale factor" max="10" min="0" tag="" unit="sccm" type="Double" />
-			<config default="100" name="DefaultSetPoint" nameView="Default Set Point" description="default setpoint" max="1000" min="0" tag="" unit="sccm" type="Integer" />
-			<config default="1" name="FlowRegulationFactor" nameView="Flow Regulation Factor" description="flow regulation factor" max="10" min="0" tag="" unit="sccm" type="Integer" />
-			<config default="true" name="MfcEnableAlarm" nameView="MFC Enable Alarm" description="Mfc Enable Alarm" max="1" min="0" paramter="" tag="" unit="" type="Bool" />
-			<config default="10" name="MfcAlarmRange" nameView="MFC Alarm Range" description="Mfc Alarm Range" max="200" min="0" paramter="" tag="" unit="sccm" type="Integer" />
-			<config default="10" name="MfcAlarmTime" nameView="MFC Alarm Time" description="Mfc Alarm Time" max="60" min="0" paramter="" tag="" unit="second" type="Integer" />
-			<config default="10" name="MfcWarningRange" nameView="MFC Warning Range" description="" max="200" min="0" paramter="" tag="" unit="sccm" type="Integer" />
-			<config default="10" name="MfcWarningTime" nameView="MFC Warning Time" description="" max="60" min="0" paramter="" tag="" unit="second" type="Integer" />
-			<config default="0" name="MFCWriteMode" nameView="MFCWriteMode" description=" 0:Flow; 1:Percent" max="1" min="0" paramter="" tag="" unit="" type="Integer" />
-		</configs>
+
 		<configs name="MfcN2" nameView="MFC N2" >
 			<config default="true" name="Enable" nameView="Enable" description="Enable N2 or not" tag="" unit="" type="Bool" />
 			<config default="N2" name="GasName" nameView="Gas Name" description="Name of N2 stick" tag="" unit="" type="String" />
@@ -1852,7 +1730,7 @@
 			<config default="0" name="MFCWriteMode" nameView="MFCWriteMode" description=" 0:Flow; 1:Percent" max="1" min="0" paramter="" tag="" unit="" type="Integer" />
 
 		</configs>
-		<configs name="Pump" nameView="Pump" >
+		<configs name="Pump" nameView="Pump">
 			<config default="30" name="LeakRate" nameView="Leak Rate" description="" max="756000" min="0" paramter="" tag="" unit="mTorrPerMin" type="Double" />
 			<config default="300" name="LeakCheckPumpingTime" nameView="Leak Check Pumping Time" description="" max="3000" min="0" paramter="" tag="" unit="" type="Integer" />
 			<config default="180" name="LeakCheckHoldTime" nameView="Leak Check Hold Time" description="" max="3000" min="0" paramter="" tag="" unit="" type="Integer" />
@@ -1862,7 +1740,7 @@
 			<config default="120" name="PumpTimeLimit" nameView="Pump Time Limit" description="" max="3000" min="0" paramter="" tag="" unit="" type="Double" />
 			<config default="5" name="PumpValveDelay" nameView="Pump Valve Delay" description="" max="3000" min="0" paramter="" tag="" unit="s" type="Integer" />
 			<config default="75000" name="PumpCrossingPressure" description="PM Rough Pumping Pressure" max="200000" min="0" paramter="" tag="" unit="mTorr" type="Integer" />
-			<config default="200" name="PumpVHe2FlowPressure" nameView="He2 Flow Pressure" description="" max="756000" min="0" paramter="" tag="" unit="mTorr" type="Integer" />
+			<config default="200" name="PumpVHe2FlowPressure" nameView="He2 Flow Pressure" description="" max="400" min="0" paramter="" tag="" unit="mTorr" type="Integer" />
 			<config default="100" name="LoadLockPumpBasePressure" description="LoadLock Pump Base Pressure" max="756000" min="0" paramter="" tag="" unit="mTorr" type="Integer" />
 			<config default="120" name="LoadLockPumpTimeLimit" description="LoadLock Pump Time Limit" max="3000" min="0" paramter="" tag="" unit="second" type="Integer" />
 			<config default="10" name="LoadLockPurgeVentPressure" description="LoadLock Purge Vent Pressure" max="760" min="0" paramter="" tag="" unit="Torr" type="Integer" />
@@ -1910,7 +1788,6 @@
 			<config name="TempOffsetPoint_9" nameView="Temp Offset Point 9" description="温度补偿点 9" unit="degree" type="Integer" max="300" min="0" />
 			<config name="OffsetValue_9" nameView="Offset Value 9" description="补偿值 9" unit="degree" type="Double" max="300" min="0" />
 		</configs>
-
 		<configs name="WallHeater" nameView="Heater Wall" >
 			<config default="false" name="HeaterEnableTolerance" nameView="Enable Heater Deviation Check" description="" max="0" min="0" paramter="" tag="" unit="" type="Bool" />
 			<config default="200" name="HeaterAlarmRange" nameView="Heater deviation Alarm Range" description="" max="200" min="0" paramter="" tag="" unit="℃" type="Integer" />
@@ -1937,7 +1814,6 @@
 			<config name="TempOffsetPoint_9" nameView="Temp Offset Point 9" description="温度补偿点 9" unit="degree" type="Integer" max="300" min="0" />
 			<config name="OffsetValue_9" nameView="Offset Value 9" description="补偿值 9" unit="degree" type="Double" max="300" min="0" />
 		</configs>
-
 		<configs name="ForelineHeater" nameView="Heater Foreline" >
 			<config default="false" name="HeaterEnableTolerance" nameView="Enable Heater Deviation Check" description="" max="0" min="0" paramter="" tag="" unit="" type="Bool" />
 			<config default="200" name="HeaterAlarmRange" nameView="Heater deviation Alarm Range" description="" max="200" min="0" paramter="" tag="" unit="℃" type="Integer" />
@@ -1964,7 +1840,6 @@
 			<config name="TempOffsetPoint_9" nameView="Temp Offset Point 9" description="温度补偿点 9" unit="degree" type="Integer" max="300" min="0" />
 			<config name="OffsetValue_9" nameView="Offset Value 9" description="补偿值 9" unit="degree" type="Double" max="300" min="0" />
 		</configs>
-
 		<configs name="ValveHeater" nameView="Valve Heater" >
 			<config default="false" name="HeaterEnableTolerance" nameView="Enable Heater Deviation Check" description="" max="0" min="0" paramter="" tag="" unit="" type="Bool" />
 			<config default="200" name="HeaterAlarmRange" nameView="Heater deviation Alarm Range" description="" max="200" min="0" paramter="" tag="" unit="℃" type="Integer" />
@@ -2017,23 +1892,22 @@
 			<config name="TempOffsetPoint_9" nameView="Temp Offset Point 9" description="温度补偿点 9" unit="degree" type="Integer" max="300" min="0" />
 			<config name="OffsetValue_9" nameView="Offset Value 9" description="补偿值 9" unit="degree" type="Double" max="300" min="0" />
 		</configs>
-
-		<configs name="ElectrostaticVoltageSource" nameView="Electrostatic Voltage Source">
-			<config default="COM17" name="Port" nameView="Port" description="serial port name of ElectrostaticVoltageSource" max="" min="" paramter="" tag="" unit="" type="String" />
-		</configs>
+		<!--<configs name="ElectrostaticVoltageSource" nameView="Electrostatic Voltage Source">
+			<config default="COM64" name="Port" nameView="Port" description="serial port name of ElectrostaticVoltageSource" max="" min="" paramter="" tag="" unit="" type="String" />
+		</configs>-->
 		<configs name="TurboPump" nameView="Turbo Pump">
-			<config default="COM3" name="Port" nameView="Port" description="serial port name of TurboPump" max="" min="" paramter="" tag="" unit="" type="String" />
+			<config default="COM62" name="Port" nameView="Port" description="serial port name of TurboPump" max="" min="" paramter="" tag="" unit="" type="String" />
 			<config default="500" name="ChamberForelinePressureThreshold" nameView="Chamber Foreline Pressure Threshold" description="" max="10000" min="0" paramter="" tag="" unit="mtorr" type="Double" />
 			<config default="30" name="ChamberForelinePressureTimeout" nameView="Chamber Foreline Pressure Timeout" description="" max="3000" min="0" paramter="" tag="" unit="s" type="Integer" />
 		</configs>
 		<configs name="PendulumValve" nameView="Pendulum Valve">
-			<config default="COM77" name="Port" nameView="Port" description="serial port name of PendulumValve" max="" min="" paramter="" tag="" unit="" type="String" />
+			<config default="COM66" name="Port" nameView="Port" description="serial port name of PendulumValve" max="" min="" paramter="" tag="" unit="" type="String" />
 			<config default="400" name="PressureFullRange" nameView="PressureFullRange" description="Pressure Full Range of PendulumValve" max="100000" min="0" paramter="" tag="" unit="mtorr" type="Integer" />
 			<config default="750"  name="ForelinePressureLimit" nameView="ForelinePressureLimit" description="" max="3000" min="0" paramter="" tag="" unit="mtorr" type="Integer" />
 			<config default="600"  name="ChamberPressureLimit" nameView="ForelinePressureLimit" description="" max="3000" min="0" paramter="" tag="" unit="mtorr" type="Integer" />
 			<config default="100"  name="TurboPumpSpeedLimit"  nameView="Turbo PumpSpeed Limit" description="" max="3000" min="0" paramter="" tag="" unit="" type="Integer" />
-		</configs>
 
+		</configs>
 		<!--Clean-->
 		<configs name="IdleClean" nameView="Idle Clean" visible="false">
 			<config default="0" name="Option" nameView="Idle Clean Option" description="0, disable; 1, By Idle Time; 2, By Wafer Count" max="2" min="0" paramter="" tag="" unit="" type="Integer" />
@@ -2043,33 +1917,18 @@
 			<config default="0" name="WaferCountSinceLastClean" nameView="Wafer Count Since Last Clean" description="Wafer Count Since Last Runing Clean" max="100000" min="0" paramter="" tag="" unit="pcs" type="Integer" />
 			<config default="" name="LastRunTime" nameView="The Time Chamber Last Run Wafer" description="The Time Chamber Last Run Wafer" max="" min="" paramter="" tag="" unit="" type="String" />
 		</configs>
-
 		<configs name="EPD" nameView="EPD Setting">
 			<config default="true" name="IsEnabled" nameView="Is Enabled" description="IsEnabled" max="0" min="0" paramter="" tag="" unit="" type="Bool" />
-			<config default="0" name="ChannelNumber" nameView="EPD Channel Number"  description="channel number" max="32" min="0" paramter="" tag="" unit="" type="Integer" />
+			<config default="0" name="ChannelNumber" nameView="EPD Channel Number" description="channel number" max="32" min="0" paramter="" tag="" unit="" type="Integer" />
 			<config default="127.0.0.1:1102" name="IPAddress" nameView="IP Address" description="EPD IP、端口设置;default 10.0.0.100:13000" max="" min="" paramter="" tag="" unit="" type="String" />
 			<config default="0" name="EPDType" nameView="EPD Type" description="EPD type, 0) by socket, 1) by WCF" max="32" min="0" paramter="" tag="" unit="" type="Integer" />
 		</configs>
 
-		<configs name="HighTemperatureHeater" nameView="HighTemperatureHeater" >
-			<config default="60" name="LiftServoPosition1"    nameView="Lift Servo Position1"     description="Lift Servo Position1" max="600" min="-600" paramter="" tag="" unit="mm" type="Double" />
-			<config default="60" name="LiftServoPosition2"    nameView="Lift Servo Position2"     description="Lift Servo Position1" max="600" min="-600" paramter="" tag="" unit="mm" type="Double" />
-			<config default="60" name="LiftServoPosition3"    nameView="Lift Servo Position3"     description="Lift Servo Position1" max="600" min="-600" paramter="" tag="" unit="mm" type="Double" />
-			<config default="60" name="LiftServoPosition4"    nameView="Lift Servo Position4"     description="Lift Servo Position1" max="600" min="-600" paramter="" tag="" unit="mm" type="Double" />
-			<config default="60" name="LiftServoPosition5"    nameView="Lift Servo Position5"     description="Lift Servo Position1" max="600" min="-600" paramter="" tag="" unit="mm" type="Double" />
-			<config default="60" name="OriginSearchHighSpeed" nameView="Origin Search High Speed" description="Lift Servo Position1" max="600" min="-600" paramter="" tag="" unit="mm" type="Double" />
-			<config default="60" name="OriginSearchLowSpeed"  nameView="Origin Search Low Speed"  description="Lift Servo Position1" max="600" min="-600" paramter="" tag="" unit="mm" type="Double" />
-			<config default="60" name="AbsMoveSpeed"          nameView="Abs Move Speed"           description="Lift Servo Position1" max="600" min="-600" paramter="" tag="" unit="mm" type="Double" />
-			<config default="60" name="MaximusMoveSpeed"      nameView="Maximus Move Speed"       description="Lift Servo Position1" max="600" min="-600" paramter="" tag="" unit="mm" type="Double" />
-			<config default="60" name="SoftDownLimit"         nameView="Soft Down Limit"          description="Lift Servo Position1" max="600" min="-600" paramter="" tag="" unit="mm" type="Double" />
-			<config default="60" name="SoftUpLimit"           nameView="Soft Up Limit"            description="Lift Servo Position1" max="600" min="-600" paramter="" tag="" unit="mm" type="Double" />
-
-		</configs>
 	</configs>
 
 	<!--PMD-->
 	<configs name="PMD" nameView="PMD" >
-		<config default="2" name="ChamberType"  nameView="Chamber Type" description="0=>Venus,1=>Kepler2300,2=>Kepler2200A,3=>Kepler2200B" max="5" min="0" paramter="" tag=""  unit="" type="Integer" visible="false"/>
+		<config default="0" name="ChamberType"  nameView="Chamber Type" description="0=>Venus,1=>Kepler2300,2=>Kepler2200A,3=>Kepler2200B" max="5" min="0" paramter="" tag=""  unit="" type="Integer" visible="false"/>
 		<config default="100" name="TurboN2FlowSetPoint" nameView="TurboN2SetPoint" description="" max="200" min="0" paramter="" tag="" unit="sccm" type="Double" />
 		<config default="120" name="PrepareTransferTimeout" nameView="Prepare Transfer Timeout" description="prepare transfer time out" max="99999" min="1" paramter="" tag="" unit="s" type="Integer" />
 		<config default="120" name="TransferWaferTimeout" nameView="Transfer Wafer Timeout" description="Transfer Wafer Timeout" max="99999" min="1" paramter="" tag="" unit="s" type="Integer" />
@@ -2085,7 +1944,7 @@
 		<config default="140" name="ForeLineHeaterSetPointLimit" nameView="ForeLine Heater Set Point Limit" description="" max="500" min="0" paramter="" tag="" unit="" type="Integer" />
 		<config default="120" name="CheckSubstrateTempTimeout" nameView="Check Substrate Temp Timeout" description="" max="3600" min="0" paramter="" tag="" unit="" type="Integer" />
 		<config default="90" name="CheckATMTimeout" nameView="Check ATM Timeout" description="" max="3000" min="0" paramter="" tag="" unit="s" type="Integer" />
-		<config default="2000" name="OverVentTime" nameView="Over Vent Time Delay" description="" max="60000" min="0" paramter="" tag="" unit="s" type="Integer" />
+		<config default="2000" name="OverVentTime" nameView="Over Vent Time Delay" description="" max="60000" min="0" paramter="" tag="" unit="ms" type="Integer" />
 		<config default="780000" name="ChamberBasePressureThreshold" nameView="Chamber Base Pressure Threshold" description="" max="1000000" min="0" paramter="" tag="" unit="mtorr" type="Double" />
 		<config default="120" name="ChamberBaseTemperatureThreshold" nameView="Chamber Base Temperature Threshold" description="" max="1000" min="0" paramter="" tag="" unit="°C" type="Double" />
 		<config default="10" name="ProcessPressureOffset" nameView="Process Pressure Offset" description="" max="100" min="0" paramter="" tag="" unit="mtorr" type="Double" />
@@ -2098,15 +1957,17 @@
 		<config default="Strip" name="ChamberLabel"  nameView="Chamber Label" description="Chamber名称" max="" min="" paramter="" tag=""  unit="" type="String" />
 		<config default="30" name="MaxDeviationInMFCVerification" nameView="MFC verification允许的最大偏差值(%)" max="100000" min="0" paramter="" tag="" unit="%" visible="false" type="Double" />
 		<config default="150" name="WallHeaterSetPointLimit" nameView="Wall Heater Set Point Limit" description="" max="500" min="0" paramter="" tag="" unit="" type="Integer" />
+		<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="EnableWallHeater" nameView="Enable Chamber Wall Heater" description="" max="10" min="0" paramter="" tag="" unit="" type="Bool" />
 		<config default="false" name="EnableGridHeater" nameView="Enable Chamber Grid Heater" description="" max="10" min="0" paramter="" tag="" unit="" type="Bool" />
 		<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="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" />
-		<config default="80"  name="ControlPressureSetPoint"   nameView="Control Pressure SetPoint"   description="PM Chamber 控压 设定值" max="2000" min="0" paramter="" tag="" unit="mTorr" type="Integer" />
+		<config default="80"   name="ControlPressureSetPoint"       nameView="Control Pressure SetPoint"   description="PM Chamber 控压 设定值" max="2000" min="0" paramter="" tag="" unit="mTorr" type="Integer" />
 		<config default="300"  name="ControlPressureN2FlowSetPoint"   nameView="Control Pressure N2 Flow SetPoint"   description="PM Chamber 控压 设定值" max="500" min="0" paramter="" tag="" unit="sccm" type="Integer" />
+
 		<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" />
@@ -2122,19 +1983,21 @@
 			<config default="5" name="CheckStableTimeout" nameView="稳定条件:在多长时间内处于稳定状态" max="100" min="0" paramter="" tag="" unit="%" visible="false" type="Double" />
 		</configs>
 
-		<configs name="Chiller" nameView="Chiller" >
+		<!--<configs name="Chiller" nameView="Chiller">
 			<config default="true" name="EnableChiller" nameView="Enable Chiller" description="enable chiller or not" max="1" min="0" tag="" unit="" type="Bool" />
-			<config default="false" name="ChillerSameWithPMA" nameView="Chiller Same With PMA" description="enable chiller same with PMA or not" max="1" min="0" tag="" unit="" type="Bool" />
+			-->
+		<!--<config default="false" name="ChillerSameWithPMB" nameView="Chiller Same With PMB" description="enable chiller same with PMB or not" max="1" min="0" tag="" unit="" type="Bool" />-->
+		<!--
 			<config default="1" name="MFG" nameView="MFG" description="厂商, 1:SMC; 2, AIRSYS" max="10" min="0" paramter="" tag="" unit="" type="Integer" />
 			<config default="1" name="CommunicationType" nameView="Communication Type" description="0:Analogue; 1:RS232; 2:Ethernet" max="10" min="0" paramter="" tag="" unit="" type="Integer" />
-			<config default="COM27" name="Port" nameView="Port" description="serial port name of pump" max="" min="" paramter="" tag="" unit="" type="String" />
+			<config default="COM44" name="Port" nameView="Port" description="serial port name of pump" max="" min="" paramter="" tag="" unit="" type="String" />
 			<config default="10" name="ChillerTemperatureOffset" nameView="Chiller Temperature Offset" description="" max="100" min="0" paramter="" tag="" unit="degree" type="Double" />
 			<config default="300" name="SetPointLimitMax" nameView="Chiller Set Point Limit Max" description="" max="500" min="0" paramter="" tag="" unit="degree" type="Double" />
 			<config default="0" name="SetPointLimitMin" nameView="Chiller Set Point Limit Min" description="" max="500" min="0" paramter="" tag="" unit="degree" type="Double" />
 			<config default="true" name="EnableToleranceAlarm" nameView="Enable Tolerance Alarm" description="Enable Tolerance Alarm" max="1" min="0" paramter="" tag="" unit="" type="Bool" />
 			<config default="20" name="ToleranceAlarmRange" nameView="Tolerance Alarm Range" description="Tolerance Alarm Range" max="200" min="0" paramter="" tag="" unit="℃" type="Integer" />
 			<config default="60" name="ToleranceAlarmTime" nameView="Tolerance Alarm Time" description="Tolerance Alarm Time" max="60" min="0" paramter="" tag="" unit="second" type="Integer" />
-		</configs>
+		</configs>-->
 		<configs name="InnerChiller" nameView="InnerChiller" >
 			<config default="false" name="EnableChiller" nameView="Enable Chiller" description="enable chiller or not" max="1" min="0" tag="" unit="" type="Bool" />
 			<config default="1" name="MFG" nameView="MFG" description="厂商, 1:SMC; 2, AIRSYS" max="10" min="0" paramter="" tag="" unit="" type="Integer" />
@@ -2174,24 +2037,15 @@
 		<configs name="DryPump" nameView="Dry Pump" >
 			<config default="1" name="MFG" nameView="MFG" description="厂商, 1:Sky; 2:Edwards" max="10" min="0" paramter="" tag="" unit="" type="Integer" />
 			<config default="1" name="CommunicationType" nameView="Communication Type" description="0:Analogue; 1:RS232; 2:Ethernet" max="10" min="0" paramter="" tag="" unit="" type="Integer" />
-			<config default="COM29" name="Port" nameView="Port" description="serial port name of pump" max="" min="" paramter="" tag="" unit="" type="String" />
+			<config default="COM22" name="Port" nameView="Port" description="serial port name of pump" max="" min="" paramter="" tag="" unit="" type="String" />
 			<config default="1000" name="ChamberForelinePressureThreshold" nameView="Chamber Foreline Pressure Threshold" description="" max="10000" min="0" paramter="" tag="" unit="mtorr" type="Double" />
 			<config default="20" name="ChamberForelinePressureTimeout" nameView="Chamber Foreline Pressure Timeout" description="" max="3000" min="0" paramter="" tag="" unit="s" type="Integer" />
 		</configs>
-    <configs name="Magnet" nameView="Magnet" visible="false">
-      <config default="1" name="Magnetwareform" nameView="Magnet wareform" description="厂商, 0:SIN,1:Squre,2:Single" max="2" min="0" paramter="" tag="" unit="" type="Integer" visible="true"/>
-      <config default="0.25" name="MagentFieldRatio" nameView="Magent Field Ratio" description="" max="1" min="0" paramter="" tag="" unit="" type="Integer" visible="true"/>
-      <config default="4s" name="Magnetcycleperiod" nameView="Magnet cycle period" description="serial port name of pump" max="10" min="0" paramter="" tag="" unit="s" type="String" visible="true"/>
-      <config default="50" name="Magnet 1A output full scale" nameView="Magnet 1A output full scale" description="" max="100" min="50" paramter="" tag="" unit="gs" type="Double" visible="true"/>
-      <config default="50" name="Magnet 1B output full scale" nameView="Magnet 1B output full scale" description="" max="100" min="0" paramter="" tag="" unit="gs" type="Integer" visible="true" />
-      <config default="50" name="Magnet 2A output full scale" nameView="Magnet 2A output full scale" description="" max="100" min="0" paramter="" tag="" unit="gs" type="Integer" visible="true" />
-      <config default="50" name="Magnet 2B output full scale" nameView="Magnet 2B output full scale" description="" max="100" min="0" paramter="" tag="" unit="gs" type="Integer" visible="true" />
-      <config default="3" name="Min Magnet Coil current" nameView="Min Magnet Coil current" description="" max="100" min="0" paramter="" tag="" unit="A" type="Integer" visible="true" />
-    </configs>
+
 		<configs name="Rf" nameView="Source RF" >
 			<config default="1" name="MFG" nameView="MFG" description="厂商, 1:AdTec; 2:Comet" max="10" min="0" paramter="" tag="" unit="" type="Integer" />
 			<config default="1" name="CommunicationType" nameView="Communication Type" description="0:Analogue; 1:RS232; 2:Ethernet" max="10" min="0" paramter="" tag="" unit="" type="Integer" />
-			<config default="COM50" name="Port" nameView="Port" description="serial port name of RFG" max="" min="" paramter="" tag="" unit="" type="String" />
+			<config default="COM38" name="Port" nameView="Port" description="serial port name of RFG" max="" min="" paramter="" tag="" unit="" type="String" />
 			<config default="192.168.10.21:502" name="IPAddress" nameView="IP Address" description="RF IP,default 127.0.0.1:502" max="" min="" paramter="" tag="" unit="" type="String" />
 			<config default="500" name="PowerAlarmRange" nameView="Power Alarm Range" description="" max="1000" min="0" paramter="" tag="" unit="" type="Double" />
 			<config default="10" name="PowerAlarmTime" nameView="Power Alarm Time" description="" max="10" min="0" paramter="" tag="" unit="" type="Double" />
@@ -2210,25 +2064,27 @@
 			<config default="3" name="RFTurnOnTimeout" nameView="RF Turn On Timeout" description="" max="10" min="0" paramter="" tag="" unit="S" type="Integer" />
 			<config default="false" name="EnableCalibration" nameView="是否校准" max="" min="" paramter="" tag="" unit="" visible="true" type="Bool" />
 			<config default="100#100;200#200;" name="CalibrationTable" nameView="校准表" max="" min="0" paramter="" tag="" unit="" visible="false" type="String" />
+
+			<config default="" name="GeneratorSerialNumber" nameView="RF电源序列号" max="" min="0" paramter="" tag="" unit="" type="String" />
+			<config default="" name="SensorSerialNumber" nameView="SensorHead序列号" max="" min="0" paramter="" tag="" unit="" type="String" />
+			<config default="2000" name="RFPhysicalMaxPower" nameView="RF Physical Max Power" description="" max="9999" min="0" paramter="" tag="" unit="" type="Double"  visible="false"/>
+			<config default="2000" name="CurrentRFMaxPower" nameView="Current RF Max Power" description="" max="2200" min="1800" paramter="" tag="" unit="" type="Double" />
+			<config default="2000" name="RFCalibratedMaxPower" nameView="RF Calibrated Max Power" description="" max="9999" min="0" paramter="" tag="" unit="" type="Double" />
+			<config default="" name="CalibrationTableDetail" nameView="详细校准表" max="" min="0" paramter="" tag="" unit="" visible="false" type="String" />
+
 		</configs>
 		<configs name="Match" nameView="Source Match" >
 			<config default="false" name="EnableMatch" nameView="Enable Source Match" description="enable match or not" max="1" min="0" tag="" unit="" type="Bool" />
 			<config default="1" name="MFG" nameView="MFG" description="厂商, 1:AdTec; 2:Comet; 3:Revtech" max="10" min="0" paramter="" tag="" unit="" type="Integer" />
 			<config default="1" name="CommunicationType" nameView="Communication Type" description="0:Analogue; 1:RS232; 2:Ethernet" max="10" min="0" paramter="" tag="" unit="" type="Integer" />
-			<config default="COM51" name="Port" nameView="Port" description="serial port name of match" max="" min="" paramter="" tag="" unit="" type="String" />
+			<config default="COM40" name="Port" nameView="Port" description="serial port name of match" max="" min="" paramter="" tag="" unit="" type="String" />
 			<config default="192.168.10.21:502" name="IPAddress" nameView="IP Address" description="Match IP,default 127.0.0.1:502" max="" min="" paramter="" tag="" unit="" type="String" />
 			<config default="1" name="MatchMode" nameView="Match Mode" description="" max="10" min="0" paramter="" tag="" unit="" type="Integer" />
 			<config default="false" name="EnableC1C2Position" nameView="Enable Source C1 C2 Position" description="" max="10" min="0" paramter="" tag="" unit="" type="Bool" />
 			<config default="false" name="EnableC1C2StepOffset" nameView="Enable Bias C1 C2 Position" description="" max="10" min="0" paramter="" tag="" unit="" type="Bool" />
 			<config default="1"     name="C1C2StepOffsetValue"  nameView="Bias C1 C2 Step Offset Value" description="" max="10" min="0" paramter="" tag="" unit="" type="Integer" />
 		</configs>
-		<configs name="RFBox" nameView="RF Box" >
-			<config default="false" name="EnableMatch" nameView="Enable Source Match" description="enable match or not" max="1" min="0" tag="" unit="" type="Bool" />
-			<config default="1" name="MFG" nameView="MFG" description="厂商, 1:AdTec; 2:Comet; 3:Revtech" max="10" min="0" paramter="" tag="" unit="" type="Integer" />
-			<config default="1" name="CommunicationType" nameView="Communication Type" description="0:Analogue; 1:RS232; 2:Ethernet" max="10" min="0" paramter="" tag="" unit="" type="Integer" />
-			<config default="COM40" name="Port" nameView="Port" description="serial port name of match" max="" min="" paramter="" tag="" unit="" type="String" />
-			<config default="192.168.10.21:502" name="IPAddress" nameView="IP Address" description="Match IP,default 127.0.0.1:502" max="" min="" paramter="" tag="" unit="" type="String" />
-		</configs>
+
 		<configs name="BiasRf" nameView="Bias RF" >
 			<config default="true" name="EnableBiasRF" nameView="Enable Bias RF" description="enable bias RF or not" max="1" min="0" tag="" unit="" type="Bool" />
 			<config default="2" name="MFG" nameView="MFG" description="厂商, 1:AdTec; 2:Comet" max="10" min="0" paramter="" tag="" unit="" type="Integer" />
@@ -2251,6 +2107,14 @@
 			<config default="3000" name="RfPowerAlarmTime" nameView="RF Power Alarm Time" description="" max="10000" min="0" paramter="" tag="" unit="" type="Integer" />
 			<config default="false" name="EnableCalibration" nameView="是否校准" max="" min="" paramter="" tag="" unit="" visible="true" type="Bool" />
 			<config default="100#100;200#200;" name="CalibrationTable" nameView="校准表" max="" min="0" paramter="" tag="" unit="" visible="false" type="String" />
+
+			<config default="" name="GeneratorSerialNumber" nameView="RF电源序列号" max="" min="0" paramter="" tag="" unit="" type="String" />
+			<config default="" name="SensorSerialNumber" nameView="SensorHead序列号" max="" min="0" paramter="" tag="" unit="" type="String" />
+			<config default="2000" name="RFPhysicalMaxPower" nameView="RF Physical Max Power" description="" max="9999" min="0" paramter="" tag="" unit="" type="Double"  visible="false"/>
+			<config default="2000" name="CurrentRFMaxPower" nameView="Current RF Max Power" description="" max="2200" min="1800" paramter="" tag="" unit="" type="Double" />
+			<config default="2000" name="RFCalibratedMaxPower" nameView="RF Calibrated Max Power" description="" max="9999" min="0" paramter="" tag="" unit="" type="Double" />
+			<config default="" name="CalibrationTableDetail" nameView="详细校准表" max="" min="0" paramter="" tag="" unit="" visible="false" type="String" />
+
 		</configs>
 		<configs name="BiasMatch" nameView="Bias Match" >
 			<config default="false" name="EnableBiasMatch" nameView="Enable Bias Match" description="enable bias match or not" max="1" min="0" tag="" unit="" type="Bool" />
@@ -2276,7 +2140,6 @@
 			<config default="10" name="MfcWarningRange" nameView="MFC Warning Range" description="" max="200" min="0" paramter="" tag="" unit="sccm" type="Integer" />
 			<config default="10" name="MfcWarningTime" nameView="MFC Warning Time" description="" max="60" min="0" paramter="" tag="" unit="second" type="Integer" />
 			<config default="0" name="MFCWriteMode" nameView="MFCWriteMode" description=" 0:Flow; 1:Percent" max="1" min="0" paramter="" tag="" unit="" type="Integer" />
-
 		</configs>
 		<configs name="MfcGas2" nameView="MFC Gas2" >
 			<config default="true" name="Enable" nameView="Enable" description="Enable gas 2 or not" tag="" unit="" type="Bool" />
@@ -2383,62 +2246,7 @@
 			<config default="0" name="MFCWriteMode" nameView="MFCWriteMode" description=" 0:Flow; 1:Percent" max="1" min="0" paramter="" tag="" unit="" type="Integer" />
 
 		</configs>
-		<configs name="MfcGas9" nameView="MFC Gas9" >
-			<config default="true" name="Enable" nameView="Enable" description="Enable gas 9 or not" tag="" unit="" type="Bool" />
-			<config default="Gas6" name="GasName" nameView="Gas Name" description="Name of NO.9 gas stick" tag="" unit="" type="String" />
-			<config default="100" name="MfcN2Scale" nameView="MFC N2 Scale" description="Max scale by N2 tuning" max="10000" min="0" tag="" unit="sccm" type="Integer" />
-			<config default="1" name="MfcScaleFactor" nameView="MFC Scale Factor" description="Scale factor" max="10" min="0" tag="" unit="sccm" type="Double" />
-			<config default="100" name="DefaultSetPoint" nameView="Default Set Point" description="default setpoint" max="1000" min="0" tag="" unit="sccm" type="Integer" />
-			<config default="1" name="FlowRegulationFactor" nameView="Flow Regulation Factor" description="flow regulation factor" max="10" min="0" tag="" unit="sccm" type="Integer" />
-			<config default="true" name="MfcEnableAlarm" nameView="MFC Enable Alarm" description="Mfc Enable Alarm" max="1" min="0" paramter="" tag="" unit="" type="Bool" />
-			<config default="10" name="MfcAlarmRange" nameView="MFC Alarm Range" description="Mfc Alarm Range" max="200" min="0" paramter="" tag="" unit="sccm" type="Integer" />
-			<config default="10" name="MfcAlarmTime" nameView="MFC Alarm Time" description="Mfc Alarm Time" max="60" min="0" paramter="" tag="" unit="second" type="Integer" />
-			<config default="10" name="MfcWarningRange" nameView="MFC Warning Range" description="" max="200" min="0" paramter="" tag="" unit="sccm" type="Integer" />
-			<config default="10" name="MfcWarningTime" nameView="MFC Warning Time" description="" max="60" min="0" paramter="" tag="" unit="second" type="Integer" />
-			<config default="0" name="MFCWriteMode" nameView="MFCWriteMode" description=" 0:Flow; 1:Percent" max="1" min="0" paramter="" tag="" unit="" type="Integer" />
-		</configs>
-		<configs name="MfcGas10" nameView="MFC Gas10" >
-			<config default="true" name="Enable" nameView="Enable" description="Enable gas 10 or not" tag="" unit="" type="Bool" />
-			<config default="Gas7" name="GasName" nameView="Gas Name" description="Name of NO.10 gas stick" tag="" unit="" type="String" />
-			<config default="100" name="MfcN2Scale" nameView="MFC N2 Scale" description="Max scale by N2 tuning" max="10000" min="0" tag="" unit="sccm" type="Integer" />
-			<config default="1" name="MfcScaleFactor" nameView="MFC Scale Factor" description="Scale factor" max="10" min="0" tag="" unit="sccm" type="Double" />
-			<config default="100" name="DefaultSetPoint" nameView="Default Set Point" description="default setpoint" max="1000" min="0" tag="" unit="sccm" type="Integer" />
-			<config default="1" name="FlowRegulationFactor" nameView="Flow Regulation Factor" description="flow regulation factor" max="10" min="0" tag="" unit="sccm" type="Integer" />
-			<config default="true" name="MfcEnableAlarm" nameView="MFC Enable Alarm" description="Mfc Enable Alarm" max="1" min="0" paramter="" tag="" unit="" type="Bool" />
-			<config default="10" name="MfcAlarmRange" nameView="MFC Alarm Range" description="Mfc Alarm Range" max="200" min="0" paramter="" tag="" unit="sccm" type="Integer" />
-			<config default="10" name="MfcAlarmTime" nameView="MFC Alarm Time" description="Mfc Alarm Time" max="60" min="0" paramter="" tag="" unit="second" type="Integer" />
-			<config default="10" name="MfcWarningRange" nameView="MFC Warning Range" description="" max="200" min="0" paramter="" tag="" unit="sccm" type="Integer" />
-			<config default="10" name="MfcWarningTime" nameView="MFC Warning Time" description="" max="60" min="0" paramter="" tag="" unit="second" type="Integer" />
-			<config default="0" name="MFCWriteMode" nameView="MFCWriteMode" description=" 0:Flow; 1:Percent" max="1" min="0" paramter="" tag="" unit="" type="Integer" />
-		</configs>
-		<configs name="MfcGas11" nameView="MFC Gas8" >
-			<config default="true" name="Enable" nameView="Enable" description="Enable gas 11 or not" tag="" unit="" type="Bool" />
-			<config default="Gas8" name="GasName" nameView="Gas Name" description="Name of NO.11 gas stick" tag="" unit="" type="String" />
-			<config default="100" name="MfcN2Scale" nameView="MFC N2 Scale" description="Max scale by N2 tuning" max="10000" min="0" tag="" unit="sccm" type="Integer" />
-			<config default="1" name="MfcScaleFactor" nameView="MFC Scale Factor" description="Scale factor" max="10" min="0" tag="" unit="sccm" type="Double" />
-			<config default="100" name="DefaultSetPoint" nameView="Default Set Point" description="default setpoint" max="1000" min="0" tag="" unit="sccm" type="Integer" />
-			<config default="1" name="FlowRegulationFactor" nameView="Flow Regulation Factor" description="flow regulation factor" max="10" min="0" tag="" unit="sccm" type="Integer" />
-			<config default="true" name="MfcEnableAlarm" nameView="MFC Enable Alarm" description="Mfc Enable Alarm" max="1" min="0" paramter="" tag="" unit="" type="Bool" />
-			<config default="10" name="MfcAlarmRange" nameView="MFC Alarm Range" description="Mfc Alarm Range" max="200" min="0" paramter="" tag="" unit="sccm" type="Integer" />
-			<config default="10" name="MfcAlarmTime" nameView="MFC Alarm Time" description="Mfc Alarm Time" max="60" min="0" paramter="" tag="" unit="second" type="Integer" />
-			<config default="10" name="MfcWarningRange" nameView="MFC Warning Range" description="" max="200" min="0" paramter="" tag="" unit="sccm" type="Integer" />
-			<config default="10" name="MfcWarningTime" nameView="MFC Warning Time" description="" max="60" min="0" paramter="" tag="" unit="second" type="Integer" />
-			<config default="0" name="MFCWriteMode" nameView="MFCWriteMode" description=" 0:Flow; 1:Percent" max="1" min="0" paramter="" tag="" unit="" type="Integer" />
-		</configs>
-		<configs name="MfcGas12" nameView="MFC Gas12" >
-			<config default="true" name="Enable" nameView="Enable" description="Enable gas 12 or not" tag="" unit="" type="Bool" />
-			<config default="Gas9" name="GasName" nameView="Gas Name" description="Name of NO.12 gas stick" tag="" unit="" type="String" />
-			<config default="100" name="MfcN2Scale" nameView="MFC N2 Scale" description="Max scale by N2 tuning" max="10000" min="0" tag="" unit="sccm" type="Integer" />
-			<config default="1" name="MfcScaleFactor" nameView="MFC Scale Factor" description="Scale factor" max="10" min="0" tag="" unit="sccm" type="Double" />
-			<config default="100" name="DefaultSetPoint" nameView="Default Set Point" description="default setpoint" max="1000" min="0" tag="" unit="sccm" type="Integer" />
-			<config default="1" name="FlowRegulationFactor" nameView="Flow Regulation Factor" description="flow regulation factor" max="10" min="0" tag="" unit="sccm" type="Integer" />
-			<config default="true" name="MfcEnableAlarm" nameView="MFC Enable Alarm" description="Mfc Enable Alarm" max="1" min="0" paramter="" tag="" unit="" type="Bool" />
-			<config default="10" name="MfcAlarmRange" nameView="MFC Alarm Range" description="Mfc Alarm Range" max="200" min="0" paramter="" tag="" unit="sccm" type="Integer" />
-			<config default="10" name="MfcAlarmTime" nameView="MFC Alarm Time" description="Mfc Alarm Time" max="60" min="0" paramter="" tag="" unit="second" type="Integer" />
-			<config default="10" name="MfcWarningRange" nameView="MFC Warning Range" description="" max="200" min="0" paramter="" tag="" unit="sccm" type="Integer" />
-			<config default="10" name="MfcWarningTime" nameView="MFC Warning Time" description="" max="60" min="0" paramter="" tag="" unit="second" type="Integer" />
-			<config default="0" name="MFCWriteMode" nameView="MFCWriteMode" description=" 0:Flow; 1:Percent" max="1" min="0" paramter="" tag="" unit="" type="Integer" />
-		</configs>
+
 		<configs name="MfcN2" nameView="MFC N2" >
 			<config default="true" name="Enable" nameView="Enable" description="Enable N2 or not" tag="" unit="" type="Bool" />
 			<config default="N2" name="GasName" nameView="Gas Name" description="Name of N2 stick" tag="" unit="" type="String" />
@@ -2469,7 +2277,7 @@
 			<config default="0" name="MFCWriteMode" nameView="MFCWriteMode" description=" 0:Flow; 1:Percent" max="1" min="0" paramter="" tag="" unit="" type="Integer" />
 
 		</configs>
-		<configs name="Pump" nameView="Pump" >
+		<configs name="Pump" nameView="Pump">
 			<config default="30" name="LeakRate" nameView="Leak Rate" description="" max="756000" min="0" paramter="" tag="" unit="mTorrPerMin" type="Double" />
 			<config default="300" name="LeakCheckPumpingTime" nameView="Leak Check Pumping Time" description="" max="3000" min="0" paramter="" tag="" unit="" type="Integer" />
 			<config default="180" name="LeakCheckHoldTime" nameView="Leak Check Hold Time" description="" max="3000" min="0" paramter="" tag="" unit="" type="Integer" />
@@ -2479,7 +2287,7 @@
 			<config default="120" name="PumpTimeLimit" nameView="Pump Time Limit" description="" max="3000" min="0" paramter="" tag="" unit="" type="Double" />
 			<config default="5" name="PumpValveDelay" nameView="Pump Valve Delay" description="" max="3000" min="0" paramter="" tag="" unit="s" type="Integer" />
 			<config default="75000" name="PumpCrossingPressure" description="PM Rough Pumping Pressure" max="200000" min="0" paramter="" tag="" unit="mTorr" type="Integer" />
-			<config default="200" name="PumpVHe2FlowPressure" nameView="He2 Flow Pressure" description="" max="756000" min="0" paramter="" tag="" unit="mTorr" type="Integer" />
+			<config default="200" name="PumpVHe2FlowPressure" nameView="He2 Flow Pressure" description="" max="400" min="0" paramter="" tag="" unit="mTorr" type="Integer" />
 			<config default="100" name="LoadLockPumpBasePressure" description="LoadLock Pump Base Pressure" max="756000" min="0" paramter="" tag="" unit="mTorr" type="Integer" />
 			<config default="120" name="LoadLockPumpTimeLimit" description="LoadLock Pump Time Limit" max="3000" min="0" paramter="" tag="" unit="second" type="Integer" />
 			<config default="10" name="LoadLockPurgeVentPressure" description="LoadLock Purge Vent Pressure" max="760" min="0" paramter="" tag="" unit="Torr" type="Integer" />
@@ -2527,7 +2335,6 @@
 			<config name="TempOffsetPoint_9" nameView="Temp Offset Point 9" description="温度补偿点 9" unit="degree" type="Integer" max="300" min="0" />
 			<config name="OffsetValue_9" nameView="Offset Value 9" description="补偿值 9" unit="degree" type="Double" max="300" min="0" />
 		</configs>
-
 		<configs name="WallHeater" nameView="Heater Wall" >
 			<config default="false" name="HeaterEnableTolerance" nameView="Enable Heater Deviation Check" description="" max="0" min="0" paramter="" tag="" unit="" type="Bool" />
 			<config default="200" name="HeaterAlarmRange" nameView="Heater deviation Alarm Range" description="" max="200" min="0" paramter="" tag="" unit="℃" type="Integer" />
@@ -2554,7 +2361,6 @@
 			<config name="TempOffsetPoint_9" nameView="Temp Offset Point 9" description="温度补偿点 9" unit="degree" type="Integer" max="300" min="0" />
 			<config name="OffsetValue_9" nameView="Offset Value 9" description="补偿值 9" unit="degree" type="Double" max="300" min="0" />
 		</configs>
-
 		<configs name="ForelineHeater" nameView="Heater Foreline" >
 			<config default="false" name="HeaterEnableTolerance" nameView="Enable Heater Deviation Check" description="" max="0" min="0" paramter="" tag="" unit="" type="Bool" />
 			<config default="200" name="HeaterAlarmRange" nameView="Heater deviation Alarm Range" description="" max="200" min="0" paramter="" tag="" unit="℃" type="Integer" />
@@ -2581,7 +2387,6 @@
 			<config name="TempOffsetPoint_9" nameView="Temp Offset Point 9" description="温度补偿点 9" unit="degree" type="Integer" max="300" min="0" />
 			<config name="OffsetValue_9" nameView="Offset Value 9" description="补偿值 9" unit="degree" type="Double" max="300" min="0" />
 		</configs>
-
 		<configs name="ValveHeater" nameView="Valve Heater" >
 			<config default="false" name="HeaterEnableTolerance" nameView="Enable Heater Deviation Check" description="" max="0" min="0" paramter="" tag="" unit="" type="Bool" />
 			<config default="200" name="HeaterAlarmRange" nameView="Heater deviation Alarm Range" description="" max="200" min="0" paramter="" tag="" unit="℃" type="Integer" />
@@ -2634,23 +2439,22 @@
 			<config name="TempOffsetPoint_9" nameView="Temp Offset Point 9" description="温度补偿点 9" unit="degree" type="Integer" max="300" min="0" />
 			<config name="OffsetValue_9" nameView="Offset Value 9" description="补偿值 9" unit="degree" type="Double" max="300" min="0" />
 		</configs>
-
-		<configs name="ElectrostaticVoltageSource" nameView="Electrostatic Voltage Source">
-			<config default="COM56" name="Port" nameView="Port" description="serial port name of ElectrostaticVoltageSource" max="" min="" paramter="" tag="" unit="" type="String" />
-		</configs>
+		<!--<configs name="ElectrostaticVoltageSource" nameView="Electrostatic Voltage Source">
+			<config default="COM64" name="Port" nameView="Port" description="serial port name of ElectrostaticVoltageSource" max="" min="" paramter="" tag="" unit="" type="String" />
+		</configs>-->
 		<configs name="TurboPump" nameView="Turbo Pump">
-			<config default="COM5" name="Port" nameView="Port" description="serial port name of TurboPump" max="" min="" paramter="" tag="" unit="" type="String" />
+			<config default="COM62" name="Port" nameView="Port" description="serial port name of TurboPump" max="" min="" paramter="" tag="" unit="" type="String" />
 			<config default="500" name="ChamberForelinePressureThreshold" nameView="Chamber Foreline Pressure Threshold" description="" max="10000" min="0" paramter="" tag="" unit="mtorr" type="Double" />
 			<config default="30" name="ChamberForelinePressureTimeout" nameView="Chamber Foreline Pressure Timeout" description="" max="3000" min="0" paramter="" tag="" unit="s" type="Integer" />
 		</configs>
 		<configs name="PendulumValve" nameView="Pendulum Valve">
-			<config default="COM80" name="Port" nameView="Port" description="serial port name of PendulumValve" max="" min="" paramter="" tag="" unit="" type="String" />
+			<config default="COM66" name="Port" nameView="Port" description="serial port name of PendulumValve" max="" min="" paramter="" tag="" unit="" type="String" />
 			<config default="400" name="PressureFullRange" nameView="PressureFullRange" description="Pressure Full Range of PendulumValve" max="100000" min="0" paramter="" tag="" unit="mtorr" type="Integer" />
 			<config default="750"  name="ForelinePressureLimit" nameView="ForelinePressureLimit" description="" max="3000" min="0" paramter="" tag="" unit="mtorr" type="Integer" />
 			<config default="600"  name="ChamberPressureLimit" nameView="ForelinePressureLimit" description="" max="3000" min="0" paramter="" tag="" unit="mtorr" type="Integer" />
 			<config default="100"  name="TurboPumpSpeedLimit"  nameView="Turbo PumpSpeed Limit" description="" max="3000" min="0" paramter="" tag="" unit="" type="Integer" />
-		</configs>
 
+		</configs>
 		<!--Clean-->
 		<configs name="IdleClean" nameView="Idle Clean" visible="false">
 			<config default="0" name="Option" nameView="Idle Clean Option" description="0, disable; 1, By Idle Time; 2, By Wafer Count" max="2" min="0" paramter="" tag="" unit="" type="Integer" />
@@ -2660,26 +2464,12 @@
 			<config default="0" name="WaferCountSinceLastClean" nameView="Wafer Count Since Last Clean" description="Wafer Count Since Last Runing Clean" max="100000" min="0" paramter="" tag="" unit="pcs" type="Integer" />
 			<config default="" name="LastRunTime" nameView="The Time Chamber Last Run Wafer" description="The Time Chamber Last Run Wafer" max="" min="" paramter="" tag="" unit="" type="String" />
 		</configs>
-
 		<configs name="EPD" nameView="EPD Setting">
 			<config default="true" name="IsEnabled" nameView="Is Enabled" description="IsEnabled" max="0" min="0" paramter="" tag="" unit="" type="Bool" />
-			<config default="0" name="ChannelNumber" nameView="EPD Channel Number"  description="channel number" max="32" min="0" paramter="" tag="" unit="" type="Integer" />
+			<config default="0" name="ChannelNumber" nameView="EPD Channel Number" description="channel number" max="32" min="0" paramter="" tag="" unit="" type="Integer" />
 			<config default="127.0.0.1:1102" name="IPAddress" nameView="IP Address" description="EPD IP、端口设置;default 10.0.0.100:13000" max="" min="" paramter="" tag="" unit="" type="String" />
 			<config default="0" name="EPDType" nameView="EPD Type" description="EPD type, 0) by socket, 1) by WCF" max="32" min="0" paramter="" tag="" unit="" type="Integer" />
 		</configs>
-		<configs name="HighTemperatureHeater" nameView="HighTemperatureHeater" >
-			<config default="60" name="LiftServoPosition1"    nameView="Lift Servo Position1"     description="Lift Servo Position1" max="600" min="-600" paramter="" tag="" unit="mm" type="Double" />
-			<config default="60" name="LiftServoPosition2"    nameView="Lift Servo Position2"     description="Lift Servo Position1" max="600" min="-600" paramter="" tag="" unit="mm" type="Double" />
-			<config default="60" name="LiftServoPosition3"    nameView="Lift Servo Position3"     description="Lift Servo Position1" max="600" min="-600" paramter="" tag="" unit="mm" type="Double" />
-			<config default="60" name="LiftServoPosition4"    nameView="Lift Servo Position4"     description="Lift Servo Position1" max="600" min="-600" paramter="" tag="" unit="mm" type="Double" />
-			<config default="60" name="LiftServoPosition5"    nameView="Lift Servo Position5"     description="Lift Servo Position1" max="600" min="-600" paramter="" tag="" unit="mm" type="Double" />
-			<config default="60" name="OriginSearchHighSpeed" nameView="Origin Search High Speed" description="Lift Servo Position1" max="600" min="-600" paramter="" tag="" unit="mm" type="Double" />
-			<config default="60" name="OriginSearchLowSpeed"  nameView="Origin Search Low Speed"  description="Lift Servo Position1" max="600" min="-600" paramter="" tag="" unit="mm" type="Double" />
-			<config default="60" name="AbsMoveSpeed"          nameView="Abs Move Speed"           description="Lift Servo Position1" max="600" min="-600" paramter="" tag="" unit="mm" type="Double" />
-			<config default="60" name="MaximusMoveSpeed"      nameView="Maximus Move Speed"       description="Lift Servo Position1" max="600" min="-600" paramter="" tag="" unit="mm" type="Double" />
-			<config default="60" name="SoftDownLimit"         nameView="Soft Down Limit"          description="Lift Servo Position1" max="600" min="-600" paramter="" tag="" unit="mm" type="Double" />
-			<config default="60" name="SoftUpLimit"           nameView="Soft Up Limit"            description="Lift Servo Position1" max="600" min="-600" paramter="" tag="" unit="mm" type="Double" />
 
-		</configs>
 	</configs>
 </root>

+ 2 - 0
Venus/Venus_RT/Devices/EFEM/JetEfem.cs

@@ -41,6 +41,8 @@ namespace Venus_RT.Devices.EFEM
         public override RState Status { get { return _status; } }
         public override bool IsHomed { get { return _IsHomed; } }
         public override RobotMoveInfo TMRobotMoveInfo { get { return _robotMoveInfo; } }
+
+        
         public override ILoadport this[ModuleName mod]
         {
             get

+ 1 - 1
Venus/Venus_RT/Devices/JetKepler2300PM.cs

@@ -672,7 +672,7 @@ namespace Venus_RT.Devices
             {
                 gas.Monitor();
             }
-            if (_pendulumValveStopWatch.ElapsedMilliseconds > 2000)
+            if (_pendulumValveStopWatch.ElapsedMilliseconds > 1000)
             {
                 CheckPermanentInterlock();
                 _pendulumValveStopWatch.Restart();

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

@@ -136,12 +136,12 @@ namespace Venus_RT.Modules
         {
             throw new NotImplementedException();
         }
-
         // Fields
         //
         private readonly string Name;
         private readonly EfemBase _efem;
         private readonly LoadPortModule[] _lpms = new LoadPortModule[3];
+
         private readonly EfemType _efemType;
         public EfemBase EfemDevice => _efem;
         public EfemType EFEMType => _efemType;

+ 57 - 34
Venus/Venus_RT/Modules/PMs/PMGasVerificationRoutine.cs

@@ -65,10 +65,12 @@ namespace Venus_RT.Modules.PMs
         public ObservableCollection<MFCCalibrationData> _MFCCalibrationDatas = new ObservableCollection<MFCCalibrationData>();
 
         //private bool _flag;//判断3分钟是否大于9torr
-        public PMGasVerificationRoutine(JetPMBase chamber,PumpDownRoutine pdRoutine) : base(chamber)
+        private JetChamber jetChamber = JetChamber.None;
+        public PMGasVerificationRoutine(JetPMBase chamber, PumpDownRoutine pdRoutine) : base(chamber)
         {
             Name = "Gas Verification";
             _pumpDownRoutine = pdRoutine;
+            jetChamber = chamber.ChamberType;
         }
 
         internal void Init(string mfc, double flow, int flowCount)
@@ -101,7 +103,7 @@ namespace Venus_RT.Modules.PMs
                 return RState.Failed;
             }
 
-            if(!CheckTurboPump())
+            if (!CheckTurboPump())
             {
                 return RState.Failed;
             }
@@ -159,26 +161,26 @@ namespace Venus_RT.Modules.PMs
         }
         public RState Monitor()
         {
-            Runner.Run(GasStep.kPrepareValves,          PrepareValve,                           _delay_50ms)
-                .LoopStart(GasStep.kPumpDown_1,         $"{_mfcDevice.Name} Gas Verification",  _paramFlowSet.Count,        PumpingDown,        WaitPumpDone)
-                .LoopRun(GasStep.kGasFlow,              FlowGas,                                CheckGasStable)
-                .LoopDelay(GasStep.KDelay_2S,           2 * 1000)
-                .LoopRun(GasStep.KGetBeginPressure,     GetBeginPressure, JudgePressure,        (_holdTime+10) * 1000)
+          Runner.Run(GasStep.kPrepareValves,        PrepareValve,   _delay_50ms)
+                .LoopStart(GasStep.kPumpDown_1,     $"{_mfcDevice.Name} Gas Verification",  _paramFlowSet.Count, PumpingDown, WaitPumpDone)
+                .LoopRun(GasStep.kGasFlow,          FlowGas, CheckGasStable)
+                .LoopDelay(GasStep.KDelay_2S,       2 * 1000)
+                .LoopRun(GasStep.KGetBeginPressure, GetBeginPressure,                       JudgePressure, (_holdTime + 10) * 1000)
                 //.LoopDelay(GasStep.kDelay_1,            _holdTime * 1000)
-                .LoopRun(GasStep.kGasVerification,      CalcMfcCalibration,                     _delay_2s)
-                .LoopEnd(GasStep.kStopGasFlow,          StopGasFlow,                            IsPumpDownOK)
-                .End(GasStep.kEnd,                      NullFun,                                _delay_2s);
+                .LoopRun(GasStep.kGasVerification, CalcMfcCalibration, _delay_2s)
+                .LoopEnd(GasStep.kStopGasFlow,     StopGasFlow, IsPumpDownOK)
+                .End(GasStep.kEnd,                 NullFun,     _delay_2s);
 
             return Runner.Status;
         }
 
         private bool JudgePressure()
         {
-            if (_verificationDeviceTimer.GetElapseTime()<3*60*1000 && _chamber.ChamberPressure>9000)
+            if (_verificationDeviceTimer.GetElapseTime() < 3 * 60 * 1000 && _chamber.ChamberPressure > 9000)
             {
                 return true;
             }
-            if (_verificationDeviceTimer.GetElapseTime() >_holdTime*1000)
+            if (_verificationDeviceTimer.GetElapseTime() > _holdTime * 1000)
             {
                 return true;
             }
@@ -209,9 +211,9 @@ namespace Venus_RT.Modules.PMs
 
         private bool WaitPumpDone()
         {
-            if(Runner.StepElapsedMS >= _pumpingTime * 1000)
+            if (Runner.StepElapsedMS >= _pumpingTime * 1000)
             {
-                if(_chamber.ProcessPressure <= _basePressure)
+                if (_chamber.ProcessPressure <= _basePressure)
                 {
                     return true;
                 }
@@ -228,13 +230,13 @@ namespace Venus_RT.Modules.PMs
         private void OpenPVNVlv(int mfcIndex, bool on)
         {
             ValveType[] vlvs = new ValveType[] { ValveType.PV11, ValveType.PV21, ValveType.PV31, ValveType.PV41 };
-            if (_chamber.ChamberType == JetChamber.VenusSE|| _chamber.ChamberType == JetChamber.VenusDE)
+            if (_chamber.ChamberType == JetChamber.VenusSE || _chamber.ChamberType == JetChamber.VenusDE)
             {
-                vlvs = new ValveType[] { ValveType.PV11, ValveType.PV21, ValveType.PV31, ValveType.PV41,ValveType.PV51,ValveType.PV61,ValveType.PV71,ValveType.PV81, ValveType.PV91, ValveType.PVA1, ValveType.PVB1, ValveType.PVC1, };
+                vlvs = new ValveType[] { ValveType.PV11, ValveType.PV21, ValveType.PV31, ValveType.PV41, ValveType.PV51, ValveType.PV61, ValveType.PV71, ValveType.PV81, ValveType.PV91, ValveType.PVA1, ValveType.PVB1, ValveType.PVC1, };
             }
             //    if (mfcIndex < 4)
             //{
-                _chamber.OpenValve(vlvs[mfcIndex], on);
+            _chamber.OpenValve(vlvs[mfcIndex], on);
             //}
         }
 
@@ -242,7 +244,14 @@ namespace Venus_RT.Modules.PMs
         {
             Notify($"Start {_mfcDevice.Name} gas flow");
             _verificationDeviceTimer.Start(0);
-            _beginPressure = _chamber.ChamberPressure;
+            //if (jetChamber == JetChamber.Kepler2200A || jetChamber == JetChamber.Kepler2200B)
+            //{
+            //    _beginPressure = ConvertPressureUnit.ConvertPaTomtorr(_chamber.ChamberPressure); 
+            //}
+            //else
+            //{
+            //    _beginPressure = _chamber.ChamberPressure;
+            //}
 
             OpenPVNVlv(_mfcIndex, true);
             if (!_chamber.FlowGas(_mfcIndex, _paramMode == VerifyMode.TenPoint ? _paramFlowSet[Runner.LoopCounter] : _mfcFlow))
@@ -257,11 +266,10 @@ namespace Venus_RT.Modules.PMs
         {
             if (_verificationDeviceTimer.GetElapseTime() > _flowTime * 1000)
             {
-                
-                //System.Threading.Thread.Sleep(1000);
-                //if (!_chamber.SetPVPostion(0))
-                    if(!_chamber.TurnPendulumValve(false))
+                if (!_chamber.TurnPendulumValve(false))
+                {
                     Runner.Stop("Stop Pendulum Valve failed.");
+                }
 
                 return true;
             }
@@ -280,15 +288,23 @@ namespace Venus_RT.Modules.PMs
                     return true;
                 }
             }
-           
-  
+
+
             return false;
         }
 
         private bool GetBeginPressure()
         {
-            Notify($"Get begin pressure {_chamber.ChamberPressure.ToString("f1")}");
-            _beginPressure = _chamber.ChamberPressure;
+            if (jetChamber == JetChamber.Kepler2200A || jetChamber == JetChamber.Kepler2200B)
+            {
+                _beginPressure = ConvertPressureUnit.ConvertPaTomtorr(_chamber.ChamberPressure);
+            }
+            else
+            {
+                _beginPressure = _chamber.ChamberPressure;
+            }
+            Notify($"Get begin pressure {_beginPressure.ToString("f1")}");
+           
             _verificationDeviceTimer.Start(0);
 
             //Notify($"Check finished one point");
@@ -299,32 +315,39 @@ namespace Venus_RT.Modules.PMs
         {
             //_mfcIndex += 1;
             // full open Pendulum valve
-            _chamber.SetPVPostion(1000);
+            //.SetPVPostion(1000);
+            if (jetChamber == JetChamber.Kepler2200A || jetChamber == JetChamber.Kepler2200B)
+            {
+                _endPressure = ConvertPressureUnit.ConvertPaTomtorr(_chamber.ChamberPressure);
+            }
+            else
+            {
+                _endPressure = _chamber.ChamberPressure;
+            }
 
-            _endPressure = _chamber.ChamberPressure; //mTorr
-            _elapsedTime = _verificationDeviceTimer.GetElapseTime() / (1000 * 60); //unit minutes
+            _elapsedTime = _verificationDeviceTimer.GetElapseTime() / (1000 * 60); //unit minute
 
             float flow = _paramMode == VerifyMode.TenPoint ? _paramFlowSet[Runner.LoopCounter] : _mfcFlow;
             _mfcActualFlow = 273.15 * _chamberVolume / ((273.15 + _gasTemperature) * 760000) * ((_endPressure - _beginPressure) / _elapsedTime - _leakRate);
 
             Notify($"Calculate flow: calculate flow={_mfcActualFlow}, setpoint={flow}, begin pressure(mtorr)={_beginPressure:f3}, end pressure(mtorr)={_endPressure:f3}," +
                 $"elapsed time(minute)={_elapsedTime:f3}");
-            _MFCCalibrationDatas.Add(new MFCCalibrationData(flow,_mfcActualFlow));
+            _MFCCalibrationDatas.Add(new MFCCalibrationData(flow, _mfcActualFlow));
             double deviation = (Math.Abs(_mfcActualFlow) - Math.Abs(flow)) / Math.Abs(flow) * 100;
             bool isOk = Math.Abs(deviation) <= Math.Abs(_maxDeviation);
 
             if (!isOk)
             {
-                LOG.Write(eEvent.ERR_ROUTINE_FAILED, Module, Name, $"MFC{(_mfcIndex+1).ToString()} verify failed, deviation{deviation} exceed max tolerance{_maxDeviation}");
+                LOG.Write(eEvent.ERR_ROUTINE_FAILED, Module, Name, $"MFC{(_mfcIndex + 1).ToString()} verify failed, deviation{deviation} exceed max tolerance{_maxDeviation}");
             }
 
             if (_paramMode == VerifyMode.TenPoint)
             {
                 _calibrationResult[flow] = Tuple.Create((float)_mfcActualFlow, (float)_elapsedTime);
 
-                _mfcDevice.SetVerificationResult((float)flow, (float)_mfcActualFlow, _calibrationResult.Count == 10, _elapsedTime * 60, deviation, isOk,(int)VerifyMode.TenPoint);
+                _mfcDevice.SetVerificationResult((float)flow, (float)_mfcActualFlow, _calibrationResult.Count == 10, _elapsedTime * 60, deviation, isOk, (int)VerifyMode.TenPoint);
             }
-            else if(_paramMode == VerifyMode.OnePoint)
+            else if (_paramMode == VerifyMode.OnePoint)
             {
                 _mfcDevice.SetVerificationResult((float)flow, (float)_mfcActualFlow, true, _elapsedTime * 60, deviation, isOk, (int)VerifyMode.OnePoint);
             }
@@ -347,7 +370,7 @@ namespace Venus_RT.Modules.PMs
             _chamber.OpenValve(ValveType.FastPump, true);
 
 
-           return _pumpDownRoutine.Start(_basePressure) == RState.Running;
+            return _pumpDownRoutine.Start(_basePressure) == RState.Running;
         }
 
         private bool IsPumpDownOK()

+ 10 - 0
Venus/Venus_RT/Modules/PMs/PMProcessRoutine.cs

@@ -197,6 +197,16 @@ namespace Venus_RT.Modules.PMs
             currentRecipeResult.RecipeName = recipeName;
             string recipeContent = RecipeFileManager.Instance.LoadRecipe(_chamber.Name, recipeName, false, objs[2].ToString());
             Recipe recipe = Recipe.Load(recipeContent);
+            if (recipeName != recipe.Header.Name)
+            {
+                Stop($"Recipe内部名{recipe.Header.Name}与外部名{recipeName}不一致,请确认Recipe来源");
+                return RState.Failed;
+            }
+            if (_jetChamber != recipe.Header.ChamberType)
+            {
+                Stop($"不可以在{_jetChamber}腔体跑{recipe.Header.ChamberType}类型的Recipe,请确认Recipe来源");
+                return RState.Failed;
+            }
             currentRecipeResult.RecipeStepCount = recipe.Steps.Count;
             if (recipe == null)
             {

+ 115 - 104
Venus/Venus_RT/Modules/RouteManager.cs

@@ -71,8 +71,8 @@ namespace Venus_RT.Modules
             Map,
             ReturnAllWafer,
             TMCycle,
-            
-			SETMCycle,
+
+            SETMCycle,
             StopSECycle,
             CreateSEJob,
             StartSEJob,
@@ -154,7 +154,7 @@ namespace Venus_RT.Modules
         {
             get
             {
-                if(_isATMMode == -1)
+                if (_isATMMode == -1)
                 {
                     _isATMMode = SC.GetValue<bool>("System.IsATMMode") ? 1 : 0;
                 }
@@ -169,7 +169,7 @@ namespace Venus_RT.Modules
         private ICycle _AutoCycle;
         private ManualTransfer _manualTransfer;
         private ReturnAllWafer _returnWafer;
-		private SETMCycle _seTMCycle;
+        private SETMCycle _seTMCycle;
         private SEManualTransfer _setransfer;
         private SEReturnWafer _sereturnWafer;
 
@@ -213,7 +213,7 @@ namespace Venus_RT.Modules
             {
                 seTM = new SETMEntity();
             }
-                
+
 
             fsm = new StateMachine<RouteManager>(Name, (int)RtState.Init, 200);
 
@@ -285,7 +285,7 @@ namespace Venus_RT.Modules
             OP.Subscribe("TMCycle.Start", (cmd, args) => CheckToPostMessage((int)MSG.TMCycle, args));
             OP.Subscribe("TMCycle.Abort", (cmd, args) => CheckToPostMessage((int)MSG.StopCycle, args));
 
-			OP.Subscribe("System.StopSECycle", (cmd, args) => CheckToPostMessage((int)MSG.StopSECycle, args));	
+            OP.Subscribe("System.StopSECycle", (cmd, args) => CheckToPostMessage((int)MSG.StopSECycle, args));
 
             DATA.Subscribe("SYSTEM.FsmState", () => (((RtState)fsm.State).ToString()));
             DATA.Subscribe("TMCycle.CycleIndex", () => (_TMCycle?.CycleIndex));
@@ -314,7 +314,7 @@ namespace Venus_RT.Modules
                     return false;
                 }
 
-                if (seTM!=null && VCE!=null)
+                if (seTM != null && VCE != null)
                     return CheckToPostMessage((int)MSG.SEMoveWafer,
                         source, (int)args[1],
                         destination, (int)args[3],
@@ -451,12 +451,13 @@ namespace Venus_RT.Modules
                 return CheckToPostMessage((int)MSG.CassetteLeave);
             });
 
-            OP.Subscribe("System.IsModuleInstalled", (string cmd, object[] args) => {
+            OP.Subscribe("System.IsModuleInstalled", (string cmd, object[] args) =>
+            {
                 return ModuleHelper.IsInstalled((ModuleName)args[0]);
             });
-			OP.Subscribe("System.SETMCycle", (cmd, args) => CheckToPostMessage((int)MSG.SETMCycle, args));
+            OP.Subscribe("System.SETMCycle", (cmd, args) => CheckToPostMessage((int)MSG.SETMCycle, args));
             OP.Subscribe("System.CreateSEJob", (cmd, args) => CheckToPostMessage((int)MSG.CreateSEJob, args));
-            OP.Subscribe("System.StartSEJob",(cmd,args)=>CheckToPostMessage((int)MSG.StartSEJob,args));
+            OP.Subscribe("System.StartSEJob", (cmd, args) => CheckToPostMessage((int)MSG.StartSEJob, args));
             OP.Subscribe("System.ReturnAllSEWafer", (cmd, args) => CheckToPostMessage((int)MSG.SEReturnWafer, args));
             OP.Subscribe("System.SEAbort", (cmd, args) => CheckToPostMessage((int)MSG.SEAbort, args));
         }
@@ -542,7 +543,7 @@ namespace Venus_RT.Modules
                     LOG.Write(eEvent.WARN_ROUTER, "System", string.Format("Wafer already at vce {0} {1}, return operation is not valid", target.ToString(), slot + 1));
                     return false;
                 }
-                WaferInfo wafer = WaferManager.Instance.GetWafer(target,slot);
+                WaferInfo wafer = WaferManager.Instance.GetWafer(target, slot);
                 if (wafer.IsEmpty)
                 {
                     LOG.Write(eEvent.WARN_ROUTER, "System", string.Format("No wafer at {0} {1}, return operation is not valid", target.ToString(), slot + 1));
@@ -553,7 +554,7 @@ namespace Venus_RT.Modules
                         (ModuleName)wafer.OriginStation, wafer.OriginSlot,
                         false, 0, false, 0, "Blade1");
             }
-            else 
+            else
             {
                 if (ModuleHelper.IsLoadPort(target))
                 {
@@ -579,7 +580,7 @@ namespace Venus_RT.Modules
                     (ModuleName)wafer.OriginStation, wafer.OriginSlot,
                     false, 0, false, 0, "Blade1");
             }
-            
+
         }
 
         public PMEntity GetPM(ModuleName mod)
@@ -632,7 +633,7 @@ namespace Venus_RT.Modules
         {
             return TM;
         }
-    
+
         protected override bool Init()
         {
             PMA?.Initialize();
@@ -652,7 +653,7 @@ namespace Venus_RT.Modules
             _AutoCycle = new SystemDispatcher();
             _manualTransfer = new ManualTransfer();
             _returnWafer = new ReturnAllWafer(_manualTransfer);
-			_seTMCycle = new SETMCycle(ModuleName.SETM);
+            _seTMCycle = new SETMCycle(ModuleName.SETM);
             _setransfer = new SEManualTransfer();
             _sereturnWafer = new SEReturnWafer(_setransfer);
 
@@ -660,94 +661,94 @@ namespace Venus_RT.Modules
             BuildTransitionTable();
             return true;
         }
-       
+
         private void BuildTransitionTable()
         {
             //Init sequence
-            Transition(RtState.Init,            MSG.HOME,               FsmStartHome,               RtState.Initializing);
-            Transition(RtState.Idle,            MSG.HOME,               FsmStartHome,               RtState.Initializing);
-            Transition(RtState.Error,           MSG.HOME,               FsmStartHome,               RtState.Initializing);
+            Transition(RtState.Init, MSG.HOME, FsmStartHome, RtState.Initializing);
+            Transition(RtState.Idle, MSG.HOME, FsmStartHome, RtState.Initializing);
+            Transition(RtState.Error, MSG.HOME, FsmStartHome, RtState.Initializing);
 
-            EnterExitTransition<RtState, FSM_MSG>(RtState.AutoRunning,  FsmEnterAutoRunning,        FSM_MSG.NONE,       FsmExitAutoTransfer);
-            EnterExitTransition<RtState, FSM_MSG>(RtState.Transfer,     null,                       FSM_MSG.NONE,       FsmExitTransfer);
-            EnterExitTransition<RtState, FSM_MSG>(RtState.ReturnWafer,  null,                       FSM_MSG.NONE,       FsmExitReturnWafer);
+            EnterExitTransition<RtState, FSM_MSG>(RtState.AutoRunning, FsmEnterAutoRunning, FSM_MSG.NONE, FsmExitAutoTransfer);
+            EnterExitTransition<RtState, FSM_MSG>(RtState.Transfer, null, FSM_MSG.NONE, FsmExitTransfer);
+            EnterExitTransition<RtState, FSM_MSG>(RtState.ReturnWafer, null, FSM_MSG.NONE, FsmExitReturnWafer);
 
-            AnyStateTransition(MSG.ERROR,       FsmError,               RtState.Error);
+            AnyStateTransition(MSG.ERROR, FsmError, RtState.Error);
 
-            Transition(RtState.Idle,            FSM_MSG.TIMER,          FsmMonitor,                 RtState.Idle);
-            Transition(RtState.Init,            FSM_MSG.TIMER,          FsmMonitor,                 RtState.Init);
+            Transition(RtState.Idle, FSM_MSG.TIMER, FsmMonitor, RtState.Idle);
+            Transition(RtState.Init, FSM_MSG.TIMER, FsmMonitor, RtState.Init);
 
-            Transition(RtState.Initializing,    FSM_MSG.TIMER,          FsmMonitorHome,             RtState.Idle);
-            Transition(RtState.Initializing,    MSG.ERROR,              FsmError,                   RtState.Error);
-            Transition(RtState.Initializing,    MSG.ABORT,              FsmAbort,                   RtState.Init);
+            Transition(RtState.Initializing, FSM_MSG.TIMER, FsmMonitorHome, RtState.Idle);
+            Transition(RtState.Initializing, MSG.ERROR, FsmError, RtState.Error);
+            Transition(RtState.Initializing, MSG.ABORT, FsmAbort, RtState.Init);
 
 
             // TM  Cycle
-            Transition(RtState.Idle,            MSG.TMCycle,            FsmStartTMCycle,            RtState.TMCycle);
-            Transition(RtState.TMCycle,         FSM_MSG.TIMER,          FsmMonitorTMCycle,          RtState.Idle);
-            Transition(RtState.TMCycle,         MSG.StopCycle,          FsmStopTMCycle,             RtState.Idle);
+            Transition(RtState.Idle, MSG.TMCycle, FsmStartTMCycle, RtState.TMCycle);
+            Transition(RtState.TMCycle, FSM_MSG.TIMER, FsmMonitorTMCycle, RtState.Idle);
+            Transition(RtState.TMCycle, MSG.StopCycle, FsmStopTMCycle, RtState.Idle);
 
             //Auto/manual 
-            Transition(RtState.Idle,            MSG.SetAutoMode,        FsmStartAutoTransfer,       RtState.AutoIdle);
+            Transition(RtState.Idle, MSG.SetAutoMode, FsmStartAutoTransfer, RtState.AutoIdle);
 
-            Transition(RtState.AutoRunning,     FSM_MSG.TIMER,          FsmAutoTransfer,            RtState.AutoIdle);
-            Transition(RtState.AutoRunning,     MSG.ABORT,              FsmAbortAutoTransfer,       RtState.Idle);
+            Transition(RtState.AutoRunning, FSM_MSG.TIMER, FsmAutoTransfer, RtState.AutoIdle);
+            Transition(RtState.AutoRunning, MSG.ABORT, FsmAbortAutoTransfer, RtState.Idle);
             //Transition(RtState.AutoRunning,   MSG.SetManualMode,      FsmStartSetManualMode,      RtState.Idle);
-            Transition(RtState.AutoRunning,     MSG.JobDone,            FsmJobDone,                 RtState.AutoIdle);
+            Transition(RtState.AutoRunning, MSG.JobDone, FsmJobDone, RtState.AutoIdle);
             //Transition(RtState.AutoRunning,   MSG.CassetteLeave,      fCassetteLeave,             RtState.AutoRunning);   //For unload light control off afer job done
 
-            Transition(RtState.AutoRunning,     MSG.CreateJob,          FsmCreateJob,               RtState.AutoRunning);
-            Transition(RtState.AutoRunning,     MSG.StartJob,           FsmStartJob,                RtState.AutoRunning);
-            Transition(RtState.AutoRunning,     MSG.PauseJob,           FsmPauseJob,                RtState.AutoRunning);
-            Transition(RtState.AutoRunning,     MSG.ResumeJob,          FsmResumeJob,               RtState.AutoRunning);
-            Transition(RtState.AutoRunning,     MSG.StopJob,            FsmStopJob,                 RtState.AutoRunning);
-            Transition(RtState.AutoRunning,     MSG.AbortJob,           FsmAbortJob,                RtState.AutoRunning);
+            Transition(RtState.AutoRunning, MSG.CreateJob, FsmCreateJob, RtState.AutoRunning);
+            Transition(RtState.AutoRunning, MSG.StartJob, FsmStartJob, RtState.AutoRunning);
+            Transition(RtState.AutoRunning, MSG.PauseJob, FsmPauseJob, RtState.AutoRunning);
+            Transition(RtState.AutoRunning, MSG.ResumeJob, FsmResumeJob, RtState.AutoRunning);
+            Transition(RtState.AutoRunning, MSG.StopJob, FsmStopJob, RtState.AutoRunning);
+            Transition(RtState.AutoRunning, MSG.AbortJob, FsmAbortJob, RtState.AutoRunning);
 
-            Transition(RtState.AutoRunning,     MSG.MoveWafer,          FsmAutoReturnWafer,         RtState.AutoRunning);
+            Transition(RtState.AutoRunning, MSG.MoveWafer, FsmAutoReturnWafer, RtState.AutoRunning);
 
-            Transition(RtState.AutoRunning,     MSG.Map,                FsmMap,                     RtState.AutoRunning);
+            Transition(RtState.AutoRunning, MSG.Map, FsmMap, RtState.AutoRunning);
 
-            Transition(RtState.AutoRunning,     MSG.ResetIdleCleanTime, FsmResetIdleCleanTime,      RtState.AutoRunning);
-            Transition(RtState.AutoRunning,     MSG.ResetIdlePurgeTime, FsmResetIdlePurgeTime,      RtState.AutoRunning);
+            Transition(RtState.AutoRunning, MSG.ResetIdleCleanTime, FsmResetIdleCleanTime, RtState.AutoRunning);
+            Transition(RtState.AutoRunning, MSG.ResetIdlePurgeTime, FsmResetIdlePurgeTime, RtState.AutoRunning);
 
-            Transition(RtState.AutoIdle,        FSM_MSG.TIMER,          FsmMonitorAutoIdle,         RtState.AutoIdle);
-            Transition(RtState.AutoIdle,        MSG.SetManualMode,      FsmStartSetManualMode,      RtState.Idle);
-            Transition(RtState.AutoIdle,        MSG.CreateJob,          FsmCreateJob,               RtState.AutoIdle);
-            Transition(RtState.AutoIdle,        MSG.StartJob,           FsmStartJob,                RtState.AutoRunning);
-            Transition(RtState.AutoIdle,        MSG.PauseJob,           FsmPauseJob,                RtState.AutoIdle);
-            Transition(RtState.AutoIdle,        MSG.ResumeJob,          FsmResumeJob,               RtState.AutoIdle);
-            Transition(RtState.AutoIdle,        MSG.StopJob,            FsmStopJob,                 RtState.AutoIdle);
-            Transition(RtState.AutoIdle,        MSG.AbortJob,           FsmAbortJob,                RtState.AutoIdle);
-            Transition(RtState.AutoIdle,        MSG.Map,                FsmMap,                     RtState.AutoIdle);
+            Transition(RtState.AutoIdle, FSM_MSG.TIMER, FsmMonitorAutoIdle, RtState.AutoIdle);
+            Transition(RtState.AutoIdle, MSG.SetManualMode, FsmStartSetManualMode, RtState.Idle);
+            Transition(RtState.AutoIdle, MSG.CreateJob, FsmCreateJob, RtState.AutoIdle);
+            Transition(RtState.AutoIdle, MSG.StartJob, FsmStartJob, RtState.AutoRunning);
+            Transition(RtState.AutoIdle, MSG.PauseJob, FsmPauseJob, RtState.AutoIdle);
+            Transition(RtState.AutoIdle, MSG.ResumeJob, FsmResumeJob, RtState.AutoIdle);
+            Transition(RtState.AutoIdle, MSG.StopJob, FsmStopJob, RtState.AutoIdle);
+            Transition(RtState.AutoIdle, MSG.AbortJob, FsmAbortJob, RtState.AutoIdle);
+            Transition(RtState.AutoIdle, MSG.Map, FsmMap, RtState.AutoIdle);
 
             //Transfer 
-            Transition(RtState.Idle,            MSG.MoveWafer,          FsmStartTransfer,           RtState.Transfer);
-            Transition(RtState.Transfer,        FSM_MSG.TIMER,          FsmMonitorTransfer,         RtState.Idle);
-            Transition(RtState.Transfer,        MSG.ABORT,              FsmAbort,                   RtState.Idle);
+            Transition(RtState.Idle, MSG.MoveWafer, FsmStartTransfer, RtState.Transfer);
+            Transition(RtState.Transfer, FSM_MSG.TIMER, FsmMonitorTransfer, RtState.Idle);
+            Transition(RtState.Transfer, MSG.ABORT, FsmAbort, RtState.Idle);
 
             //Return Wafer 
-            Transition(RtState.Idle,            MSG.ReturnAllWafer,     FsmStartReturnWafer,        RtState.ReturnWafer);
-            Transition(RtState.ReturnWafer,     FSM_MSG.TIMER,          FsmMonitorReturnWafer,      RtState.Idle);
-            Transition(RtState.ReturnWafer,     MSG.ABORT,              FsmAbort,                   RtState.Idle);
+            Transition(RtState.Idle, MSG.ReturnAllWafer, FsmStartReturnWafer, RtState.ReturnWafer);
+            Transition(RtState.ReturnWafer, FSM_MSG.TIMER, FsmMonitorReturnWafer, RtState.Idle);
+            Transition(RtState.ReturnWafer, MSG.ABORT, FsmAbort, RtState.Idle);
 
             // SETM  Cycle
-            Transition(RtState.Idle,            MSG.SETMCycle,          FsmStartSETMCycle,          RtState.SETMCycle);
-            Transition(RtState.SETMCycle,       FSM_MSG.TIMER,          FsmMonitorSETMCycle,        RtState.Idle);
-            Transition(RtState.SETMCycle,       MSG.SEAbort,            SEAbort,                    RtState.Idle);
+            Transition(RtState.Idle, MSG.SETMCycle, FsmStartSETMCycle, RtState.SETMCycle);
+            Transition(RtState.SETMCycle, FSM_MSG.TIMER, FsmMonitorSETMCycle, RtState.Idle);
+            Transition(RtState.SETMCycle, MSG.SEAbort, SEAbort, RtState.Idle);
             // SETM CreateCycle                                                                     
-            Transition(RtState.Idle,            MSG.CreateSEJob,        FsmStartCreateSEJob,        RtState.Idle);
+            Transition(RtState.Idle, MSG.CreateSEJob, FsmStartCreateSEJob, RtState.Idle);
             // SETM StartCycle                                                                      
-            Transition(RtState.Idle,            MSG.StartSEJob,         FsmStartSEJob,              RtState.SERunning);
-            Transition(RtState.SERunning,       FSM_MSG.TIMER,          FsmSEJobMonitor,            RtState.Idle);
-            Transition(RtState.SERunning,       MSG.SEAbort,            SEAbort,                    RtState.Idle);
+            Transition(RtState.Idle, MSG.StartSEJob, FsmStartSEJob, RtState.SERunning);
+            Transition(RtState.SERunning, FSM_MSG.TIMER, FsmSEJobMonitor, RtState.Idle);
+            Transition(RtState.SERunning, MSG.SEAbort, SEAbort, RtState.Idle);
             // SE Transfer
-            Transition(RtState.Idle,            MSG.SEMoveWafer,        FsmStartSEMoveWafer,        RtState.SETransfer);
-            Transition(RtState.SETransfer,      FSM_MSG.TIMER,          FsmMonitorSEMoveWafer,      RtState.Idle);
-            Transition(RtState.SETransfer,      MSG.SEAbort,            SEAbort,                    RtState.Idle);
+            Transition(RtState.Idle, MSG.SEMoveWafer, FsmStartSEMoveWafer, RtState.SETransfer);
+            Transition(RtState.SETransfer, FSM_MSG.TIMER, FsmMonitorSEMoveWafer, RtState.Idle);
+            Transition(RtState.SETransfer, MSG.SEAbort, SEAbort, RtState.Idle);
             // SE ReturnWafer
-            Transition(RtState.Idle,            MSG.SEReturnWafer,      FsmStartSEReturnWafer,      RtState.SEReturnWafer);
-            Transition(RtState.SEReturnWafer,   FSM_MSG.TIMER,          FsmMonitorSEReturnWafer,    RtState.Idle);
-            Transition(RtState.SEReturnWafer,   MSG.SEAbort,            SEAbort,                    RtState.Idle);
+            Transition(RtState.Idle, MSG.SEReturnWafer, FsmStartSEReturnWafer, RtState.SEReturnWafer);
+            Transition(RtState.SEReturnWafer, FSM_MSG.TIMER, FsmMonitorSEReturnWafer, RtState.Idle);
+            Transition(RtState.SEReturnWafer, MSG.SEAbort, SEAbort, RtState.Idle);
         }
 
         private bool FsmMonitor(object[] objs)
@@ -763,18 +764,18 @@ namespace Venus_RT.Modules
             seTM?.Invoke("Home");
             VCE?.Invoke("Home");
 
-            foreach(var mod in ModuleHelper.InstalledModules)
+            foreach (var mod in ModuleHelper.InstalledModules)
             {
-                if(ModuleHelper.IsPm(mod))
+                if (ModuleHelper.IsPm(mod))
                 {
-                    if(GetPM(mod).IsInclude)
+                    if (GetPM(mod).IsInclude)
                     {
                         GetPM(mod).Invoke("Home");
                     }
                 }
                 else if (ModuleHelper.IsLoadLock(mod))
                 {
-                    if(GetLL(mod).IsInclude)
+                    if (GetLL(mod).IsInclude)
                     {
                         GetLL(mod).Invoke("Home");
                     }
@@ -787,9 +788,9 @@ namespace Venus_RT.Modules
         private bool FsmMonitorHome(object[] objs)
         {
             ModuleName notReadyModule = ModuleName.System;
-            foreach(var mod in ModuleHelper.InstalledModules)
+            foreach (var mod in ModuleHelper.InstalledModules)
             {
-                if ((ModuleHelper.IsPm(mod)&& GetPM(mod).IsInclude && !GetPM(mod).IsIdle) || 
+                if ((ModuleHelper.IsPm(mod) && GetPM(mod).IsInclude && !GetPM(mod).IsIdle) ||
                     (ModuleHelper.IsLoadLock(mod) && GetLL(mod).IsInclude && !GetLL(mod).IsIdle) ||
                     (ModuleHelper.IsTM(mod) && !GetTM().IsIdle) ||
                     (ModuleHelper.IsVCE(mod) && !GetVCE(mod).IsIdle) ||
@@ -801,7 +802,7 @@ namespace Venus_RT.Modules
                 }
             }
 
-            if(notReadyModule != ModuleName.System)
+            if (notReadyModule != ModuleName.System)
             {
                 if (fsm.ElapsedTime > 100 * 1000)
                 {
@@ -872,7 +873,7 @@ namespace Venus_RT.Modules
         private bool FsmStopTMCycle(object[] objs)
         {
             _TMCycle.Abort();
-            return true;          
+            return true;
         }
 
         private bool FsmStartAutoTransfer(object[] objs)
@@ -884,7 +885,7 @@ namespace Venus_RT.Modules
         {
             RState ret = _AutoCycle.Monitor();
 
-            if(ret == RState.Failed)
+            if (ret == RState.Failed)
             {
                 if (!CheckToPostMessage((int)MSG.ERROR))
                     return false;
@@ -903,7 +904,7 @@ namespace Venus_RT.Modules
 
             //_isWaitUnload = (bool)DATA.Poll("LP1.NotifyJobDone") || (bool)DATA.Poll("LP2.NotifyJobDone");
 
-            return ret ==  RState.End;
+            return ret == RState.End;
         }
 
         private bool FsmAbortAutoTransfer(object[] objs)
@@ -920,24 +921,34 @@ namespace Venus_RT.Modules
 
         private bool FsmCreateJob(object[] objs)
         {
-            return _AutoCycle.CreateJob((Dictionary<string, object>)objs[0],out var reason);
+            Dictionary<string, object> obj = (Dictionary<string, object>)objs[0];
+            var moduleName = (ModuleName)Enum.Parse(typeof(ModuleName), obj["Module"].ToString());
+            if (EFEM.EfemDevice[moduleName].IsLoaded)
+            {
+                return _AutoCycle.CreateJob(obj, out var reason);
+            }
+            else
+            {
+                LOG.Write(eEvent.WARN_ROUTER, ModuleName.System, $"{obj["Module"]} is unload,can not create job");
+                return false;
+            }
         }
 
         private bool FsmStartJob(object[] objs)
         {
-            _AutoCycle.StartJob((string)objs[0],out var reason);
+            _AutoCycle.StartJob((string)objs[0], out var reason);
             return true;
         }
 
         private bool FsmPauseJob(object[] objs)
         {
-            _AutoCycle.PauseJob((string)objs[0],out var reason);
+            _AutoCycle.PauseJob((string)objs[0], out var reason);
             return true;
         }
 
         private bool FsmResumeJob(object[] objs)
         {
-            _AutoCycle.ResumeJob((string)objs[0],out var reason);
+            _AutoCycle.ResumeJob((string)objs[0], out var reason);
             return true;
         }
 
@@ -950,7 +961,7 @@ namespace Venus_RT.Modules
 
         private bool FsmAbortJob(object[] objs)
         {
-            _AutoCycle.AbortJob((string)objs[0],out var reason);
+            _AutoCycle.AbortJob((string)objs[0], out var reason);
             return true;
         }
 
@@ -1057,7 +1068,7 @@ namespace Venus_RT.Modules
             {
                 PostMsg(MSG.ReturnAllWafer);
             }
-            else if(flag == 5)
+            else if (flag == 5)
             {
                 PostMsg(MSG.StartJob, "CJ_Local_LP1");
             }
@@ -1153,7 +1164,7 @@ namespace Venus_RT.Modules
         public bool ExcuteCommand(string command, object[] paras, out string reason)
         {
             reason = "";
-            switch(command)
+            switch (command)
             {
                 case "PP-SELECT":
                     return FaCreateJob(paras, out reason);
@@ -1168,12 +1179,12 @@ namespace Venus_RT.Modules
                 case "ResumeJob":
                     return FaResumeJob(paras[0].ToString(), out reason);
                 case "Load":
-                    return FaLoad(paras[0].ToString(),out reason);
+                    return FaLoad(paras[0].ToString(), out reason);
                 case "Unload":
-                    return FaUnLoad(paras[0].ToString(),out reason);
+                    return FaUnLoad(paras[0].ToString(), out reason);
                 case "ReadID":
-                    return FaReadId(paras[0].ToString(),out reason);
-                    
+                    return FaReadId(paras[0].ToString(), out reason);
+
             }
             return true;
         }
@@ -1183,9 +1194,9 @@ namespace Venus_RT.Modules
         /// <param name="paras"></param>
         /// <param name="reason"></param>
         /// <returns></returns>
-        private bool FaCreateJob(object[] paras,out string reason)
+        private bool FaCreateJob(object[] paras, out string reason)
         {
-            if(!CheckAuto())
+            if (!CheckAuto())
             {
                 reason = "System is not in Auto,cannot create job";
                 return false;
@@ -1205,7 +1216,7 @@ namespace Venus_RT.Modules
                 {
                     createParams["PostCleabRecipeName"] = paras[5].ToString();
                 }
-                return _AutoCycle.CreateJob(createParams,out reason);                
+                return _AutoCycle.CreateJob(createParams, out reason);
             }
         }
         /// <summary>
@@ -1214,9 +1225,9 @@ namespace Venus_RT.Modules
         /// <param name="jobName"></param>
         /// <param name="reason"></param>
         /// <returns></returns>
-        private bool FaStartJob(string jobName,out string reason)
+        private bool FaStartJob(string jobName, out string reason)
         {
-            return _AutoCycle.StartJob(jobName,out reason);
+            return _AutoCycle.StartJob(jobName, out reason);
         }
         /// <summary>
         /// Fa停止任务
@@ -1263,11 +1274,11 @@ namespace Venus_RT.Modules
         /// </summary>
         /// <param name="lp"></param>
         /// <returns></returns>
-        private bool FaLoad(string lp,out string reason)
+        private bool FaLoad(string lp, out string reason)
         {
             reason = "";
-            Loadport loadport=FaGetLoadPort(lp,out reason);
-            if(loadport!=null)
+            Loadport loadport = FaGetLoadPort(lp, out reason);
+            if (loadport != null)
             {
                 loadport.Load();
                 return true;
@@ -1283,7 +1294,7 @@ namespace Venus_RT.Modules
         /// <param name="lp"></param>
         /// <param name="reason"></param>
         /// <returns></returns>
-        private Loadport FaGetLoadPort(string lp,out string reason)
+        private Loadport FaGetLoadPort(string lp, out string reason)
         {
             reason = "";
             if (int.TryParse(lp, out var lpValue))
@@ -1318,7 +1329,7 @@ namespace Venus_RT.Modules
         /// </summary>
         /// <param name="lp"></param>
         /// <returns></returns>
-        private bool FaReadId(string lp,out string reason)
+        private bool FaReadId(string lp, out string reason)
         {
             reason = "";
             Loadport loadport = FaGetLoadPort(lp, out reason);