Browse Source

1. Add check before Open VCE Outer Door based on ATM sensor and OutDoorOpenPressure
2. fix the bug of SE ChamberPressure in UI

zhouhr 1 year ago
parent
commit
984e634945

+ 1 - 1
Venus/Venus_MainPages/ViewModels/OverVenusSEViewModel.cs

@@ -1876,7 +1876,7 @@ namespace Venus_MainPages.ViewModels
             m_RtDataKeys.Add($"{ModuleName}.ChamberPressure");
             m_RtDataKeys.Add($"{ModuleName}.ProcessPressure");
 
-            m_RtDataKeys.Add($"{ModuleName}.ChamberPressure");
+            //m_RtDataKeys.Add($"{ModuleName}.ChamberPressure");
             m_RtDataKeys.Add($"{ModuleName}.ESCHePressure");
 
             m_RtDataKeys.Add($"{ModuleName}.IsATM");

+ 3 - 0
Venus/Venus_MainPages/ViewModels/SeTMViewModel.cs

@@ -508,6 +508,9 @@ namespace Venus_MainPages.ViewModels
             m_RtDataKeys.Add($"SETM.PMBSlitDoorClosed");
             m_RtDataKeys.Add($"SETM.PMCSlitDoorClosed");
             m_RtDataKeys.Add($"VCE1.VCEOutDoorClosed");
+            m_RtDataKeys.Add($"PMA.ChamberPressure");
+            m_RtDataKeys.Add($"PMB.ChamberPressure");
+            m_RtDataKeys.Add($"PMC.ChamberPressure");
 
         }
         //模块选择根据obj选择下拉框内容

+ 6 - 6
Venus/Venus_MainPages/ViewModels/VenusSeOperationOverViewModel.cs

@@ -550,19 +550,19 @@ namespace Venus_MainPages.ViewModels
             if (PMAIsInstalled)
             {
 
-                m_RtDataKeys.Add($"PMA.ProcessHighPressure");
+                m_RtDataKeys.Add($"PMA.ChamberPressure");
                 m_RtDataKeys.Add($"PMA.VentingFlag");
                 m_RtDataKeys.Add($"PMA.CurrentRecipeResult");
             }
             if (PMBIsInstalled)
             {
-                m_RtDataKeys.Add($"PMB.ProcessHighPressure");
+                m_RtDataKeys.Add($"PMB.ChamberPressure");
                 m_RtDataKeys.Add($"PMB.VentingFlag");
                 m_RtDataKeys.Add($"PMB.CurrentRecipeResult");
             }
             if (PMCIsInstalled)
             {
-                m_RtDataKeys.Add($"PMC.ProcessHighPressure");
+                m_RtDataKeys.Add($"PMC.ChamberPressure");
                 m_RtDataKeys.Add($"PMC.VentingFlag");
                 m_RtDataKeys.Add($"PMC.CurrentRecipeResult");
             }
@@ -686,21 +686,21 @@ namespace Venus_MainPages.ViewModels
                 {
                     PMAModuleInfo = ModuleManager.ModuleInfos["PMA"];
                     PMAWafer = PMAModuleInfo.WaferManager.Wafers[0];
-                    PMAPercent = CommonFunction.GetValue<double>(RtDataValues, "PMA.ProcessHighPressure") * 260 / 750000;
+                    PMAPercent = CommonFunction.GetValue<double>(RtDataValues, "PMA.ChamberPressure") * 260 / 750000;
                     PMARecipeResult = CommonFunction.GetValue<RecipeResult>(RtDataValues, "PMA.CurrentRecipeResult");
                 }
                 if (PMBIsInstalled == true)
                 {
                     PMBModuleInfo = ModuleManager.ModuleInfos["PMB"];
                     PMBWafer = PMBModuleInfo.WaferManager.Wafers[0];
-                    PMBPercent = CommonFunction.GetValue<double>(RtDataValues, "PMB.ProcessHighPressure") * 260 / 750000;
+                    PMBPercent = CommonFunction.GetValue<double>(RtDataValues, "PMB.ChamberPressure") * 260 / 750000;
                     PMBRecipeResult = CommonFunction.GetValue<RecipeResult>(RtDataValues, "PMB.CurrentRecipeResult");
                 }
                 if (PMCIsInstalled == true)
                 {
                     PMCModuleInfo = ModuleManager.ModuleInfos["PMC"];
                     PMCWafer = PMCModuleInfo.WaferManager.Wafers[0];
-                    PMCPercent = CommonFunction.GetValue<double>(RtDataValues, "PMC.ProcessHighPressure") * 260 / 750000;
+                    PMCPercent = CommonFunction.GetValue<double>(RtDataValues, "PMC.ChamberPressure") * 260 / 750000;
                     PMCRecipeResult = CommonFunction.GetValue<RecipeResult>(RtDataValues, "PMC.CurrentRecipeResult");
                 }
                 if (VCEIsInstalled == true)

+ 70 - 30
Venus/Venus_MainPages/Views/OverVenusSEView.xaml

@@ -1085,11 +1085,11 @@
             <ctrls:TextboxWithLabel  Canvas.Top="633" Canvas.Left="820" TextBoxValue="{Binding HeGasSetpoint,Mode=TwoWay,UpdateSourceTrigger=PropertyChanged}"    LabelValue="Pressure(Torr)"  TextBoxColor="White" IsReadOnly="False"/>
             <Ellipse Width="20" Height="20"  Canvas.Top="651.5" Canvas.Left="775" Fill="{Binding MFCHeData.IsWarning,Converter={StaticResource boolToColor4}}"  Stroke="Silver" StrokeThickness="2" ToolTip="Pressure Alarm"></Ellipse>
 
-            <ctrls:TextboxWithLabel  Canvas.Top="633" Canvas.Left="1280" LabelValue="CM3(mTorr)" TextBoxValue="{Binding  ForelinePressure,StringFormat='F1'}" TextBoxColor="#D7E4BD" />
+            <ctrls:TextboxWithLabel  Canvas.Top="633" Canvas.Left="1280" LabelValue="CM3(Torr)" TextBoxValue="{Binding  ForelinePressure,StringFormat='F1'}" TextBoxColor="#D7E4BD" />
             <ctrls:TextboxWithLabel  Canvas.Top="464" Canvas.Left="1290" LabelValue="Position(‰)" TextBoxValue="{Binding PendulumValvePosition,StringFormat='F0'}" TextBoxColor="#D7E4BD" />
             <!--<ctrls:TextboxWithLabel  Canvas.Top="510" Canvas.Left="1367" TextBoxValue="{Binding N2SetPoint,Mode=TwoWay}" IsReadOnly="False"  LabelValue="Turbo N2" ToolTip="{Binding MFCN2Data.SetPoint,StringFormat='F1'}" TextBoxColor="White" />-->
 
