Explorar o código

add robot pick/place cartoon

chenzk hai 2 semanas
pai
achega
d821fc973a

+ 28 - 6
PunkHPX8_MainPages/ViewModels/EfemViewModel.cs

@@ -952,12 +952,6 @@ namespace PunkHPX8_MainPages.ViewModels
 
         }
 
-        private void OnLP3WriteID(object obj)
-        {
-            InvokeClient.Instance.Service.DoOperation($"{obj.ToString()}.WriteCarrierID", SetLP3IDValue);
-
-        }
-
         private void OnLPClamp(object obj)
         {
             InvokeClient.Instance.Service.DoOperation($"{obj.ToString()}.Clamp");
@@ -1196,6 +1190,34 @@ namespace PunkHPX8_MainPages.ViewModels
                     }
 
                 }
+                else  //使用上手臂
+                {
+                    var robot1Robot1TAction = (WaferRobotTAction)Enum.Parse(typeof(WaferRobotTAction), module, true);
+                    //Robot整体平移动画
+                    await ChangePosition(robot1Robot1TAction, newValue.Action);
+                    if (Robot1TAction != robot1Robot1TAction)
+                    {
+                        Robot1TAction = robot1Robot1TAction;
+                        await Task.Delay(600);
+                    }
+                    //await Task.Delay(1500);
+
+                    Robot1XAction = WaferRobotXAction.Extend2;
+
+
+                    while ((newValue.Action == RobotAction.Placing && ModuleManager.ModuleInfos["EfemRobot"].WaferManager.Wafers[0].WaferStatus != 0) || (newValue.Action == RobotAction.Picking && ModuleManager.ModuleInfos["EfemRobot"].WaferManager.Wafers[0].WaferStatus == 0))
+                    {
+                        await Task.Delay(100);
+                    }
+
+                    Robot1XAction = WaferRobotXAction.Retract2;
+
+
+                    if (newValue.Action == RobotAction.Placing)
+                    {
+                        await ChangePosition(WaferRobotTAction.T_Origin, newValue.Action);
+                    }
+                }
             }
             #region Home
             else if (oldValue.Action == RobotAction.None && newValue.Action == RobotAction.Homing)

+ 16 - 23
PunkHPX8_MainPages/Views/EfemView.xaml

@@ -46,7 +46,7 @@
                    Visibility="{Binding RtDataValues[LP2.CassettePlaced],Converter={StaticResource BoolToVisibility2}}"></TextBlock>
 
 
-        <StackPanel Canvas.Top="15" Canvas.Left="1700">
+        <StackPanel Canvas.Top="15" Canvas.Left="1800">
             <userControls:FOUPFrontView UnitData="{Binding Dummy2ModuleInfo}"
                                         IsCassettePlaced="{Binding RtDataValues[Dummy2.CassettePlaced]}"
                                         ShowTitle="False" IsEnabled="{Binding RtDataValues[System.IsAutoMode],Converter={StaticResource BoolToBool}}"/>
@@ -56,7 +56,7 @@
             <TextBlock Text="{Binding RtDataValues[Dummy2.WaferSize], StringFormat=({0})}" HorizontalAlignment="Center" Margin="0,-10,0,0" FontSize="12"
            Visibility="{Binding RtDataValues[Dummy2.CassettePlaced],Converter={StaticResource BoolToVisibility2}}"/>
         </StackPanel>
-        <StackPanel Canvas.Top="15" Canvas.Left="1550">
+        <StackPanel Canvas.Top="15" Canvas.Left="1650">
             <userControls:FOUPFrontView UnitData="{Binding Dummy1ModuleInfo}"
                                         IsCassettePlaced="{Binding RtDataValues[Dummy1.CassettePlaced]}"
                                         ShowTitle="False" IsEnabled="{Binding RtDataValues[System.IsAutoMode],Converter={StaticResource BoolToBool}}"/>
@@ -71,36 +71,29 @@
         <userControls:RobotFrontView UnitData="{Binding EFEMModuleInfo}" Canvas.Left="1222" Canvas.Top="99" HorizontalAlignment="Center" VerticalAlignment="Top"/>
 
         <Canvas Canvas.Top="-150">
-            <Grid Canvas.Left="499" Canvas.Top="440" Panel.ZIndex="2" Visibility="{Binding IsLP1Unable,Converter={StaticResource bool2VisibilityConverter}}">
+            <Grid Canvas.Left="370" Canvas.Top="467" Panel.ZIndex="2" Visibility="{Binding IsLP1Unable,Converter={StaticResource bool2VisibilityConverter}}">
                 <Rectangle  Width="70" Height="70" Fill="Silver"  Opacity="0.8" RadiusX="0.1" RadiusY="0.1"
                             />
             </Grid>
-            <TextBlock Canvas.Top="485" Canvas.Left="430" Text="{Binding RtDataValues[LP1.WaferSize], StringFormat=({0})}" Visibility="{Binding RtDataValues[LP1.CassettePlaced], Converter={StaticResource BoolToVisibility2}}"
+            <TextBlock Canvas.Top="420" Canvas.Left="400" Text="{Binding RtDataValues[LP1.WaferSize], StringFormat=({0})}" Visibility="{Binding RtDataValues[LP1.CassettePlaced], Converter={StaticResource BoolToVisibility2}}"
                        HorizontalAlignment="Center" Margin="0,5,0,0" FontSize="16">
             </TextBlock>
-            <Grid Canvas.Left="499" Canvas.Top="538" Panel.ZIndex="2" Visibility="{Binding IsLP2Unable,Converter={StaticResource bool2VisibilityConverter}}">
+            <Grid Canvas.Left="370" Canvas.Top="582" Panel.ZIndex="2" Visibility="{Binding IsLP2Unable,Converter={StaticResource bool2VisibilityConverter}}">
                 <Rectangle  Width="70" Height="70" Fill="Silver"  Opacity="0.8" RadiusX="0.1" RadiusY="0.1"
                 />
             </Grid>
-            <TextBlock Canvas.Top="580" Canvas.Left="430" Text="{Binding RtDataValues[LP2.WaferSize], StringFormat=({0})}" Visibility="{Binding RtDataValues[LP2.CassettePlaced], Converter={StaticResource BoolToVisibility2}}"
+            <TextBlock Canvas.Top="680" Canvas.Left="400" Text="{Binding RtDataValues[LP2.WaferSize], StringFormat=({0})}" Visibility="{Binding RtDataValues[LP2.CassettePlaced], Converter={StaticResource BoolToVisibility2}}"
                        HorizontalAlignment="Center" Margin="0,5,0,0" FontSize="16">
             </TextBlock>
-      
+
             <TextBlock Canvas.Top="680" Canvas.Left="430" Text="{Binding RtDataValues[LP3.WaferSize], StringFormat=({0})}" Visibility="{Binding RtDataValues[LP3.CassettePlaced], Converter={StaticResource BoolToVisibility2}}"
                        HorizontalAlignment="Center" Margin="0,5,0,0" FontSize="16">
             </TextBlock>
