Bladeren bron

robot 不能home问题提交

lixiang 1 jaar geleden
bovenliggende
commit
93b4531b7b

+ 5 - 0
Venus/Venus_Core/RecipeResult.cs

@@ -25,5 +25,10 @@ namespace Venus_Core
         [DataMember]
         public TimeSpan RecipeStepDuringTime { get; set; }
 
+        [DataMember]
+        public int RecipeCurrentCounter { get; set; }
+        [DataMember]
+        public int RecipeAllCounters { get; set; }
+
     }
 }

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

@@ -229,7 +229,10 @@ namespace Venus_MainPages.ViewModels
         private DelegateCommand _CloseTMPumpCommand;
         public DelegateCommand CloseTMPumpCommand =>
             _CloseTMPumpCommand ?? (_CloseTMPumpCommand = new DelegateCommand(OnCloseTMPump));
-
+        private DelegateCommand<object> _DoorUpDownCommand;
+        public DelegateCommand<object> DoorUpDownCommand =>
+            _DoorUpDownCommand ?? (_DoorUpDownCommand = new DelegateCommand<object>(OnDoorUpDown));
+        
         #endregion
 
         #region 构造函数
@@ -307,6 +310,11 @@ namespace Venus_MainPages.ViewModels
             InvokeClient.Instance.Service.DoOperation("LL.ControlPump", false);
 
         }
+        private void OnDoorUpDown(object obj)
+        {
+            //string[] value=obj.ToString().Split('.');
+            InvokeClient.Instance.Service.DoOperation(obj.ToString());
+        }
         #endregion
 
         #region 私有方法
@@ -364,6 +372,15 @@ namespace Venus_MainPages.ViewModels
             m_RtDataKeys.Add($"TM.LoadlockForelineGauge.Value");
             m_RtDataKeys.Add($"TM.PumpIsRunning");
             m_RtDataKeys.Add($"LL.PumpIsRunning");
+            m_RtDataKeys.Add("PMA.IsSlitDoorClosed");
+            m_RtDataKeys.Add("PMB.IsSlitDoorClosed");
+            m_RtDataKeys.Add("PMC.IsSlitDoorClosed");
+            m_RtDataKeys.Add("PMD.IsSlitDoorClosed");
+
+            m_RtDataKeys.Add("TM.LLATSlitDoor.IsClosed");
+            m_RtDataKeys.Add("TM.LLBTSlitDoor.IsClosed");
+            m_RtDataKeys.Add("TM.LLAESlitDoor.IsClosed");
+            m_RtDataKeys.Add("TM.LLBESlitDoor.IsClosed");
         }
 
         #endregion

+ 13 - 3
Venus/Venus_MainPages/Views/OverVenusView.xaml

@@ -1030,7 +1030,7 @@
             <!--<Button Width="120" Height="30" Content="Abort"            Canvas.Left="910" Canvas.Top="690"  IsEnabled="{Binding IsAutoMode}"/>
             <Button Width="120" Height="30" Content="Chamber Offline"  Canvas.Left="1110" Canvas.Top="690" IsEnabled="{Binding IsAutoMode}"/>-->
         </Canvas>
-        <Grid Width="350" Height="150" Canvas.Left="1350" Canvas.Top="20"  unity:GridOptions.LineBrush="#afb4db"  unity:GridOptions.ShowBorder="True" Background="#E9EDF4">
+        <Grid Width="350" Height="150" Canvas.Left="1350" Canvas.Top="10"  unity:GridOptions.LineBrush="#afb4db"  unity:GridOptions.ShowBorder="True" Background="#E9EDF4">
             <Grid.RowDefinitions>
                 <RowDefinition/>
                 <RowDefinition/>
@@ -1038,17 +1038,20 @@
                 <RowDefinition/>
                 <RowDefinition/>
                 <RowDefinition/>
+                <RowDefinition/>
+
             </Grid.RowDefinitions>
             <Grid.ColumnDefinitions>
                 <ColumnDefinition Width="2*"/>
                 <ColumnDefinition Width="3*"/>
             </Grid.ColumnDefinitions>
             <TextBlock Grid.Row="0" Text="Recipe Name"        FontSize="15"  Padding="10,2,0,0" Background="#D0D8E8"/>
-            <TextBlock Grid.Row="1" Text="Step Number/All"        FontSize="15"  Padding="10,2,0,0" Background="#D0D8E8"/>
+            <TextBlock Grid.Row="1" Text="Step Num/All"        FontSize="15"  Padding="10,2,0,0" Background="#D0D8E8"/>
             <TextBlock Grid.Row="2" Text="Step Type"          FontSize="15"  Padding="10,2,0,0" Background="#D0D8E8"/>
             <TextBlock Grid.Row="3" Text="Step Elpased Time"  FontSize="15"  Padding="10,2,0,0" Background="#D0D8E8"/>
             <TextBlock Grid.Row="4" Text="Step Time(s)"       FontSize="15"  Padding="10,2,0,0" Background="#D0D8E8"/>
             <TextBlock Grid.Row="5" Text="Next Step"       FontSize="15"  Padding="10,2,0,0" Background="#D0D8E8"/>
+            <TextBlock Grid.Row="6" Text="Cycle Num/ALL"  FontSize="15" Padding="10,2,0,0" Background="#D0D8E8"/>
 
 
             <TextBlock Grid.Row="0" Grid.Column="1" Text="{Binding CurrentRecipeResult.RecipeName}" FontSize="15" Padding="10,2,0,0" Background="#E9EDF4"/>
@@ -1064,7 +1067,14 @@
             <TextBlock Grid.Row="3" Grid.Column="1" Text="{Binding CurrentRecipeResult.RecipeStepDuringTime, StringFormat=hh\\:mm\\:ss}"  FontSize="15" Padding="10,2,0,0"/>
             <TextBlock Grid.Row="4" Grid.Column="1" Text="{Binding CurrentRecipeResult.RecipeStepSetTime}"  FontSize="15" Padding="10,2,0,0"/>
             <customControls:PathButton BorderThickness="0" PathData="{StaticResource Icon_Next}" Background="Transparent" DefaultFillBrush="Black"  Foreground="White"  Cursor="Hand" Grid.Row="5" Grid.Column="1"    Visibility="{Binding IsProcessing,Converter={StaticResource BoolToVisibility2}}" Command="{Binding EndStepCommand}" Margin="15,0,0,0" HorizontalAlignment="Left"/>