-            <ctrls:TextboxWithLabel  Canvas.Top="556" Canvas.Left="952" LabelValue="Pressure(mTorr)" TextBoxValue="{Binding ESCHePressure,StringFormat='F1'}"  TextBoxColor="#D7E4BD"/>
+            <ctrls:TextboxWithLabel  Canvas.Top="556" Canvas.Left="952" LabelValue="Pressure(Torr)" TextBoxValue="{Binding ESCHePressure,StringFormat='F1'}"  TextBoxColor="#D7E4BD"/>
             <Border    BorderBrush="Gray"  BorderThickness="0"  Width="15" Height="6" Canvas.Top="581" Canvas.Left="1033">
                 <Border.Background>
                     <LinearGradientBrush StartPoint="0.5 0" EndPoint="0.5 1">
@@ -1535,7 +1535,7 @@
                 <RowDefinition/>
                 <RowDefinition/>
                 <RowDefinition/>
-				<RowDefinition/>
+                <RowDefinition/>
             </Grid.RowDefinitions>
             <Grid.ColumnDefinitions>
                 <ColumnDefinition Width="2*"/>
@@ -1625,7 +1625,7 @@
             <TextBlock Grid.Row="2" Grid.Column="1" Text=""     FontSize="15" VerticalAlignment="Center" HorizontalAlignment="Left" Padding="10,0,0,0"/>
         </Grid>
 
-		<Canvas Canvas.Left="854" Canvas.Top="400">
+        <Canvas Canvas.Left="854" Canvas.Top="400" Visibility="Collapsed">
             <Rectangle Width="30" Height="40" StrokeThickness="1,.8">
                 <Rectangle.Stroke>
                     <LinearGradientBrush StartPoint="0,0.5" EndPoint="1,.5">
@@ -1670,21 +1670,25 @@
                     </LinearGradientBrush>
                 </Rectangle.Fill>
             </Rectangle>