-            <Viewbox Width="890" Height="890" Canvas.Left="297" Stretch="Fill" HorizontalAlignment="Center" VerticalAlignment="Top" Canvas.Top="-8">
-                <Canvas Width="1000" Height="1000">
-                    <!--<userControls:MainTM Width="300" Height="250" Canvas.Left="380" Canvas.Top="90"/>-->
-                </Canvas>
-            </Viewbox>
-            <userControls:EFEM  x:Name="efem1" Width="360" Height="300" Canvas.Left="578" Canvas.Top="426" 
+            <userControls:CellChamber x:Name="efem1" Width="616" Height="489" Canvas.Left="358" Canvas.Top="314" 
                                 LP1Presented="{Binding RtDataValues[LP1.CassettePlaced]}" 
                                 LP2Presented="{Binding RtDataValues[LP2.CassettePlaced]}" 
-                                LP3Presented="{Binding RtDataValues[LP3.CassettePlaced]}" 
                                 LP1Loaded="{Binding RtDataValues[LP1.IsLoaded]}" 
                                 LP2Loaded="{Binding RtDataValues[LP2.IsLoaded]}" 
-                                LP3Loaded="{Binding RtDataValues[LP3.IsLoaded]}" 
                                 RobotATAction="{Binding Robot1TAction}" 
                                 RobotAXAction="{Binding Robot1XAction}"
                                 RobotAWaferInfo="{Binding BladeAWafer}" 
@@ -110,13 +103,13 @@
                                 VPW1Wafer="{Binding VPW1Wafer}"
                                 VPW2Wafer="{Binding VPW2Wafer}"
                                 PlatingCell1Wafer="{Binding PlatingCell1Wafer}"
-                                AlignActionValue="{Binding AlignValue, UpdateSourceTrigger=PropertyChanged}"/>
+                                PlatingCell2Wafer="{Binding PlatingCell2Wafer}"
+                                PlatingCell3Wafer="{Binding PlatingCell3Wafer}"
+                                PlatingCell4Wafer="{Binding PlatingCell4Wafer}"
+                                AlignActionValue="{Binding AlignValue, UpdateSourceTrigger=PropertyChanged}"
+                                Srd1Wafer="{Binding Srd1Wafer}"
+                                Srd2Wafer="{Binding Srd2Wafer}" HorizontalAlignment="Center" VerticalAlignment="Top"/>
         </Canvas>
-        <userControls:SRD CassetteName="SRD" Canvas.Left="787" Canvas.Top="172" Width="100" Height="100" HorizontalAlignment="Left" VerticalAlignment="Center" SRD1Wafer="{Binding Srd1Wafer}" SRD2Wafer="{Binding Srd2Wafer}" SRDVisibility="Visible"/>
-        <!--<userControls:SRD CassetteName="SRD2" Canvas.Left="734" Canvas.Top="172" Width="100" Height="100" HorizontalAlignment="Center" VerticalAlignment="Top" RobotWafer="{Binding SRD2Wafer}" SRDVisibility="Visible"/>-->
-        <userControls:DummyCassette Canvas.Left="751" Canvas.Top="272" RotateTransformValue="180" Width="100" Height="100" HorizontalAlignment="Left" VerticalAlignment="Center"/>
-        <TextBlock Canvas.Top="142" Canvas.Left="670" Text="Dummy" HorizontalAlignment="Center" Margin="0,5,0,0" FontSize="16">
-        </TextBlock>
         <GroupBox Header="" Background="{DynamicResource Table_BG_Content}" Width="500" Height="70" Canvas.Left="1020" Canvas.Top="454" HorizontalAlignment="Center" VerticalAlignment="Top">
             <Grid>
                 <TextBlock Margin="20,0,0,0" Text="Vacuum" VerticalAlignment="Center" HorizontalAlignment="Left" FontSize="14" />
@@ -187,7 +180,7 @@
                     <RowDefinition/>
                 </Grid.RowDefinitions>
                 <Grid.ColumnDefinitions>
-                    <ColumnDefinition/>
+                    <ColumnDefinition Width="150"/>
                     <ColumnDefinition/>
                     <ColumnDefinition/>
                     <ColumnDefinition/>
@@ -546,7 +539,7 @@
             <TextBox Canvas.Left="1700" Canvas.Top="220" Text="{Binding RobotMoveInfo.ArmTarget}"/>
             <TextBox Canvas.Left="1800" Canvas.Top="220" Text="{Binding RobotMoveInfo.Action}"/>
         </Canvas>-->
-       
+
 
     </Canvas>
 

+ 1 - 1
PunkHPX8_MainPages/Views/RobotCycleView.xaml

@@ -26,7 +26,7 @@
                     <ListView.View>
                         <GridView>
                             <GridViewColumn Header="ModuleType" Width="120" DisplayMemberBinding="{Binding ModuleType}"/>
-                            <GridViewColumn Header="ModuleName" Width="120" DisplayMemberBinding="{Binding ModuleName}"/>
+                            <GridViewColumn Header="ModuleName" Width="140" DisplayMemberBinding="{Binding ModuleName}"/>
                             <GridViewColumn Header="Paramater" Width="120" DisplayMemberBinding="{Binding Parameter}"/>
                             <GridViewColumn Header="RobotHand" Width="120" DisplayMemberBinding="{Binding RobotHand}"/>
                             <GridViewColumn Header="PickDirection" Width="120" DisplayMemberBinding="{Binding PickRobotFlip}"/>

+ 1 - 1
PunkHPX8_RT/Config/Devices/Beckhoffcfg - plctask.xml

@@ -1,6 +1,6 @@
 <?xml version="1.0" encoding="utf-8"?>
 <BeckhoffCfg>
-	<Controller Name="MASTER" IPAddress="192.168.0.200.1.1" PortAddress="851">
+	<Controller Name="MASTER" IPAddress="10.4.6.75.1.1" PortAddress="851">
 
 		<!-- Need to have at least one input and one output before Axis stuff -->
 

+ 12 - 12
PunkHPX8_RT/Config/System.sccfg

@@ -151,24 +151,24 @@
 			<config default="69" name="Cassete100Station_Blade2_Down" nameView="Cassete100Station_Blade2_Down" description="Wafer 100 Cassete station number" max="120" min="0" paramter="" tag="" unit="s" type="Integer" visible="false"/>
 		</configs>
 		<configs name="PlatingCell1" nameView="PlatingCell1" >
-			<config default="73" name="Cassete200Station_Blade2_Down" nameView="Cassete200Station_Blade2_Down" description="Wafer 200 Cassete station number" max="120" min="0" paramter="" tag="" unit="s" type="Integer" visible="false"/>
-			<config default="74" name="Cassete150Station_Blade2_Down" nameView="Cassete150Station_Blade2_Down" description="Wafer 150 Cassete station number" max="120" min="0" paramter="" tag="" unit="s" type="Integer" visible="false"/>
-			<config default="75" name="Cassete100Station_Blade2_Down" nameView="Cassete100Station_Blade2_Down" description="Wafer 100 Cassete station number" max="120" min="0" paramter="" tag="" unit="s" type="Integer" visible="false"/>
+			<config default="173" name="Cassete200Station_Blade2_Down" nameView="Cassete200Station_Blade2_Down" description="Wafer 200 Cassete station number" max="120" min="0" paramter="" tag="" unit="s" type="Integer" visible="false"/>
+			<config default="174" name="Cassete150Station_Blade2_Down" nameView="Cassete150Station_Blade2_Down" description="Wafer 150 Cassete station number" max="120" min="0" paramter="" tag="" unit="s" type="Integer" visible="false"/>
+			<config default="175" name="Cassete100Station_Blade2_Down" nameView="Cassete100Station_Blade2_Down" description="Wafer 100 Cassete station number" max="120" min="0" paramter="" tag="" unit="s" type="Integer" visible="false"/>
 		</configs>
 		<configs name="PlatingCell2" nameView="PlatingCell2">