-
+            <TextBlock Grid.Row="6" Grid.Column="1"   FontSize="15" Padding="10,2,0,0" Background="#E9EDF4">
+                <TextBlock.Text>
+                    <MultiBinding StringFormat="{}{0}/{1}">
+                        <Binding Path="CurrentRecipeResult.RecipeCurrentCounter"></Binding>
+                        <Binding Path="CurrentRecipeResult.RecipeAllCounters"></Binding>
+                    </MultiBinding>
+                </TextBlock.Text>
+            </TextBlock>
         </Grid>
 
         <Grid Width="300" Height="260"  Canvas.Left="500" Canvas.Top="402" Background="#E8E8E8" unity:GridOptions.LineBrush="#afb4db" unity:GridOptions.ShowBorder="True">

+ 75 - 45
Venus/Venus_MainPages/Views/TMOperationView.xaml

@@ -17,6 +17,8 @@
     <UserControl.Resources>
         <converters:BoolToBool   x:Key="BoolToBool"/>
         <converters:BoolToColor  x:Key="boolToColor"/>
+        <converters:BoolToColor2  x:Key="boolToColor2"/>
+
         <converters2:AllMultiValueConverter  x:Key="AllMultiValueConverter"/>
         <converters2:AnyMultiValueConverter  x:Key="AnyMultiValueConverter"/>
 
@@ -51,13 +53,13 @@
             <userControls:FlowPipe   Height="8"  Width="240" Canvas.Left="260" Canvas.Top="450" IsFlowing="{Binding LLAVentValveIsOpen}"/>
             <userControls:FlowPipe   Height="8"  Width="42" Canvas.Left="340" Canvas.Top="256" RotateTransformValue="-90" IsFlowing="{Binding TMFastVentValveIsOpen}"/>
             <userControls:FlowPipe   Height="8"  Width="40" Canvas.Left="348" Canvas.Top="254" RotateTransformValue="90" IsFlowing="{Binding TMSoftVentValveIsOpen}"/>
-            <userControls:FlowPipe   Height="8"  Width="94" Canvas.Left="346" Canvas.Top="210" IsFlowing="{Binding TMFastVentValveIsOpen}"/>
-            <userControls:FlowPipe   Height="8"  Width="94" Canvas.Left="346" Canvas.Top="290" IsFlowing="{Binding TMSoftVentValveIsOpen}"/>
-            <userControls:FlowPipe   Height="8"  Width="42" Canvas.Left="440" Canvas.Top="256" RotateTransformValue="-90" IsFlowing="{Binding TMFastVentValveIsOpen}"/>
-            <userControls:FlowPipe   Height="8"  Width="40" Canvas.Left="440" Canvas.Top="294" RotateTransformValue="-90" IsFlowing="{Binding TMSoftVentValveIsOpen}">
+            <userControls:FlowPipe   Height="8"  Width="124" Canvas.Left="346" Canvas.Top="210" IsFlowing="{Binding TMFastVentValveIsOpen}"/>
+            <userControls:FlowPipe   Height="8"  Width="124" Canvas.Left="346" Canvas.Top="290" IsFlowing="{Binding TMSoftVentValveIsOpen}"/>
+            <userControls:FlowPipe   Height="8"  Width="42" Canvas.Left="470" Canvas.Top="256" RotateTransformValue="-90" IsFlowing="{Binding TMFastVentValveIsOpen}"/>
+            <userControls:FlowPipe   Height="8"  Width="40" Canvas.Left="470" Canvas.Top="294" RotateTransformValue="-90" IsFlowing="{Binding TMSoftVentValveIsOpen}">
 
             </userControls:FlowPipe>
-            <userControls:FlowPipe   Height="8"  Width="80" Canvas.Left="446" Canvas.Top="250">
+            <userControls:FlowPipe   Height="8"  Width="80" Canvas.Left="476" Canvas.Top="250">
                 <userControls:FlowPipe.IsFlowing>
                     <MultiBinding Converter="{StaticResource AnyMultiValueConverter}">
                         <Binding Path="TMSoftVentValveIsOpen"/>
@@ -65,10 +67,10 @@
                     </MultiBinding>
                 </userControls:FlowPipe.IsFlowing>
             </userControls:FlowPipe>
-            <userControls:FlowPipe   Height="8"  Width="825" Canvas.Left="256" Canvas.Top="50" IsFlowing="{Binding LLBVentValveIsOpen}"/>
-            <userControls:FlowPipe   Height="8"  Width="394" Canvas.Left="1092" Canvas.Top="54" RotateTransformValue="90" IsFlowing="{Binding LLBVentValveIsOpen}"/>
-            <userControls:FlowPipe   Height="8"  Width="285" Canvas.Left="800" Canvas.Top="450" IsFlowing="{Binding LLBVentValveIsOpen}" IsReverse="True"/>
-            <userControls:FlowPipe   Height="8"  Width="100" Canvas.Left="657" Canvas.Top="454" RotateTransformValue="90">
+            <userControls:FlowPipe   Height="8"  Width="804" Canvas.Left="256" Canvas.Top="50" IsFlowing="{Binding LLBVentValveIsOpen}"/>
+            <userControls:FlowPipe   Height="8"  Width="394" Canvas.Left="1072" Canvas.Top="54" RotateTransformValue="90" IsFlowing="{Binding LLBVentValveIsOpen}"/>
+            <userControls:FlowPipe   Height="8"  Width="265" Canvas.Left="800" Canvas.Top="450" IsFlowing="{Binding LLBVentValveIsOpen}" IsReverse="True"/>
+            <userControls:FlowPipe   Height="8"  Width="100" Canvas.Left="657" Canvas.Top="450" RotateTransformValue="90">
                 <userControls:FlowPipe.IsFlowing>
                     <MultiBinding Converter="{StaticResource AnyMultiValueConverter}">
                         <Binding Path="TMSoftPumpValveIsOpen"/>