-            <Path Canvas.Left="6" Canvas.Top="2"    Stroke="Lime" StrokeThickness="1.5" Width="18" Height="4" StrokeDashArray="0" StrokeDashCap="Round" Data="M 100,100 A 100,50 0 1 0 300,100" Stretch="Fill" HorizontalAlignment="Center" VerticalAlignment="Top" RenderTransformOrigin="0.5,0.5"></Path>
-            <Path Canvas.Left="6" Canvas.Top="4.5"  Stroke="Lime" StrokeThickness="1.5" Width="18" Height="4" StrokeDashArray="0" StrokeDashCap="Round" Data="M 100,100 A 100,50 0 1 0 300,100" Stretch="Fill" HorizontalAlignment="Center" VerticalAlignment="Top" RenderTransformOrigin="0.5,0.5"></Path>
-            <Path Canvas.Left="6" Canvas.Top="7.5"  Stroke="Lime" StrokeThickness="1.5" Width="18" Height="4" StrokeDashArray="0" StrokeDashCap="Round" Data="M 100,100 A 100,50 0 1 0 300,100" Stretch="Fill" HorizontalAlignment="Center" VerticalAlignment="Top" RenderTransformOrigin="0.5,0.5"></Path>
-            <Path Canvas.Left="6" Canvas.Top="10.5" Stroke="Lime" StrokeThickness="1.5" Width="18" Height="4" StrokeDashArray="0" StrokeDashCap="Round" Data="M 100,100 A 100,50 0 1 0 300,100" Stretch="Fill" HorizontalAlignment="Center" VerticalAlignment="Top" RenderTransformOrigin="0.5,0.5"></Path>
-            <Path Canvas.Left="6" Canvas.Top="13.5" Stroke="Lime" StrokeThickness="1.5" Width="18" Height="4" StrokeDashArray="0" StrokeDashCap="Round" Data="M 100,100 A 100,50 0 1 0 300,100" Stretch="Fill" HorizontalAlignment="Center" VerticalAlignment="Top" RenderTransformOrigin="0.5,0.5"></Path>
-            <Path Canvas.Left="6" Canvas.Top="16.5" Stroke="Lime" StrokeThickness="1.5" Width="18" Height="4" StrokeDashArray="0" StrokeDashCap="Round" Data="M 100,100 A 100,50 0 1 0 300,100" Stretch="Fill" HorizontalAlignment="Center" VerticalAlignment="Top" RenderTransformOrigin="0.5,0.5"></Path>
-            <Path Canvas.Left="6" Canvas.Top="19.5" Stroke="Lime" StrokeThickness="1.5" Width="18" Height="4" StrokeDashArray="0" StrokeDashCap="Round" Data="M 100,100 A 100,50 0 1 0 300,100" Stretch="Fill" HorizontalAlignment="Center" VerticalAlignment="Top" RenderTransformOrigin="0.5,0.5"></Path>
-            <Path Canvas.Left="6" Canvas.Top="22.5" Stroke="Lime" StrokeThickness="1.5" Width="18" Height="4" StrokeDashArray="0" StrokeDashCap="Round" Data="M 100,100 A 100,50 0 1 0 300,100" Stretch="Fill" HorizontalAlignment="Center" VerticalAlignment="Top" RenderTransformOrigin="0.5,0.5"></Path>
-            <Path Canvas.Left="6" Canvas.Top="25.5" Stroke="Lime" StrokeThickness="1.5" Width="18" Height="4" StrokeDashArray="0" StrokeDashCap="Round" Data="M 100,100 A 100,50 0 1 0 300,100" Stretch="Fill" HorizontalAlignment="Center" VerticalAlignment="Top" RenderTransformOrigin="0.5,0.5"></Path>
-            <Path Canvas.Left="6" Canvas.Top="28.5" Stroke="Lime" StrokeThickness="1.5" Width="18" Height="4" StrokeDashArray="0" StrokeDashCap="Round" Data="M 100,100 A 100,50 0 1 0 300,100" Stretch="Fill" HorizontalAlignment="Center" VerticalAlignment="Top" RenderTransformOrigin="0.5,0.5"></Path>
-            <Path Canvas.Left="6" Canvas.Top="31.5" Stroke="Lime" StrokeThickness="1.5" Width="18" Height="4" StrokeDashArray="0" StrokeDashCap="Round" Data="M 100,100 A 100,50 0 1 0 300,100" Stretch="Fill" HorizontalAlignment="Center" VerticalAlignment="Top" RenderTransformOrigin="0.5,0.5"></Path>
-            <Path Canvas.Left="6" Canvas.Top="34.5" Stroke="Lime" StrokeThickness="1.5" Width="18" Height="4" StrokeDashArray="0" StrokeDashCap="Round" Data="M 100,100 A 100,50 0 1 0 300,100" Stretch="Fill" HorizontalAlignment="Center" VerticalAlignment="Top" RenderTransformOrigin="0.5,0.5"></Path>
+            <StackPanel Canvas.Left="6" Canvas.Top="3.3">
+                <Path Margin="0,-1.5,0,0" Stroke="Orange" StrokeThickness="1.5" Width="18" Height="4" StrokeDashArray="0" StrokeDashCap="Round" Data="M 100,100 A 100,50 0 1 0 300,100" Stretch="Fill" HorizontalAlignment="Center" VerticalAlignment="Top" RenderTransformOrigin="0.5,0.5"></Path>
+                <Path Margin="0,-1.5,0,0" Stroke="Orange" StrokeThickness="1.5" Width="18" Height="4" StrokeDashArray="0" StrokeDashCap="Round" Data="M 100,100 A 100,50 0 1 0 300,100" Stretch="Fill" HorizontalAlignment="Center" VerticalAlignment="Top" RenderTransformOrigin="0.5,0.5"></Path>
+                <Path Margin="0,-1.5,0,0" Stroke="Orange" StrokeThickness="1.5" Width="18" Height="4" StrokeDashArray="0" StrokeDashCap="Round" Data="M 100,100 A 100,50 0 1 0 300,100" Stretch="Fill" HorizontalAlignment="Center" VerticalAlignment="Top" RenderTransformOrigin="0.5,0.5"></Path>
+                <Path Margin="0,-1.5,0,0" Stroke="Orange" StrokeThickness="1.5" Width="18" Height="4" StrokeDashArray="0" StrokeDashCap="Round" Data="M 100,100 A 100,50 0 1 0 300,100" Stretch="Fill" HorizontalAlignment="Center" VerticalAlignment="Top" RenderTransformOrigin="0.5,0.5"></Path>
+                <Path Margin="0,-1.5,0,0" Stroke="Orange" StrokeThickness="1.5" Width="18" Height="4" StrokeDashArray="0" StrokeDashCap="Round" Data="M 100,100 A 100,50 0 1 0 300,100" Stretch="Fill" HorizontalAlignment="Center" VerticalAlignment="Top" RenderTransformOrigin="0.5,0.5"></Path>
+                <Path Margin="0,-1.5,0,0" Stroke="Orange" StrokeThickness="1.5" Width="18" Height="4" StrokeDashArray="0" StrokeDashCap="Round" Data="M 100,100 A 100,50 0 1 0 300,100" Stretch="Fill" HorizontalAlignment="Center" VerticalAlignment="Top" RenderTransformOrigin="0.5,0.5"></Path>
+                <Path Margin="0,-1.5,0,0" Stroke="Orange" StrokeThickness="1.5" Width="18" Height="4" StrokeDashArray="0" StrokeDashCap="Round" Data="M 100,100 A 100,50 0 1 0 300,100" Stretch="Fill" HorizontalAlignment="Center" VerticalAlignment="Top" RenderTransformOrigin="0.5,0.5"></Path>
+                <Path Margin="0,-1.5,0,0" Stroke="Orange" StrokeThickness="1.5" Width="18" Height="4" StrokeDashArray="0" StrokeDashCap="Round" Data="M 100,100 A 100,50 0 1 0 300,100" Stretch="Fill" HorizontalAlignment="Center" VerticalAlignment="Top" RenderTransformOrigin="0.5,0.5"></Path>
+                <Path Margin="0,-1.5,0,0" Stroke="Orange" StrokeThickness="1.5" Width="18" Height="4" StrokeDashArray="0" StrokeDashCap="Round" Data="M 100,100 A 100,50 0 1 0 300,100" Stretch="Fill" HorizontalAlignment="Center" VerticalAlignment="Top" RenderTransformOrigin="0.5,0.5"></Path>
+                <Path Margin="0,-1.5,0,0" Stroke="Orange" StrokeThickness="1.5" Width="18" Height="4" StrokeDashArray="0" StrokeDashCap="Round" Data="M 100,100 A 100,50 0 1 0 300,100" Stretch="Fill" HorizontalAlignment="Center" VerticalAlignment="Top" RenderTransformOrigin="0.5,0.5"></Path>
+                <Path Margin="0,-1.5,0,0" Stroke="Orange" StrokeThickness="1.5" Width="18" Height="4" StrokeDashArray="0" StrokeDashCap="Round" Data="M 100,100 A 100,50 0 1 0 300,100" Stretch="Fill" HorizontalAlignment="Center" VerticalAlignment="Top" RenderTransformOrigin="0.5,0.5"></Path>
+                <Path Margin="0,-1.5,0,0" Stroke="Orange" StrokeThickness="1.5" Width="18" Height="4" StrokeDashArray="0" StrokeDashCap="Round" Data="M 100,100 A 100,50 0 1 0 300,100" Stretch="Fill" HorizontalAlignment="Center" VerticalAlignment="Top" RenderTransformOrigin="0.5,0.5"></Path>
+                <Path Margin="0,-1.5,0,0" Stroke="Orange" StrokeThickness="1.5" Width="18" Height="4" StrokeDashArray="0" StrokeDashCap="Round" Data="M 100,100 A 100,50 0 1 0 300,100" Stretch="Fill" HorizontalAlignment="Center" VerticalAlignment="Top" RenderTransformOrigin="0.5,0.5"></Path>
+                <Path Margin="0,-1.5,0,0" Stroke="Orange" StrokeThickness="1.5" Width="18" Height="4" StrokeDashArray="0" StrokeDashCap="Round" Data="M 100,100 A 100,50 0 1 0 300,100" Stretch="Fill" HorizontalAlignment="Center" VerticalAlignment="Top" RenderTransformOrigin="0.5,0.5"></Path>
+            </StackPanel>
         </Canvas>
 
-        <Canvas Canvas.Left="1124" Canvas.Top="400">
+        <Canvas Canvas.Left="1124" Canvas.Top="400" Visibility="Collapsed">
             <Rectangle Width="30" Height="40" StrokeThickness="1,.8">
                 <Rectangle.Stroke>
                     <LinearGradientBrush StartPoint="0,0.5" EndPoint="1,.5">
@@ -1694,7 +1698,7 @@
                     </LinearGradientBrush>
                 </Rectangle.Stroke>
             </Rectangle>
-            <Rectangle HorizontalAlignment="Left" VerticalAlignment="Center" Width="31" Height="1.2" Canvas.Top="-1.2" RadiusX="0" RadiusY="0" RenderTransformOrigin="0.5,0.5" Canvas.Left="0.6">
+            <Rectangle HorizontalAlignment="Left" VerticalAlignment="Center" Width="30" Height="1.2" Canvas.Top="-1.2" RadiusX="0" RadiusY="0" RenderTransformOrigin="0.5,0.5" Canvas.Left="0.6">
                 <Rectangle.RenderTransform>
                     <TransformGroup>
                         <ScaleTransform/>
@@ -1729,18 +1733,22 @@
                     </LinearGradientBrush>
                 </Rectangle.Fill>
             </Rectangle>