-			<config default="73" name="Cassete200Station_Blade2_Down" nameView="Cassete200Station_Blade2_Down" description="Wafer 200 Cassete station number" max="120" min="0" paramter="" tag="" unit="s" type="Integer" visible="false"/>
-			<config default="74" name="Cassete150Station_Blade2_Down" nameView="Cassete150Station_Blade2_Down" description="Wafer 150 Cassete station number" max="120" min="0" paramter="" tag="" unit="s" type="Integer" visible="false"/>
-			<config default="75" name="Cassete100Station_Blade2_Down" nameView="Cassete100Station_Blade2_Down" description="Wafer 100 Cassete station number" max="120" min="0" paramter="" tag="" unit="s" type="Integer" visible="false"/>
+			<config default="176" name="Cassete200Station_Blade2_Down" nameView="Cassete200Station_Blade2_Down" description="Wafer 200 Cassete station number" max="120" min="0" paramter="" tag="" unit="s" type="Integer" visible="false"/>
+			<config default="177" name="Cassete150Station_Blade2_Down" nameView="Cassete150Station_Blade2_Down" description="Wafer 150 Cassete station number" max="120" min="0" paramter="" tag="" unit="s" type="Integer" visible="false"/>
+			<config default="178" name="Cassete100Station_Blade2_Down" nameView="Cassete100Station_Blade2_Down" description="Wafer 100 Cassete station number" max="120" min="0" paramter="" tag="" unit="s" type="Integer" visible="false"/>
 		</configs>
 		<configs name="PlatingCell3" nameView="PlatingCell3">
-			<config default="73" name="Cassete200Station_Blade2_Down" nameView="Cassete200Station_Blade2_Down" description="Wafer 200 Cassete station number" max="120" min="0" paramter="" tag="" unit="s" type="Integer" visible="false"/>
-			<config default="74" name="Cassete150Station_Blade2_Down" nameView="Cassete150Station_Blade2_Down" description="Wafer 150 Cassete station number" max="120" min="0" paramter="" tag="" unit="s" type="Integer" visible="false"/>
-			<config default="75" name="Cassete100Station_Blade2_Down" nameView="Cassete100Station_Blade2_Down" description="Wafer 100 Cassete station number" max="120" min="0" paramter="" tag="" unit="s" type="Integer" visible="false"/>
+			<config default="179" name="Cassete200Station_Blade2_Down" nameView="Cassete200Station_Blade2_Down" description="Wafer 200 Cassete station number" max="120" min="0" paramter="" tag="" unit="s" type="Integer" visible="false"/>
+			<config default="180" name="Cassete150Station_Blade2_Down" nameView="Cassete150Station_Blade2_Down" description="Wafer 150 Cassete station number" max="120" min="0" paramter="" tag="" unit="s" type="Integer" visible="false"/>
+			<config default="181" name="Cassete100Station_Blade2_Down" nameView="Cassete100Station_Blade2_Down" description="Wafer 100 Cassete station number" max="120" min="0" paramter="" tag="" unit="s" type="Integer" visible="false"/>
 		</configs>
 		<configs name="PlatingCell4" nameView="PlatingCell4">
-			<config default="73" name="Cassete200Station_Blade2_Down" nameView="Cassete200Station_Blade2_Down" description="Wafer 200 Cassete station number" max="120" min="0" paramter="" tag="" unit="s" type="Integer" visible="false"/>
-			<config default="74" name="Cassete150Station_Blade2_Down" nameView="Cassete150Station_Blade2_Down" description="Wafer 150 Cassete station number" max="120" min="0" paramter="" tag="" unit="s" type="Integer" visible="false"/>
-			<config default="75" name="Cassete100Station_Blade2_Down" nameView="Cassete100Station_Blade2_Down" description="Wafer 100 Cassete station number" max="120" min="0" paramter="" tag="" unit="s" type="Integer" visible="false"/>
+			<config default="182" name="Cassete200Station_Blade2_Down" nameView="Cassete200Station_Blade2_Down" description="Wafer 200 Cassete station number" max="120" min="0" paramter="" tag="" unit="s" type="Integer" visible="false"/>
+			<config default="183" name="Cassete150Station_Blade2_Down" nameView="Cassete150Station_Blade2_Down" description="Wafer 150 Cassete station number" max="120" min="0" paramter="" tag="" unit="s" type="Integer" visible="false"/>
+			<config default="184" name="Cassete100Station_Blade2_Down" nameView="Cassete100Station_Blade2_Down" description="Wafer 100 Cassete station number" max="120" min="0" paramter="" tag="" unit="s" type="Integer" visible="false"/>
 		</configs>
 		<configs name="Aligner1" nameView="Aligner1">
 			<config default="9" name="Cassete200Station_Blade1_Upper" nameView="Cassete200Station_Blade1_Upper" description="Wafer 200 Cassete station number" max="120" min="0" paramter="" tag="" unit="s" type="Integer" visible="false"/>

+ 1 - 1
PunkHPX8_RT/Modules/EFEM/EfemEntity.cs

@@ -422,7 +422,7 @@ namespace PunkHPX8_RT.Modules
             AnyStateTransition(MSG.CloseBuzzer,          fnCloseBuzzer, FSM_STATE.SAME);
             AnyStateTransition(MSG.CloseBuzzer,          fnCloseBuzzer, FSM_STATE.SAME);
             
-            Transition(STATE.Unknown,MSG.CommReady, fnCommReady, STATE.Init);
+            Transition(STATE.Unknown,MSG.CommReady, fnCommReady, STATE.Idle);
             //Error
             Transition(STATE.Error, MSG.Recover, fnRecover, STATE.Idle);
 

+ 138 - 53
PunkHPX8_Themes/Themes/Generic.xaml

@@ -1057,10 +1057,8 @@
                                                 <LinearDoubleKeyFrame Value="0"   KeyTime="0:0:9"/>
                                             </DoubleAnimationUsingKeyFrames>
                                             <DoubleAnimationUsingKeyFrames Storyboard.TargetName="grip1RotateAct" Storyboard.TargetProperty="Angle">
-                                                <LinearDoubleKeyFrame Value="-180" KeyTime="0:0:0"/>
-                                                <LinearDoubleKeyFrame Value="-160" KeyTime="0:0:3"/>
-                                                <LinearDoubleKeyFrame Value="-120" KeyTime="0:0:6"/>
-                                                <LinearDoubleKeyFrame Value="-90" KeyTime="0:0:9"/>
+                                                <LinearDoubleKeyFrame Value="180" KeyTime="0:0:0"/>
+                                                <LinearDoubleKeyFrame Value="180" KeyTime="0:0:9"/>
                                             </DoubleAnimationUsingKeyFrames>
                                             <DoubleAnimationUsingKeyFrames Storyboard.TargetName="grip2RotateAct" Storyboard.TargetProperty="Angle">
                                                 <LinearDoubleKeyFrame Value="90" KeyTime="0:0:0"/>