@@ -180,10 +182,10 @@
                 </userControls:Pump.ContextMenu>
             </userControls:Pump>
 
-            <customControls:CommonValveControl Status="{Binding TMValveN2IsOpen,Mode=TwoWay}"  ValveOrientation="Horizontal" Height="20" Width="20"  Canvas.Left="110" Canvas.Top="44"  Tag="TMValveN2" Command="{Binding ControlValveCommand}" CommandParameter="{Binding RelativeSource={x:Static RelativeSource.Self}}" IsCanEdit="True"/>
-            <customControls:CommonValveControl Status="{Binding TMFastVentValveIsOpen,Mode=TwoWay}"  ValveOrientation="Horizontal" Height="20" Width="20"  Canvas.Left="410" Canvas.Top="204"  Tag="TMFastVentValve" Command="{Binding ControlValveCommand}" CommandParameter="{Binding RelativeSource={x:Static RelativeSource.Self}}" IsCanEdit="True"/>
+            <customControls:CommonValveControl Status="{Binding TMValveN2IsOpen,Mode=TwoWay}"  ValveOrientation="Horizontal" Height="20" Width="20"  Canvas.Left="160" Canvas.Top="44"  Tag="TMValveN2" Command="{Binding ControlValveCommand}" CommandParameter="{Binding RelativeSource={x:Static RelativeSource.Self}}" IsCanEdit="True"/>
+            <customControls:CommonValveControl Status="{Binding TMFastVentValveIsOpen,Mode=TwoWay}"  ValveOrientation="Horizontal" Height="20" Width="20"  Canvas.Left="440" Canvas.Top="204"  Tag="TMFastVentValve" Command="{Binding ControlValveCommand}" CommandParameter="{Binding RelativeSource={x:Static RelativeSource.Self}}" IsCanEdit="True"/>
             <customControls:CommonValveControl Status="{Binding LLAVentValveIsOpen,Mode=TwoWay}"  ValveOrientation="Vertical"   Height="20" Width="20"  Canvas.Left="245.5" Canvas.Top="284"  Tag="LLAVentValve" Command="{Binding ControlValveCommand}" CommandParameter="{Binding RelativeSource={x:Static RelativeSource.Self}}" IsCanEdit="True"/>
-            <customControls:CommonValveControl Status="{Binding LLBVentValveIsOpen,Mode=TwoWay}"  ValveOrientation="Vertical"   Height="20" Width="20"  Canvas.Left="1078" Canvas.Top="284"  Tag="LLBVentValve" Command="{Binding ControlValveCommand}" CommandParameter="{Binding RelativeSource={x:Static RelativeSource.Self}}" IsCanEdit="True"/>
+            <customControls:CommonValveControl Status="{Binding LLBVentValveIsOpen,Mode=TwoWay}"  ValveOrientation="Vertical"   Height="20" Width="20"  Canvas.Left="1058" Canvas.Top="284"  Tag="LLBVentValve" Command="{Binding ControlValveCommand}" CommandParameter="{Binding RelativeSource={x:Static RelativeSource.Self}}" IsCanEdit="True"/>
             <customControls:CommonValveControl Status="{Binding TMSoftPumpValveIsOpen,Mode=TwoWay}"  ValveOrientation="Vertical"   Height="20" Width="20"  Canvas.Left="603" Canvas.Top="570"  Tag="TMSoftPumpValve" Command="{Binding ControlValveCommand}" CommandParameter="{Binding RelativeSource={x:Static RelativeSource.Self}}" IsCanEdit="True"/>
             <customControls:CommonValveControl Status="{Binding TMFastPumpValveIsOpen,Mode=TwoWay}"  ValveOrientation="Vertical"   Height="20" Width="20"  Canvas.Left="683" Canvas.Top="570"  Tag="TMFastPumpValve" Command="{Binding ControlValveCommand}" CommandParameter="{Binding RelativeSource={x:Static RelativeSource.Self}}" IsCanEdit="True"/>
             <customControls:CommonValveControl Status="{Binding LLASoftPumpValveIsOpen,Mode=TwoWay}"  ValveOrientation="Vertical"   Height="20" Width="20"  Canvas.Left="453" Canvas.Top="650"  Tag="LLASoftPumpValve" Command="{Binding ControlValveCommand}" CommandParameter="{Binding RelativeSource={x:Static RelativeSource.Self}}" IsCanEdit="True"/>
@@ -192,12 +194,12 @@
             <customControls:CommonValveControl Status="{Binding LLBFastPumpValveIsOpen,Mode=TwoWay}"  ValveOrientation="Vertical"   Height="20" Width="20"  Canvas.Left="833" Canvas.Top="650"  Tag="LLBFastPumpValve" Command="{Binding ControlValveCommand}" CommandParameter="{Binding RelativeSource={x:Static RelativeSource.Self}}" IsCanEdit="True"/>
 
 
-            <userControls:Pipe2    Canvas.Left="1092"  Canvas.Top="445" HorizontalAlignment="Left" VerticalAlignment="Top" RotateTransformValue="90" />
-            <userControls:Pipe2    Canvas.Left="1079"  Canvas.Top="50" HorizontalAlignment="Left" VerticalAlignment="Top" />
+            <userControls:Pipe2    Canvas.Left="1072"  Canvas.Top="445" HorizontalAlignment="Left" VerticalAlignment="Top" RotateTransformValue="90" />
+            <userControls:Pipe2    Canvas.Left="1059"  Canvas.Top="50" HorizontalAlignment="Left" VerticalAlignment="Top" />
             <userControls:Pipe2    Canvas.Left="265"  Canvas.Top="458" HorizontalAlignment="Left" VerticalAlignment="Top" RotateTransformValue="180"/>
 