-            <Path Canvas.Left="6" Canvas.Top="2"    Stroke="Lime" StrokeThickness="1.5" Width="18" Height="4" StrokeDashArray="0" StrokeDashCap="Round" Data="M 100,100 A 100,50 0 1 0 300,100" Stretch="Fill" HorizontalAlignment="Center" VerticalAlignment="Top" RenderTransformOrigin="0.5,0.5"></Path>
-            <Path Canvas.Left="6" Canvas.Top="4.5"  Stroke="Lime" StrokeThickness="1.5" Width="18" Height="4" StrokeDashArray="0" StrokeDashCap="Round" Data="M 100,100 A 100,50 0 1 0 300,100" Stretch="Fill" HorizontalAlignment="Center" VerticalAlignment="Top" RenderTransformOrigin="0.5,0.5"></Path>
-            <Path Canvas.Left="6" Canvas.Top="7.5"  Stroke="Lime" StrokeThickness="1.5" Width="18" Height="4" StrokeDashArray="0" StrokeDashCap="Round" Data="M 100,100 A 100,50 0 1 0 300,100" Stretch="Fill" HorizontalAlignment="Center" VerticalAlignment="Top" RenderTransformOrigin="0.5,0.5"></Path>
-            <Path Canvas.Left="6" Canvas.Top="10.5" Stroke="Lime" StrokeThickness="1.5" Width="18" Height="4" StrokeDashArray="0" StrokeDashCap="Round" Data="M 100,100 A 100,50 0 1 0 300,100" Stretch="Fill" HorizontalAlignment="Center" VerticalAlignment="Top" RenderTransformOrigin="0.5,0.5"></Path>
-            <Path Canvas.Left="6" Canvas.Top="13.5" Stroke="Lime" StrokeThickness="1.5" Width="18" Height="4" StrokeDashArray="0" StrokeDashCap="Round" Data="M 100,100 A 100,50 0 1 0 300,100" Stretch="Fill" HorizontalAlignment="Center" VerticalAlignment="Top" RenderTransformOrigin="0.5,0.5"></Path>
-            <Path Canvas.Left="6" Canvas.Top="16.5" Stroke="Lime" StrokeThickness="1.5" Width="18" Height="4" StrokeDashArray="0" StrokeDashCap="Round" Data="M 100,100 A 100,50 0 1 0 300,100" Stretch="Fill" HorizontalAlignment="Center" VerticalAlignment="Top" RenderTransformOrigin="0.5,0.5"></Path>
-            <Path Canvas.Left="6" Canvas.Top="19.5" Stroke="Lime" StrokeThickness="1.5" Width="18" Height="4" StrokeDashArray="0" StrokeDashCap="Round" Data="M 100,100 A 100,50 0 1 0 300,100" Stretch="Fill" HorizontalAlignment="Center" VerticalAlignment="Top" RenderTransformOrigin="0.5,0.5"></Path>
-            <Path Canvas.Left="6" Canvas.Top="22.5" Stroke="Lime" StrokeThickness="1.5" Width="18" Height="4" StrokeDashArray="0" StrokeDashCap="Round" Data="M 100,100 A 100,50 0 1 0 300,100" Stretch="Fill" HorizontalAlignment="Center" VerticalAlignment="Top" RenderTransformOrigin="0.5,0.5"></Path>
-            <Path Canvas.Left="6" Canvas.Top="25.5" Stroke="Lime" StrokeThickness="1.5" Width="18" Height="4" StrokeDashArray="0" StrokeDashCap="Round" Data="M 100,100 A 100,50 0 1 0 300,100" Stretch="Fill" HorizontalAlignment="Center" VerticalAlignment="Top" RenderTransformOrigin="0.5,0.5"></Path>
-            <Path Canvas.Left="6" Canvas.Top="28.5" Stroke="Lime" StrokeThickness="1.5" Width="18" Height="4" StrokeDashArray="0" StrokeDashCap="Round" Data="M 100,100 A 100,50 0 1 0 300,100" Stretch="Fill" HorizontalAlignment="Center" VerticalAlignment="Top" RenderTransformOrigin="0.5,0.5"></Path>
-            <Path Canvas.Left="6" Canvas.Top="31.5" Stroke="Lime" StrokeThickness="1.5" Width="18" Height="4" StrokeDashArray="0" StrokeDashCap="Round" Data="M 100,100 A 100,50 0 1 0 300,100" Stretch="Fill" HorizontalAlignment="Center" VerticalAlignment="Top" RenderTransformOrigin="0.5,0.5"></Path>
-            <Path Canvas.Left="6" Canvas.Top="34.5" Stroke="Lime" StrokeThickness="1.5" Width="18" Height="4" StrokeDashArray="0" StrokeDashCap="Round" Data="M 100,100 A 100,50 0 1 0 300,100" Stretch="Fill" HorizontalAlignment="Center" VerticalAlignment="Top" RenderTransformOrigin="0.5,0.5"></Path>
+            <StackPanel Canvas.Left="6" Canvas.Top="3.3">
+                <Path Margin="0,-1.5,0,0" Stroke="Orange" StrokeThickness="1.5" Width="18" Height="4" StrokeDashArray="0" StrokeDashCap="Round" Data="M 100,100 A 100,50 0 1 0 300,100" Stretch="Fill" HorizontalAlignment="Center" VerticalAlignment="Top" RenderTransformOrigin="0.5,0.5"></Path>
+                <Path Margin="0,-1.5,0,0" Stroke="Orange" StrokeThickness="1.5" Width="18" Height="4" StrokeDashArray="0" StrokeDashCap="Round" Data="M 100,100 A 100,50 0 1 0 300,100" Stretch="Fill" HorizontalAlignment="Center" VerticalAlignment="Top" RenderTransformOrigin="0.5,0.5"></Path>
+                <Path Margin="0,-1.5,0,0" Stroke="Orange" StrokeThickness="1.5" Width="18" Height="4" StrokeDashArray="0" StrokeDashCap="Round" Data="M 100,100 A 100,50 0 1 0 300,100" Stretch="Fill" HorizontalAlignment="Center" VerticalAlignment="Top" RenderTransformOrigin="0.5,0.5"></Path>
+                <Path Margin="0,-1.5,0,0" Stroke="Orange" StrokeThickness="1.5" Width="18" Height="4" StrokeDashArray="0" StrokeDashCap="Round" Data="M 100,100 A 100,50 0 1 0 300,100" Stretch="Fill" HorizontalAlignment="Center" VerticalAlignment="Top" RenderTransformOrigin="0.5,0.5"></Path>
+                <Path Margin="0,-1.5,0,0" Stroke="Orange" StrokeThickness="1.5" Width="18" Height="4" StrokeDashArray="0" StrokeDashCap="Round" Data="M 100,100 A 100,50 0 1 0 300,100" Stretch="Fill" HorizontalAlignment="Center" VerticalAlignment="Top" RenderTransformOrigin="0.5,0.5"></Path>
+                <Path Margin="0,-1.5,0,0" Stroke="Orange" StrokeThickness="1.5" Width="18" Height="4" StrokeDashArray="0" StrokeDashCap="Round" Data="M 100,100 A 100,50 0 1 0 300,100" Stretch="Fill" HorizontalAlignment="Center" VerticalAlignment="Top" RenderTransformOrigin="0.5,0.5"></Path>
+                <Path Margin="0,-1.5,0,0" Stroke="Orange" StrokeThickness="1.5" Width="18" Height="4" StrokeDashArray="0" StrokeDashCap="Round" Data="M 100,100 A 100,50 0 1 0 300,100" Stretch="Fill" HorizontalAlignment="Center" VerticalAlignment="Top" RenderTransformOrigin="0.5,0.5"></Path>
+                <Path Margin="0,-1.5,0,0" Stroke="Orange" StrokeThickness="1.5" Width="18" Height="4" StrokeDashArray="0" StrokeDashCap="Round" Data="M 100,100 A 100,50 0 1 0 300,100" Stretch="Fill" HorizontalAlignment="Center" VerticalAlignment="Top" RenderTransformOrigin="0.5,0.5"></Path>
+                <Path Margin="0,-1.5,0,0" Stroke="Orange" StrokeThickness="1.5" Width="18" Height="4" StrokeDashArray="0" StrokeDashCap="Round" Data="M 100,100 A 100,50 0 1 0 300,100" Stretch="Fill" HorizontalAlignment="Center" VerticalAlignment="Top" RenderTransformOrigin="0.5,0.5"></Path>
+                <Path Margin="0,-1.5,0,0" Stroke="Orange" StrokeThickness="1.5" Width="18" Height="4" StrokeDashArray="0" StrokeDashCap="Round" Data="M 100,100 A 100,50 0 1 0 300,100" Stretch="Fill" HorizontalAlignment="Center" VerticalAlignment="Top" RenderTransformOrigin="0.5,0.5"></Path>
+                <Path Margin="0,-1.5,0,0" Stroke="Orange" StrokeThickness="1.5" Width="18" Height="4" StrokeDashArray="0" StrokeDashCap="Round" Data="M 100,100 A 100,50 0 1 0 300,100" Stretch="Fill" HorizontalAlignment="Center" VerticalAlignment="Top" RenderTransformOrigin="0.5,0.5"></Path>
+                <Path Margin="0,-1.5,0,0" Stroke="Orange" StrokeThickness="1.5" Width="18" Height="4" StrokeDashArray="0" StrokeDashCap="Round" Data="M 100,100 A 100,50 0 1 0 300,100" Stretch="Fill" HorizontalAlignment="Center" VerticalAlignment="Top" RenderTransformOrigin="0.5,0.5"></Path>
+                <Path Margin="0,-1.5,0,0" Stroke="Orange" StrokeThickness="1.5" Width="18" Height="4" StrokeDashArray="0" StrokeDashCap="Round" Data="M 100,100 A 100,50 0 1 0 300,100" Stretch="Fill" HorizontalAlignment="Center" VerticalAlignment="Top" RenderTransformOrigin="0.5,0.5"></Path>
+                <Path Margin="0,-1.5,0,0" Stroke="Orange" StrokeThickness="1.5" Width="18" Height="4" StrokeDashArray="0" StrokeDashCap="Round" Data="M 100,100 A 100,50 0 1 0 300,100" Stretch="Fill" HorizontalAlignment="Center" VerticalAlignment="Top" RenderTransformOrigin="0.5,0.5"></Path>
+            </StackPanel>
         </Canvas>
 
 