@@ -1078,10 +1076,8 @@
                                                 <LinearDoubleKeyFrame Value="0"   KeyTime="0:0:0"/>
                                             </DoubleAnimationUsingKeyFrames>
                                             <DoubleAnimationUsingKeyFrames Storyboard.TargetName="grip1RotateAct" Storyboard.TargetProperty="Angle">
-                                                <LinearDoubleKeyFrame Value="-180" KeyTime="0:0:9"/>
-                                                <LinearDoubleKeyFrame Value="-160" KeyTime="0:0:6"/>
-                                                <LinearDoubleKeyFrame Value="-120" KeyTime="0:0:3"/>
-                                                <LinearDoubleKeyFrame Value="-90" KeyTime="0:0:0"/>
+                                                <LinearDoubleKeyFrame Value="180" KeyTime="0:0:0"/>
+                                                <LinearDoubleKeyFrame Value="180" KeyTime="0:0:9"/>
                                             </DoubleAnimationUsingKeyFrames>
                                             <DoubleAnimationUsingKeyFrames Storyboard.TargetName="grip2RotateAct" Storyboard.TargetProperty="Angle">
                                                 <LinearDoubleKeyFrame Value="90" KeyTime="0:0:0"/>
@@ -1090,6 +1086,42 @@
 
                                         </Storyboard>
                                     </VisualTransition>
+                                    <VisualTransition To="Extend2">
+                                        <Storyboard FillBehavior="HoldEnd" SpeedRatio="18">
+                                            <DoubleAnimationUsingKeyFrames Storyboard.TargetName="armXT2ArmRotateAct" Storyboard.TargetProperty="Angle">
+                                                <LinearDoubleKeyFrame Value="-120" KeyTime="0:0:0"/>
+                                                <LinearDoubleKeyFrame Value="-80" KeyTime="0:0:3"/>
+                                                <LinearDoubleKeyFrame Value="-30" KeyTime="0:0:6"/>
+                                                <LinearDoubleKeyFrame Value="0"   KeyTime="0:0:9"/>
+                                            </DoubleAnimationUsingKeyFrames>
+                                            <DoubleAnimationUsingKeyFrames Storyboard.TargetName="grip1RotateAct" Storyboard.TargetProperty="Angle">
+                                                <LinearDoubleKeyFrame Value="0" KeyTime="0:0:0"/>
+                                                <LinearDoubleKeyFrame Value="0" KeyTime="0:0:9"/>
+                                            </DoubleAnimationUsingKeyFrames>
+                                            <DoubleAnimationUsingKeyFrames Storyboard.TargetName="grip2RotateAct" Storyboard.TargetProperty="Angle">
+                                                <LinearDoubleKeyFrame Value="-90" KeyTime="0:0:0"/>
+                                                <LinearDoubleKeyFrame Value="-90" KeyTime="0:0:9"/>
+                                            </DoubleAnimationUsingKeyFrames>
+                                        </Storyboard>
+                                    </VisualTransition>
+                                    <VisualTransition To="Retract2">
+                                        <Storyboard FillBehavior="HoldEnd" SpeedRatio="18">
+                                            <DoubleAnimationUsingKeyFrames Storyboard.TargetName="armXT2ArmRotateAct" Storyboard.TargetProperty="Angle">
+                                                <LinearDoubleKeyFrame Value="-120" KeyTime="0:0:9"/>
+                                                <LinearDoubleKeyFrame Value="-80" KeyTime="0:0:6"/>
+                                                <LinearDoubleKeyFrame Value="-30" KeyTime="0:0:3"/>
+                                                <LinearDoubleKeyFrame Value="0"   KeyTime="0:0:0"/>
+                                            </DoubleAnimationUsingKeyFrames>
+                                            <DoubleAnimationUsingKeyFrames Storyboard.TargetName="grip1RotateAct" Storyboard.TargetProperty="Angle">
+                                                <LinearDoubleKeyFrame Value="0" KeyTime="0:0:0"/>
+                                                <LinearDoubleKeyFrame Value="0" KeyTime="0:0:9"/>
+                                            </DoubleAnimationUsingKeyFrames>
+                                            <DoubleAnimationUsingKeyFrames Storyboard.TargetName="grip2RotateAct" Storyboard.TargetProperty="Angle">
+                                                <LinearDoubleKeyFrame Value="-90" KeyTime="0:0:0"/>
+                                                <LinearDoubleKeyFrame Value="-90" KeyTime="0:0:9"/>
+                                            </DoubleAnimationUsingKeyFrames>
+                                        </Storyboard>
+                                    </VisualTransition>
                                 </VisualStateGroup.Transitions>
 
                                 <VisualState Name="X_Origin">
@@ -1111,12 +1143,11 @@
                                 </VisualState>
                                 <VisualState Name="Extend">
                                     <Storyboard FillBehavior="HoldEnd">
-                                        
                                         <DoubleAnimationUsingKeyFrames Storyboard.TargetName="armXT2ArmRotateAct" Storyboard.TargetProperty="Angle">
                                             <LinearDoubleKeyFrame Value="0" KeyTime="0:0:0"/>
                                         </DoubleAnimationUsingKeyFrames>
                                         <DoubleAnimationUsingKeyFrames Storyboard.TargetName="grip1RotateAct" Storyboard.TargetProperty="Angle">
-                                            <LinearDoubleKeyFrame Value="-90" KeyTime="0:0:0"/>
+                                            <LinearDoubleKeyFrame Value="180" KeyTime="0:0:0"/>
                                         </DoubleAnimationUsingKeyFrames>
                                         <DoubleAnimationUsingKeyFrames Storyboard.TargetName="grip2RotateAct" Storyboard.TargetProperty="Angle">
                                             <LinearDoubleKeyFrame Value="90" KeyTime="0:0:0"/>
@@ -1125,19 +1156,44 @@
                                 </VisualState>
                                 <VisualState Name="Retract">
                                     <Storyboard FillBehavior="HoldEnd">
-                                        
                                         <DoubleAnimationUsingKeyFrames Storyboard.TargetName="armXT2ArmRotateAct" Storyboard.TargetProperty="Angle">
                                             <LinearDoubleKeyFrame Value="-120" KeyTime="0:0:0"/>
                                         </DoubleAnimationUsingKeyFrames>
                                         <DoubleAnimationUsingKeyFrames Storyboard.TargetName="grip1RotateAct" Storyboard.TargetProperty="Angle">
-                                            <LinearDoubleKeyFrame Value="-180" KeyTime="0:0:0"/>
+                                            <LinearDoubleKeyFrame Value="180" KeyTime="0:0:0"/>
                                         </DoubleAnimationUsingKeyFrames>
                                         <DoubleAnimationUsingKeyFrames Storyboard.TargetName="grip2RotateAct" Storyboard.TargetProperty="Angle">
                                             <LinearDoubleKeyFrame Value="90" KeyTime="0:0:0"/>
                                         </DoubleAnimationUsingKeyFrames>
                                     </Storyboard>
                                 </VisualState>