-            <userControls:Pipe2    Canvas.Left="435"  Canvas.Top="210" HorizontalAlignment="Left" VerticalAlignment="Top" />
-            <userControls:Pipe2    Canvas.Left="448"  Canvas.Top="285" HorizontalAlignment="Left" VerticalAlignment="Top" RotateTransformValue="90" />
+            <userControls:Pipe2    Canvas.Left="465"  Canvas.Top="210" HorizontalAlignment="Left" VerticalAlignment="Top" />
+            <userControls:Pipe2    Canvas.Left="478"  Canvas.Top="285" HorizontalAlignment="Left" VerticalAlignment="Top" RotateTransformValue="90" />
             <userControls:Pipe2    Canvas.Left="353"  Canvas.Top="298" HorizontalAlignment="Left" VerticalAlignment="Top" RotateTransformValue="180"/>
             <userControls:Pipe2    Canvas.Left="340"  Canvas.Top="223" HorizontalAlignment="Left" VerticalAlignment="Top" RotateTransformValue="270"/>
 
@@ -220,11 +222,12 @@
             <userControls:Pipe2    Canvas.Left="512"  Canvas.Top="728" HorizontalAlignment="Left" VerticalAlignment="Top" RotateTransformValue="180"/>
             <userControls:Pipe2    Canvas.Left="807"  Canvas.Top="715" HorizontalAlignment="Left" VerticalAlignment="Top" RotateTransformValue="90"/>
 
-            <TextBlock  FontSize="15" Canvas.Top="20" Canvas.Left="112" Text="V1"/>
-            <TextBlock  FontSize="15" Canvas.Top="180" Canvas.Left="390" Text="Fast Vent"/>
-            <TextBlock  FontSize="15" Canvas.Top="310" Canvas.Left="390" Text="Soft Vent"/>
+            <TextBlock  FontSize="15" Canvas.Top="20" Canvas.Left="162" Text="V1"/>
+            <TextBlock  FontSize="15" Canvas.Top="180" Canvas.Left="420" Text="Fast Vent"/>
+            <TextBlock  FontSize="15" Canvas.Top="310" Canvas.Left="420" Text="Soft Vent"/>
+      
             <TextBlock  FontSize="15" Canvas.Top="285" Canvas.Left="212" Text="V9"/>
-            <TextBlock  FontSize="15" Canvas.Top="285" Canvas.Left="1110" Text="V15"/>
+            <TextBlock  FontSize="15" Canvas.Top="285" Canvas.Left="1090" Text="V15"/>
             <TextBlock  FontSize="15" Canvas.Top="785" Canvas.Left="625" Text="LL Pump"/>
             <TextBlock  FontSize="15" Canvas.Top="700" Canvas.Left="620" Text="TM Pump"/>
 
@@ -232,7 +235,7 @@
             <TextBlock  FontSize="15" Canvas.Top="565" Canvas.Left="705" Text="Fast&#x0A; V3"/>
 
             <TextBlock  FontSize="15" Canvas.Top="640" Canvas.Left="425" Text="Soft&#x0A; V6"/>
-            <TextBlock  FontSize="15" Canvas.Top="640" Canvas.Left="505" Text="Fast&#x0A; V7"/>
+            <TextBlock  FontSize="15" Canvas.Top="640" Canvas.Left="555" Text="Fast&#x0A; V7"/>
 
             <TextBlock  FontSize="15" Canvas.Top="640" Canvas.Left="775" Text="Soft&#x0A;V12"/>
             <TextBlock  FontSize="15" Canvas.Top="640" Canvas.Left="855" Text="Fast&#x0A;V13"/>
@@ -369,15 +372,14 @@
                 </Border.Background>
             </Border>
             <userControls:TextboxWithLabel  Canvas.Left="668" Canvas.Top="619" LabelValue="CM6(Torr)" TextBoxValue="{Binding RtDataValues[TM.TMForelineGauge.Value],StringFormat='F1'}" TextBoxColor="#D7E4BD"/>
-
-            
+           
 
         </Canvas>
         
-        <Canvas Canvas.Top="80" Canvas.Left="140" Width="450" Height="800">
+        <Canvas Canvas.Top="74" Canvas.Left="140" Width="450" Height="800">
             <userControls:MainTM Width="300" Height="250" Canvas.Left="380" Canvas.Top="90"/>
-            <userControls:LoadLockLeft  Door2IsVisibility="Collapsed" Width="150" Height="150"  Canvas.Top="310"  Canvas.Left="358"   DoorIsOpen="{Binding RtDataValues[TM.LLATSlitDoor.IsClosed],Converter={StaticResource BoolToBool}}" Visibility="{Binding LLAIsInstalled,Converter={StaticResource bool2VisibilityConverter}}" RobotWafer="{Binding LLAWafer}"/>
-            <userControls:LoadLockRight Door2IsVisibility="Collapsed" Width="150" Height="150" Canvas.Top="309"  Canvas.Left="519"  DoorIsOpen="{Binding RtDataValues[TM.LLBTSlitDoor.IsClosed],Converter={StaticResource BoolToBool}}"   Visibility="{Binding LLBIsInstalled,Converter={StaticResource bool2VisibilityConverter}}" RobotWafer="{Binding LLBWafer}"/>
+            <userControls:LoadLockLeft   Width="150" Height="150"  Canvas.Top="310"  Canvas.Left="358"   DoorIsOpen="{Binding RtDataValues[TM.LLATSlitDoor.IsClosed],Converter={StaticResource BoolToBool}}" Visibility="{Binding LLAIsInstalled,Converter={StaticResource bool2VisibilityConverter}}" RobotWafer="{Binding LLAWafer}"/>
+            <userControls:LoadLockRight  Width="150" Height="150" Canvas.Top="309"  Canvas.Left="519"  DoorIsOpen="{Binding RtDataValues[TM.LLBTSlitDoor.IsClosed],Converter={StaticResource BoolToBool}}"   Visibility="{Binding LLBIsInstalled,Converter={StaticResource bool2VisibilityConverter}}" RobotWafer="{Binding LLBWafer}"/>
 
 
             <userControls:TMChamber x:Name="PMA" Canvas.Top="302"  Canvas.Left="233" Width="140" Height="140" RotateTransformValue="-90"  DoorIsOpen="{Binding RtDataValues[PMA.IsSlitDoorClosed],Converter={StaticResource BoolToBool}}" RobotWafer="{Binding PMAWafer}" PMVisibility="Collapsed"/>