@@ -1773,5 +1781,37 @@
             </StackPanel>
         </Border>
 
+        <Border Canvas.Left="885" Canvas.Top="632" Height="200" Width="200" Background="White" HorizontalAlignment="Left" VerticalAlignment="Top" Visibility="Collapsed">
+            <Canvas>
+                <ctrls:FlowPipe   Height="8"  Width="148" RotateTransformValue="90"  IsReverse="{Binding PVHe1ValveIsOpen}" Margin="16,-1,36,193">
+                    <ctrls:FlowPipe.IsFlowing>
+                        <MultiBinding Converter="{StaticResource toBoolMultiValueConverter2}">
+                            <Binding Path="PVHe1ValveIsOpen"/>
+                            <Binding Path="PVHe2ValveIsOpen"/>
+                            <Binding Path="PVHe3ValveIsOpen"/>
+                        </MultiBinding>
+                    </ctrls:FlowPipe.IsFlowing>
+                </ctrls:FlowPipe>
+                <ctrls:FlowPipe   Height="8"  Width="148" Canvas.Left="40" RotateTransformValue="90"  IsReverse="{Binding PVHe1ValveIsOpen}" Margin="16,-1,36,193">
+                    <ctrls:FlowPipe.IsFlowing>
+                        <MultiBinding Converter="{StaticResource toBoolMultiValueConverter2}">
+                            <Binding Path="PVHe1ValveIsOpen"/>
+                            <Binding Path="PVHe2ValveIsOpen"/>
+                            <Binding Path="PVHe3ValveIsOpen"/>
+                        </MultiBinding>
+                    </ctrls:FlowPipe.IsFlowing>
+                </ctrls:FlowPipe>
+                <customControls:CommonValveControl  ValveOrientation="Vertical"  Height="20" Width="20"  Canvas.Top="14" Canvas.Left="2" Status="{Binding HeISOValveIsOpen,Mode=TwoWay}" IsCanEdit="{Binding IsAutoMode,Converter={StaticResource BoolToBool}}" Tag="HeISO" Command="{Binding ControlValveCommand}" CommandParameter="{Binding RelativeSource={x:Static RelativeSource.Self}}" HorizontalAlignment="Left" VerticalAlignment="Center"/>
+                <customControls:CommonValveControl  ValveOrientation="Vertical"  Height="20" Width="20"  Canvas.Top="14" Canvas.Left="42" Status="{Binding HeISOValveIsOpen,Mode=TwoWay}" IsCanEdit="{Binding IsAutoMode,Converter={StaticResource BoolToBool}}" Tag="HeISO" Command="{Binding ControlValveCommand}" CommandParameter="{Binding RelativeSource={x:Static RelativeSource.Self}}" HorizontalAlignment="Left" VerticalAlignment="Center"/>
+                
+                <customControls:CommonValveControl  ValveOrientation="Vertical"  Height="20" Width="20"  Canvas.Top="14" Canvas.Left="42" Status="{Binding HeISOValveIsOpen,Mode=TwoWay}" IsCanEdit="{Binding IsAutoMode,Converter={StaticResource BoolToBool}}" Tag="HeISO" Command="{Binding ControlValveCommand}" CommandParameter="{Binding RelativeSource={x:Static RelativeSource.Self}}" HorizontalAlignment="Left" VerticalAlignment="Center"/>
+                <customControls:CommonValveControl  ValveOrientation="Vertical"  Height="20" Width="20"  Canvas.Top="14" Canvas.Left="42" Status="{Binding HeISOValveIsOpen,Mode=TwoWay}" IsCanEdit="{Binding IsAutoMode,Converter={StaticResource BoolToBool}}" Tag="HeISO" Command="{Binding ControlValveCommand}" CommandParameter="{Binding RelativeSource={x:Static RelativeSource.Self}}" HorizontalAlignment="Left" VerticalAlignment="Center"/>
+                <customControls:CommonValveControl  ValveOrientation="Vertical"  Height="20" Width="20"  Canvas.Top="14" Canvas.Left="42" Status="{Binding HeISOValveIsOpen,Mode=TwoWay}" IsCanEdit="{Binding IsAutoMode,Converter={StaticResource BoolToBool}}" Tag="HeISO" Command="{Binding ControlValveCommand}" CommandParameter="{Binding RelativeSource={x:Static RelativeSource.Self}}" HorizontalAlignment="Left" VerticalAlignment="Center"/>
+                <customControls:CommonValveControl  ValveOrientation="Vertical"  Height="20" Width="20"  Canvas.Top="14" Canvas.Left="42" Status="{Binding HeISOValveIsOpen,Mode=TwoWay}" IsCanEdit="{Binding IsAutoMode,Converter={StaticResource BoolToBool}}" Tag="HeISO" Command="{Binding ControlValveCommand}" CommandParameter="{Binding RelativeSource={x:Static RelativeSource.Self}}" HorizontalAlignment="Left" VerticalAlignment="Center"/>
+                <customControls:CommonValveControl  ValveOrientation="Vertical"  Height="20" Width="20"  Canvas.Top="14" Canvas.Left="42" Status="{Binding HeISOValveIsOpen,Mode=TwoWay}" IsCanEdit="{Binding IsAutoMode,Converter={StaticResource BoolToBool}}" Tag="HeISO" Command="{Binding ControlValveCommand}" CommandParameter="{Binding RelativeSource={x:Static RelativeSource.Self}}" HorizontalAlignment="Left" VerticalAlignment="Center"/>
+                
+            </Canvas>
+
+        </Border>
     </Canvas>
 </UserControl>