-                               
+                                <VisualState Name="Extend2">
+                                    <Storyboard FillBehavior="HoldEnd">
+                                        <DoubleAnimationUsingKeyFrames Storyboard.TargetName="armXT2ArmRotateAct" Storyboard.TargetProperty="Angle">
+                                            <LinearDoubleKeyFrame Value="0" KeyTime="0:0:0"/>
+                                        </DoubleAnimationUsingKeyFrames>
+                                        <DoubleAnimationUsingKeyFrames Storyboard.TargetName="grip1RotateAct" Storyboard.TargetProperty="Angle">
+                                            <LinearDoubleKeyFrame Value="0" KeyTime="0:0:0"/>
+                                        </DoubleAnimationUsingKeyFrames>
+                                        <DoubleAnimationUsingKeyFrames Storyboard.TargetName="grip2RotateAct" Storyboard.TargetProperty="Angle">
+                                            <LinearDoubleKeyFrame Value="-90" KeyTime="0:0:0"/>
+                                        </DoubleAnimationUsingKeyFrames>
+                                    </Storyboard>
+                                </VisualState>
+                                <VisualState Name="Retract2">
+                                    <Storyboard FillBehavior="HoldEnd">
+                                        <DoubleAnimationUsingKeyFrames Storyboard.TargetName="armXT2ArmRotateAct" Storyboard.TargetProperty="Angle">
+                                            <LinearDoubleKeyFrame Value="-120" KeyTime="0:0:0"/>
+                                        </DoubleAnimationUsingKeyFrames>
+                                        <DoubleAnimationUsingKeyFrames Storyboard.TargetName="grip1RotateAct" Storyboard.TargetProperty="Angle">
+                                            <LinearDoubleKeyFrame Value="0" KeyTime="0:0:0"/>
+                                        </DoubleAnimationUsingKeyFrames>
+                                        <DoubleAnimationUsingKeyFrames Storyboard.TargetName="grip2RotateAct" Storyboard.TargetProperty="Angle">
+                                            <LinearDoubleKeyFrame Value="-90" KeyTime="0:0:0"/>
+                                        </DoubleAnimationUsingKeyFrames>
+                                    </Storyboard>
+                                </VisualState>
+
                             </VisualStateGroup>
                                 
                             <VisualStateGroup Name="RobotTActions">
@@ -1179,14 +1235,20 @@
                                     <VisualTransition To="Dummy1">
                                         <Storyboard FillBehavior="HoldEnd">
                                             <DoubleAnimationUsingKeyFrames Storyboard.TargetName="robotRotateAct" Storyboard.TargetProperty="Angle">
-                                                <LinearDoubleKeyFrame Value="-90" KeyTime="0:0:0.5"/>
+                                                <LinearDoubleKeyFrame Value="-50" KeyTime="0:0:0.5"/>
+                                            </DoubleAnimationUsingKeyFrames>
+                                            <DoubleAnimationUsingKeyFrames Storyboard.TargetName="robotRightLeftAct" Storyboard.TargetProperty="X">
+                                                <LinearDoubleKeyFrame Value="0" KeyTime="0:0:0.5"/>
                                             </DoubleAnimationUsingKeyFrames>
                                         </Storyboard>
                                     </VisualTransition>
                                     <VisualTransition To="Dummy2">
                                         <Storyboard FillBehavior="HoldEnd">
                                             <DoubleAnimationUsingKeyFrames Storyboard.TargetName="robotRotateAct" Storyboard.TargetProperty="Angle">
-                                                <LinearDoubleKeyFrame Value="-90" KeyTime="0:0:0.5"/>
+                                                <LinearDoubleKeyFrame Value="-50" KeyTime="0:0:0.5"/>
+                                            </DoubleAnimationUsingKeyFrames>
+                                            <DoubleAnimationUsingKeyFrames Storyboard.TargetName="robotRightLeftAct" Storyboard.TargetProperty="X">
+                                                <LinearDoubleKeyFrame Value="0" KeyTime="0:0:0.5"/>
                                             </DoubleAnimationUsingKeyFrames>
                                         </Storyboard>
                                     </VisualTransition>
@@ -1204,37 +1266,43 @@
                                             </DoubleAnimationUsingKeyFrames>
                                         </Storyboard>
                                     </VisualTransition>
-                                    <VisualTransition To="VPW1">
+                                    <VisualTransition To="VPW2">
                                         <Storyboard FillBehavior="HoldEnd">
                                             <DoubleAnimationUsingKeyFrames Storyboard.TargetName="robotRotateAct" Storyboard.TargetProperty="Angle">
-                                                <LinearDoubleKeyFrame Value="90" KeyTime="0:0:0.5"/>
+                                                <LinearDoubleKeyFrame Value="170" KeyTime="0:0:0.5"/>
                                             </DoubleAnimationUsingKeyFrames>
                                             <DoubleAnimationUsingKeyFrames Storyboard.TargetName="robotRightLeftAct" Storyboard.TargetProperty="X">
-                                                <LinearDoubleKeyFrame Value="100" KeyTime="0:0:0.5"/>
+                                                <LinearDoubleKeyFrame Value="230" KeyTime="0:0:0.5"/>
                                             </DoubleAnimationUsingKeyFrames>
                                         </Storyboard>
                                     </VisualTransition>
-                                    <VisualTransition To="VPW2">
+                                    <VisualTransition To="VPW1">
                                         <Storyboard FillBehavior="HoldEnd">
                                             <DoubleAnimationUsingKeyFrames Storyboard.TargetName="robotRotateAct" Storyboard.TargetProperty="Angle">
-                                                <LinearDoubleKeyFrame Value="120" KeyTime="0:0:0.5"/>
+                                                <LinearDoubleKeyFrame Value="160" KeyTime="0:0:0.5"/>
                                             </DoubleAnimationUsingKeyFrames>
                                             <DoubleAnimationUsingKeyFrames Storyboard.TargetName="robotRightLeftAct" Storyboard.TargetProperty="X">
-                                                <LinearDoubleKeyFrame Value="50" KeyTime="0:0:0.5"/>
+                                                <LinearDoubleKeyFrame Value="230" KeyTime="0:0:0.5"/>
                                             </DoubleAnimationUsingKeyFrames>
                                         </Storyboard>
                                     </VisualTransition>
                                     <VisualTransition To="PlatingCell1">
                                         <Storyboard FillBehavior="HoldEnd">
                                             <DoubleAnimationUsingKeyFrames Storyboard.TargetName="robotRotateAct" Storyboard.TargetProperty="Angle">
-                                                <LinearDoubleKeyFrame Value="-90" KeyTime="0:0:0.5"/>
+                                                <LinearDoubleKeyFrame Value="90" KeyTime="0:0:0.5"/>
+                                            </DoubleAnimationUsingKeyFrames>
+                                            <DoubleAnimationUsingKeyFrames Storyboard.TargetName="robotRightLeftAct" Storyboard.TargetProperty="X">
+                                                <LinearDoubleKeyFrame Value="230" KeyTime="0:0:0.5"/>
                                             </DoubleAnimationUsingKeyFrames>
                                         </Storyboard>
                                     </VisualTransition>
                                     <VisualTransition To="PlatingCell2">
                                         <Storyboard FillBehavior="HoldEnd">
                                             <DoubleAnimationUsingKeyFrames Storyboard.TargetName="robotRotateAct" Storyboard.TargetProperty="Angle">
