Selaa lähdekoodia

1.修复kepler流气模拟器bug
2.高温heater支持float类型
3.与电气协商,删除多余interlock

lixiang 1 vuosi sitten
vanhempi
commit
5c995238da

+ 12 - 3
Venus/Framework/Common/IOCore/InterlockManager.cs

@@ -4,6 +4,7 @@ using System.Xml;
 using Aitex.Core.RT.Event;
 using Aitex.Core.Util;
 using Aitex.Core.RT.Log;
+using DocumentFormat.OpenXml.Math;
 
 namespace Aitex.Core.RT.IOCore
 {
@@ -333,6 +334,10 @@ namespace Aitex.Core.RT.IOCore
                         bool isExist = false;
                         foreach (var limit in _dicLimit.Keys)
                         {
+                            if (limit.Name == $"{chamberName}.DI_Arm_Not_Extend_to_PM")
+                            {
+                                continue;
+                            }
                             if (interlockLimit.IsSame(limit))
                             {
                                 _dicLimit[limit].Add(action);
@@ -343,6 +348,10 @@ namespace Aitex.Core.RT.IOCore
 
                         if (!isExist)
                         {
+                            if (interlockLimit.Name == $"{chamberName}.DI_Arm_Not_Extend_to_PM")
+                            {
+                                continue;
+                            }
                             _dicLimit[interlockLimit] = new List<InterlockAction>();
                             _dicLimit[interlockLimit].Add(action);
                         }
@@ -369,7 +378,7 @@ namespace Aitex.Core.RT.IOCore
             {
                 if (!limit.Key.IsTriggered())
                     continue;
-
+                
                 string info = string.Empty;
                 foreach (var action in limit.Value)
                 {
@@ -378,7 +387,7 @@ namespace Aitex.Core.RT.IOCore
                         continue;
 
                     if (string.IsNullOrEmpty(info))
-                    {    
+                    {
                         info = string.Format("Due to the {0}, {1}=[{2}]\n", limit.Key.Tip, limit.Key.Name,
                             !limit.Key.LimitValue);
                     }
@@ -389,7 +398,7 @@ namespace Aitex.Core.RT.IOCore
                 if (!string.IsNullOrEmpty(info))
                 {
                     LOG.Write(eEvent.ERR_INTERLOCK_FAIL, "System", info.TrimEnd('\n'));
-                } 
+                }
             }
         }
 

+ 2 - 3
Venus/Venus_MainPages/Converters/IntToPathDataConverter.cs

@@ -16,12 +16,11 @@ namespace Venus_MainPages.Converters
             var item = (int)value;
             if (item == 4)
             {
-                return Application.Current.Resources["Icon_Pause"] as Geometry;
+                return Application.Current.Resources["Icon_Resume"] as Geometry;
             }
             else
             {
-                
-                return Application.Current.Resources["Icon_Resume"] as Geometry;
+                return Application.Current.Resources["Icon_Pause"] as Geometry;
             }
         }
 

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

@@ -37,12 +37,12 @@
     <Canvas>
         <Border BorderThickness="0,0,0,1" BorderBrush="Black" Canvas.Top="20" Canvas.Left="40">
             <StackPanel Orientation="Horizontal" Margin="0,0,0,5">
-                <customControls:PathButton PathData="{StaticResource Icon_Init}"  DefaultFillBrush="White"  Command="{Binding HomeAllCommand}"  Width="120" Height="30" Content="Initialize"    Margin="10,0,0,0"/>
+                <customControls:PathButton PathData="{StaticResource Icon_Init}"  DefaultFillBrush="White"  Command="{Binding HomeAllCommand}"  Width="120" Height="30" Content="Initialize"    Margin="10,0,0,0" IsEnabled="{Binding RtDataValues[System.IsAutoMode],Converter={StaticResource BoolToBool}}"/>
                 <RadioButton Content="Manual"   FontSize="15"   Width="120" Height="28" Margin="50 0 5 0" Style="{StaticResource Button_RadioButton}"  Command="{Binding EnableManualCommand}" IsChecked="{Binding RtDataValues[System.IsAutoMode],Converter={StaticResource BoolToBool}}"/>
                 <RadioButton Content="Auto"     FontSize="15"   Width="120" Height="28" Margin="0 0 0 0" Style="{StaticResource Button_RadioButton}"     Command="{Binding EnableAutoCommand}"  IsChecked="{Binding RtDataValues[System.IsAutoMode]}"/>
-                <customControls:PathButton PathData="{StaticResource Icon_Abort}"   DefaultFillBrush="White" Width="130" Height="30" Content="Abort"           Command="{Binding AbortAllCommand}"               IsEnabled="{Binding IsAutoMode,Converter={StaticResource BoolToBool}}" Margin="50 0 0 0"/>
-                <customControls:PathButton PathData="{Binding RtDataValues[EquipmentStatus],Converter={StaticResource IntToPathDataConverter}}"   DefaultFillBrush="White" Width="130" Height="30" Content="{Binding RouteState}"           Command="{Binding ResumeAllJobCommand}"            IsEnabled="{Binding IsAutoMode,Converter={StaticResource BoolToBool}}" Margin="50 0 0 0" />
-                <customControls:PathButton PathData="{StaticResource Icon_Return}"  DefaultFillBrush="White" Width="146" Height="30" Content="Return Wafer"    Command="{Binding ReturnAllWaferCommand}"         IsEnabled="{Binding IsAutoMode,Converter={StaticResource BoolToBool}}" Margin="50,0,0,0"/>
+                <customControls:PathButton PathData="{StaticResource Icon_Abort}"   DefaultFillBrush="White" Width="130" Height="30" Content="Abort"           Command="{Binding AbortAllCommand}"               IsEnabled="{Binding RtDataValues[System.IsAutoMode]}" Margin="50 0 0 0" />
+                <customControls:PathButton PathData="{Binding RtDataValues[EquipmentStatus],Converter={StaticResource IntToPathDataConverter}}"   DefaultFillBrush="White" Width="130" Height="30" Content="{Binding RouteState}"           Command="{Binding ResumeAllJobCommand}"            IsEnabled="{Binding RtDataValues[System.IsAutoMode]}" Margin="50 0 0 0" />
+                <customControls:PathButton PathData="{StaticResource Icon_Return}"  DefaultFillBrush="White" Width="146" Height="30" Content="Return Wafer"    Command="{Binding ReturnAllWaferCommand}"         IsEnabled="{Binding RtDataValues[System.IsAutoMode]}" Margin="50,0,0,0"/>
                 
                
             </StackPanel>

+ 249 - 244
Venus/Venus_RT/Config/PM/Kepler2300/Kepler2300Interlock.xml

@@ -1,248 +1,253 @@
 <?xml version="1.0" encoding="utf-8"?>
 <Interlock xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema">
-  <Action do="DO_PVN21" value="true" tip="PVN21" tip.zh-CN=""  tip.en-US="DO-0" >
-	<Limit di="DI_Lid_Closed"		value="true" tip="DI Lid Closed"			tip.zh-CN="" tip.en-US="DI-0" />
-	<Limit di="DI_Slit_Door_Close_POS"	value="true" tip="DI Slit Door Close POS"	tip.zh-CN="" tip.en-US="DI-11" />
-	<Limit di="DI_CDA_Pressure_Switch"			value="true" tip="DI CDA Pressure"			tip.zh-CN="" tip.en-US="DI-12" />
-	<Limit di="DI_Gas_Box_Door_Switch"		value="true" tip="DI Gas Box Door SW"		tip.zh-CN="" tip.en-US="DI-51" />
-	<Limit di="DI_Gas_Box_Pressure_Switch"	value="true" tip="DI Gas Box Pressure SW"	tip.zh-CN="" tip.en-US="DI-52" />
-  </Action>
-
-  <Action do="DO_PVN22"  value="true" tip="PVN22" tip.zh-CN="" tip.en-US="DO-1" >
-	<Limit di="DI_CDA_Pressure_Switch"			value="true" tip="DI CDA Pressure"          tip.zh-CN="" tip.en-US="DI-12" />
-	<Limit di="DI_Gas_Box_Door_Switch"		value="true" tip="DI Gas Box Door SW"		tip.zh-CN="" tip.en-US="DI-51" />
-	<Limit di="DI_Gas_Box_Pressure_Switch"	value="true" tip="DI Gas Box Pressure SW"	tip.zh-CN="" tip.en-US="DI-52" />
-  </Action>
-  
-  <Action do="DO_PV11" value="true" tip="PV11" tip.zh-CN="" tip.en-US="DO-2" >
-	<Limit di="DI_Lid_Closed"		value="true" tip="DI Lid Closed"            tip.zh-CN="" tip.en-US="DI-0" />
-	<Limit di="DI_Slit_Door_Close_POS"	value="true" tip="DI Slit Door Close POS"   tip.zh-CN="" tip.en-US="DI-11" />
-	<Limit di="DI_CDA_Pressure_Switch"			value="true" tip="DI CDA Pressure"          tip.zh-CN="" tip.en-US="DI-12" />
-	<Limit di="DI_Gas_Box_Door_Switch"		value="true" tip="DI Gas Box Door SW"		tip.zh-CN="" tip.en-US="DI-51" />
-	<Limit di="DI_Gas_Box_Pressure_Switch"	value="true" tip="DI Gas Box Pressure SW"	tip.zh-CN="" tip.en-US="DI-52" />
-  </Action>
-
-  <Action do="DO_PV12" value="true" tip="PV12" tip.zh-CN="" tip.en-US="DO-3" >
-	<Limit di="DI_Lid_Closed"		value="true" tip="DI Lid Closed"			tip.zh-CN="" tip.en-US="DI-0" />
-	<Limit di="DI_Slit_Door_Close_POS"	value="true" tip="DI Slit Door Close POS"	tip.zh-CN="" tip.en-US="DI-11" />
-	<Limit di="DI_CDA_Pressure_Switch"			value="true" tip="DI CDA Pressure"			tip.zh-CN="" tip.en-US="DI-12" />
-	<Limit di="DI_Gas_Box_Door_Switch"		value="true" tip="DI Gas Box Door SW"		tip.zh-CN="" tip.en-US="DI-51" />
-	<Limit di="DI_Gas_Box_Pressure_Switch"	value="true" tip="DI Gas Box Pressure SW"	tip.zh-CN="" tip.en-US="DI-52" />
-  </Action>
-
-  <Action do="DO_PV21" value="true" tip="PV21" tip.zh-CN="" tip.en-US="DO-4" >
-	<Limit di="DI_Lid_Closed"		value="true" tip="DI Lid Closed"            tip.zh-CN="" tip.en-US="DI-0" />
-	<Limit di="DI_Slit_Door_Close_POS"	value="true" tip="DI Slit Door Close POS"   tip.zh-CN="" tip.en-US="DI-11" />
-	<Limit di="DI_CDA_Pressure_Switch"			value="true" tip="DI CDA Pressure"          tip.zh-CN="" tip.en-US="DI-12" />
-	<Limit di="DI_Gas_Box_Door_Switch"		value="true" tip="DI Gas Box Door SW"		tip.zh-CN="" tip.en-US="DI-51" />
-	<Limit di="DI_Gas_Box_Pressure_Switch"	value="true" tip="DI Gas Box Pressure SW"	tip.zh-CN="" tip.en-US="DI-52" />
-  </Action>
-
-  <Action do="DO_PV22" value="true" tip="PV22" tip.zh-CN="" tip.en-US="DO-5" >
-  <Limit di="DI_Lid_Closed"		value="true" tip="DI Lid Closed"			tip.zh-CN="" tip.en-US="DI-0" />
-  <Limit di="DI_Slit_Door_Close_POS"	value="true" tip="DI Slit Door Close POS"	tip.zh-CN="" tip.en-US="DI-11" />
-	<Limit di="DI_CDA_Pressure_Switch"			value="true" tip="DI CDA Pressure"			tip.zh-CN="" tip.en-US="DI-12" />
-	<Limit di="DI_Gas_Box_Door_Switch"		value="true" tip="DI Gas Box Door SW"		tip.zh-CN="" tip.en-US="DI-51" />
-	<Limit di="DI_Gas_Box_Pressure_Switch"	value="true" tip="DI Gas Box Pressure SW"	tip.zh-CN="" tip.en-US="DI-52" />
-  </Action>
-  
-  <Action do="DO_PV31" value="true" tip="PV31" tip.zh-CN="" tip.en-US="DO-6" >
-	<Limit di="DI_Lid_Closed"		value="true" tip="DI Lid Closed"			tip.zh-CN="" tip.en-US="DI-0" />
-	<Limit di="DI_Slit_Door_Close_POS"	value="true" tip="DI Slit Door Close POS"	tip.zh-CN="" tip.en-US="DI-11" />
-	<Limit di="DI_CDA_Pressure_Switch"			value="true" tip="DI CDA Pressure"			tip.zh-CN="" tip.en-US="DI-12" />
-	<Limit di="DI_Gas_Box_Door_Switch"		value="true" tip="DI Gas Box Door SW"		tip.zh-CN="" tip.en-US="DI-51" />
-	<Limit di="DI_Gas_Box_Pressure_Switch"	value="true" tip="DI Gas Box Pressure SW"	tip.zh-CN="" tip.en-US="DI-52" />
-  </Action>
-
-  <Action do="DO_PV32" value="true" tip="PV32" tip.zh-CN="" tip.en-US="DO-7" >
-	<Limit di="DI_Lid_Closed"		value="true" tip="DI Lid Closed"			tip.zh-CN="" tip.en-US="DI-0" />
-	<Limit di="DI_Slit_Door_Close_POS"	value="true" tip="DI Slit Door Close POS"	tip.zh-CN="" tip.en-US="DI-11" />
-	<Limit di="DI_CDA_Pressure_Switch"			value="true" tip="DI CDA Pressure"			tip.zh-CN="" tip.en-US="DI-12" />
-
-	<Limit di="DI_Gas_Box_Door_Switch"		value="true" tip="DI Gas Box Door SW"		tip.zh-CN="" tip.en-US="DI-51" />
-	<Limit di="DI_Gas_Box_Pressure_Switch"	value="true" tip="DI Gas Box Pressure SW"	tip.zh-CN="" tip.en-US="DI-52" />
-  </Action>
-
-  <Action do="DO_PV41" value="true" tip="PV41" tip.zh-CN="" tip.en-US="DO-8" >
-	<Limit di="DI_Lid_Closed"		value="true" tip="DI Lid Closed"			tip.zh-CN="" tip.en-US="DI-0" />
-	<Limit di="DI_Slit_Door_Close_POS"	value="true" tip="DI Slit Door Close POS"	tip.zh-CN="" tip.en-US="DI-11" />
-	<Limit di="DI_CDA_Pressure_Switch"			value="true" tip="DI CDA Pressure"			tip.zh-CN="" tip.en-US="DI-12" />
-	<Limit di="DI_Gas_Box_Door_Switch"		value="true" tip="DI Gas Box Door SW"		tip.zh-CN="" tip.en-US="DI-51" />
-	<Limit di="DI_Gas_Box_Pressure_Switch"	value="true" tip="DI Gas Box Pressure SW"	tip.zh-CN="" tip.en-US="DI-52" />
-  </Action>
-  
-  <Action do="DO_PV42" value="true" tip="PV42" tip.zh-CN="" tip.en-US="DO-9" >
-	<Limit di="DI_Lid_Closed"		value="true" tip="DI Lid Closed"			tip.zh-CN="" tip.en-US="DI-0" />
-	<Limit di="DI_Slit_Door_Close_POS"	value="true" tip="DI Slit Door Close POS"	tip.zh-CN="" tip.en-US="DI-11" />
-	<Limit di="DI_CDA_Pressure_Switch"			value="true" tip="DI CDA Pressure"			tip.zh-CN="" tip.en-US="DI-12" />
-	<Limit di="DI_Gas_Box_Door_Switch"		value="true" tip="DI Gas Box Door SW"		tip.zh-CN="" tip.en-US="DI-51" />
-	<Limit di="DI_Gas_Box_Pressure_Switch"	value="true" tip="DI Gas Box Pressure SW"	tip.zh-CN="" tip.en-US="DI-52" />
-  </Action>
-
-  <Action do="DO_N2_Valve" value="true" tip="N2" tip.zh-CN="" tip.en-US="DO-10" >
-	<Limit di="DI_Lid_Closed"		value="true" tip="DI Lid Closed"			tip.zh-CN="" tip.en-US="DI-0" />
-	<Limit di="DI_Slit_Door_Close_POS"	value="true" tip="DI Slit Door Close POS"	tip.zh-CN="" tip.en-US="DI-11" />
-	<Limit di="DI_CDA_Pressure_Switch"			value="true" tip="DI CDA Pressure"			tip.zh-CN="" tip.en-US="DI-12" />
-	<Limit di="DI_Gas_Box_Door_Switch"		value="true" tip="DI Gas Box Door SW"		tip.zh-CN="" tip.en-US="DI-51" />
-	<Limit di="DI_Gas_Box_Pressure_Switch"	value="true" tip="DI Gas Box Pressure SW"	tip.zh-CN="" tip.en-US="DI-52" />
-  <Limit do="DO_Soft_Pumping_Valve"	value="false" tip="DO Soft Pumping Valve"	tip.zh-CN="" tip.en-US="DO-22" />
-  <Limit do="DO_Fast_Pumping_Valve"	value="false" tip="DO Fast Pumping Valve"	tip.zh-CN="" tip.en-US="DO-23" />
-  </Action>
-
-  <Action do="DO_MFC1_Valve" value="true" tip="MFC1 Valve" tip.zh-CN="" tip.en-US="DO-11" >
-	<Limit di="DI_Lid_Closed"		value="true" tip="DI Lid Closed"			tip.zh-CN="" tip.en-US="DI-0" />
-	<Limit di="DI_Slit_Door_Close_POS"	value="true" tip="DI Slit Door Close POS"	tip.zh-CN="" tip.en-US="DI-11" />
-	<Limit di="DI_CDA_Pressure_Switch"			value="true" tip="DI CDA Pressure"			tip.zh-CN="" tip.en-US="DI-12" />
-	<Limit di="DI_Gas_Box_Door_Switch"		value="true" tip="DI Gas Box Door SW"		tip.zh-CN="" tip.en-US="DI-51" />
-	<Limit di="DI_Gas_Box_Pressure_Switch"	value="true" tip="DI Gas Box Pressure SW"	tip.zh-CN="" tip.en-US="DI-52" />
-  </Action>
-
-  <Action do="DO_MFC2_Valve" value="true" tip="MFC2 Valve" tip.zh-CN="" tip.en-US="DO-12" >
-	<Limit di="DI_Lid_Closed"		value="true" tip="DI Lid Closed"			tip.zh-CN="" tip.en-US="DI-0" />
-	<Limit di="DI_Slit_Door_Close_POS"	value="true" tip="DI Slit Door Close POS"	tip.zh-CN="" tip.en-US="DI-11" />
-	<Limit di="DI_CDA_Pressure_Switch"			value="true" tip="DI CDA Pressure"			tip.zh-CN="" tip.en-US="DI-12" />
-	<Limit di="DI_Gas_Box_Door_Switch"		value="true" tip="DI Gas Box Door SW"		tip.zh-CN="" tip.en-US="DI-51" />
-	<Limit di="DI_Gas_Box_Pressure_Switch"	value="true" tip="DI Gas Box Pressure SW"	tip.zh-CN="" tip.en-US="DI-52" />
-  </Action>
-
-  <Action do="DO_MFC3_Valve" value="true" tip="MFC3 Valve" tip.zh-CN="" tip.en-US="DO-13" >
-	<Limit di="DI_Lid_Closed"		value="true" tip="DI Lid Closed"			tip.zh-CN="" tip.en-US="DI-0" />
-	<Limit di="DI_Slit_Door_Close_POS"	value="true" tip="DI Slit Door Close POS"	tip.zh-CN="" tip.en-US="DI-11" />
-	<Limit di="DI_CDA_Pressure_Switch"			value="true" tip="DI CDA Pressure"			tip.zh-CN="" tip.en-US="DI-12" />
-	<Limit di="DI_Gas_Box_Door_Switch"		value="true" tip="DI Gas Box Door SW"		tip.zh-CN="" tip.en-US="DI-51" />
-	<Limit di="DI_Gas_Box_Pressure_Switch"	value="true" tip="DI Gas Box Pressure SW"	tip.zh-CN="" tip.en-US="DI-52" />
-  </Action>
-
-  <Action do="DO_MFC4_Valve" value="true" tip="MFC4 Valve" tip.zh-CN="" tip.en-US="DO-14" >
-	<Limit di="DI_Lid_Closed"		value="true" tip="DI Lid Closed"			tip.zh-CN="" tip.en-US="DI-0" />
-	<Limit di="DI_Slit_Door_Close_POS"	value="true" tip="DI Slit Door Close POS"	tip.zh-CN="" tip.en-US="DI-11" />
-	<Limit di="DI_CDA_Pressure_Switch"			value="true" tip="DI CDA Pressure"			tip.zh-CN="" tip.en-US="DI-12" />
-	<Limit di="DI_Gas_Box_Door_Switch"		value="true" tip="DI Gas Box Door SW"		tip.zh-CN="" tip.en-US="DI-51" />
-	<Limit di="DI_Gas_Box_Pressure_Switch"	value="true" tip="DI Gas Box Pressure SW"	tip.zh-CN="" tip.en-US="DI-52" />
-  </Action>
-
-  <Action do="DO_MFC5_Valve" value="true" tip="MFC5 Valve" tip.zh-CN="" tip.en-US="DO-15" >
-	<Limit di="DI_Lid_Closed"		value="true" tip="DI Lid Closed"			tip.zh-CN="" tip.en-US="DI-0" />
-	<Limit di="DI_Slit_Door_Close_POS"	value="true" tip="DI Slit Door Close POS"	tip.zh-CN="" tip.en-US="DI-11" />
-	<Limit di="DI_CDA_Pressure_Switch"			value="true" tip="DI CDA Pressure"			tip.zh-CN="" tip.en-US="DI-12" />
-	<Limit di="DI_Gas_Box_Door_Switch"		value="true" tip="DI Gas Box Door SW"		tip.zh-CN="" tip.en-US="DI-51" />
-	<Limit di="DI_Gas_Box_Pressure_Switch"	value="true" tip="DI Gas Box Pressure SW"	tip.zh-CN="" tip.en-US="DI-52" />
-  </Action>
-
-  <Action do="DO_MFC6_Valve" value="true" tip="MFC6 Valve" tip.zh-CN="" tip.en-US="DO-16" >
-	<Limit di="DI_Lid_Closed"		value="true" tip="DI Lid Closed"			tip.zh-CN="" tip.en-US="DI-0" />
-	<Limit di="DI_Slit_Door_Close_POS"	value="true" tip="DI Slit Door Close POS"	tip.zh-CN="" tip.en-US="DI-11" />
-	<Limit di="DI_CDA_Pressure_Switch"			value="true" tip="DI CDA Pressure"			tip.zh-CN="" tip.en-US="DI-12" />
-	<Limit di="DI_Gas_Box_Door_Switch"		value="true" tip="DI Gas Box Door SW"		tip.zh-CN="" tip.en-US="DI-51" />
-	<Limit di="DI_Gas_Box_Pressure_Switch"	value="true" tip="DI Gas Box Pressure SW"	tip.zh-CN="" tip.en-US="DI-52" />
-  </Action>
-
-  <Action do="DO_MFC7_Valve" value="true" tip="MFC7 Valve" tip.zh-CN="" tip.en-US="DO-17" >
-	<Limit di="DI_Lid_Closed"		value="true" tip="DI Lid Closed"			tip.zh-CN="" tip.en-US="DI-0" />
-	<Limit di="DI_Slit_Door_Close_POS"	value="true" tip="DI Slit Door Close POS"	tip.zh-CN="" tip.en-US="DI-11" />
-	<Limit di="DI_CDA_Pressure_Switch"			value="true" tip="DI CDA Pressure"			tip.zh-CN="" tip.en-US="DI-12" />
-	<Limit di="DI_Gas_Box_Door_Switch"		value="true" tip="DI Gas Box Door SW"		tip.zh-CN="" tip.en-US="DI-51" />
-	<Limit di="DI_Gas_Box_Pressure_Switch"	value="true" tip="DI Gas Box Pressure SW"	tip.zh-CN="" tip.en-US="DI-52" />
-  </Action>
-
-  <Action do="DO_MFC8_Valve" value="true" tip="MFC8 Valve" tip.zh-CN="" tip.en-US="DO-18" >
-	<Limit di="DI_Lid_Closed"		value="true" tip="DI Lid Closed"			tip.zh-CN="" tip.en-US="DI-0" />
-	<Limit di="DI_Slit_Door_Close_POS"	value="true" tip="DI Slit Door Close POS"	tip.zh-CN="" tip.en-US="DI-11" />
-	<Limit di="DI_CDA_Pressure_Switch"			value="true" tip="DI CDA Pressure"			tip.zh-CN="" tip.en-US="DI-12" />
-	<Limit di="DI_Gas_Box_Door_Switch"		value="true" tip="DI Gas Box Door SW"		tip.zh-CN="" tip.en-US="DI-51" />
-	<Limit di="DI_Gas_Box_Pressure_Switch"	value="true" tip="DI Gas Box Pressure SW"	tip.zh-CN="" tip.en-US="DI-52" />
-  </Action>
-
-  <Action do="DO_PVHe1" value="true" tip="PVHe1" tip.zh-CN="" tip.en-US="DO-19" >
-	<Limit di="DI_CDA_Pressure_Switch"			value="true" tip="DI CDA Pressure"			tip.zh-CN="" tip.en-US="DI-12" />
-	<Limit di="DI_Gas_Box_Door_Switch"		value="true" tip="DI Gas Box Door SW"		tip.zh-CN="" tip.en-US="DI-51" />
-	<Limit di="DI_Gas_Box_Pressure_Switch"	value="true" tip="DI Gas Box Pressure SW"	tip.zh-CN="" tip.en-US="DI-52" />
-  </Action>
-
-  <Action do="DO_PVHe2" value="true" tip="PVHe2" tip.zh-CN="" tip.en-US="DO-20" >
-	<Limit di="DI_CDA_Pressure_Switch"			value="true" tip="DI CDA Pressure"			tip.zh-CN="" tip.en-US="DI-12" />
-	<Limit di="DI_Gas_Box_Door_Switch"		value="true" tip="DI Gas Box Door SW"		tip.zh-CN="" tip.en-US="DI-51" />
-	<Limit di="DI_Gas_Box_Pressure_Switch"	value="true" tip="DI Gas Box Pressure SW"	tip.zh-CN="" tip.en-US="DI-52" />
-  </Action>
-
-  <Action do="DO_Gas_Final_Valve" value="true" tip="Gas Final Valve" tip.zh-CN=""	tip.en-US="DO-21" >
-	<Limit di="DI_Lid_Closed"		value="true" tip="DI PM Lid Closed"			tip.zh-CN="" tip.en-US="DI-0" />
-	<Limit di="DI_Slit_Door_Close_POS"	value="true" tip="DI Slit Door Close POS"	tip.zh-CN="" tip.en-US="DI-11" />
-	<Limit di="DI_CDA_Pressure_Switch"			value="true" tip="DI CDA Pressure"			tip.zh-CN="" tip.en-US="DI-12" />
-  </Action>
-
-  <Action do="DO_Soft_Pumping_Valve" value="true" tip="Soft Pumping Valve" tip.zh-CN="" tip.en-US="DO-22" >
-	<Limit di="DI_Lid_Closed"		value="true" tip="DI PM Lid Closed"			tip.zh-CN="" tip.en-US="DI-0" />
-	<Limit di="DI_Slit_Door_Close_POS"	value="true" tip="DI Slit Door Close POS"	tip.zh-CN="" tip.en-US="DI-11" />
-	<Limit di="DI_CDA_Pressure_Switch"			value="true" tip="DI CDA Pressure"			tip.zh-CN="" tip.en-US="DI-12" />
-	<Limit do="DO_N2_Valve"				value="false" tip="DO N2 Valve"				tip.zh-CN="" tip.en-US="DO-10" />
-  </Action>
-
-  <Action do="DO_Fast_Pumping_Valve" value="true" tip="Fast Pumping Valve" tip.zh-CN="" tip.en-US="DO-23" >
-	<Limit di="DI_Lid_Closed"		value="true" tip="DI PM Lid Closed"			tip.zh-CN="" tip.en-US="DI-0" />
-	<Limit di="DI_Slit_Door_Close_POS"	value="true" tip="DI Slit Door Close POS"	tip.zh-CN="" tip.en-US="DI-11" />
-	<Limit di="DI_CDA_Pressure_Switch"			value="true" tip="DI CDA Pressure"			tip.zh-CN="" tip.en-US="DI-12" />
-	<Limit do="DO_N2_Valve"				value="false" tip="DO N2 Valve"				tip.zh-CN="" tip.en-US="DO-10" />
-  </Action>
-
-  <Action do="DO_Slit_Door_Open" value="true" tip="Slit Door Open" tip.zh-CN="" tip.en-US="DO-24" >
-	<Limit di="DI_Lid_Closed"			value="true" tip="DI PM Lid Closed"				tip.zh-CN="" tip.en-US="DI-0" />
-	<Limit di="DI_CDA_Pressure_Switch"				value="true" tip="DI CDA Pressure"				tip.zh-CN="" tip.en-US="DI-12" />
-    <Limit di="DI_Arm_Not_Extend_to_PM"			value="true" tip="DI Arm Not Extend to PM"	tip.zh-CN="" tip.en-US="DI-76" />
-    <Limit di="DI_TM_Clear_Lid_Colse"				value="true" tip="DI EFEM Door Colse"				tip.zh-CN="" tip.en-US="DI-77" />
-  </Action>
-
-  <Action do="DO_Slit_Door_Close" value="true" tip="Slit Door Close" tip.zh-CN="" tip.en-US="DO-25" >
-    <Limit di="DI_Lid_Closed"			value="true" tip="DI PM Lid Closed"				tip.zh-CN="" tip.en-US="DI-0" />
-    <Limit di="DI_CDA_Pressure_Switch"				value="true" tip="DI CDA Pressure"				tip.zh-CN="" tip.en-US="DI-12" />
-    <Limit di="DI_Arm_Not_Extend_to_PM"			value="true" tip="DI Arm Not Extend to PM"	tip.zh-CN="" tip.en-US="DI-76" />
-    <Limit di="DI_TM_Clear_Lid_Colse"				value="true" tip="DI EFEM Door Colse"				tip.zh-CN="" tip.en-US="DI-77" />
-  </Action>
-
-	
-  <Action do="DO_Lift_Pin_Up" value="true" tip="Lift Pin Up" tip.zh-CN="" tip.en-US="DO-26" >
-	<Limit di="DI_CDA_Pressure_Switch"				value="true" tip="DI CDA Pressure"				tip.zh-CN="" tip.en-US="DI-12" />
-  </Action>
-
-  <Action do="DO_Lift_Pin_Down" value="true" tip="Lift Pin Down" tip.zh-CN="" tip.en-US="DO-27" >
-	<Limit di="DI_CDA_Pressure_Switch"				value="true" tip="DI CDA Pressure"				tip.zh-CN="" tip.en-US="DI-12" />
-  </Action>
-
-  <Action do="DO_Turbo_Pump_Pumping_Valve" value="true" tip="Turbo Pump Pumping Valve" tip.zh-CN="" tip.en-US="DO-29" >
-	<Limit di="DI_CDA_Pressure_Switch"				value="true" tip="DI CDA Pressure"				tip.zh-CN="" tip.en-US="DI-12" />
-  </Action>
-
-  <Action do="DO_Turbo_Pump_Purge_Valve" value="true" tip="Turbo Pump Purge Valve" tip.zh-CN="" tip.en-US="DO-30" >
-	<Limit di="DI_CDA_Pressure_Switch"				value="true" tip="DI CDA Pressure"				tip.zh-CN="" tip.en-US="DI-12" />
-
-  </Action>
-
-  <Action do="DO_Guage_Valve" value="true" tip="Guage Valve" tip.zh-CN="" tip.en-US="DO-31" >
-	<Limit di="DI_VAC_Switch"				value="true" tip="DI PM Vacuum SW"				tip.zh-CN="" tip.en-US="DI-2" />
-  <Limit di="DI_CDA_Pressure_Switch"				value="true" tip="DI CDA Pressure"				tip.zh-CN="" tip.en-US="DI-12" />
-  </Action>
-
-  <Action do="DO_S_Valve_Heater_On" value="true" tip="S-Valve Heater On" tip.zh-CN="" tip.en-US="DO-33" >
-    <Limit di="DI_S_Valve_OT_Switch_Alarm" value="false" tip="S_Valve OT Switch Alarm" tip.zh-CN="" tip.en-US="DI-66" />
-  </Action>
-
-  <Action do="DO_Foreline_Heater_On" value="true" tip="Foreline Heater On" tip.zh-CN="" tip.en-US="DO-34" >
-    <Limit di="DI_Foreline_OT_Switch_Alarm" value="false" tip="Foreline OT Switch Alarm" tip.zh-CN="" tip.en-US="DI-67" />
-  </Action>
-
-  <Action do="DO_CHB_Wall_Heater_On" value="true" tip="Chamber Wall Heater On" tip.zh-CN="" tip.en-US="DO-35" >
-    <Limit di="DI_CHB_Wall_OT_Switch_Alarm" value="false" tip="DI Chamber Wall OT Alarm" tip.zh-CN="" tip.en-US="DI-32" />
-  </Action>
-  
-  <Action do="DO_Lid_Up" value="true" tip="Lid UP" tip.zh-CN="" tip.en-US="DO-50" >
-    <Limit di="DI_S_Valve_OT_Switch_Alarm" value="false" tip="S_Valve OT Switch Alarm" tip.zh-CN="" tip.en-US="DI-66" />
-	<Limit do="DO_Lid_Servo_CTRL_Mode"     value="true" tip="Lid Servo CTRL Mode"      tip.zh-CN="" tip.en-US="DO-80" />
-  </Action>
-  
-  <Action do="DO_Lid_Down" value="true" tip="Lid Down" tip.zh-CN="" tip.en-US="DO-51" >
-    <Limit di="DI_Foreline_OT_Switch_Alarm" value="false" tip="Foreline OT Switch Alarm" tip.zh-CN="" tip.en-US="DI-67" />
-  </Action>
-  
-
+	<Action do="DO_PVN21" value="true" tip="PVN21" tip.zh-CN=""  tip.en-US="DO-0" >
+		<Limit di="DI_Lid_Closed"		value="true" tip="DI Lid Closed"			tip.zh-CN="" tip.en-US="DI-0" />
+		<Limit di="DI_Slit_Door_Close_POS"	value="true" tip="DI Slit Door Close POS"	tip.zh-CN="" tip.en-US="DI-11" />
+		<Limit di="DI_CDA_Pressure_Switch"			value="true" tip="DI CDA Pressure"			tip.zh-CN="" tip.en-US="DI-12" />
+		<Limit di="DI_Gas_Box_Door_Switch"		value="true" tip="DI Gas Box Door SW"		tip.zh-CN="" tip.en-US="DI-51" />
+		<Limit di="DI_Gas_Box_Pressure_Switch"	value="true" tip="DI Gas Box Pressure SW"	tip.zh-CN="" tip.en-US="DI-52" />
+	</Action>
+
+	<Action do="DO_PVN22"  value="true" tip="PVN22" tip.zh-CN="" tip.en-US="DO-1" >
+		<Limit di="DI_CDA_Pressure_Switch"			value="true" tip="DI CDA Pressure"          tip.zh-CN="" tip.en-US="DI-12" />
+		<Limit di="DI_Gas_Box_Door_Switch"		value="true" tip="DI Gas Box Door SW"		tip.zh-CN="" tip.en-US="DI-51" />
+		<Limit di="DI_Gas_Box_Pressure_Switch"	value="true" tip="DI Gas Box Pressure SW"	tip.zh-CN="" tip.en-US="DI-52" />
+	</Action>
+
+	<Action do="DO_PV11" value="true" tip="PV11" tip.zh-CN="" tip.en-US="DO-2" >
+		<Limit di="DI_Lid_Closed"		value="true" tip="DI Lid Closed"            tip.zh-CN="" tip.en-US="DI-0" />
+		<Limit di="DI_Slit_Door_Close_POS"	value="true" tip="DI Slit Door Close POS"   tip.zh-CN="" tip.en-US="DI-11" />
+		<Limit di="DI_CDA_Pressure_Switch"			value="true" tip="DI CDA Pressure"          tip.zh-CN="" tip.en-US="DI-12" />
+		<Limit di="DI_Gas_Box_Door_Switch"		value="true" tip="DI Gas Box Door SW"		tip.zh-CN="" tip.en-US="DI-51" />
+		<Limit di="DI_Gas_Box_Pressure_Switch"	value="true" tip="DI Gas Box Pressure SW"	tip.zh-CN="" tip.en-US="DI-52" />
+	</Action>
+
+	<Action do="DO_PV12" value="true" tip="PV12" tip.zh-CN="" tip.en-US="DO-3" >
+		<Limit di="DI_Lid_Closed"		value="true" tip="DI Lid Closed"			tip.zh-CN="" tip.en-US="DI-0" />
+		<Limit di="DI_Slit_Door_Close_POS"	value="true" tip="DI Slit Door Close POS"	tip.zh-CN="" tip.en-US="DI-11" />
+		<Limit di="DI_CDA_Pressure_Switch"			value="true" tip="DI CDA Pressure"			tip.zh-CN="" tip.en-US="DI-12" />
+		<Limit di="DI_Gas_Box_Door_Switch"		value="true" tip="DI Gas Box Door SW"		tip.zh-CN="" tip.en-US="DI-51" />
+		<Limit di="DI_Gas_Box_Pressure_Switch"	value="true" tip="DI Gas Box Pressure SW"	tip.zh-CN="" tip.en-US="DI-52" />
+	</Action>
+
+	<Action do="DO_PV21" value="true" tip="PV21" tip.zh-CN="" tip.en-US="DO-4" >
+		<Limit di="DI_Lid_Closed"		value="true" tip="DI Lid Closed"            tip.zh-CN="" tip.en-US="DI-0" />
+		<Limit di="DI_Slit_Door_Close_POS"	value="true" tip="DI Slit Door Close POS"   tip.zh-CN="" tip.en-US="DI-11" />
+		<Limit di="DI_CDA_Pressure_Switch"			value="true" tip="DI CDA Pressure"          tip.zh-CN="" tip.en-US="DI-12" />
+		<Limit di="DI_Gas_Box_Door_Switch"		value="true" tip="DI Gas Box Door SW"		tip.zh-CN="" tip.en-US="DI-51" />
+		<Limit di="DI_Gas_Box_Pressure_Switch"	value="true" tip="DI Gas Box Pressure SW"	tip.zh-CN="" tip.en-US="DI-52" />
+	</Action>
+
+	<Action do="DO_PV22" value="true" tip="PV22" tip.zh-CN="" tip.en-US="DO-5" >
+		<Limit di="DI_Lid_Closed"		value="true" tip="DI Lid Closed"			tip.zh-CN="" tip.en-US="DI-0" />
+		<Limit di="DI_Slit_Door_Close_POS"	value="true" tip="DI Slit Door Close POS"	tip.zh-CN="" tip.en-US="DI-11" />
+		<Limit di="DI_CDA_Pressure_Switch"			value="true" tip="DI CDA Pressure"			tip.zh-CN="" tip.en-US="DI-12" />
+		<Limit di="DI_Gas_Box_Door_Switch"		value="true" tip="DI Gas Box Door SW"		tip.zh-CN="" tip.en-US="DI-51" />
+		<Limit di="DI_Gas_Box_Pressure_Switch"	value="true" tip="DI Gas Box Pressure SW"	tip.zh-CN="" tip.en-US="DI-52" />
+	</Action>
+
+	<Action do="DO_PV31" value="true" tip="PV31" tip.zh-CN="" tip.en-US="DO-6" >
+		<Limit di="DI_Lid_Closed"		value="true" tip="DI Lid Closed"			tip.zh-CN="" tip.en-US="DI-0" />
+		<Limit di="DI_Slit_Door_Close_POS"	value="true" tip="DI Slit Door Close POS"	tip.zh-CN="" tip.en-US="DI-11" />
+		<Limit di="DI_CDA_Pressure_Switch"			value="true" tip="DI CDA Pressure"			tip.zh-CN="" tip.en-US="DI-12" />
+		<Limit di="DI_Gas_Box_Door_Switch"		value="true" tip="DI Gas Box Door SW"		tip.zh-CN="" tip.en-US="DI-51" />
+		<Limit di="DI_Gas_Box_Pressure_Switch"	value="true" tip="DI Gas Box Pressure SW"	tip.zh-CN="" tip.en-US="DI-52" />
+	</Action>
+
+	<Action do="DO_PV32" value="true" tip="PV32" tip.zh-CN="" tip.en-US="DO-7" >
+		<Limit di="DI_Lid_Closed"		value="true" tip="DI Lid Closed"			tip.zh-CN="" tip.en-US="DI-0" />
+		<Limit di="DI_Slit_Door_Close_POS"	value="true" tip="DI Slit Door Close POS"	tip.zh-CN="" tip.en-US="DI-11" />
+		<Limit di="DI_CDA_Pressure_Switch"			value="true" tip="DI CDA Pressure"			tip.zh-CN="" tip.en-US="DI-12" />
+
+		<Limit di="DI_Gas_Box_Door_Switch"		value="true" tip="DI Gas Box Door SW"		tip.zh-CN="" tip.en-US="DI-51" />
+		<Limit di="DI_Gas_Box_Pressure_Switch"	value="true" tip="DI Gas Box Pressure SW"	tip.zh-CN="" tip.en-US="DI-52" />
+	</Action>
+
+	<Action do="DO_PV41" value="true" tip="PV41" tip.zh-CN="" tip.en-US="DO-8" >
+		<Limit di="DI_Lid_Closed"		value="true" tip="DI Lid Closed"			tip.zh-CN="" tip.en-US="DI-0" />
+		<Limit di="DI_Slit_Door_Close_POS"	value="true" tip="DI Slit Door Close POS"	tip.zh-CN="" tip.en-US="DI-11" />
+		<Limit di="DI_CDA_Pressure_Switch"			value="true" tip="DI CDA Pressure"			tip.zh-CN="" tip.en-US="DI-12" />
+		<Limit di="DI_Gas_Box_Door_Switch"		value="true" tip="DI Gas Box Door SW"		tip.zh-CN="" tip.en-US="DI-51" />
+		<Limit di="DI_Gas_Box_Pressure_Switch"	value="true" tip="DI Gas Box Pressure SW"	tip.zh-CN="" tip.en-US="DI-52" />
+	</Action>
+
+	<Action do="DO_PV42" value="true" tip="PV42" tip.zh-CN="" tip.en-US="DO-9" >
+		<Limit di="DI_Lid_Closed"		value="true" tip="DI Lid Closed"			tip.zh-CN="" tip.en-US="DI-0" />
+		<Limit di="DI_Slit_Door_Close_POS"	value="true" tip="DI Slit Door Close POS"	tip.zh-CN="" tip.en-US="DI-11" />
+		<Limit di="DI_CDA_Pressure_Switch"			value="true" tip="DI CDA Pressure"			tip.zh-CN="" tip.en-US="DI-12" />
+		<Limit di="DI_Gas_Box_Door_Switch"		value="true" tip="DI Gas Box Door SW"		tip.zh-CN="" tip.en-US="DI-51" />
+		<Limit di="DI_Gas_Box_Pressure_Switch"	value="true" tip="DI Gas Box Pressure SW"	tip.zh-CN="" tip.en-US="DI-52" />
+	</Action>
+
+	<Action do="DO_N2_Valve" value="true" tip="N2" tip.zh-CN="" tip.en-US="DO-10" >
+		<Limit di="DI_Lid_Closed"		value="true" tip="DI Lid Closed"			tip.zh-CN="" tip.en-US="DI-0" />
+		<Limit di="DI_Slit_Door_Close_POS"	value="true" tip="DI Slit Door Close POS"	tip.zh-CN="" tip.en-US="DI-11" />
+		<Limit di="DI_CDA_Pressure_Switch"			value="true" tip="DI CDA Pressure"			tip.zh-CN="" tip.en-US="DI-12" />
+		<Limit di="DI_Gas_Box_Door_Switch"		value="true" tip="DI Gas Box Door SW"		tip.zh-CN="" tip.en-US="DI-51" />
+		<Limit di="DI_Gas_Box_Pressure_Switch"	value="true" tip="DI Gas Box Pressure SW"	tip.zh-CN="" tip.en-US="DI-52" />
+		<Limit do="DO_Soft_Pumping_Valve"	value="false" tip="DO Soft Pumping Valve"	tip.zh-CN="" tip.en-US="DO-22" />
+		<Limit do="DO_Fast_Pumping_Valve"	value="false" tip="DO Fast Pumping Valve"	tip.zh-CN="" tip.en-US="DO-23" />
+	</Action>
+
+	<Action do="DO_MFC1_Valve" value="true" tip="MFC1 Valve" tip.zh-CN="" tip.en-US="DO-11" >
+		<Limit di="DI_Lid_Closed"		value="true" tip="DI Lid Closed"			tip.zh-CN="" tip.en-US="DI-0" />
+		<Limit di="DI_Slit_Door_Close_POS"	value="true" tip="DI Slit Door Close POS"	tip.zh-CN="" tip.en-US="DI-11" />
+		<Limit di="DI_CDA_Pressure_Switch"			value="true" tip="DI CDA Pressure"			tip.zh-CN="" tip.en-US="DI-12" />
+		<Limit di="DI_Gas_Box_Door_Switch"		value="true" tip="DI Gas Box Door SW"		tip.zh-CN="" tip.en-US="DI-51" />
+		<Limit di="DI_Gas_Box_Pressure_Switch"	value="true" tip="DI Gas Box Pressure SW"	tip.zh-CN="" tip.en-US="DI-52" />
+	</Action>
+
+	<Action do="DO_MFC2_Valve" value="true" tip="MFC2 Valve" tip.zh-CN="" tip.en-US="DO-12" >
+		<Limit di="DI_Lid_Closed"		value="true" tip="DI Lid Closed"			tip.zh-CN="" tip.en-US="DI-0" />
+		<Limit di="DI_Slit_Door_Close_POS"	value="true" tip="DI Slit Door Close POS"	tip.zh-CN="" tip.en-US="DI-11" />
+		<Limit di="DI_CDA_Pressure_Switch"			value="true" tip="DI CDA Pressure"			tip.zh-CN="" tip.en-US="DI-12" />
+		<Limit di="DI_Gas_Box_Door_Switch"		value="true" tip="DI Gas Box Door SW"		tip.zh-CN="" tip.en-US="DI-51" />
+		<Limit di="DI_Gas_Box_Pressure_Switch"	value="true" tip="DI Gas Box Pressure SW"	tip.zh-CN="" tip.en-US="DI-52" />
+	</Action>
+
+	<Action do="DO_MFC3_Valve" value="true" tip="MFC3 Valve" tip.zh-CN="" tip.en-US="DO-13" >
+		<Limit di="DI_Lid_Closed"		value="true" tip="DI Lid Closed"			tip.zh-CN="" tip.en-US="DI-0" />
+		<Limit di="DI_Slit_Door_Close_POS"	value="true" tip="DI Slit Door Close POS"	tip.zh-CN="" tip.en-US="DI-11" />
+		<Limit di="DI_CDA_Pressure_Switch"			value="true" tip="DI CDA Pressure"			tip.zh-CN="" tip.en-US="DI-12" />
+		<Limit di="DI_Gas_Box_Door_Switch"		value="true" tip="DI Gas Box Door SW"		tip.zh-CN="" tip.en-US="DI-51" />
+		<Limit di="DI_Gas_Box_Pressure_Switch"	value="true" tip="DI Gas Box Pressure SW"	tip.zh-CN="" tip.en-US="DI-52" />
+	</Action>
+
+	<Action do="DO_MFC4_Valve" value="true" tip="MFC4 Valve" tip.zh-CN="" tip.en-US="DO-14" >
+		<Limit di="DI_Lid_Closed"		value="true" tip="DI Lid Closed"			tip.zh-CN="" tip.en-US="DI-0" />
+		<Limit di="DI_Slit_Door_Close_POS"	value="true" tip="DI Slit Door Close POS"	tip.zh-CN="" tip.en-US="DI-11" />
+		<Limit di="DI_CDA_Pressure_Switch"			value="true" tip="DI CDA Pressure"			tip.zh-CN="" tip.en-US="DI-12" />
+		<Limit di="DI_Gas_Box_Door_Switch"		value="true" tip="DI Gas Box Door SW"		tip.zh-CN="" tip.en-US="DI-51" />
+		<Limit di="DI_Gas_Box_Pressure_Switch"	value="true" tip="DI Gas Box Pressure SW"	tip.zh-CN="" tip.en-US="DI-52" />
+	</Action>
+
+	<Action do="DO_MFC5_Valve" value="true" tip="MFC5 Valve" tip.zh-CN="" tip.en-US="DO-15" >
+		<Limit di="DI_Lid_Closed"		value="true" tip="DI Lid Closed"			tip.zh-CN="" tip.en-US="DI-0" />
+		<Limit di="DI_Slit_Door_Close_POS"	value="true" tip="DI Slit Door Close POS"	tip.zh-CN="" tip.en-US="DI-11" />
+		<Limit di="DI_CDA_Pressure_Switch"			value="true" tip="DI CDA Pressure"			tip.zh-CN="" tip.en-US="DI-12" />
+		<Limit di="DI_Gas_Box_Door_Switch"		value="true" tip="DI Gas Box Door SW"		tip.zh-CN="" tip.en-US="DI-51" />
+		<Limit di="DI_Gas_Box_Pressure_Switch"	value="true" tip="DI Gas Box Pressure SW"	tip.zh-CN="" tip.en-US="DI-52" />
+	</Action>
+
+	<Action do="DO_MFC6_Valve" value="true" tip="MFC6 Valve" tip.zh-CN="" tip.en-US="DO-16" >
+		<Limit di="DI_Lid_Closed"		value="true" tip="DI Lid Closed"			tip.zh-CN="" tip.en-US="DI-0" />
+		<Limit di="DI_Slit_Door_Close_POS"	value="true" tip="DI Slit Door Close POS"	tip.zh-CN="" tip.en-US="DI-11" />
+		<Limit di="DI_CDA_Pressure_Switch"			value="true" tip="DI CDA Pressure"			tip.zh-CN="" tip.en-US="DI-12" />
+		<Limit di="DI_Gas_Box_Door_Switch"		value="true" tip="DI Gas Box Door SW"		tip.zh-CN="" tip.en-US="DI-51" />
+		<Limit di="DI_Gas_Box_Pressure_Switch"	value="true" tip="DI Gas Box Pressure SW"	tip.zh-CN="" tip.en-US="DI-52" />
+	</Action>
+
+	<Action do="DO_MFC7_Valve" value="true" tip="MFC7 Valve" tip.zh-CN="" tip.en-US="DO-17" >
+		<Limit di="DI_Lid_Closed"		value="true" tip="DI Lid Closed"			tip.zh-CN="" tip.en-US="DI-0" />
+		<Limit di="DI_Slit_Door_Close_POS"	value="true" tip="DI Slit Door Close POS"	tip.zh-CN="" tip.en-US="DI-11" />
+		<Limit di="DI_CDA_Pressure_Switch"			value="true" tip="DI CDA Pressure"			tip.zh-CN="" tip.en-US="DI-12" />
+		<Limit di="DI_Gas_Box_Door_Switch"		value="true" tip="DI Gas Box Door SW"		tip.zh-CN="" tip.en-US="DI-51" />
+		<Limit di="DI_Gas_Box_Pressure_Switch"	value="true" tip="DI Gas Box Pressure SW"	tip.zh-CN="" tip.en-US="DI-52" />
+	</Action>
+
+	<Action do="DO_MFC8_Valve" value="true" tip="MFC8 Valve" tip.zh-CN="" tip.en-US="DO-18" >
+		<Limit di="DI_Lid_Closed"		value="true" tip="DI Lid Closed"			tip.zh-CN="" tip.en-US="DI-0" />
+		<Limit di="DI_Slit_Door_Close_POS"	value="true" tip="DI Slit Door Close POS"	tip.zh-CN="" tip.en-US="DI-11" />
+		<Limit di="DI_CDA_Pressure_Switch"			value="true" tip="DI CDA Pressure"			tip.zh-CN="" tip.en-US="DI-12" />
+		<Limit di="DI_Gas_Box_Door_Switch"		value="true" tip="DI Gas Box Door SW"		tip.zh-CN="" tip.en-US="DI-51" />
+		<Limit di="DI_Gas_Box_Pressure_Switch"	value="true" tip="DI Gas Box Pressure SW"	tip.zh-CN="" tip.en-US="DI-52" />
+	</Action>
+
+	<Action do="DO_PVHe1" value="true" tip="PVHe1" tip.zh-CN="" tip.en-US="DO-19" >
+		<Limit di="DI_CDA_Pressure_Switch"			value="true" tip="DI CDA Pressure"			tip.zh-CN="" tip.en-US="DI-12" />
+		<Limit di="DI_Gas_Box_Door_Switch"		value="true" tip="DI Gas Box Door SW"		tip.zh-CN="" tip.en-US="DI-51" />
+		<Limit di="DI_Gas_Box_Pressure_Switch"	value="true" tip="DI Gas Box Pressure SW"	tip.zh-CN="" tip.en-US="DI-52" />
+	</Action>
+
+	<Action do="DO_PVHe2" value="true" tip="PVHe2" tip.zh-CN="" tip.en-US="DO-20" >
+		<Limit di="DI_CDA_Pressure_Switch"			value="true" tip="DI CDA Pressure"			tip.zh-CN="" tip.en-US="DI-12" />
+		<Limit di="DI_Gas_Box_Door_Switch"		value="true" tip="DI Gas Box Door SW"		tip.zh-CN="" tip.en-US="DI-51" />
+		<Limit di="DI_Gas_Box_Pressure_Switch"	value="true" tip="DI Gas Box Pressure SW"	tip.zh-CN="" tip.en-US="DI-52" />
+	</Action>
+
+	<Action do="DO_Gas_Final_Valve" value="true" tip="Gas Final Valve" tip.zh-CN=""	tip.en-US="DO-21" >
+		<Limit di="DI_Lid_Closed"		value="true" tip="DI PM Lid Closed"			tip.zh-CN="" tip.en-US="DI-0" />
+		<Limit di="DI_Slit_Door_Close_POS"	value="true" tip="DI Slit Door Close POS"	tip.zh-CN="" tip.en-US="DI-11" />
+		<Limit di="DI_CDA_Pressure_Switch"			value="true" tip="DI CDA Pressure"			tip.zh-CN="" tip.en-US="DI-12" />
+	</Action>
+
+	<Action do="DO_Soft_Pumping_Valve" value="true" tip="Soft Pumping Valve" tip.zh-CN="" tip.en-US="DO-22" >
+		<Limit di="DI_Lid_Closed"		value="true" tip="DI PM Lid Closed"			tip.zh-CN="" tip.en-US="DI-0" />
+		<Limit di="DI_Slit_Door_Close_POS"	value="true" tip="DI Slit Door Close POS"	tip.zh-CN="" tip.en-US="DI-11" />
+		<Limit di="DI_CDA_Pressure_Switch"			value="true" tip="DI CDA Pressure"			tip.zh-CN="" tip.en-US="DI-12" />
+		<Limit do="DO_N2_Valve"				value="false" tip="DO N2 Valve"				tip.zh-CN="" tip.en-US="DO-10" />
+	</Action>
+
+	<Action do="DO_Fast_Pumping_Valve" value="true" tip="Fast Pumping Valve" tip.zh-CN="" tip.en-US="DO-23" >
+		<Limit di="DI_Lid_Closed"		value="true" tip="DI PM Lid Closed"			tip.zh-CN="" tip.en-US="DI-0" />
+		<Limit di="DI_Slit_Door_Close_POS"	value="true" tip="DI Slit Door Close POS"	tip.zh-CN="" tip.en-US="DI-11" />
+		<Limit di="DI_CDA_Pressure_Switch"			value="true" tip="DI CDA Pressure"			tip.zh-CN="" tip.en-US="DI-12" />
+		<Limit do="DO_N2_Valve"				value="false" tip="DO N2 Valve"				tip.zh-CN="" tip.en-US="DO-10" />
+	</Action>
+
+	<Action do="DO_Slit_Door_Open" value="true" tip="Slit Door Open" tip.zh-CN="" tip.en-US="DO-24" >
+		<Limit di="DI_Lid_Closed"			value="true" tip="DI PM Lid Closed"				tip.zh-CN="" tip.en-US="DI-0" />
+		<Limit di="DI_CDA_Pressure_Switch"				value="true" tip="DI CDA Pressure"				tip.zh-CN="" tip.en-US="DI-12" />
+		<Limit di="DI_Arm_Not_Extend_to_PM"			value="true" tip="DI Arm Not Extend to PM"	tip.zh-CN="" tip.en-US="DI-76" />
+		<Limit di="DI_TM_Clear_Lid_Colse"				value="true" tip="DI EFEM Door Colse"				tip.zh-CN="" tip.en-US="DI-77" />
+	</Action>
+
+	<Action do="DO_Slit_Door_Close" value="true" tip="Slit Door Close" tip.zh-CN="" tip.en-US="DO-25" >
+		<Limit di="DI_Lid_Closed"			value="true" tip="DI PM Lid Closed"				tip.zh-CN="" tip.en-US="DI-0" />
+		<Limit di="DI_CDA_Pressure_Switch"				value="true" tip="DI CDA Pressure"				tip.zh-CN="" tip.en-US="DI-12" />
+		<Limit di="DI_Arm_Not_Extend_to_PM"			value="true" tip="DI Arm Not Extend to PM"	tip.zh-CN="" tip.en-US="DI-76" />
+		<Limit di="DI_TM_Clear_Lid_Colse"				value="true" tip="DI EFEM Door Colse"				tip.zh-CN="" tip.en-US="DI-77" />
+	</Action>
+
+	<Action do="DO_Slit_Door_Open" value="true" tip="Slit Door Open" tip.zh-CN="" tip.en-US="DO-24" >
+		<Limit di="DI_Lid_Closed"			value="true" tip="DI PM Lid Closed"				tip.zh-CN="" tip.en-US="DI-0" />
+		<Limit di="DI_CDA_Pressure_Switch"				value="true" tip="DI CDA Pressure"				tip.zh-CN="" tip.en-US="DI-12" />
+		<Limit di="DI_Arm_Not_Extend_to_PM"			value="true" tip="DI Arm Not Extend to PM"	tip.zh-CN="" tip.en-US="DI-76" />
+		<Limit di="DI_TM_Clear_Lid_Colse"				value="true" tip="DI EFEM Door Colse"				tip.zh-CN="" tip.en-US="DI-77" />
+	</Action>
+
+
+	<Action do="DO_Lift_Pin_Up" value="true" tip="Lift Pin Up" tip.zh-CN="" tip.en-US="DO-26" >
+		<Limit di="DI_CDA_Pressure_Switch"				value="true" tip="DI CDA Pressure"				tip.zh-CN="" tip.en-US="DI-12" />
+	</Action>
+
+	<Action do="DO_Lift_Pin_Down" value="true" tip="Lift Pin Down" tip.zh-CN="" tip.en-US="DO-27" >
+		<Limit di="DI_CDA_Pressure_Switch"				value="true" tip="DI CDA Pressure"				tip.zh-CN="" tip.en-US="DI-12" />
+	</Action>
+
+	<Action do="DO_Turbo_Pump_Pumping_Valve" value="true" tip="Turbo Pump Pumping Valve" tip.zh-CN="" tip.en-US="DO-29" >
+		<Limit di="DI_CDA_Pressure_Switch"				value="true" tip="DI CDA Pressure"				tip.zh-CN="" tip.en-US="DI-12" />
+	</Action>
+
+	<Action do="DO_Turbo_Pump_Purge_Valve" value="true" tip="Turbo Pump Purge Valve" tip.zh-CN="" tip.en-US="DO-30" >
+		<Limit di="DI_CDA_Pressure_Switch"				value="true" tip="DI CDA Pressure"				tip.zh-CN="" tip.en-US="DI-12" />
+
+	</Action>
+
+	<Action do="DO_Guage_Valve" value="true" tip="Guage Valve" tip.zh-CN="" tip.en-US="DO-31" >
+		<Limit di="DI_VAC_Switch"				value="true" tip="DI PM Vacuum SW"				tip.zh-CN="" tip.en-US="DI-2" />
+		<Limit di="DI_CDA_Pressure_Switch"				value="true" tip="DI CDA Pressure"				tip.zh-CN="" tip.en-US="DI-12" />
+	</Action>
+
+	<Action do="DO_S_Valve_Heater_On" value="true" tip="S-Valve Heater On" tip.zh-CN="" tip.en-US="DO-33" >
+		<Limit di="DI_S_Valve_OT_Switch_Alarm" value="false" tip="S_Valve OT Switch Alarm" tip.zh-CN="" tip.en-US="DI-66" />
+	</Action>
+
+	<Action do="DO_Foreline_Heater_On" value="true" tip="Foreline Heater On" tip.zh-CN="" tip.en-US="DO-34" >
+		<Limit di="DI_Foreline_OT_Switch_Alarm" value="false" tip="Foreline OT Switch Alarm" tip.zh-CN="" tip.en-US="DI-67" />
+	</Action>
+
+	<Action do="DO_CHB_Wall_Heater_On" value="true" tip="Chamber Wall Heater On" tip.zh-CN="" tip.en-US="DO-35" >
+		<Limit di="DI_CHB_Wall_OT_Switch_Alarm" value="false" tip="DI Chamber Wall OT Alarm" tip.zh-CN="" tip.en-US="DI-32" />
+	</Action>
+
+	<Action do="DO_Lid_Up" value="true" tip="Lid UP" tip.zh-CN="" tip.en-US="DO-50" >
+		<Limit di="DI_S_Valve_OT_Switch_Alarm" value="false" tip="S_Valve OT Switch Alarm" tip.zh-CN="" tip.en-US="DI-66" />
+		<Limit do="DO_Lid_Servo_CTRL_Mode"     value="true" tip="Lid Servo CTRL Mode"      tip.zh-CN="" tip.en-US="DO-80" />
+	</Action>
+
+	<Action do="DO_Lid_Down" value="true" tip="Lid Down" tip.zh-CN="" tip.en-US="DO-51" >
+		<Limit di="DI_Foreline_OT_Switch_Alarm" value="false" tip="Foreline OT Switch Alarm" tip.zh-CN="" tip.en-US="DI-67" />
+	</Action>
 
 </Interlock>

+ 44 - 46
Venus/Venus_RT/Config/System.sccfg

@@ -940,18 +940,17 @@
 			<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="HighTemperatureChiller" nameView="HighTemperatureChiller" >
-			<config default="60" name="LiftServoPosition1"    nameView="Lift Servo Position1"     description="Lift Servo Position1" max="600" min="-600" paramter="" tag="" unit="mm" type="Integer" />
-			<config default="60" name="LiftServoPosition2"    nameView="Lift Servo Position2"     description="Lift Servo Position1" max="600" min="-600" paramter="" tag="" unit="mm" type="Integer" />
-			<config default="60" name="LiftServoPosition3"    nameView="Lift Servo Position3"     description="Lift Servo Position1" max="600" min="-600" paramter="" tag="" unit="mm" type="Integer" />
-			<config default="60" name="LiftServoPosition4"    nameView="Lift Servo Position4"     description="Lift Servo Position1" max="600" min="-600" paramter="" tag="" unit="mm" type="Integer" />
-			<config default="60" name="LiftServoPosition5"    nameView="Lift Servo Position5"     description="Lift Servo Position1" max="600" min="-600" paramter="" tag="" unit="mm" type="Integer" />
-			<config default="60" name="OriginSearchHighSpeed" nameView="Origin Search High Speed" description="Lift Servo Position1" max="600" min="-600" paramter="" tag="" unit="mm" type="Integer" />
-			<config default="60" name="OriginSearchLowSpeed"  nameView="Origin Search Low Speed"  description="Lift Servo Position1" max="600" min="-600" paramter="" tag="" unit="mm" type="Integer" />
-			<config default="60" name="AbsMoveSpeed"          nameView="Abs Move Speed"           description="Lift Servo Position1" max="600" min="-600" paramter="" tag="" unit="mm" type="Integer" />
-			<config default="60" name="MaximusMoveSpeed"      nameView="Maximus Move Speed"       description="Lift Servo Position1" max="600" min="-600" paramter="" tag="" unit="mm" type="Integer" />
-			<config default="60" name="SoftDownLimit"         nameView="Soft Down Limit"          description="Lift Servo Position1" max="600" min="-600" paramter="" tag="" unit="mm" type="Integer" />
-			<config default="60" name="SoftUpLimit"           nameView="Soft Up Limit"            description="Lift Servo Position1" max="600" min="-600" paramter="" tag="" unit="mm" type="Integer" />
-
+			<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>
 
@@ -1540,18 +1539,17 @@
 			<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="HighTemperatureChiller" nameView="HighTemperatureChiller" >
-			<config default="60" name="LiftServoPosition1"    nameView="Lift Servo Position1"     description="Lift Servo Position1" max="600" min="-600" paramter="" tag="" unit="mm" type="Integer" />
-			<config default="60" name="LiftServoPosition2"    nameView="Lift Servo Position2"     description="Lift Servo Position1" max="600" min="-600" paramter="" tag="" unit="mm" type="Integer" />
-			<config default="60" name="LiftServoPosition3"    nameView="Lift Servo Position3"     description="Lift Servo Position1" max="600" min="-600" paramter="" tag="" unit="mm" type="Integer" />
-			<config default="60" name="LiftServoPosition4"    nameView="Lift Servo Position4"     description="Lift Servo Position1" max="600" min="-600" paramter="" tag="" unit="mm" type="Integer" />
-			<config default="60" name="LiftServoPosition5"    nameView="Lift Servo Position5"     description="Lift Servo Position1" max="600" min="-600" paramter="" tag="" unit="mm" type="Integer" />
-			<config default="60" name="OriginSearchHighSpeed" nameView="Origin Search High Speed" description="Lift Servo Position1" max="600" min="-600" paramter="" tag="" unit="mm" type="Integer" />
-			<config default="60" name="OriginSearchLowSpeed"  nameView="Origin Search Low Speed"  description="Lift Servo Position1" max="600" min="-600" paramter="" tag="" unit="mm" type="Integer" />
-			<config default="60" name="AbsMoveSpeed"          nameView="Abs Move Speed"           description="Lift Servo Position1" max="600" min="-600" paramter="" tag="" unit="mm" type="Integer" />
-			<config default="60" name="MaximusMoveSpeed"      nameView="Maximus Move Speed"       description="Lift Servo Position1" max="600" min="-600" paramter="" tag="" unit="mm" type="Integer" />
-			<config default="60" name="SoftDownLimit"         nameView="Soft Down Limit"          description="Lift Servo Position1" max="600" min="-600" paramter="" tag="" unit="mm" type="Integer" />
-			<config default="60" name="SoftUpLimit"           nameView="Soft Up Limit"            description="Lift Servo Position1" max="600" min="-600" paramter="" tag="" unit="mm" type="Integer" />
-
+			<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>
 
@@ -2141,17 +2139,17 @@
 		</configs>
 
 		<configs name="HighTemperatureChiller" nameView="HighTemperatureChiller" >
-			<config default="60" name="LiftServoPosition1"    nameView="Lift Servo Position1"     description="Lift Servo Position1" max="600" min="-600" paramter="" tag="" unit="mm" type="Integer" />
-			<config default="60" name="LiftServoPosition2"    nameView="Lift Servo Position2"     description="Lift Servo Position1" max="600" min="-600" paramter="" tag="" unit="mm" type="Integer" />
-			<config default="60" name="LiftServoPosition3"    nameView="Lift Servo Position3"     description="Lift Servo Position1" max="600" min="-600" paramter="" tag="" unit="mm" type="Integer" />
-			<config default="60" name="LiftServoPosition4"    nameView="Lift Servo Position4"     description="Lift Servo Position1" max="600" min="-600" paramter="" tag="" unit="mm" type="Integer" />
-			<config default="60" name="LiftServoPosition5"    nameView="Lift Servo Position5"     description="Lift Servo Position1" max="600" min="-600" paramter="" tag="" unit="mm" type="Integer" />
-			<config default="60" name="OriginSearchHighSpeed" nameView="Origin Search High Speed" description="Lift Servo Position1" max="600" min="-600" paramter="" tag="" unit="mm" type="Integer" />
-			<config default="60" name="OriginSearchLowSpeed"  nameView="Origin Search Low Speed"  description="Lift Servo Position1" max="600" min="-600" paramter="" tag="" unit="mm" type="Integer" />
-			<config default="60" name="AbsMoveSpeed"          nameView="Abs Move Speed"           description="Lift Servo Position1" max="600" min="-600" paramter="" tag="" unit="mm" type="Integer" />
-			<config default="60" name="MaximusMoveSpeed"      nameView="Maximus Move Speed"       description="Lift Servo Position1" max="600" min="-600" paramter="" tag="" unit="mm" type="Integer" />
-			<config default="60" name="SoftDownLimit"         nameView="Soft Down Limit"          description="Lift Servo Position1" max="600" min="-600" paramter="" tag="" unit="mm" type="Integer" />
-			<config default="60" name="SoftUpLimit"           nameView="Soft Up Limit"            description="Lift Servo Position1" max="600" min="-600" paramter="" tag="" unit="mm" type="Integer" />
+			<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>
@@ -2740,17 +2738,17 @@
 			<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="HighTemperatureChiller" nameView="HighTemperatureChiller" >
-			<config default="60" name="LiftServoPosition1"    nameView="Lift Servo Position1"     description="Lift Servo Position1" max="600" min="-600" paramter="" tag="" unit="mm" type="Integer" />
-			<config default="60" name="LiftServoPosition2"    nameView="Lift Servo Position2"     description="Lift Servo Position1" max="600" min="-600" paramter="" tag="" unit="mm" type="Integer" />
-			<config default="60" name="LiftServoPosition3"    nameView="Lift Servo Position3"     description="Lift Servo Position1" max="600" min="-600" paramter="" tag="" unit="mm" type="Integer" />
-			<config default="60" name="LiftServoPosition4"    nameView="Lift Servo Position4"     description="Lift Servo Position1" max="600" min="-600" paramter="" tag="" unit="mm" type="Integer" />
-			<config default="60" name="LiftServoPosition5"    nameView="Lift Servo Position5"     description="Lift Servo Position1" max="600" min="-600" paramter="" tag="" unit="mm" type="Integer" />
-			<config default="60" name="OriginSearchHighSpeed" nameView="Origin Search High Speed" description="Lift Servo Position1" max="600" min="-600" paramter="" tag="" unit="mm" type="Integer" />
-			<config default="60" name="OriginSearchLowSpeed"  nameView="Origin Search Low Speed"  description="Lift Servo Position1" max="600" min="-600" paramter="" tag="" unit="mm" type="Integer" />
-			<config default="60" name="AbsMoveSpeed"          nameView="Abs Move Speed"           description="Lift Servo Position1" max="600" min="-600" paramter="" tag="" unit="mm" type="Integer" />
-			<config default="60" name="MaximusMoveSpeed"      nameView="Maximus Move Speed"       description="Lift Servo Position1" max="600" min="-600" paramter="" tag="" unit="mm" type="Integer" />
-			<config default="60" name="SoftDownLimit"         nameView="Soft Down Limit"          description="Lift Servo Position1" max="600" min="-600" paramter="" tag="" unit="mm" type="Integer" />
-			<config default="60" name="SoftUpLimit"           nameView="Soft Up Limit"            description="Lift Servo Position1" max="600" min="-600" paramter="" tag="" unit="mm" type="Integer" />
+			<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>

+ 11 - 11
Venus/Venus_RT/Devices/IODevices/IoHighTemperatureHeater.cs

@@ -399,21 +399,21 @@ namespace Venus_RT.Devices.IODevices
             }
 
             
-            _SetRealFloat(_aoLiftServoPosition1, SC.GetValue<int>($"{Module}.HighTemperatureChiller.LiftServoPosition1"));
-            _SetRealFloat(_aoLiftServoPosition2, SC.GetValue<int>($"{Module}.HighTemperatureChiller.LiftServoPosition2"));
-            _SetRealFloat(_aoLiftServoPosition3, SC.GetValue<int>($"{Module}.HighTemperatureChiller.LiftServoPosition3"));
-            _SetRealFloat(_aoLiftServoPosition4, SC.GetValue<int>($"{Module}.HighTemperatureChiller.LiftServoPosition4"));
-            _SetRealFloat(_aoLiftServoPosition5, SC.GetValue<int>($"{Module}.HighTemperatureChiller.LiftServoPosition5"));
+            _SetRealFloat(_aoLiftServoPosition1, (float)SC.GetValue<double>($"{Module}.HighTemperatureChiller.LiftServoPosition1"));
+            _SetRealFloat(_aoLiftServoPosition2, (float)SC.GetValue<double>($"{Module}.HighTemperatureChiller.LiftServoPosition2"));
+            _SetRealFloat(_aoLiftServoPosition3, (float)SC.GetValue<double>($"{Module}.HighTemperatureChiller.LiftServoPosition3"));
+            _SetRealFloat(_aoLiftServoPosition4, (float)SC.GetValue<double>($"{Module}.HighTemperatureChiller.LiftServoPosition4"));
+            _SetRealFloat(_aoLiftServoPosition5, (float)SC.GetValue<double>($"{Module}.HighTemperatureChiller.LiftServoPosition5"));
 
 
           
 
-            _SetRealFloat(_aoOriginSearchHighSpeed, SC.GetValue<int>($"{Module}.HighTemperatureChiller.OriginSearchHighSpeed"));
-            _SetRealFloat(_aoOriginSearchLowSpeed, SC.GetValue<int>($"{Module}.HighTemperatureChiller.OriginSearchLowSpeed"));
-            _SetRealFloat(_aoAbsMoveSpeed, SC.GetValue<int>($"{Module}.HighTemperatureChiller.AbsMoveSpeed"));
-            _SetRealFloat(_aoMaximusMoveSpeed, SC.GetValue<int>($"{Module}.HighTemperatureChiller.MaximusMoveSpeed"));
-            _SetRealFloat(_aoSoftDownLimit, SC.GetValue<int>($"{Module}.HighTemperatureChiller.SoftDownLimit"));
-            _SetRealFloat(_aoSoftUpLimit, SC.GetValue<int>($"{Module}.HighTemperatureChiller.SoftUpLimit"));
+            _SetRealFloat(_aoOriginSearchHighSpeed, (float)SC.GetValue<double>($"{Module}.HighTemperatureChiller.OriginSearchHighSpeed"));
+            _SetRealFloat(_aoOriginSearchLowSpeed, (float)SC.GetValue<double>($"{Module}.HighTemperatureChiller.OriginSearchLowSpeed"));
+            _SetRealFloat(_aoAbsMoveSpeed, (float)SC.GetValue<double>($"{Module}.HighTemperatureChiller.AbsMoveSpeed"));
+            _SetRealFloat(_aoMaximusMoveSpeed, (float)SC.GetValue<double>($"{Module}.HighTemperatureChiller.MaximusMoveSpeed"));
+            _SetRealFloat(_aoSoftDownLimit, (float)SC.GetValue<double>($"{Module}.HighTemperatureChiller.SoftDownLimit"));
+            _SetRealFloat(_aoSoftUpLimit, (float)SC.GetValue<double>($"{Module}.HighTemperatureChiller.SoftUpLimit"));
 
          
 

+ 3 - 5
Venus/Venus_RT/Modules/PMs/PMEntity.cs

@@ -1243,20 +1243,18 @@ namespace Venus_RT.Modules.PMs
                 {
                     startControlPressureFlag = false;
                     //stopControlPressureFlag = false;
-                    if (_chamber.GetPVPosition()== 0)
+                    if (_chamber.GetPVPosition()<= 0)
                     {
-                        LOG.Write(eEvent.ERR_PM, Module, $"钟摆阀没有打开");
+                        LOG.Write(eEvent.WARN_PM, Module, $"{Module} control pressure fail,due to pendulum valve is not Open");
                         return false;
                     }
                     if (_chamber.IsTurboPumpRunning==false)
                     {
-                        LOG.Write(eEvent.ERR_PM, Module, $"分子泵没有打开");
+                        LOG.Write(eEvent.WARN_PM, Module, $"{Module} control pressure fail,due to turbo pump is not Open");
                         return false;
                     }
                     _controlPressureSetPoint = SC.GetValue<int>($"{Module}.ControlPressureSetPoint");
                     _controlFlowSetPoint = SC.GetValue<int>($"{Module}.ControlPressureN2FlowSetPoint");
-
-                    //_chamber.CloseValves();
                     _chamber.StartControlPressure(_controlPressureSetPoint, _controlFlowSetPoint);
                     
                 }              

+ 64 - 50
Venus/Venus_Simulator/Instances/SimulatorSystem.cs

@@ -1586,71 +1586,77 @@ namespace Venus_Simulator.Instances
 
             if (fast_pump_vlv.Value || soft_pump_vlv.Value || turbo_pump_vlv.Value)
             {
+                //任意泵打开
+                float getAiValue_ChamberPressure = GetAiValue($"{mod}.{sAI_ChamberPressure}");
+                float getAiValue_ProcessPressure = GetAiValue($"{mod}.{sAI_ProcessPressure}");
                 if (fast_pump_vlv.Value && soft_pump_vlv.Value)
-                {
-                    float getAiValue_ChamberPressure = GetAiValue($"{mod}.{sAI_ChamberPressure}");
-                    float getAiValue_ProcessPressure = GetAiValue($"{mod}.{sAI_ProcessPressure}");
+                {//开双泵
                     if (getAiValue_ProcessPressure <= 10000 && getAiValue_ChamberPressure > 10000)
                     {
-                        SetAiValue($"{mod}.{sAI_ChamberPressure}", GetAiValue($"{mod}.{sAI_ChamberPressure}") - 30000);
+                        float targetChamberPressure = getAiValue_ChamberPressure - 30000 > 0 ? getAiValue_ChamberPressure - 30000 : 0;
+                        SetAiValue($"{mod}.{sAI_ChamberPressure}", targetChamberPressure);
                         //SetAiValue($"{mod}.{sAI_ProcessPressure}", GetAiValue($"{mod}.{sAI_ProcessPressure}") - 150);
                     }
                     else if (getAiValue_ProcessPressure <= 10000 && getAiValue_ChamberPressure <= 10000)
                     {
-                        getAiValue_ProcessPressure = getAiValue_ChamberPressure;
-                        SetAiValue($"{mod}.{sAI_ChamberPressure}", GetAiValue($"{mod}.{sAI_ProcessPressure}") - 1500);
-                        SetAiValue($"{mod}.{sAI_ProcessPressure}", GetAiValue($"{mod}.{sAI_ProcessPressure}") - 1500);
+                        float targetChamberPressure = getAiValue_ProcessPressure - 1500 > 0 ? getAiValue_ProcessPressure - 1500 : 0;
+                        SetAiValue($"{mod}.{sAI_ChamberPressure}", targetChamberPressure);
+                        SetAiValue($"{mod}.{sAI_ProcessPressure}", targetChamberPressure);
                     }
 
                     //SetAiValue($"{mod}.{sAI_ChamberPressure}", GetAiValue($"{mod}.{sAI_ChamberPressure}") - _rd.Next(15000, 16000));
                     //SetAiValue($"{mod}.{sAI_ProcessPressure}", GetAiValue($"{mod}.{sAI_ProcessPressure}") - _rd.Next(150, 160));
                 }
-                else if (fast_pump_vlv.Value)
+                else if (fast_pump_vlv.Value)//开
                 {
-                    float getAiValue_ChamberPressure = GetAiValue($"{mod}.{sAI_ChamberPressure}");
-                    float getAiValue_ProcessPressure = GetAiValue($"{mod}.{sAI_ProcessPressure}");
                     if (getAiValue_ProcessPressure <= 10000 && getAiValue_ChamberPressure > 10000)
                     {
-                        float targetPressure = getAiValue_ChamberPressure > 26000 ? GetAiValue($"{mod}.{sAI_ChamberPressure}") - 25000 : 20;
-                        SetAiValue($"{mod}.{sAI_ChamberPressure}", targetPressure);
+                        float targetChamberPressure = getAiValue_ChamberPressure - 25000 > 0 ? getAiValue_ChamberPressure - 25000 : 0;
+                        SetAiValue($"{mod}.{sAI_ChamberPressure}", targetChamberPressure);
                         //SetAiValue($"{mod}.{sAI_ProcessPressure}", GetAiValue($"{mod}.{sAI_ProcessPressure}") - 150);
                     }
                     else if (getAiValue_ProcessPressure <= 10000 && getAiValue_ChamberPressure <= 10000)
                     {
-                        getAiValue_ProcessPressure = getAiValue_ChamberPressure;
-                        SetAiValue($"{mod}.{sAI_ChamberPressure}", GetAiValue($"{mod}.{sAI_ProcessPressure}") - 1300);
-                        SetAiValue($"{mod}.{sAI_ProcessPressure}", GetAiValue($"{mod}.{sAI_ProcessPressure}") - 1300);
+                        float targetChamberPressure = getAiValue_ProcessPressure - 1300 > 0 ? getAiValue_ProcessPressure - 1300 : 0;
+                        SetAiValue($"{mod}.{sAI_ChamberPressure}", targetChamberPressure);
+                        SetAiValue($"{mod}.{sAI_ProcessPressure}", targetChamberPressure);
                     }
                     //SetAiValue($"{mod}.{sAI_ChamberPressure}", GetAiValue($"{mod}.{sAI_ChamberPressure}") - _rd.Next(12000, 13000));
                     //SetAiValue($"{mod}.{sAI_ProcessPressure}", GetAiValue($"{mod}.{sAI_ProcessPressure}") - _rd.Next(120, 130));
                 }
                 else if (soft_pump_vlv.Value)
                 {
-                    float getAiValue_ChamberPressure = GetAiValue($"{mod}.{sAI_ChamberPressure}");
-                    float getAiValue_ProcessPressure = GetAiValue($"{mod}.{sAI_ProcessPressure}");
                     if (getAiValue_ProcessPressure <= 10000 && getAiValue_ChamberPressure > 10000)
                     {
-                        float targetPressure = getAiValue_ChamberPressure > 23000 ? GetAiValue($"{mod}.{sAI_ChamberPressure}") - 22000 : 20;
-                        SetAiValue($"{mod}.{sAI_ChamberPressure}", targetPressure);
+                        float targetChamberPressure = getAiValue_ChamberPressure - 10000 > 0 ? getAiValue_ChamberPressure - 10000 : 0;
+                        SetAiValue($"{mod}.{sAI_ChamberPressure}", targetChamberPressure);
                         //SetAiValue($"{mod}.{sAI_ProcessPressure}", GetAiValue($"{mod}.{sAI_ProcessPressure}") - 150);
                     }
                     else if (getAiValue_ProcessPressure <= 10000 && getAiValue_ChamberPressure <= 10000)
                     {
-                        getAiValue_ProcessPressure = getAiValue_ChamberPressure;
-                        SetAiValue($"{mod}.{sAI_ChamberPressure}", GetAiValue($"{mod}.{sAI_ProcessPressure}") - 1100);
-                        SetAiValue($"{mod}.{sAI_ProcessPressure}", GetAiValue($"{mod}.{sAI_ProcessPressure}") - 1100);
+                        float targetChamberPressure = getAiValue_ProcessPressure - 1100 > 0 ? getAiValue_ProcessPressure - 1100 : 0;
+                        SetAiValue($"{mod}.{sAI_ChamberPressure}", targetChamberPressure);
+                        SetAiValue($"{mod}.{sAI_ProcessPressure}", targetChamberPressure);
                     }
                     //SetAiValue($"{mod}.{sAI_ChamberPressure}", GetAiValue($"{mod}.{sAI_ChamberPressure}") - _rd.Next(13000, 14000));
                     //SetAiValue($"{mod}.{sAI_ProcessPressure}", GetAiValue($"{mod}.{sAI_ProcessPressure}") - _rd.Next(100, 110));
                 }
                 else if (turbo_pump_vlv.Value)
                 {
-                    float getAiValue_ChamberPressure = GetAiValue($"{mod}.{sAI_ChamberPressure}");
-                    float getAiValue_ProcessPressure = GetAiValue($"{mod}.{sAI_ProcessPressure}");
 
                     getAiValue_ProcessPressure = getAiValue_ChamberPressure;
-                    SetAiValue($"{mod}.{sAI_ChamberPressure}", GetAiValue($"{mod}.{sAI_ProcessPressure}") - 500);
-                    SetAiValue($"{mod}.{sAI_ProcessPressure}", GetAiValue($"{mod}.{sAI_ProcessPressure}") - 500);
+
+                    if ((getAiValue_ChamberPressure - 500) >= 0)
+                        SetAiValue($"{mod}.{sAI_ChamberPressure}", getAiValue_ChamberPressure - 500);
+                    else
+                        SetAiValue($"{mod}.{sAI_ChamberPressure}", 0);
+
+                    if ((getAiValue_ProcessPressure - 500) >= 0)
+                        SetAiValue($"{mod}.{sAI_ProcessPressure}", GetAiValue($"{mod}.{sAI_ProcessPressure}") - 500);
+                    else
+                        SetAiValue($"{mod}.{sAI_ProcessPressure}", 0);
+                    //SetAiValue($"{mod}.{sAI_ChamberPressure}", GetAiValue($"{mod}.{sAI_ProcessPressure}") - 500);
+                    //SetAiValue($"{mod}.{sAI_ProcessPressure}", GetAiValue($"{mod}.{sAI_ProcessPressure}") - 500);
                 }
             }
 
@@ -1750,69 +1756,77 @@ namespace Venus_Simulator.Instances
 
             if (fast_pump_vlv.Value || soft_pump_vlv.Value || turbo_pump_vlv.Value)
             {
+                //任意泵打开
+                float getAiValue_ChamberPressure = GetAiValue($"{mod}.{sAI_ChamberPressure}");
+                float getAiValue_ProcessPressure = GetAiValue($"{mod}.{sAI_ProcessPressure}");
                 if (fast_pump_vlv.Value && soft_pump_vlv.Value)
-                {
-                    float getAiValue_ChamberPressure = GetAiValue($"{mod}.{sAI_ChamberPressure}");
-                    float getAiValue_ProcessPressure = GetAiValue($"{mod}.{sAI_ProcessPressure}");
+                {//开双泵
                     if (getAiValue_ProcessPressure <= 10000 && getAiValue_ChamberPressure > 10000)
                     {
-                        SetAiValue($"{mod}.{sAI_ChamberPressure}", GetAiValue($"{mod}.{sAI_ChamberPressure}") - 30000);
+                        float targetChamberPressure = getAiValue_ChamberPressure - 30000 > 0 ? getAiValue_ChamberPressure - 30000 : 0;
+                        SetAiValue($"{mod}.{sAI_ChamberPressure}", targetChamberPressure);
                         //SetAiValue($"{mod}.{sAI_ProcessPressure}", GetAiValue($"{mod}.{sAI_ProcessPressure}") - 150);
                     }
                     else if (getAiValue_ProcessPressure <= 10000 && getAiValue_ChamberPressure <= 10000)
                     {
-                        getAiValue_ProcessPressure = getAiValue_ChamberPressure;
-                        SetAiValue($"{mod}.{sAI_ChamberPressure}", GetAiValue($"{mod}.{sAI_ProcessPressure}") - 1500);
-                        SetAiValue($"{mod}.{sAI_ProcessPressure}", GetAiValue($"{mod}.{sAI_ProcessPressure}") - 1500);
+                        float targetChamberPressure = getAiValue_ProcessPressure - 1500 > 0 ? getAiValue_ProcessPressure - 1500 : 0;
+                        SetAiValue($"{mod}.{sAI_ChamberPressure}", targetChamberPressure);
+                        SetAiValue($"{mod}.{sAI_ProcessPressure}", targetChamberPressure);
                     }
 
                     //SetAiValue($"{mod}.{sAI_ChamberPressure}", GetAiValue($"{mod}.{sAI_ChamberPressure}") - _rd.Next(15000, 16000));
                     //SetAiValue($"{mod}.{sAI_ProcessPressure}", GetAiValue($"{mod}.{sAI_ProcessPressure}") - _rd.Next(150, 160));
                 }
-                else if (fast_pump_vlv.Value)
+                else if (fast_pump_vlv.Value)//开
                 {
-                    float getAiValue_ChamberPressure = GetAiValue($"{mod}.{sAI_ChamberPressure}");
-                    float getAiValue_ProcessPressure = GetAiValue($"{mod}.{sAI_ProcessPressure}");
                     if (getAiValue_ProcessPressure <= 10000 && getAiValue_ChamberPressure > 10000)
                     {
-                        SetAiValue($"{mod}.{sAI_ChamberPressure}", GetAiValue($"{mod}.{sAI_ChamberPressure}") - 25000);
+                        float targetChamberPressure = getAiValue_ChamberPressure - 25000 > 0 ? getAiValue_ChamberPressure - 25000 : 0;
+                        SetAiValue($"{mod}.{sAI_ChamberPressure}", targetChamberPressure);
                         //SetAiValue($"{mod}.{sAI_ProcessPressure}", GetAiValue($"{mod}.{sAI_ProcessPressure}") - 150);
                     }
                     else if (getAiValue_ProcessPressure <= 10000 && getAiValue_ChamberPressure <= 10000)
                     {
-                        getAiValue_ProcessPressure = getAiValue_ChamberPressure;
-                        SetAiValue($"{mod}.{sAI_ChamberPressure}", GetAiValue($"{mod}.{sAI_ProcessPressure}") - 1300);
-                        SetAiValue($"{mod}.{sAI_ProcessPressure}", GetAiValue($"{mod}.{sAI_ProcessPressure}") - 1300);
+                        float targetChamberPressure = getAiValue_ProcessPressure - 1300 > 0 ? getAiValue_ProcessPressure - 1300 : 0;
+                        SetAiValue($"{mod}.{sAI_ChamberPressure}", targetChamberPressure);
+                        SetAiValue($"{mod}.{sAI_ProcessPressure}", targetChamberPressure);
                     }
                     //SetAiValue($"{mod}.{sAI_ChamberPressure}", GetAiValue($"{mod}.{sAI_ChamberPressure}") - _rd.Next(12000, 13000));
                     //SetAiValue($"{mod}.{sAI_ProcessPressure}", GetAiValue($"{mod}.{sAI_ProcessPressure}") - _rd.Next(120, 130));
                 }
                 else if (soft_pump_vlv.Value)
                 {
-                    float getAiValue_ChamberPressure = GetAiValue($"{mod}.{sAI_ChamberPressure}");
-                    float getAiValue_ProcessPressure = GetAiValue($"{mod}.{sAI_ProcessPressure}");
                     if (getAiValue_ProcessPressure <= 10000 && getAiValue_ChamberPressure > 10000)
                     {
-                        SetAiValue($"{mod}.{sAI_ChamberPressure}", GetAiValue($"{mod}.{sAI_ChamberPressure}") - 22000);
+                        float targetChamberPressure = getAiValue_ChamberPressure - 10000 > 0 ? getAiValue_ChamberPressure - 10000 : 0;
+                        SetAiValue($"{mod}.{sAI_ChamberPressure}", targetChamberPressure);
                         //SetAiValue($"{mod}.{sAI_ProcessPressure}", GetAiValue($"{mod}.{sAI_ProcessPressure}") - 150);
                     }
                     else if (getAiValue_ProcessPressure <= 10000 && getAiValue_ChamberPressure <= 10000)
                     {
-                        getAiValue_ProcessPressure = getAiValue_ChamberPressure;
-                        SetAiValue($"{mod}.{sAI_ChamberPressure}", GetAiValue($"{mod}.{sAI_ProcessPressure}") - 1100);
-                        SetAiValue($"{mod}.{sAI_ProcessPressure}", GetAiValue($"{mod}.{sAI_ProcessPressure}") - 1100);
+                        float targetChamberPressure = getAiValue_ProcessPressure - 1100 > 0 ? getAiValue_ProcessPressure - 1100 : 0;
+                        SetAiValue($"{mod}.{sAI_ChamberPressure}", targetChamberPressure);
+                        SetAiValue($"{mod}.{sAI_ProcessPressure}", targetChamberPressure);
                     }
                     //SetAiValue($"{mod}.{sAI_ChamberPressure}", GetAiValue($"{mod}.{sAI_ChamberPressure}") - _rd.Next(13000, 14000));
                     //SetAiValue($"{mod}.{sAI_ProcessPressure}", GetAiValue($"{mod}.{sAI_ProcessPressure}") - _rd.Next(100, 110));
                 }
                 else if (turbo_pump_vlv.Value)
                 {
-                    float getAiValue_ChamberPressure = GetAiValue($"{mod}.{sAI_ChamberPressure}");
-                    float getAiValue_ProcessPressure = GetAiValue($"{mod}.{sAI_ProcessPressure}");
 
                     getAiValue_ProcessPressure = getAiValue_ChamberPressure;
-                    SetAiValue($"{mod}.{sAI_ChamberPressure}", GetAiValue($"{mod}.{sAI_ProcessPressure}") - 500);
-                    SetAiValue($"{mod}.{sAI_ProcessPressure}", GetAiValue($"{mod}.{sAI_ProcessPressure}") - 500);
+
+                    if ((getAiValue_ChamberPressure - 500) >= 0)
+                        SetAiValue($"{mod}.{sAI_ChamberPressure}", getAiValue_ChamberPressure - 500);
+                    else
+                        SetAiValue($"{mod}.{sAI_ChamberPressure}", 0);
+
+                    if ((getAiValue_ProcessPressure - 500) >= 0)
+                        SetAiValue($"{mod}.{sAI_ProcessPressure}", GetAiValue($"{mod}.{sAI_ProcessPressure}") - 500);
+                    else
+                        SetAiValue($"{mod}.{sAI_ProcessPressure}", 0);
+                    //SetAiValue($"{mod}.{sAI_ChamberPressure}", GetAiValue($"{mod}.{sAI_ProcessPressure}") - 500);
+                    //SetAiValue($"{mod}.{sAI_ProcessPressure}", GetAiValue($"{mod}.{sAI_ProcessPressure}") - 500);
                 }
             }