+ 1 - 0
Venus/Venus_MainPages/Views/OverVenusSEView.xaml.cs

@@ -30,5 +30,6 @@ namespace Venus_MainPages.Views
             (this.DataContext as OverVenusSEViewModel).ModuleName = systemName;
             (this.DataContext as OverVenusSEViewModel).addDataKeys();
         }
+
     }
 }

File diff suppressed because it is too large
+ 3 - 3
Venus/Venus_MainPages/Views/SeTMView.xaml


File diff suppressed because it is too large
+ 3 - 3
Venus/Venus_MainPages/Views/VenusSeOperationOverView.xaml


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

@@ -326,7 +326,8 @@
 		<config default="60" name="VentingTimeout" nameView="Venting Timeout" description="" max="3000" min="0" paramter="" tag="" unit="s" type="Integer" />
 		<config default="500" name="SwitchPumpDelay" nameView="Switch Pump Delay" description="让渡Pump前延迟" max="50000" min="0" paramter="" tag="" unit="ms" type="Integer" />
 		<config default="100" name="SoftVentEndPressure" nameView="VCE Soft Vent End Pressure" description="" max="30000" min="0" paramter="" tag="" unit="mTorr" type="Integer" />
-
+		<config default="750000" name="OutDoorOpenPressure" nameView="Out Door Open Pressure" description="外门开启时,在ATM信号亮下的最小压力值" max="760000" min="0" paramter="" tag="" unit="mTorr" type="Integer" />
+		
 		<config default="2000" name="PurgeVentPressure" description="Purge Vent Pressure" max="760000" min="0" paramter="" tag="" unit="mTorr" type="Double" />
 		<config default="30" name="PurgeCycleCount" description="Purge Cycle Count" max="200" min="0" paramter="" tag="" unit="" type="Integer" />
 		<config default="120" name="PurgePumpTime" description="Purge Pump Time" max="7200" min="0" paramter="" tag="" unit="second" type="Integer" />

+ 11 - 27
Venus/Venus_RT/Devices/TM/HongHuTM.cs

@@ -283,43 +283,23 @@ namespace Venus_RT.Devices
             switch (mod)
             {
                 case ModuleName.VCE1:
-                    if (bOn && Math.Abs(_TMPressure.Value - _VCEPressure.Value)> MaxPressureDifference && !VCESlitDoorOpenEnable)
+                    if (bOn && Math.Abs(_TMPressure.Value - _VCEPressure.Value)> MaxPressureDifference)
                     {
                         LOG.Write(eEvent.ERR_TM, ModuleName.SETM, $"cannot open door cause pressure, TM Pressure:{_TMPressure.Value} and VCE Pressure:{_VCEPressure.Value}");
                         return false;
                     }
-                    if (!bOn && !VCESlitDoorCloseEnable)
-                    {
-                        LOG.Write(eEvent.ERR_TM, ModuleName.SETM, $"cannot close door cause tmrobot extend to vce!");
-                        return false;
-                    }
                     return _VCESlitDoor.SetCylinder(bOn, out _);
                 case ModuleName.PMA:
-                    if (bOn && !CanOpenSlitDoor(mod, MaxPressureDifference) && !PMASlitDoorOpenEnable)
-                        return false;
-                    if (!bOn && !PMASlitDoorCloseEnable)
-                    {
-                        LOG.Write(eEvent.ERR_TM, ModuleName.SETM, $"cannot close door cause tmrobot extend to {mod}!");
+                    if (bOn && !CanOpenSlitDoor(mod, MaxPressureDifference))
                         return false;
-                    }
                     return _PMASlitDoor.SetCylinder(bOn, out _);
                 case ModuleName.PMB:
-                    if (bOn && !CanOpenSlitDoor(mod, MaxPressureDifference) && !PMBSlitDoorOpenEnable)
-                        return false;
-                    if (!bOn && !PMBSlitDoorCloseEnable)
-                    {
-                        LOG.Write(eEvent.ERR_TM, ModuleName.SETM, $"cannot close door cause tmrobot extend to {mod}!");
+                    if (bOn && !CanOpenSlitDoor(mod, MaxPressureDifference))
                         return false;
-                    }
                     return _PMBSlitDoor.SetCylinder(bOn, out _);
                 case ModuleName.PMC:
-                    if (bOn && !CanOpenSlitDoor(mod, MaxPressureDifference) && !PMCSlitDoorOpenEnable)
+                    if (bOn && !CanOpenSlitDoor(mod, MaxPressureDifference))
                         return false;
-                    if (!bOn && !PMCSlitDoorCloseEnable)
-                    {
-                        LOG.Write(eEvent.ERR_TM, ModuleName.SETM, $"cannot close door cause tmrobot extend to {mod}!");
-                        return false;
-                    }
                     return _PMCSlitDoor.SetCylinder(bOn, out _);
             }
             return false;