-                                                <LinearDoubleKeyFrame Value="-90" KeyTime="0:0:0.5"/>
+                                                <LinearDoubleKeyFrame Value="90" KeyTime="0:0:0.5"/>
+                                            </DoubleAnimationUsingKeyFrames>
+                                            <DoubleAnimationUsingKeyFrames Storyboard.TargetName="robotRightLeftAct" Storyboard.TargetProperty="X">
+                                                <LinearDoubleKeyFrame Value="230" KeyTime="0:0:0.5"/>
                                             </DoubleAnimationUsingKeyFrames>
                                         </Storyboard>
                                     </VisualTransition>
@@ -1279,6 +1347,7 @@
                                         <DoubleAnimationUsingKeyFrames Storyboard.TargetName="robotRotateAct" Storyboard.TargetProperty="Angle">
                                             <LinearDoubleKeyFrame Value="0" KeyTime="0:0:0"/>
                                         </DoubleAnimationUsingKeyFrames>
+                                        
                                     </Storyboard>
                                 </VisualState>
                                 <VisualState Name="Aligner1">
@@ -1291,14 +1360,20 @@
                                 <VisualState Name="Dummy1">
                                     <Storyboard FillBehavior="HoldEnd">
                                         <DoubleAnimationUsingKeyFrames Storyboard.TargetName="robotRotateAct" Storyboard.TargetProperty="Angle">
-                                            <LinearDoubleKeyFrame Value="-90" KeyTime="0:0:0"/>
+                                            <LinearDoubleKeyFrame Value="-50" KeyTime="0:0:0"/>
+                                        </DoubleAnimationUsingKeyFrames>
+                                        <DoubleAnimationUsingKeyFrames Storyboard.TargetName="robotRightLeftAct" Storyboard.TargetProperty="X">
+                                            <LinearDoubleKeyFrame Value="0" KeyTime="0:0:0"/>
                                         </DoubleAnimationUsingKeyFrames>
                                     </Storyboard>
                                 </VisualState>
                                 <VisualState Name="Dummy2">
                                     <Storyboard FillBehavior="HoldEnd">
                                         <DoubleAnimationUsingKeyFrames Storyboard.TargetName="robotRotateAct" Storyboard.TargetProperty="Angle">
-                                            <LinearDoubleKeyFrame Value="-90" KeyTime="0:0:0"/>
+                                            <LinearDoubleKeyFrame Value="-50" KeyTime="0:0:0"/>
+                                        </DoubleAnimationUsingKeyFrames>
+                                        <DoubleAnimationUsingKeyFrames Storyboard.TargetName="robotRightLeftAct" Storyboard.TargetProperty="X">
+                                            <LinearDoubleKeyFrame Value="0" KeyTime="0:0:0.5"/>
                                         </DoubleAnimationUsingKeyFrames>
                                     </Storyboard>
                                 </VisualState>
@@ -1316,37 +1391,43 @@
                                         </DoubleAnimationUsingKeyFrames>
                                     </Storyboard>
                                 </VisualState>
-                                <VisualState Name="VPW1">
+                                <VisualState Name="VPW2">
                                     <Storyboard FillBehavior="HoldEnd">
                                         <DoubleAnimationUsingKeyFrames Storyboard.TargetName="robotRotateAct" Storyboard.TargetProperty="Angle">
-                                            <LinearDoubleKeyFrame Value="90" KeyTime="0:0:0"/>
+                                            <LinearDoubleKeyFrame Value="170" KeyTime="0:0:0"/>
                                         </DoubleAnimationUsingKeyFrames>
                                         <DoubleAnimationUsingKeyFrames Storyboard.TargetName="robotRightLeftAct" Storyboard.TargetProperty="X">
-                                            <LinearDoubleKeyFrame Value="100" KeyTime="0:0:0.0"/>
+                                            <LinearDoubleKeyFrame Value="230" KeyTime="0:0:0.0"/>
                                         </DoubleAnimationUsingKeyFrames>
                                     </Storyboard>
                                 </VisualState>
-                                <VisualState Name="VPW2">
+                                <VisualState Name="VPW1">
                                     <Storyboard FillBehavior="HoldEnd">
                                         <DoubleAnimationUsingKeyFrames Storyboard.TargetName="robotRotateAct" Storyboard.TargetProperty="Angle">
-                                            <LinearDoubleKeyFrame Value="120" KeyTime="0:0:0"/>
+                                            <LinearDoubleKeyFrame Value="160" KeyTime="0:0:0"/>
                                         </DoubleAnimationUsingKeyFrames>
                                         <DoubleAnimationUsingKeyFrames Storyboard.TargetName="robotRightLeftAct" Storyboard.TargetProperty="X">
-                                            <LinearDoubleKeyFrame Value="50" KeyTime="0:0:0"/>
+                                            <LinearDoubleKeyFrame Value="230" KeyTime="0:0:0"/>
                                         </DoubleAnimationUsingKeyFrames>
                                     </Storyboard>
                                 </VisualState>
                                 <VisualState Name="PlatingCell1">
                                     <Storyboard FillBehavior="HoldEnd">
                                         <DoubleAnimationUsingKeyFrames Storyboard.TargetName="robotRotateAct" Storyboard.TargetProperty="Angle">
-                                            <LinearDoubleKeyFrame Value="-90" KeyTime="0:0:0"/>
+                                            <LinearDoubleKeyFrame Value="90" KeyTime="0:0:0"/>
+                                        </DoubleAnimationUsingKeyFrames>
+                                        <DoubleAnimationUsingKeyFrames Storyboard.TargetName="robotRightLeftAct" Storyboard.TargetProperty="X">
+                                            <LinearDoubleKeyFrame Value="230" KeyTime="0:0:0"/>
                                         </DoubleAnimationUsingKeyFrames>
                                     </Storyboard>
                                 </VisualState>
                                 <VisualState Name="PlatingCell2">
                                     <Storyboard FillBehavior="HoldEnd">
                                         <DoubleAnimationUsingKeyFrames Storyboard.TargetName="robotRotateAct" Storyboard.TargetProperty="Angle">
-                                            <LinearDoubleKeyFrame Value="-90" KeyTime="0:0:0"/>
+                                            <LinearDoubleKeyFrame Value="90" KeyTime="0:0:0"/>
+                                        </DoubleAnimationUsingKeyFrames>
+                                        <DoubleAnimationUsingKeyFrames Storyboard.TargetName="robotRightLeftAct" Storyboard.TargetProperty="X">
+                                            <LinearDoubleKeyFrame Value="230" KeyTime="0:0:0"/>
                                         </DoubleAnimationUsingKeyFrames>
                                     </Storyboard>
                                 </VisualState>
@@ -1367,13 +1448,20 @@
                             </VisualStateGroup>
                         </VisualStateManager.VisualStateGroups>
 
-                        <Canvas Width="200" Height="300" >
+                 
+                        <Canvas Width="200" Height="300">
+                            <!-- 添加缩放变换:整体缩小为原来的2/3 -->
                             <Canvas.RenderTransform>
                                 <TransformGroup>
-                                    <TranslateTransform  x:Name="robotRightLeftAct"></TranslateTransform>
+                                    <!-- 缩放变换:X和Y轴均缩放为2/3 -->
+                                    <ScaleTransform ScaleX="0.6667" ScaleY="0.6667"/>
+                                    <!-- 保留原有的平移变换 -->
+                                    <TranslateTransform x:Name="robotRightLeftAct"></TranslateTransform>
                                 </TransformGroup>
                             </Canvas.RenderTransform>