@@ -385,7 +387,9 @@
             <userControls:TMChamber x:Name="PMC" Canvas.Top="-38"  Canvas.Left="588" Width="140" Height="140" RotateTransformValue="30"   DoorIsOpen="{Binding RtDataValues[PMC.IsSlitDoorClosed],Converter={StaticResource BoolToBool}}" RobotWafer="{Binding PMCWafer}" PMVisibility="Collapsed"/>
             <userControls:TMChamber x:Name="PMD" Canvas.Top="160"  Canvas.Left="788" Width="140" Height="140" RotateTransformValue="90"   DoorIsOpen="{Binding RtDataValues[PMD.IsSlitDoorClosed],Converter={StaticResource BoolToBool}}" RobotWafer="{Binding PMDWafer}" PMVisibility="Collapsed"/>
         </Canvas>
-        <customControls:CommonValveControl Status="{Binding TMSoftVentValveIsOpen,Mode=TwoWay}"  ValveOrientation="Horizontal" Height="20" Width="20"  Canvas.Left="410" Canvas.Top="284"  Tag="TMSoftVentValve" Command="{Binding ControlValveCommand}" CommandParameter="{Binding RelativeSource={x:Static RelativeSource.Self}}" IsCanEdit="True"/>
+        <customControls:CommonValveControl Status="{Binding TMSoftVentValveIsOpen,Mode=TwoWay}"  ValveOrientation="Horizontal" Height="20" Width="20"  Canvas.Left="440" Canvas.Top="284"  Tag="TMSoftVentValve" Command="{Binding ControlValveCommand}" CommandParameter="{Binding RelativeSource={x:Static RelativeSource.Self}}" IsCanEdit="True"/>
+        <TextBlock  FontSize="15" Canvas.Top="260" Canvas.Left="350" Text="Pressure(mTorr)"/>
+        <TextBox    Canvas.Top="286" Canvas.Left="354" Width="80" VerticalContentAlignment="Center" HorizontalContentAlignment="Center"/>
 
         <!--<StackPanel >-->
             <Grid Canvas.Top="10" Canvas.Right="10" Width="720">
@@ -611,7 +615,7 @@
             </Grid>
         </StackPanel>
 
-        <StackPanel Canvas.Top="610" Canvas.Right="10" Width="720" Visibility="Collapsed">
+        <StackPanel Canvas.Top="530" Canvas.Right="10" Width="720" >
             <Grid>
                 <Grid.RowDefinitions>
                     <RowDefinition Height="30"/>
@@ -633,30 +637,56 @@
                     </StackPanel>
                 </Border>
                 <Border  Grid.Row="1" BorderBrush="{DynamicResource Table_BD}"  BorderThickness="1,0,1,1" >