@@ -517,17 +497,21 @@ namespace Venus_RT.Devices
             else
             {
                 double PMPressure = Singleton<RouteManager>.Instance.GetPM(mod).ChamberPressure;
-                if (Math.Abs(_TMPressure.Value - PMPressure) > MaxPressureDifference)
+                if (Math.Abs(mbar2mtorrConvert(_TMPressure.Value) - PMPressure) <= MaxPressureDifference || (Singleton<RouteManager>.Instance.GetPM(mod).IsAtm && IsTMATM))
+                {
+                    return true;
+                }
+                else
                 {
                     LOG.Write(eEvent.ERR_TM, ModuleName.SETM, $"cannot open door cause pressure, TM Pressure:{_TMPressure.Value} and {mod} pressure:{PMPressure}");
                     return false;
                 }
-                else
-                    return true;
             }
             
         }
 
+        private double mbar2mtorrConvert(double mbar) => mbar * 0.75 * 1000;
+
         #endregion
 
     }

+ 8 - 1
Venus/Venus_RT/Devices/VCE/HongHuVce.cs

@@ -86,7 +86,7 @@ namespace Venus_RT.Devices.VCE
         #region 私有变量
         private AsyncSerialPort _serialport;
         private string _portname;
-        private string _newline = "\r\r";//终止符 0D 0D
+        private string _newline = "\r";//终止符 0D
         private object _locker = new object();
         private bool _IsAsciiMode;
         private LinkedList<string> _lstAsciiMsgs = new LinkedList<string>();
@@ -533,6 +533,13 @@ namespace Venus_RT.Devices.VCE
             return _serialport.Write(_currentMsg);
         }
 