-                            <Canvas x:Name="armXT1Center"  Width="80" Height="80" Canvas.Left="40" Canvas.Top="230" ToolTip="底座">
+
+                            <!-- 以下子元素内容保持不变(缩放由外层统一控制) -->
+                            <Canvas x:Name="armXT1Center"  Width="80" Height="80" Canvas.Left="40" Canvas.Top="230" ToolTip="底座" Panel.ZIndex="1">
                                 <Canvas.RenderTransform>
                                     <RotateTransform Angle="-90" />
                                 </Canvas.RenderTransform>
@@ -1393,13 +1481,13 @@
                                     </Path.Data>
                                 </Path>
                             </Canvas>
-                            <Canvas x:Name="robot" Width="100" Height="150" RenderTransformOrigin="1 1" >
+
+                            <Canvas x:Name="robot" Width="100" Height="200" RenderTransformOrigin="0.8 0.9" >
                                 <Canvas.RenderTransform>
-                                    <TransformGroup>
-                                        <RotateTransform  x:Name="robotRotateAct"/>
-                                    </TransformGroup>
+                                    <RotateTransform  x:Name="robotRotateAct"/>
                                 </Canvas.RenderTransform>
-                                <Canvas x:Name="armXT1" Width="200" Height="100"  Canvas.Top="100" RenderTransformOrigin="0.5 0.7">
+
+                                <Canvas x:Name="armXT1" Width="200" Height="100"  Canvas.Top="110" Canvas.Left="-10" RenderTransformOrigin="0.5 0.7">
                                     <Canvas.RenderTransform>
                                         <RotateTransform  x:Name="armXT1RotateAct"/>
                                     </Canvas.RenderTransform>
@@ -1417,13 +1505,13 @@
                                             </Path.Data>
                                         </Path>
                                         <Path Stroke="{StaticResource robotBorderBrush}" StrokeThickness="1" Canvas.Left="0" Canvas.Top="-5"
-                                        StrokeEndLineCap="Round" StrokeStartLineCap="Round" Fill="{StaticResource RobotBrush}"
-                                        Data="M 0,10 A 20,20 0 0 0 0,55">
+                StrokeEndLineCap="Round" StrokeStartLineCap="Round" Fill="{StaticResource RobotBrush}"
+                Data="M 0,10 A 20,20 0 0 0 0,55">
                                         </Path>
                                     </Canvas>
                                 </Canvas>
 
-                                <Canvas x:Name="armXT2" Width="120" Height="40" Canvas.Left="-170" Canvas.Top="127">
+                                <Canvas x:Name="armXT2" Width="120" Height="40" Canvas.Left="-170" Canvas.Top="140">
                                     <Canvas.RenderTransform>
                                         <TransformGroup>
                                             <TranslateTransform x:Name="armXT2Act"></TranslateTransform>
@@ -1434,12 +1522,12 @@
                                             <RotateTransform x:Name="armXT2ArmRotateAct"/>
                                         </Canvas.RenderTransform>
                                         <Path Stroke="{StaticResource robotBorderBrush}" StrokeThickness="2" Canvas.Left="93" 
-                                        StrokeEndLineCap="Round" StrokeStartLineCap="Round" Fill="WhiteSmoke"
-                                        Data="M 0,0 A 20,20 0 0 1 0,40">
+                StrokeEndLineCap="Round" StrokeStartLineCap="Round" Fill="WhiteSmoke"
+                Data="M 0,0 A 20,20 0 0 1 0,40">
                                         </Path>
                                         <Path Stroke="{StaticResource robotBorderBrush}" StrokeThickness="2" Canvas.Left="0" 
-                                        StrokeEndLineCap="Round" StrokeStartLineCap="Round" Fill="{StaticResource RobotBrush}"
-                                        Data="M 0,0 A 20,20 0 0 0 0,40">
+                StrokeEndLineCap="Round" StrokeStartLineCap="Round" Fill="{StaticResource RobotBrush}"
+                Data="M 0,0 A 20,20 0 0 0 0,40">
                                         </Path>
 
                                         <Path  Stroke="{StaticResource robotBorderBrush}" Fill="{StaticResource RobotBrush}" StrokeThickness="2" StrokeEndLineCap="Round" >
@@ -1455,7 +1543,7 @@
                                             </Path.Data>
                                         </Path>
                                         <Ellipse Width="24" Height="24" Stroke="#030303" StrokeThickness="4"  Fill="Transparent" 
-                                        Canvas.Top="8" Canvas.Left="83"/>
+                Canvas.Top="8" Canvas.Left="83"/>
 
                                         <Canvas x:Name="armGripper" Height="40" Width="50"  Canvas.Left="0" Canvas.Top="0" Panel.ZIndex="1" RenderTransformOrigin="0,0.5">
                                             <Canvas.RenderTransform>
@@ -1465,7 +1553,6 @@
                                             <Viewbox Canvas.Left="30" Canvas.Top="-22" Width="85" Height="85">
                                                 <userControls:WaferCtrl WaferData="{Binding RobotWafer,RelativeSource={RelativeSource TemplatedParent}}"/>
                                             </Viewbox>
-                                        
                                         </Canvas>
 
                                         <Canvas x:Name="armGripper2" Height="120" Width="50"  Canvas.Left="-30" Canvas.Top="-100" RenderTransformOrigin="0.5,1">
@@ -1473,13 +1560,11 @@
                                                 <RotateTransform x:Name="grip2RotateAct"/>
                                             </Canvas.RenderTransform>
                                             <Image Width="48" Source="pack://application:,,,/PunkHPX8_Themes;component/Themes/Images/parts/atmrobot/hand1.png"></Image>
-                                            <Viewbox Canvas.Left="-125" Canvas.Top="60" Width="85" Height="85">
+                                            <Viewbox Canvas.Left="-20" Canvas.Top="-30" Width="85" Height="85">
                                                 <userControls:WaferCtrl WaferData="{Binding Robot2Wafer,RelativeSource={RelativeSource TemplatedParent}}"/>
                                             </Viewbox>
                                         </Canvas>
                                     </Canvas>
-                                    
-                                    
                                 </Canvas>
                             </Canvas>
                         </Canvas>

+ 5 - 15
PunkHPX8_Themes/UserControls/CellChamber.xaml

@@ -410,17 +410,7 @@
 
             <Polygon Points="1300,945 1300,900 1350,900 1350,945 1300,945" Fill="DarkGray" StrokeThickness="2" >
             </Polygon>
-            <Canvas Width="300" Height="300" Canvas.Left="700" Canvas.Top="500">
-                <Rectangle Width="300" Height="300">
-                    <Rectangle.Fill>
-                        <LinearGradientBrush StartPoint="0,0" EndPoint="1,1">
-                            <GradientStop Color="Silver" Offset="0.0" />
-                            <GradientStop Color="White" Offset="0.5" />
-                            <GradientStop Color="Silver" Offset="1" />
-                        </LinearGradientBrush>
-                    </Rectangle.Fill>
-                </Rectangle>
-            </Canvas>
+            
             <Canvas Width="500" Height="500" Canvas.Left="480" Canvas.Top="300"  RenderTransformOrigin="1 1">
                 <Canvas.RenderTransform>
                     <TransformGroup>
@@ -428,7 +418,7 @@
                     </TransformGroup>
                 </Canvas.RenderTransform>
 