-                    <Canvas Background="{DynamicResource Table_BG_Content}" Margin="1" Height="130" Width="712">
-                        <Ellipse Width="22" Height="22" Fill="{Binding GasIsFlowing,Converter={StaticResource boolToColor}}"  Canvas.Left="180" Canvas.Top="10" Stroke="Silver" StrokeThickness="2"/>
-                        <Button Width="120" Height="25" Content="PMA Door Open"                                               Canvas.Left="210" Canvas.Top="10" Style="{StaticResource SysBtnStyle}"  Command="{Binding GasCommand}" IsEnabled="{Binding IsAutoMode,Converter={StaticResource BoolToBool}}"/>
+                    <Canvas Background="{DynamicResource Table_BG_Content}" Margin="1" Height="230" Width="712">
+                        <Ellipse Width="22" Height="22" Fill="{Binding RtDataValues[PMA.IsSlitDoorClosed],Converter={StaticResource boolToColor2}}"  Canvas.Left="180" Canvas.Top="10" Stroke="Silver" StrokeThickness="2" Visibility="{Binding PMAIsInstalled,Converter={StaticResource bool2VisibilityConverter}}"/>
+                        <Button Width="130" Height="25" Content="PMA Door Open"                                             Canvas.Left="210" Canvas.Top="10" Style="{StaticResource SysBtnStyle}"  Command="{Binding DoorUpDownCommand}" CommandParameter="PMA.SlitDoor.Open" IsEnabled="{Binding RtDataValues[PMA.IsSlitDoorClosed]}" Visibility="{Binding PMAIsInstalled,Converter={StaticResource bool2VisibilityConverter}}"/>
+
+                        <Ellipse Width="22" Height="22" Fill="{Binding RtDataValues[PMA.IsSlitDoorClosed],Converter={StaticResource boolToColor}}"  Canvas.Left="380" Canvas.Top="10" Stroke="Silver" StrokeThickness="2" Visibility="{Binding PMAIsInstalled,Converter={StaticResource bool2VisibilityConverter}}"/>
+                        <Button Width="130" Height="25" Content="PMA Door Closed"                                               Canvas.Left="410" Canvas.Top="10" Style="{StaticResource SysBtnStyle}" Command="{Binding DoorUpDownCommand}" CommandParameter="PMA.SlitDoor.Close" IsEnabled="{Binding RtDataValues[PMA.IsSlitDoorClosed],Converter={StaticResource BoolToBool}}" Visibility="{Binding PMAIsInstalled,Converter={StaticResource bool2VisibilityConverter}}"/>
+
+                        <Ellipse Width="22" Height="22" Fill="{Binding RtDataValues[PMB.IsSlitDoorClosed],Converter={StaticResource boolToColor2}}"  Canvas.Left="180" Canvas.Top="40" Stroke="Silver" StrokeThickness="2" Visibility="{Binding PMAIsInstalled,Converter={StaticResource bool2VisibilityConverter}}"/>
+                        <Button Width="130" Height="25" Content="PMB Door Open"                                               Canvas.Left="210" Canvas.Top="40" Style="{StaticResource SysBtnStyle}"  Command="{Binding DoorUpDownCommand}" CommandParameter="PMB.SlitDoor.Open" IsEnabled="{Binding RtDataValues[PMB.IsSlitDoorClosed]}" Visibility="{Binding PMAIsInstalled,Converter={StaticResource bool2VisibilityConverter}}"/>
+
+                        <Ellipse Width="22" Height="22" Fill="{Binding RtDataValues[PMB.IsSlitDoorClosed],Converter={StaticResource boolToColor}}"  Canvas.Left="380" Canvas.Top="40" Stroke="Silver" StrokeThickness="2" Visibility="{Binding PMAIsInstalled,Converter={StaticResource bool2VisibilityConverter}}"/>
+                        <Button Width="130" Height="25" Content="PMB Door Closed"                                               Canvas.Left="410" Canvas.Top="40" Style="{StaticResource SysBtnStyle}" Command="{Binding DoorUpDownCommand}" CommandParameter="PMB.SlitDoor.Close" IsEnabled="{Binding RtDataValues[PMB.IsSlitDoorClosed],Converter={StaticResource BoolToBool}}" Visibility="{Binding PMAIsInstalled,Converter={StaticResource bool2VisibilityConverter}}"/>
+
+                        <Ellipse Width="22" Height="22" Fill="{Binding RtDataValues[PMC.IsSlitDoorClosed],Converter={StaticResource boolToColor2}}"  Canvas.Left="180" Canvas.Top="70" Stroke="Silver" StrokeThickness="2" Visibility="{Binding PMCIsInstalled,Converter={StaticResource bool2VisibilityConverter}}"/>
+                        <Button Width="130" Height="25" Content="PMC Door Open"                                               Canvas.Left="210" Canvas.Top="70" Style="{StaticResource SysBtnStyle}"  Command="{Binding DoorUpDownCommand}" CommandParameter="PMC.SlitDoor.Open" IsEnabled="{Binding RtDataValues[PMC.IsSlitDoorClosed]}" Visibility="{Binding PMCIsInstalled,Converter={StaticResource bool2VisibilityConverter}}"/>
+
+                        <Ellipse Width="22" Height="22" Fill="{Binding RtDataValues[PMC.IsSlitDoorClosed],Converter={StaticResource boolToColor}}"  Canvas.Left="380" Canvas.Top="70" Stroke="Silver" StrokeThickness="2" Visibility="{Binding PMCIsInstalled,Converter={StaticResource bool2VisibilityConverter}}"/>
+                        <Button Width="130" Height="25" Content="PMC Door Closed"                                               Canvas.Left="410" Canvas.Top="70" Style="{StaticResource SysBtnStyle}"  Command="{Binding DoorUpDownCommand}" CommandParameter="PMC.SlitDoor.Close" IsEnabled="{Binding RtDataValues[PMC.IsSlitDoorClosed],Converter={StaticResource BoolToBool}}" Visibility="{Binding PMCIsInstalled,Converter={StaticResource bool2VisibilityConverter}}"/>
+
+                        <Ellipse Width="22" Height="22" Fill="{Binding RtDataValues[PMD.IsSlitDoorClosed],Converter={StaticResource boolToColor2}}"  Canvas.Left="180" Canvas.Top="100" Stroke="Silver" StrokeThickness="2" Visibility="{Binding PMDIsInstalled,Converter={StaticResource bool2VisibilityConverter}}"/>
+                        <Button Width="130" Height="25" Content="PMD Door Open"                                               Canvas.Left="210" Canvas.Top="100" Style="{StaticResource SysBtnStyle}"  Command="{Binding DoorUpDownCommand}" CommandParameter="PMD.SlitDoor.Open" IsEnabled="{Binding RtDataValues[PMD.IsSlitDoorClosed]}" Visibility="{Binding PMDIsInstalled,Converter={StaticResource bool2VisibilityConverter}}"/>
+
+                        <Ellipse Width="22" Height="22" Fill="{Binding RtDataValues[PMD.IsSlitDoorClosed],Converter={StaticResource boolToColor}}"  Canvas.Left="380" Canvas.Top="100" Stroke="Silver" StrokeThickness="2" Visibility="{Binding PMDIsInstalled,Converter={StaticResource bool2VisibilityConverter}}"/>
+                        <Button Width="130" Height="25" Content="PMD Door Closed"                                               Canvas.Left="410" Canvas.Top="100" Style="{StaticResource SysBtnStyle}"  Command="{Binding DoorUpDownCommand}" CommandParameter="PMD.SlitDoor.Close" IsEnabled="{Binding RtDataValues[PMD.IsSlitDoorClosed],Converter={StaticResource BoolToBool}}" Visibility="{Binding PMDIsInstalled,Converter={StaticResource bool2VisibilityConverter}}"/>
+
+                        <Ellipse Width="22" Height="22" Fill="{Binding RtDataValues[TM.LLATSlitDoor.IsClosed],Converter={StaticResource boolToColor2}}"  Canvas.Left="180" Canvas.Top="130" Stroke="Silver" StrokeThickness="2" />
+                        <Button Width="130" Height="25" Content="LLATSlitDoor Open"                                               Canvas.Left="210" Canvas.Top="130" Style="{StaticResource SysBtnStyle}"  Command="{Binding DoorUpDownCommand}" CommandParameter="TM.LLATSlitDoor.Open" IsEnabled="{Binding RtDataValues[TM.LLATSlitDoor.IsClosed]}" />
+
+                        <Ellipse Width="22" Height="22" Fill="{Binding RtDataValues[TM.LLATSlitDoor.IsClosed],Converter={StaticResource boolToColor}}"  Canvas.Left="380" Canvas.Top="130" Stroke="Silver" StrokeThickness="2" />
+                        <Button Width="130" Height="25" Content="LLATSlitDoor Closed"                                               Canvas.Left="410" Canvas.Top="130" Style="{StaticResource SysBtnStyle}"  Command="{Binding DoorUpDownCommand}" CommandParameter="TM.LLATSlitDoor.Close" IsEnabled="{Binding RtDataValues[TM.LLATSlitDoor.IsClosed],Converter={StaticResource BoolToBool}}" />
+
+                        <Ellipse Width="22" Height="22" Fill="{Binding RtDataValues[TM.LLAESlitDoor.IsClosed],Converter={StaticResource boolToColor2}}"  Canvas.Left="180" Canvas.Top="160" Stroke="Silver" StrokeThickness="2" />
+                        <Button Width="130" Height="25" Content="LLAESlitDoor Open"                                               Canvas.Left="210" Canvas.Top="160" Style="{StaticResource SysBtnStyle}"  Command="{Binding DoorUpDownCommand}" CommandParameter="TM.LLAESlitDoor.Open" IsEnabled="{Binding RtDataValues[TM.LLAESlitDoor.IsClosed]}" />
 