+        /// <summary>
+        /// 开门提示
+        /// 在honghuVCE中没有ATM信号的内部卡控 可能会导致开门的压差
+        /// 因此每一次都要增加判断,只要引用此处功能的,前面都需要有判断
+        /// 
+        /// </summary>
+        /// <returns></returns>
         public override bool OpenDoor()
         {
             if (!CheckVceStatus())

+ 3 - 3
Venus/Venus_RT/Modules/TM/VenusEntity/SEMFHomeRoutine.cs

@@ -38,7 +38,7 @@ namespace Venus_RT.Modules.TM.VenusEntity
 
         public int currentStepNo;
 
-        public SEMFHomeRoutine(HongHuTM HongHuTM, ITransferRobot robot,IPreAlign vpa) : base(ModuleName.TM)
+        public SEMFHomeRoutine(HongHuTM HongHuTM, ITransferRobot robot,IPreAlign vpa) : base(ModuleName.SETM)
         {
             _HongHuTM = HongHuTM;
             _robot = robot;
@@ -64,8 +64,8 @@ namespace Venus_RT.Modules.TM.VenusEntity
         {
             if(!_TMHomeRBFlag)
                 Runner.Run(HomeStep.seRobotHome, HomeRobot, CheckRobotReady, _robotHomingTimeout)
-                      //.Run(HomeStep.seRobotBlade1CheckLoad, Blade1CheckLoad, CheckRobotReady, _robotHomingTimeout)
-                      //.Run(HomeStep.seRobotBlade2CheckLoad, Blade2CheckLoad, CheckRobotReady, _robotHomingTimeout)
+                      .Run(HomeStep.seRobotBlade1CheckLoad, Blade1CheckLoad, CheckRobotReady, _robotHomingTimeout)
+                      .Run(HomeStep.seRobotBlade2CheckLoad, Blade2CheckLoad, CheckRobotReady, _robotHomingTimeout)
                       .Delay(HomeStep.seRobotDelay, 500)
                       .Run(HomeStep.seSlitDoor, HomeSlitDoor, CheckSlitDoorReady, _slitDoorHomingTimeout)
                       .Delay(HomeStep.seSlitDoorDelay, 500)

+ 2 - 2
Venus/Venus_RT/Modules/TM/VenusEntity/SEMFPMExtendRoutine.cs

@@ -39,7 +39,7 @@ namespace Venus_RT.Modules.TM.VenusEntity
         private Hand _hand;
         private int _extendingTimeout = 120 * 1000;
 
-        public SEMFPMExtendRoutine(HongHuTM honghutm, ITransferRobot robot, IPreAlign vpa) : base(ModuleName.TM)
+        public SEMFPMExtendRoutine(HongHuTM honghutm, ITransferRobot robot, IPreAlign vpa) : base(ModuleName.SETM)
         {
             _TM = honghutm;
             _robot = robot;
@@ -121,7 +121,7 @@ namespace Venus_RT.Modules.TM.VenusEntity
                 }
             }
             Reset();
-            _extendingTimeout = SC.GetValue<int>("TM.ExtendTimeout") * 1000;
+            _extendingTimeout = SC.GetValue<int>("SETM.ExtendTimeout") * 1000;
             return Runner.Start(Module, $"Extend to {_targetModule}");
 
         }

+ 1 - 1
Venus/Venus_RT/Modules/TM/VenusEntity/SEMFPMPickRoutine.cs

@@ -138,7 +138,7 @@ namespace Venus_RT.Modules.TM.VenusEntity
 
         private bool ArmExtend()
         {
-            if (!_tm.CheckSlitValveOpen(_targetModule))
+            if (!_pmModule.IsSlitDoorOpen)
             {
                 LOG.Write(eEvent.ERR_TM, Module, $"Cannot pick as {_targetModule} Door is not Open");
                 return false;

+ 1 - 1
Venus/Venus_RT/Modules/TM/VenusEntity/SEMFPMPlaceRoutine.cs

@@ -133,7 +133,7 @@ namespace Venus_RT.Modules.TM.VenusEntity
 
         private bool ArmExtend()
         {
-            if (!_TM.CheckSlitValveOpen(_targetModule))
+            if (!_pmModule.IsSlitDoorOpen)
             {
                 LOG.Write(eEvent.ERR_TM, Module, $"Cannot place as {_targetModule} Door is not Open");
                 return false;

+ 1 - 1
Venus/Venus_RT/Modules/TM/VenusEntity/SEMFPickRoutine.cs

@@ -47,7 +47,7 @@ namespace Venus_RT.Modules.TM.VenusEntity
         /// <param name="tm"></param>
         /// <param name="robot"></param>
         /// <param name="vpa"></param>
-        public SEMFPickRoutine(HongHuTM tm, ITransferRobot robot, IPreAlign vpa) : base(ModuleName.TM)
+        public SEMFPickRoutine(HongHuTM tm, ITransferRobot robot, IPreAlign vpa) : base(ModuleName.SETM)
         {
             _tm = tm;
             _robot = robot;

+ 2 - 2
Venus/Venus_RT/Modules/TM/VenusEntity/SEMFPlaceRoutine.cs

@@ -42,7 +42,7 @@ namespace Venus_RT.Modules.TM.VenusEntity
 
         Hand _hand;
 
-        public SEMFPlaceRoutine(HongHuTM tm, ITransferRobot robot, IPreAlign vpa) : base(ModuleName.TM)
+        public SEMFPlaceRoutine(HongHuTM tm, ITransferRobot robot, IPreAlign vpa) : base(ModuleName.SETM)
         {
             _tm = tm;
             _robot = robot;
@@ -143,7 +143,7 @@ namespace Venus_RT.Modules.TM.VenusEntity
             //}
 
             Reset();
-            _placingTimeout = SC.GetValue<int>($"TM.PlaceTimeout") * 1000;
+            _placingTimeout = SC.GetValue<int>($"SETM.PlaceTimeout") * 1000;
 
             return Runner.Start(Module, $"Place to {_targetModule}");
         }

+ 3 - 1
Venus/Venus_RT/Modules/TM/VenusEntity/SETMEntity.cs

@@ -112,12 +112,14 @@ namespace Venus_RT.Modules.TM.VenusEntity
         public bool TMIsVAC => _tm.IsTMVAC;
         public bool VCEIsVAC => _tm.IsVCEVAC;
 
-
+        
         public bool IsPMASlitDoorClosed => _tm.PMASlitDoorClosed;
         public bool IsPMBSlitDoorClosed => _tm.PMBSlitDoorClosed;
         public bool IsPMCSlitDoorClosed => _tm.PMCSlitDoorClosed;
         public bool IsVCESlitDoorClosed => _tm.VCESlitDoorClosed;
 
+        public double VCEPressure => _tm.VCEPressure;
+
         public RState RobotStatus
         {
             get

+ 9 - 1
Venus/Venus_RT/Modules/VCE/LoadPrepareRoutine.cs

@@ -83,7 +83,15 @@ namespace Venus_RT.Modules.VCE
 
         private bool VceOuterDoorOpen()
         {
-            return _vce.OpenDoor();
+            if (Singleton<RouteManager>.Instance.seTM.VCEIsATM && Singleton<RouteManager>.Instance.seTM.VCEPressure >= SC.GetValue<int>($"{Module}.OutDoorOpenPressure"))
+            {
+                return _vce.OpenDoor();
+            }
+            else
+            {
+                LOG.Write(eEvent.ERR_VCE_COMMON_Failed, Module, $"{Module} is not ATM or Pressure not arrive {SC.GetValue<int>($"{Module}.OutDoorOpenPressure")}");
+                return false;
+            }
         }
 
         public void Abort()

+ 10 - 1
Venus/Venus_RT/Modules/VCE/LoadWithSMIFRoutine.cs

@@ -8,6 +8,7 @@ using MECF.Framework.RT.ModuleLibrary.VceModules;
 using System;
 using System.Collections.Generic;
 using System.Linq;
+using System.Runtime.InteropServices;
 using System.Text;
 using System.Threading.Tasks;
 using Venus_Core;
@@ -104,7 +105,15 @@ namespace Venus_RT.Modules.VCE
 
         private bool VceOuterDoorOpen()
         {
-            return _vce.OpenDoor();
+            if (Singleton<RouteManager>.Instance.seTM.VCEIsATM && Singleton<RouteManager>.Instance.seTM.VCEPressure >= SC.GetValue<int>($"{Module}.OutDoorOpenPressure"))
+            {
+                return _vce.OpenDoor();
+            }
+            else
+            {
+                LOG.Write(eEvent.ERR_VCE_COMMON_Failed, Module, $"{Module} is not ATM or Pressure not arrive {SC.GetValue<int>($"{Module}.OutDoorOpenPressure")}");
+                return false;
+            }
         }
         private bool CheckVceStageDownDone()
         {

+ 9 - 1
Venus/Venus_RT/Modules/VCE/UnloadRoutine.cs

@@ -92,7 +92,15 @@ namespace Venus_RT.Modules.VCE
 
         private bool OpenOutDoor()
         {
-            return _vce.OpenDoor();
+            if (Singleton<RouteManager>.Instance.seTM.VCEIsATM && Singleton<RouteManager>.Instance.seTM.VCEPressure >= SC.GetValue<int>($"{Module}.OutDoorOpenPressure"))
+            {
+                return _vce.OpenDoor();
+            }
+            else
+            {
+                LOG.Write(eEvent.ERR_VCE_COMMON_Failed, Module, $"{Module} is not ATM or Pressure not arrive {SC.GetValue<int>($"{Module}.OutDoorOpenPressure")}");
+                return false;
+            }
         }
 
         private bool GotoUnload()

+ 10 - 1
Venus/Venus_RT/Modules/VCE/UnloadWithSMIFRoutine.cs

@@ -1,4 +1,5 @@
 using Aitex.Core.RT.Device;
+using Aitex.Core.RT.Log;
 using Aitex.Core.RT.OperationCenter;
 using Aitex.Core.RT.Routine;
 using Aitex.Core.RT.SCCore;
@@ -104,7 +105,15 @@ namespace Venus_RT.Modules.VCE
         }
         private bool OpenOutDoor()
         {
-            return _vce.OpenDoor();
+            if (Singleton<RouteManager>.Instance.seTM.VCEIsATM && Singleton<RouteManager>.Instance.seTM.VCEPressure >= SC.GetValue<int>($"{Module}.OutDoorOpenPressure"))
+            {
+                return _vce.OpenDoor();
+            }
+            else
+            {
+                LOG.Write(eEvent.ERR_VCE_COMMON_Failed, Module, $"{Module} is not ATM or Pressure not arrive {SC.GetValue<int>($"{Module}.OutDoorOpenPressure")}");
+                return false;
+            }
         }
 
         private bool GotoUnload()

+ 11 - 1
Venus/Venus_RT/Modules/VCE/VceEntity.cs

@@ -3,6 +3,8 @@ using Aitex.Core.RT.Device;
 using Aitex.Core.RT.Fsm;
 using Aitex.Core.RT.Log;
 using Aitex.Core.RT.OperationCenter;
+using Aitex.Core.RT.SCCore;
+using Aitex.Core.Util;
 using Aitex.Core.Utilities;
 using MECF.Framework.Common.Equipment;
 using MECF.Framework.Common.Schedulers;
@@ -488,7 +490,15 @@ namespace Venus_RT.Modules.VCE
 
         private bool fnStartOpenDoor(object[] param)
         {
-            return _vce.OpenDoor();
+            if (Singleton<RouteManager>.Instance.seTM.VCEIsATM && Singleton<RouteManager>.Instance.seTM.VCEPressure >= SC.GetValue<int>($"{_modulename}.OutDoorOpenPressure"))
+            {
+                return _vce.OpenDoor();
+            }
+            else
+            {
+                LOG.Write(eEvent.ERR_VCE_COMMON_Failed, _modulename, $"{_modulename} is not ATM or Pressure not arrive {SC.GetValue<int>($"{_modulename}.OutDoorOpenPressure")}");
+                return false;
+            }
         }
 
         private bool fnOpenDoorTimeout(object[] param)