-                <customControls:GuangChuanRobotControl  OriginT="T_Origin"  Canvas.Left="-30" Canvas.Top="-180"   Width="540" Height="810"     RobotTAction="{Binding ElementName=efem,Path=RobotATAction}"  RobotXAction="{Binding ElementName=efem,Path=RobotAXAction}" RobotWafer="{Binding ElementName=efem,Path=RobotAWaferInfo}"/>
+                <customControls:PunkRobotControl  OriginT="T_Origin"  Canvas.Left="150" Canvas.Top="85"   Width="540" Height="810"     RobotTAction="{Binding ElementName=efem,Path=RobotATAction}"  RobotXAction="{Binding ElementName=efem,Path=RobotAXAction}" RobotWafer="{Binding ElementName=efem,Path=RobotAWaferInfo}" Robot2Wafer="{Binding ElementName=efem,Path=RobotBWaferInfo}"/>
             </Canvas>
 
             <local:Loadport Canvas.Left="300" Canvas.Top="270" Width="300" Height="300" RotateTransformValue="90" HorizontalAlignment="Left" VerticalAlignment="Top"/>
@@ -452,9 +442,9 @@
 
             <TextBox IsReadOnly="True" BorderThickness="0"  Text="LP1" Canvas.Left="-243"  Canvas.Top="378" FontSize="55" Width="280"  Height="84" Background="Transparent" HorizontalContentAlignment="Center" HorizontalAlignment="Left" VerticalAlignment="Top"/>
             <TextBox IsReadOnly="True" BorderThickness="0"  Text="LP2" Canvas.Left="-243"  Canvas.Top="754" FontSize="55" Width="280"  Height="82" Background="Transparent"  HorizontalContentAlignment="Center" HorizontalAlignment="Left" VerticalAlignment="Top" RenderTransformOrigin="0.709,0.612"/>
-            <local:DualChamber Canvas.Left="1280" Canvas.Top="996" Width="400" RotateTransformValue="0" RobotWafer1="{Binding PlatingCell1Wafer}" RobotWafer2="{Binding PlatingCell2Wafer}" HorizontalAlignment="Center" VerticalAlignment="Top"></local:DualChamber>
-            <local:DualChamber Canvas.Left="1280" Canvas.Top="-45" Width="400" RotateTransformValue="180" RobotWafer1="{Binding PlatingCell3Wafer}" RobotWafer2="{Binding PlatingCell4Wafer}" HorizontalAlignment="Center" VerticalAlignment="Top"></local:DualChamber>
-            <local:DualChamber Canvas.Left="1712" Canvas.Top="445" Width="400" RotateTransformValue="270" RobotWafer1="{Binding VPW1Wafer}" RobotWafer2="{Binding VPW2Wafer}" HorizontalAlignment="Left" VerticalAlignment="Center"></local:DualChamber>
+            <local:DualChamber Canvas.Left="1280" Canvas.Top="996" Width="400" RotateTransformValue="0" RobotWafer1="{Binding PlatingCell3Wafer}" RobotWafer2="{Binding PlatingCell4Wafer}" HorizontalAlignment="Center" VerticalAlignment="Top"></local:DualChamber>
+            <local:DualChamber Canvas.Left="1280" Canvas.Top="-45" Width="400" RotateTransformValue="180" RobotWafer1="{Binding PlatingCell2Wafer}" RobotWafer2="{Binding PlatingCell1Wafer}" HorizontalAlignment="Center" VerticalAlignment="Top"></local:DualChamber>
+            <local:DualChamber Canvas.Left="1712" Canvas.Top="445" Width="400" RotateTransformValue="270" RobotWafer1="{Binding VPW2Wafer}" RobotWafer2="{Binding VPW1Wafer}" HorizontalAlignment="Left" VerticalAlignment="Center"></local:DualChamber>
             <local:DummyCassette Canvas.Left="380" Canvas.Top="965" RotateTransformValue="0" Width="225" Height="225" HorizontalAlignment="Left" VerticalAlignment="Top"/>
             <local:SRD CassetteName="SRD" Canvas.Top="13" Width="225" Height="225" HorizontalAlignment="Center" VerticalAlignment="Top" SRD1Wafer="{Binding Srd1Wafer}" SRD2Wafer="{Binding Srd2Wafer}" SRDVisibility="Visible" Canvas.Left="450"/>
 

+ 9 - 9
PunkHPX8_Themes/UserControls/CellChamber.xaml.cs

@@ -181,15 +181,6 @@ namespace PunkHPX8_Themes.UserControls
 
         }
 
-        public static readonly DependencyProperty LP3LoadedProperty = DependencyProperty.Register(
-       "LP3Loaded", typeof(bool), typeof(CellChamber),
-       new FrameworkPropertyMetadata(false, FrameworkPropertyMetadataOptions.AffectsRender));
-        public bool LP3Loaded
-        {
-            get { return (bool)this.GetValue(LP3LoadedProperty); }
-            set { this.SetValue(LP3LoadedProperty, value); }
-        }
-
         public static readonly DependencyProperty CurrentRobotPositionProperty = DependencyProperty.Register(
       "CurrentRobotPosition", typeof(RobotPosition), typeof(CellChamber),
       new PropertyMetadata(RobotPosition.Origin, PositionChangedCallback));
@@ -239,5 +230,14 @@ namespace PunkHPX8_Themes.UserControls
         {            
             VisualStateManager.GoToElementState(control, robotPosition.ToString(), true);
         }
+
+        public static readonly DependencyProperty RobotBWaferInfoProperty = DependencyProperty.Register(
+  "RobotBWaferInfo", typeof(WaferInfo), typeof(CellChamber));
+        public WaferInfo RobotBWaferInfo
+        {
+            get { return (WaferInfo)this.GetValue(RobotBWaferInfoProperty); }
+            set { this.SetValue(RobotBWaferInfoProperty, value); }
+        }
+
     }
 }

+ 9 - 7
PunkHPX8_Themes/UserControls/EFEM.xaml.cs

@@ -195,7 +195,14 @@ namespace PunkHPX8_Themes.UserControls
             var control = d as EFEM;
             GoToPosition(control,newAct);
         }
-        
+
+
+        private static void GoToPosition(Control control, RobotPosition robotPosition)
+        {
+            VisualStateManager.GoToElementState(control, robotPosition.ToString(), true);
+        }
+
+
         public static readonly DependencyProperty RobotATActionProperty = DependencyProperty.Register(
      "RobotATAction", typeof(WaferRobotTAction), typeof(EFEM),
      new FrameworkPropertyMetadata(WaferRobotTAction.T_Origin, FrameworkPropertyMetadataOptions.AffectsRender));
@@ -222,12 +229,7 @@ namespace PunkHPX8_Themes.UserControls
             get { return (WaferInfo)this.GetValue(RobotAWaferInfoProperty); }
             set { this.SetValue(RobotAWaferInfoProperty, value); }
         }
-        private static void GoToPosition(Control control,RobotPosition robotPosition)
-        {            
-            VisualStateManager.GoToElementState(control, robotPosition.ToString(), true);
-        }
-
-        
+   
         public static readonly DependencyProperty RobotBWaferInfoProperty = DependencyProperty.Register(
    "RobotBWaferInfo", typeof(WaferInfo), typeof(EFEM));
         public WaferInfo RobotBWaferInfo