-                        <Ellipse Width="22" Height="22" Fill="{Binding GasIsFlowing,Converter={StaticResource boolToColor}}"  Canvas.Left="380" Canvas.Top="10" Stroke="Silver" StrokeThickness="2"/>
-                        <Button Width="120" Height="25" Content="PMA Door Open"                                               Canvas.Left="410" Canvas.Top="10" Style="{StaticResource SysBtnStyle}"  Command="{Binding GasCommand}" IsEnabled="{Binding IsAutoMode,Converter={StaticResource BoolToBool}}"/>
+                        <Ellipse Width="22" Height="22" Fill="{Binding RtDataValues[TM.LLAESlitDoor.IsClosed],Converter={StaticResource boolToColor}}"  Canvas.Left="380" Canvas.Top="160" Stroke="Silver" StrokeThickness="2" />
+                        <Button Width="130" Height="25" Content="LLAESlitDoor Closed"                                               Canvas.Left="410" Canvas.Top="160" Style="{StaticResource SysBtnStyle}"  Command="{Binding DoorUpDownCommand}" CommandParameter="TM.LLAESlitDoor.Close" IsEnabled="{Binding RtDataValues[TM.LLAESlitDoor.IsClosed],Converter={StaticResource BoolToBool}}" />
 
-                        <Ellipse Width="22" Height="22" Fill="{Binding GasIsFlowing,Converter={StaticResource boolToColor}}"  Canvas.Left="180" Canvas.Top="40" Stroke="Silver" StrokeThickness="2"/>
-                        <Button Width="120" Height="25" Content="PMB Door Open"                                               Canvas.Left="210" Canvas.Top="40" Style="{StaticResource SysBtnStyle}"  Command="{Binding GasCommand}" IsEnabled="{Binding IsAutoMode,Converter={StaticResource BoolToBool}}"/>
+                        <Ellipse Width="22" Height="22" Fill="{Binding RtDataValues[TM.LLATSlitDoor.IsClosed],Converter={StaticResource boolToColor2}}"  Canvas.Left="180" Canvas.Top="190" Stroke="Silver" StrokeThickness="2" />
+                        <Button Width="130" Height="25" Content="LLATSlitDoor Open"                                               Canvas.Left="210" Canvas.Top="190" Style="{StaticResource SysBtnStyle}"  Command="{Binding DoorUpDownCommand}" CommandParameter="TM.LLATSlitDoor.Open" IsEnabled="{Binding RtDataValues[TM.LLATSlitDoor.IsClosed]}" />
 
-                        <Ellipse Width="22" Height="22" Fill="{Binding GasIsFlowing,Converter={StaticResource boolToColor}}"  Canvas.Left="380" Canvas.Top="40" Stroke="Silver" StrokeThickness="2"/>
-                        <Button Width="120" Height="25" Content="PMB Door Open"                                               Canvas.Left="410" Canvas.Top="40" Style="{StaticResource SysBtnStyle}"  Command="{Binding GasCommand}" IsEnabled="{Binding IsAutoMode,Converter={StaticResource BoolToBool}}"/>
+                        <Ellipse Width="22" Height="22" Fill="{Binding RtDataValues[TM.LLATSlitDoor.IsClosed],Converter={StaticResource boolToColor}}"  Canvas.Left="380" Canvas.Top="190" Stroke="Silver" StrokeThickness="2" />
+                        <Button Width="130" Height="25" Content="LLATSlitDoor Closed"                                               Canvas.Left="410" Canvas.Top="190" Style="{StaticResource SysBtnStyle}"  Command="{Binding DoorUpDownCommand}" CommandParameter="TM.LLATSlitDoor.Close" IsEnabled="{Binding RtDataValues[TM.LLATSlitDoor.IsClosed],Converter={StaticResource BoolToBool}}" />
 
-                        <Ellipse Width="22" Height="22" Fill="{Binding GasIsFlowing,Converter={StaticResource boolToColor}}"  Canvas.Left="180" Canvas.Top="70" Stroke="Silver" StrokeThickness="2"/>
-                        <Button Width="120" Height="25" Content="PMC Door Open"                                               Canvas.Left="210" Canvas.Top="70" Style="{StaticResource SysBtnStyle}"  Command="{Binding GasCommand}" IsEnabled="{Binding IsAutoMode,Converter={StaticResource BoolToBool}}"/>
+                        <Ellipse Width="22" Height="22" Fill="{Binding RtDataValues[TM.LLAESlitDoor.IsClosed],Converter={StaticResource boolToColor2}}"  Canvas.Left="180" Canvas.Top="160" Stroke="Silver" StrokeThickness="2" />
+                        <Button Width="130" Height="25" Content="LLAESlitDoor Open"                                               Canvas.Left="210" Canvas.Top="160" Style="{StaticResource SysBtnStyle}"  Command="{Binding DoorUpDownCommand}" CommandParameter="TM.LLAESlitDoor.Open" IsEnabled="{Binding RtDataValues[TM.LLAESlitDoor.IsClosed]}" />
 
-                        <Ellipse Width="22" Height="22" Fill="{Binding GasIsFlowing,Converter={StaticResource boolToColor}}"  Canvas.Left="380" Canvas.Top="70" Stroke="Silver" StrokeThickness="2"/>
-                        <Button Width="120" Height="25" Content="PMC Door Open"                                               Canvas.Left="410" Canvas.Top="70" Style="{StaticResource SysBtnStyle}"  Command="{Binding GasCommand}" IsEnabled="{Binding IsAutoMode,Converter={StaticResource BoolToBool}}"/>
+                        <Ellipse Width="22" Height="22" Fill="{Binding RtDataValues[TM.LLAESlitDoor.IsClosed],Converter={StaticResource boolToColor}}"  Canvas.Left="380" Canvas.Top="160" Stroke="Silver" StrokeThickness="2" />
+                        <Button Width="130" Height="25" Content="LLAESlitDoor Closed"                                               Canvas.Left="410" Canvas.Top="160" Style="{StaticResource SysBtnStyle}"  Command="{Binding DoorUpDownCommand}" CommandParameter="TM.LLAESlitDoor.Close" IsEnabled="{Binding RtDataValues[TM.LLAESlitDoor.IsClosed],Converter={StaticResource BoolToBool}}" />
 
-                        <Ellipse Width="22" Height="22" Fill="{Binding GasIsFlowing,Converter={StaticResource boolToColor}}"  Canvas.Left="180" Canvas.Top="100" Stroke="Silver" StrokeThickness="2"/>
-                        <Button Width="120" Height="25" Content="PMA Door Open"                                               Canvas.Left="210" Canvas.Top="100" Style="{StaticResource SysBtnStyle}"  Command="{Binding GasCommand}" IsEnabled="{Binding IsAutoMode,Converter={StaticResource BoolToBool}}"/>
 
-                        <Ellipse Width="22" Height="22" Fill="{Binding GasIsFlowing,Converter={StaticResource boolToColor}}"  Canvas.Left="380" Canvas.Top="100" Stroke="Silver" StrokeThickness="2"/>
-                        <Button Width="120" Height="25" Content="PMA Door Open"                                               Canvas.Left="410" Canvas.Top="100" Style="{StaticResource SysBtnStyle}"  Command="{Binding GasCommand}" IsEnabled="{Binding IsAutoMode,Converter={StaticResource BoolToBool}}"/>
                     </Canvas>
                 </Border>
                 

+ 6 - 2
Venus/Venus_RT/Devices/TM/SIASUNRobot.cs

@@ -238,9 +238,13 @@ namespace Venus_RT.Devices
                     break;
                 case OPStep.Home:
                     {
-                        if(RevMsg.Trim() == "_RDY")
+                       
+                        if (RevMsg.TrimEnd(new char[] { '\r', '\n' }) == "_RDY")
                         {
-                            CheckLoad(Hand.Blade1);
+                            //CheckLoad(Hand.Blade1);
+                            _currentOP = OPStep.Idle;
+                            _status = RState.End;
+                            _IsHomed = true;
                         }
                         else
                             ReportWrongMsg(RevMsg);

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

@@ -288,7 +288,7 @@ namespace Venus_RT.Modules.PMs
 
             float flow = _paramMode == VerifyMode.TenPoint ? _paramFlowSet[Runner.LoopCounter] : _mfcFlow;
             _mfcActualFlow = 273.15 * _chamberVolume / ((273.15 + _gasTemperature) * 760000) * ((_endPressure - _beginPressure) / _elapsedTime - _leakRate);
-            Notify($"Calculate flow: calculate flow={_mfcActualFlow}, setpoint={flow}, begin pressure(torr)={_beginPressure:f3}, end pressure(torr)={_endPressure:f3}," +
+            Notify($"Calculate flow: calculate flow={_mfcActualFlow}, setpoint={flow}, begin pressure(mtorr)={_beginPressure:f3}, end pressure(mtorr)={_endPressure:f3}," +
                 $"elapsed time(minute)={_elapsedTime:f3}");
             _MFCCalibrationDatas.Add(new MFCCalibrationData(flow,_mfcActualFlow));
             double deviation = (Math.Abs(_mfcActualFlow) - Math.Abs(flow)) / Math.Abs(flow) * 100;

+ 9 - 2
Venus/Venus_RT/Modules/PMs/PMProcessRoutine.cs

@@ -270,6 +270,7 @@ namespace Venus_RT.Modules.PMs
 
         private bool PrepareTemp()
         {
+            currentRecipeResult.RecipeCurrentCounter = 1;
             return SetCoolantTemp(ChillerTemp, _OffsetTemp);
         }
 
@@ -292,7 +293,9 @@ namespace Venus_RT.Modules.PMs
                 {
                     _bLoopMode = true;
                     _loopStartStep = _currentStep;
-                    _loopCounter = _currentRecipe.Steps[_currentStep].CycleNumber;
+                    _loopCounter = _currentRecipe.Steps[_currentStep].CycleNumber-1;
+
+                    currentRecipeResult.RecipeAllCounters = _currentRecipe.Steps[_currentStep].CycleNumber;
                 }
             }
 
@@ -315,13 +318,15 @@ namespace Venus_RT.Modules.PMs
             return false;
         }
         private bool RunRecipes()
-        {            
+        {     
+
             var step = _currentRecipe.Steps[_currentStep];
             currentRecipeResult.RecipeStepNumber = step.StepNo;
             currentRecipeResult.RecipeStepType=step.Type.ToString();
             currentRecipeResult.RecipeStepSetTime=step.Time;
             //currentRecipeResult.RecipeStepDuringTime = (int)_stepTime.ElapsedMilliseconds/1000;
             currentRecipeResult.RecipeStepDuringTime = new System.TimeSpan(0, 0, System.Convert.ToInt32(_stepTime.ElapsedMilliseconds/1000));
+            
 
             var result = step.Run();
             if(result == RState.Failed)
@@ -341,6 +346,8 @@ namespace Venus_RT.Modules.PMs
                     if(_loopCounter > 0)
                     {
                         _loopCounter--;
+                        currentRecipeResult.RecipeCurrentCounter += 1;
+
                         _currentStep = _loopStartStep;
                         return StartNewStep() != RState.Running;
                     }

+ 4 - 0
Venus/Venus_RT/Modules/TM/MFHomeRoutine.cs

@@ -4,6 +4,7 @@ using Venus_RT.Devices;
 using MECF.Framework.Common.Routine;
 using MECF.Framework.Common.Equipment;
 using Venus_Core;
+using Aitex.Core.RT.Log;
 
 namespace Venus_RT.Modules.TM
 {
@@ -48,6 +49,9 @@ namespace Venus_RT.Modules.TM
 
         private bool CheckHomeReady()
         {
+         //LOG.Write(eEvent.WARN_DEVICE_INFO, _robot.Status.ToString());
+            LOG.Write(eEvent.ERR_TM_ROBOT, ModuleName.TMRobot, ((int)_robot.Status).ToString());
+
             return _robot.Status == RState.End;
         }