Explorar o código

1 revise robot cycle only one module bug
2 add robot cartoon

chenzk hai 2 semanas
pai
achega
9678b3fb49

+ 1 - 1
PunkHPX8_MainPages/ViewModels/EfemViewModel.cs

@@ -1205,7 +1205,7 @@ namespace PunkHPX8_MainPages.ViewModels
                     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))
+                    while ((newValue.Action == RobotAction.Placing && ModuleManager.ModuleInfos["EfemRobot"].WaferManager.Wafers[1].WaferStatus != 0) || (newValue.Action == RobotAction.Picking && ModuleManager.ModuleInfos["EfemRobot"].WaferManager.Wafers[1].WaferStatus == 0))
                     {
                         await Task.Delay(100);
                     }

+ 108 - 107
PunkHPX8_MainPages/ViewModels/OperationOverNewViewModel.cs

@@ -318,8 +318,8 @@ namespace PunkHPX8_MainPages.ViewModels
             set
             {
                 EFEMRobotMoveInfoChanged(m_EfemRobotMoveInfo, value);
-                //m_EfemRobotMoveInfo = value;
-                SetProperty(ref m_EfemRobotMoveInfo, value);
+                m_EfemRobotMoveInfo = value;
+                //SetProperty(ref m_EfemRobotMoveInfo, value);
 
             }
         }
@@ -579,6 +579,7 @@ namespace PunkHPX8_MainPages.ViewModels
                 if (ModuleManager.ModuleInfos["EfemRobot"].WaferManager.Wafers.Count != 0)
                 {
                     EFEMBladeAWafer = ModuleManager.ModuleInfos["EfemRobot"].WaferManager.Wafers[0];
+                    EFEMBladeBWafer = ModuleManager.ModuleInfos["EfemRobot"].WaferManager.Wafers[1];
                 }
                 if (ModuleManager.ModuleInfos["Aligner1"].WaferManager.Wafers.Count != 0)
                 {
@@ -849,7 +850,6 @@ namespace PunkHPX8_MainPages.ViewModels
             {
                 return;
             }
-            #region pick 和 place LL
 
             if ((oldValue.Action == RobotAction.None || oldValue.ArmTarget != newValue.ArmTarget) && (newValue.Action == RobotAction.Placing || newValue.Action == RobotAction.Picking))
             {
@@ -868,124 +868,94 @@ namespace PunkHPX8_MainPages.ViewModels
 
                 if (arm == "ArmA")
                 {
-                    var robot3Robot3TAction = (WaferRobotTAction)Enum.Parse(typeof(WaferRobotTAction), module, true);
-                    //await Task.Delay(1000);
-                    await ChangePosition(robot3Robot3TAction, newValue.Action);
-                    if (Robot3TAction != robot3Robot3TAction)
+                    var robot1Robot1TAction = (WaferRobotTAction)Enum.Parse(typeof(WaferRobotTAction), module, true);
+                    //Robot整体平移动画
+                    await ChangePosition(robot1Robot1TAction, newValue.Action);
+                    if (Robot1TAction != robot1Robot1TAction)
                     {
-                        Robot3TAction = robot3Robot3TAction;
+                        Robot1TAction = robot1Robot1TAction;
                         await Task.Delay(600);
                     }
+                    //await Task.Delay(1500);
+
+                    Robot1XAction = WaferRobotXAction.Extend;
 
 
-                    Robot3XAction = WaferRobotXAction.Extend;
                     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);
                     }
-                    Robot3XAction = WaferRobotXAction.Retract;
 
-                    if(newValue.Action == RobotAction.Placing)
+                    Robot1XAction = WaferRobotXAction.Retract;
+
+
+                    if (newValue.Action == RobotAction.Placing)
                     {
                         await ChangePosition(WaferRobotTAction.T_Origin, newValue.Action);
                     }
-                    
-                }
-            }
-
-            #endregion
 
-            #region pick 和 place pm
-            if (oldValue.Action == RobotAction.None && newValue.Action == RobotAction.Extending)
-            {
-                var TMRobotMoveActionBladeTarget = newValue.BladeTarget;
-                if (TMRobotMoveActionBladeTarget != null)
-                {
-                    RobotTarget = TMRobotMoveActionBladeTarget.ToString();
-                }
-                else
-                {
-                    return;
-                }
-                var values = RobotTarget.Split('.');
-                var arm = values[0];
-                var module = values[1];
-                if (arm == "ArmA")
-                {
-                    Robot3TAction = (WaferRobotTAction)Enum.Parse(typeof(WaferRobotTAction), module, true);
-                    await Task.Delay(1500);
-                    //ChangePosition(Robot3TAction);
-                    //await Task.Delay(2000);
-                    Robot3XAction = WaferRobotXAction.Extend;
                 }
-                else if (arm == "ArmB")
+                else  //使用上手臂
                 {
-                    Robot4TAction = (WaferRobotTAction)Enum.Parse(typeof(WaferRobotTAction), module, true);
-                    await Task.Delay(1500);
-                    //ChangePosition(Robot4TAction);
-                    //await Task.Delay(2000);
-                    Robot4XAction = WaferRobotXAction.Extend;
-                }
+                    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);
 
-            }
-            if (oldValue.Action == RobotAction.None && newValue.Action == RobotAction.Retracting)
-            {
-                var TMRobotMoveActionBladeTarget = newValue.BladeTarget;
-                if (TMRobotMoveActionBladeTarget != null)
-                {
-                    RobotTarget = TMRobotMoveActionBladeTarget.ToString();
-                }
-                else
-                {
-                    return;
-                }
-                var values = RobotTarget.Split('.');
-                var arm = values[0];
-                if (arm == "ArmA")
-                {
+                    Robot1XAction = WaferRobotXAction.Extend2;
 
-                    Robot3XAction = WaferRobotXAction.Retract;
-                    await Task.Delay(3000);
-                    //ChangePosition(Robot3TAction);
-                    //await Task.Delay(2000);
-                }
-                else if (arm == "ArmB")
-                {
-                    Robot4XAction = WaferRobotXAction.Retract;
-                    await Task.Delay(3000);
-                    //ChangePosition(Robot3TAction);
-                    //await Task.Delay(2000);
-                }
 
-            }
-            #endregion
+                    while ((newValue.Action == RobotAction.Placing && ModuleManager.ModuleInfos["EfemRobot"].WaferManager.Wafers[1].WaferStatus != 0) || (newValue.Action == RobotAction.Picking && ModuleManager.ModuleInfos["EfemRobot"].WaferManager.Wafers[1].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)
             {
-                if (Robot3XAction == WaferRobotXAction.Extend)
+                if (Robot1XAction == WaferRobotXAction.Extend || Robot2XAction == WaferRobotXAction.Extend2)
                 {
-                    Robot3XAction = WaferRobotXAction.Retract;
+                    Robot1XAction = WaferRobotXAction.Retract2;
                 }
-                if (Robot4XAction == WaferRobotXAction.Extend)
+                if (Robot2XAction == WaferRobotXAction.Extend || Robot2XAction == WaferRobotXAction.Extend2)
+                {
+                    Robot2XAction = WaferRobotXAction.Retract2;
+                }
+                await Task.Delay(2000);
+                if (Robot1TAction != WaferRobotTAction.T_Origin)
                 {
-                    Robot4XAction = WaferRobotXAction.Retract;
+                    Robot1TAction = WaferRobotTAction.T_Origin;
                 }
-                if (Robot3TAction != WaferRobotTAction.T_Origin)
+                if (Robot2TAction != WaferRobotTAction.T_Origin)
                 {
-                    Robot3TAction = WaferRobotTAction.T_Origin;
+                    Robot2TAction = WaferRobotTAction.T_Origin;
                 }
-                if (Robot4TAction != WaferRobotTAction.T_Origin)
+                if (CurrentRobotPosition != EFEM.RobotPosition.Origin)
                 {
-                    Robot4TAction = WaferRobotTAction.T_Origin;
+                    CurrentRobotPosition = EFEM.RobotPosition.Origin;
                 }
-                await Task.Delay(1000);
                 await ChangePosition(WaferRobotTAction.T_Origin, newValue.Action);
-
             }
 
             #endregion
 
+
+
+
         }
 
         private void addDataKeys()
@@ -1024,29 +994,21 @@ namespace PunkHPX8_MainPages.ViewModels
         }
         private async Task ChangePosition(WaferRobotTAction waferRobotTAction, RobotAction robotAction)
         {
-            await Task.Delay(500);
-            int delay = 500;
+            //CurrentRobotPosition = RobotPosition.Origin;
+            //await Task.Delay(1000);
             if (robotAction == RobotAction.Placing)
             {
                 if (waferRobotTAction == WaferRobotTAction.LP1)
                 {
                     CurrentRobotPosition = EFEM.RobotPosition.Left_Place;
-                    await Task.Delay(delay);
-                }
-                else if (waferRobotTAction == WaferRobotTAction.LP3)
-                {
-                    CurrentRobotPosition = EFEM.RobotPosition.Right_Place;
-                    await Task.Delay(delay);
                 }
-                else if (waferRobotTAction == WaferRobotTAction.LP2 )
+                else if (waferRobotTAction == WaferRobotTAction.LP2)
                 {
                     CurrentRobotPosition = EFEM.RobotPosition.Middle_Place;
-                    await Task.Delay(delay);
                 }
                 else if (waferRobotTAction == WaferRobotTAction.Aligner1)
                 {
                     CurrentRobotPosition = EFEM.RobotPosition.Aligner_Place;
-                    await Task.Delay(delay);
                 }
                 else if (waferRobotTAction == WaferRobotTAction.SRD1 || waferRobotTAction == WaferRobotTAction.SRD2)
                 {
@@ -1056,10 +1018,33 @@ namespace PunkHPX8_MainPages.ViewModels
                 {
                     CurrentRobotPosition = EFEM.RobotPosition.Dummy_Place;
                 }
+                else if (waferRobotTAction == WaferRobotTAction.VPW1)
+                {
+                    CurrentRobotPosition = EFEM.RobotPosition.VPW1_Place;
+                }
+                else if (waferRobotTAction == WaferRobotTAction.VPW2)
+                {
+                    CurrentRobotPosition = EFEM.RobotPosition.VPW2_Place;
+                }
+                else if (waferRobotTAction == WaferRobotTAction.PlatingCell1)
+                {
+                    CurrentRobotPosition = EFEM.RobotPosition.PlatingCell1_Place;
+                }
+                else if (waferRobotTAction == WaferRobotTAction.PlatingCell2)
+                {
+                    CurrentRobotPosition = EFEM.RobotPosition.PlatingCell2_Place;
+                }
+                else if (waferRobotTAction == WaferRobotTAction.PlatingCell3)
+                {
+                    CurrentRobotPosition = EFEM.RobotPosition.PlatingCell3_Place;
+                }
+                else if (waferRobotTAction == WaferRobotTAction.PlatingCell4)
+                {
+                    CurrentRobotPosition = EFEM.RobotPosition.PlatingCell4_Place;
+                }
                 else
                 {
                     CurrentRobotPosition = EFEM.RobotPosition.Origin;
-                    await Task.Delay(delay);
                 }
             }
             else
@@ -1067,22 +1052,14 @@ namespace PunkHPX8_MainPages.ViewModels
                 if (waferRobotTAction == WaferRobotTAction.LP1)
                 {
                     CurrentRobotPosition = EFEM.RobotPosition.Left;
-                    await Task.Delay(delay);
-                }
-                else if (waferRobotTAction == WaferRobotTAction.LP3)
-                {
-                    CurrentRobotPosition = EFEM.RobotPosition.Right;
-                    await Task.Delay(delay);
                 }
                 else if (waferRobotTAction == WaferRobotTAction.LP2)
                 {
                     CurrentRobotPosition = EFEM.RobotPosition.Middle;
-                    await Task.Delay(delay);
                 }
                 else if (waferRobotTAction == WaferRobotTAction.Aligner1)
                 {
                     CurrentRobotPosition = EFEM.RobotPosition.Aligner;
-                    await Task.Delay(delay);
                 }
                 else if (waferRobotTAction == WaferRobotTAction.SRD1 || waferRobotTAction == WaferRobotTAction.SRD2)
                 {
@@ -1092,13 +1069,37 @@ namespace PunkHPX8_MainPages.ViewModels
                 {
                     CurrentRobotPosition = EFEM.RobotPosition.Dummy;
                 }
+                else if (waferRobotTAction == WaferRobotTAction.VPW1)
+                {
+                    CurrentRobotPosition = EFEM.RobotPosition.VPW1;
+                }
+                else if (waferRobotTAction == WaferRobotTAction.VPW2)
+                {
+                    CurrentRobotPosition = EFEM.RobotPosition.VPW2;
+                }
+                else if (waferRobotTAction == WaferRobotTAction.PlatingCell1)
+                {
+                    CurrentRobotPosition = EFEM.RobotPosition.PlatingCell1;
+                }
+                else if (waferRobotTAction == WaferRobotTAction.PlatingCell2)
+                {
+                    CurrentRobotPosition = EFEM.RobotPosition.PlatingCell2;
+                }
+                else if (waferRobotTAction == WaferRobotTAction.PlatingCell3)
+                {
+                    CurrentRobotPosition = EFEM.RobotPosition.PlatingCell3;
+                }
+                else if (waferRobotTAction == WaferRobotTAction.PlatingCell4)
+                {
+                    CurrentRobotPosition = EFEM.RobotPosition.PlatingCell4;
+                }
                 else
                 {
                     CurrentRobotPosition = EFEM.RobotPosition.Origin;
-                    await Task.Delay(delay);
                 }
             }
-                
+
+            await Task.Delay(600);
         }
         /// <summary>
         /// 计算最大值最小值

+ 20 - 3
PunkHPX8_MainPages/Views/OperationOverNewView.xaml

@@ -53,9 +53,26 @@
             </StackPanel>
         </Border>
         <Canvas >
-            <userControls:CellChamber  Height="600" Width="1000" Canvas.Left="130" Canvas.Top="106" VPW1Wafer="{Binding VPW1Wafer}"
-                                       VPW2Wafer="{Binding VPW2Wafer}" PlatingCell1Wafer="{Binding PlatingCell1Wafer}" PlatingCell2Wafer="{Binding PlatingCell2Wafer}"
-                                       PlatingCell3Wafer="{Binding PlatingCell3Wafer}" PlatingCell4Wafer="{Binding PlatingCell4Wafer}"></userControls:CellChamber>
+            <userControls:CellChamber  Height="600" Width="1000" Canvas.Left="130" Canvas.Top="106"
+                                        LP1Presented="{Binding RtDataValues[LP1.CassettePlaced]}" 
+                                        LP2Presented="{Binding RtDataValues[LP2.CassettePlaced]}" 
+                                        LP1Loaded="{Binding RtDataValues[LP1.IsLoaded]}" 
+                                        LP2Loaded="{Binding RtDataValues[LP2.IsLoaded]}" 
+                                        RobotATAction="{Binding Robot1TAction}" 
+                                        RobotAXAction="{Binding Robot1XAction}"
+                                        RobotAWaferInfo="{Binding BladeAWafer}" 
+                                        RobotBWaferInfo="{Binding BladeBWafer}" 
+                                        CurrentRobotPosition="{Binding CurrentRobotPosition}"
+                                        Aligner1Wafer="{Binding Aligner1Wafer}" 
+                                        VPW1Wafer="{Binding VPW1Wafer}"
+                                        VPW2Wafer="{Binding VPW2Wafer}"
+                                        PlatingCell1Wafer="{Binding PlatingCell1Wafer}"
+                                        PlatingCell2Wafer="{Binding PlatingCell2Wafer}"
+                                        PlatingCell3Wafer="{Binding PlatingCell3Wafer}"
+                                        PlatingCell4Wafer="{Binding PlatingCell4Wafer}"
+                                        AlignActionValue="{Binding AlignValue, UpdateSourceTrigger=PropertyChanged}"
+                                        Srd1Wafer="{Binding Srd1Wafer}"
+                                        Srd2Wafer="{Binding Srd2Wafer}"></userControls:CellChamber>
         </Canvas>
         <Canvas Canvas.Left="160" Canvas.Top="-165">
             <TabPanel  Canvas.Left="1170"  Canvas.Top="140" Visibility="{Binding ElementName=CarrierRadioButton,Path=IsChecked,Converter={StaticResource boolToVisibility2}}">

+ 8 - 1
PunkHPX8_RT/Modules/EFEM/CycleRobotCycleNewRoutine.cs

@@ -82,7 +82,14 @@ namespace PunkHPX8_RT.Modules.EFEM
                     continue;
                 }
                 // generateCycle的参数:源模块,源模块slot,目的模块,目的模块slot
-                _actions.AddRange(GenerateCycle(_sequences[0], item.Slot, _sequences[1].ModuleName,0));
+                if(_sequences.Count == 1)
+                {
+                    _actions.AddRange(GenerateCycle(_sequences[0], item.Slot, _sequences[0].ModuleName, 0));
+                }
+                else
+                {
+                    _actions.AddRange(GenerateCycle(_sequences[0], item.Slot, _sequences[1].ModuleName, 0));
+                }
                 for (int i = 1; i < _sequences.Count; i++)
                 {
                  

+ 67 - 23
PunkHPX8_Themes/Themes/Generic.xaml

@@ -1057,7 +1057,9 @@
                                                 <LinearDoubleKeyFrame Value="0"   KeyTime="0:0:9"/>
                                             </DoubleAnimationUsingKeyFrames>
                                             <DoubleAnimationUsingKeyFrames Storyboard.TargetName="grip1RotateAct" Storyboard.TargetProperty="Angle">
-                                                <LinearDoubleKeyFrame Value="180" KeyTime="0:0:0"/>
+                                                <LinearDoubleKeyFrame Value="0" KeyTime="0:0:0"/>
+                                                <LinearDoubleKeyFrame Value="60" KeyTime="0:0:3"/>
+                                                <LinearDoubleKeyFrame Value="120" KeyTime="0:0:6"/>
                                                 <LinearDoubleKeyFrame Value="180" KeyTime="0:0:9"/>
                                             </DoubleAnimationUsingKeyFrames>
                                             <DoubleAnimationUsingKeyFrames Storyboard.TargetName="grip2RotateAct" Storyboard.TargetProperty="Angle">
@@ -1076,8 +1078,10 @@
                                                 <LinearDoubleKeyFrame Value="0"   KeyTime="0:0:0"/>
                                             </DoubleAnimationUsingKeyFrames>
                                             <DoubleAnimationUsingKeyFrames Storyboard.TargetName="grip1RotateAct" Storyboard.TargetProperty="Angle">
+                                                <LinearDoubleKeyFrame Value="0" KeyTime="0:0:9"/>
+                                                <LinearDoubleKeyFrame Value="60" KeyTime="0:0:6"/>
+                                                <LinearDoubleKeyFrame Value="120" KeyTime="0:0:3"/>
                                                 <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"/>
@@ -1099,7 +1103,9 @@
                                                 <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:0"/>
+                                                <LinearDoubleKeyFrame Value="30" KeyTime="0:0:3"/>
+                                                <LinearDoubleKeyFrame Value="-30" KeyTime="0:0:6"/>
                                                 <LinearDoubleKeyFrame Value="-90" KeyTime="0:0:9"/>
                                             </DoubleAnimationUsingKeyFrames>
                                         </Storyboard>
@@ -1117,8 +1123,10 @@
                                                 <LinearDoubleKeyFrame Value="0" KeyTime="0:0:9"/>
                                             </DoubleAnimationUsingKeyFrames>
                                             <DoubleAnimationUsingKeyFrames Storyboard.TargetName="grip2RotateAct" Storyboard.TargetProperty="Angle">
+                                                <LinearDoubleKeyFrame Value="90" KeyTime="0:0:9"/>
+                                                <LinearDoubleKeyFrame Value="30" KeyTime="0:0:6"/>
+                                                <LinearDoubleKeyFrame Value="-30" KeyTime="0:0:3"/>
                                                 <LinearDoubleKeyFrame Value="-90" KeyTime="0:0:0"/>
-                                                <LinearDoubleKeyFrame Value="-90" KeyTime="0:0:9"/>
                                             </DoubleAnimationUsingKeyFrames>
                                         </Storyboard>
                                     </VisualTransition>
@@ -1160,7 +1168,7 @@
                                             <LinearDoubleKeyFrame Value="-120" KeyTime="0:0:0"/>
                                         </DoubleAnimationUsingKeyFrames>
                                         <DoubleAnimationUsingKeyFrames Storyboard.TargetName="grip1RotateAct" Storyboard.TargetProperty="Angle">
-                                            <LinearDoubleKeyFrame Value="180" KeyTime="0:0:0"/>
+                                            <LinearDoubleKeyFrame Value="0" KeyTime="0:0:0"/>
                                         </DoubleAnimationUsingKeyFrames>
                                         <DoubleAnimationUsingKeyFrames Storyboard.TargetName="grip2RotateAct" Storyboard.TargetProperty="Angle">
                                             <LinearDoubleKeyFrame Value="90" KeyTime="0:0:0"/>
@@ -1189,7 +1197,7 @@
                                             <LinearDoubleKeyFrame Value="0" KeyTime="0:0:0"/>
                                         </DoubleAnimationUsingKeyFrames>
                                         <DoubleAnimationUsingKeyFrames Storyboard.TargetName="grip2RotateAct" Storyboard.TargetProperty="Angle">
-                                            <LinearDoubleKeyFrame Value="-90" KeyTime="0:0:0"/>
+                                            <LinearDoubleKeyFrame Value="90" KeyTime="0:0:0"/>
                                         </DoubleAnimationUsingKeyFrames>
                                     </Storyboard>
                                 </VisualState>
@@ -1228,7 +1236,10 @@
                                     <VisualTransition To="Aligner1">
                                         <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>
@@ -1255,14 +1266,20 @@
                                     <VisualTransition To="SRD1">
                                         <Storyboard FillBehavior="HoldEnd">
                                             <DoubleAnimationUsingKeyFrames Storyboard.TargetName="robotRotateAct" Storyboard.TargetProperty="Angle">
-                                                <LinearDoubleKeyFrame Value="90" KeyTime="0:0:0.5"/>
+                                                <LinearDoubleKeyFrame Value="60" 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="SRD2">
                                         <Storyboard FillBehavior="HoldEnd">
                                             <DoubleAnimationUsingKeyFrames Storyboard.TargetName="robotRotateAct" Storyboard.TargetProperty="Angle">
-                                                <LinearDoubleKeyFrame Value="90" KeyTime="0:0:0.5"/>
+                                                <LinearDoubleKeyFrame Value="60" KeyTime="0:0:0.5"/>
+                                            </DoubleAnimationUsingKeyFrames>
+                                            <DoubleAnimationUsingKeyFrames Storyboard.TargetName="robotRightLeftAct" Storyboard.TargetProperty="X">
+                                                <LinearDoubleKeyFrame Value="0" KeyTime="0:0:0.5"/>
                                             </DoubleAnimationUsingKeyFrames>
                                         </Storyboard>
                                     </VisualTransition>
@@ -1299,24 +1316,30 @@
                                     <VisualTransition To="PlatingCell2">
                                         <Storyboard FillBehavior="HoldEnd">
                                             <DoubleAnimationUsingKeyFrames Storyboard.TargetName="robotRotateAct" Storyboard.TargetProperty="Angle">
-                                                <LinearDoubleKeyFrame Value="90" KeyTime="0:0:0.5"/>
+                                                <LinearDoubleKeyFrame Value="100" KeyTime="0:0:0.5"/>
                                             </DoubleAnimationUsingKeyFrames>
                                             <DoubleAnimationUsingKeyFrames Storyboard.TargetName="robotRightLeftAct" Storyboard.TargetProperty="X">
-                                                <LinearDoubleKeyFrame Value="230" KeyTime="0:0:0.5"/>
+                                                <LinearDoubleKeyFrame Value="240" KeyTime="0:0:0.5"/>
                                             </DoubleAnimationUsingKeyFrames>
                                         </Storyboard>
                                     </VisualTransition>
                                     <VisualTransition To="PlatingCell3">
                                         <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="PlatingCell4">
                                         <Storyboard FillBehavior="HoldEnd">
                                             <DoubleAnimationUsingKeyFrames Storyboard.TargetName="robotRotateAct" Storyboard.TargetProperty="Angle">
-                                                <LinearDoubleKeyFrame Value="90" KeyTime="0:0:0.5"/>
+                                                <LinearDoubleKeyFrame Value="-100" KeyTime="0:0:0.5"/>
+                                            </DoubleAnimationUsingKeyFrames>
+                                            <DoubleAnimationUsingKeyFrames Storyboard.TargetName="robotRightLeftAct" Storyboard.TargetProperty="X">
+                                                <LinearDoubleKeyFrame Value="240" KeyTime="0:0:0.5"/>
                                             </DoubleAnimationUsingKeyFrames>
                                         </Storyboard>
                                     </VisualTransition>
@@ -1353,7 +1376,10 @@
                                 <VisualState Name="Aligner1">
                                     <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>
@@ -1373,21 +1399,27 @@
                                             <LinearDoubleKeyFrame Value="-50" KeyTime="0:0:0"/>
                                         </DoubleAnimationUsingKeyFrames>
                                         <DoubleAnimationUsingKeyFrames Storyboard.TargetName="robotRightLeftAct" Storyboard.TargetProperty="X">
-                                            <LinearDoubleKeyFrame Value="0" KeyTime="0:0:0.5"/>
+                                            <LinearDoubleKeyFrame Value="0" KeyTime="0:0:0"/>
                                         </DoubleAnimationUsingKeyFrames>
                                     </Storyboard>
                                 </VisualState>
                                 <VisualState Name="SRD1">
                                     <Storyboard FillBehavior="HoldEnd">
                                         <DoubleAnimationUsingKeyFrames Storyboard.TargetName="robotRotateAct" Storyboard.TargetProperty="Angle">
-                                            <LinearDoubleKeyFrame Value="90" KeyTime="0:0:0"/>
+                                            <LinearDoubleKeyFrame Value="60" KeyTime="0:0:0"/>
+                                        </DoubleAnimationUsingKeyFrames>
+                                        <DoubleAnimationUsingKeyFrames Storyboard.TargetName="robotRightLeftAct" Storyboard.TargetProperty="X">
+                                            <LinearDoubleKeyFrame Value="0" KeyTime="0:0:0"/>
                                         </DoubleAnimationUsingKeyFrames>
                                     </Storyboard>
                                 </VisualState>
                                 <VisualState Name="SRD2">
                                     <Storyboard FillBehavior="HoldEnd">
                                         <DoubleAnimationUsingKeyFrames Storyboard.TargetName="robotRotateAct" Storyboard.TargetProperty="Angle">
-                                            <LinearDoubleKeyFrame Value="90" KeyTime="0:0:0"/>
+                                            <LinearDoubleKeyFrame Value="60" KeyTime="0:0:0"/>
+                                        </DoubleAnimationUsingKeyFrames>
+                                        <DoubleAnimationUsingKeyFrames Storyboard.TargetName="robotRightLeftAct" Storyboard.TargetProperty="X">
+                                            <LinearDoubleKeyFrame Value="0" KeyTime="0:0:0"/>
                                         </DoubleAnimationUsingKeyFrames>
                                     </Storyboard>
                                 </VisualState>
@@ -1424,24 +1456,30 @@
                                 <VisualState Name="PlatingCell2">
                                     <Storyboard FillBehavior="HoldEnd">
                                         <DoubleAnimationUsingKeyFrames Storyboard.TargetName="robotRotateAct" Storyboard.TargetProperty="Angle">
-                                            <LinearDoubleKeyFrame Value="90" KeyTime="0:0:0"/>
+                                            <LinearDoubleKeyFrame Value="100" KeyTime="0:0:0"/>
                                         </DoubleAnimationUsingKeyFrames>
                                         <DoubleAnimationUsingKeyFrames Storyboard.TargetName="robotRightLeftAct" Storyboard.TargetProperty="X">
-                                            <LinearDoubleKeyFrame Value="230" KeyTime="0:0:0"/>
+                                            <LinearDoubleKeyFrame Value="240" KeyTime="0:0:0"/>
                                         </DoubleAnimationUsingKeyFrames>
                                     </Storyboard>
                                 </VisualState>
                                 <VisualState Name="PlatingCell3">
                                     <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="PlatingCell4">
                                     <Storyboard FillBehavior="HoldEnd">
                                         <DoubleAnimationUsingKeyFrames Storyboard.TargetName="robotRotateAct" Storyboard.TargetProperty="Angle">
-                                            <LinearDoubleKeyFrame Value="90" KeyTime="0:0:0"/>
+                                            <LinearDoubleKeyFrame Value="-100" KeyTime="0:0:0"/>
+                                        </DoubleAnimationUsingKeyFrames>
+                                        <DoubleAnimationUsingKeyFrames Storyboard.TargetName="robotRightLeftAct" Storyboard.TargetProperty="X">
+                                            <LinearDoubleKeyFrame Value="240" KeyTime="0:0:0"/>
                                         </DoubleAnimationUsingKeyFrames>
                                     </Storyboard>
                                 </VisualState>
@@ -1461,7 +1499,7 @@
                             </Canvas.RenderTransform>
 
                             <!-- 以下子元素内容保持不变(缩放由外层统一控制) -->
-                            <Canvas x:Name="armXT1Center"  Width="80" Height="80" Canvas.Left="40" Canvas.Top="230" ToolTip="底座" Panel.ZIndex="1">
+                            <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>
@@ -1497,7 +1535,7 @@
                                                 <PathGeometry>
                                                     <PathFigure StartPoint="0 5" IsClosed="True">
                                                         <LineSegment Point="102 0"/>
-                                                        <LineSegment Point="102 60" IsStroked="False"/>
+                                                        <LineSegment Point="102 60" />
                                                         <LineSegment Point="0 50"/>
                                                         <LineSegment Point="0 10" IsStroked="False"/>
                                                     </PathFigure>
@@ -1508,6 +1546,12 @@
                 StrokeEndLineCap="Round" StrokeStartLineCap="Round" Fill="{StaticResource RobotBrush}"
                 Data="M 0,10 A 20,20 0 0 0 0,55">
                                         </Path>
+                                        <Path Stroke="{StaticResource robotBorderBrush}" StrokeThickness="1"
+                                             StrokeEndLineCap="Round" StrokeStartLineCap="Round">
+                                            <Path.Data>
+                                                <LineGeometry StartPoint="0 50" EndPoint="0 10"/>
+                                            </Path.Data>
+                                        </Path>
                                     </Canvas>
                                 </Canvas>
 

+ 9 - 22
PunkHPX8_Themes/UserControls/CellChamber.xaml

@@ -410,25 +410,12 @@
 
             <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>
-                        <TranslateTransform  x:Name="robotRotateAct"/>
-                    </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}"/>
+            <Canvas Width="500" Height="500" Canvas.Left="670" Canvas.Top="560">
+                <customControls:PunkRobotControl  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}"
+                                                  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 +439,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 ElementName=efem,Path=PlatingCell1Wafer}" RobotWafer2="{Binding ElementName=efem,Path=PlatingCell2Wafer}" HorizontalAlignment="Center" VerticalAlignment="Top"></local:DualChamber>
-            <local:DualChamber Canvas.Left="1280" Canvas.Top="-45" Width="400" RotateTransformValue="180" RobotWafer1="{Binding ElementName=efem,Path=PlatingCell3Wafer}" RobotWafer2="{Binding ElementName=efem,Path=PlatingCell4Wafer}" HorizontalAlignment="Center" VerticalAlignment="Top"></local:DualChamber>
-            <local:DualChamber Canvas.Left="1712" Canvas.Top="445" Width="400" RotateTransformValue="270" RobotWafer1="{Binding ElementName=efem,Path=VPW1Wafer}" RobotWafer2="{Binding ElementName=efem,Path=VPW2Wafer}" HorizontalAlignment="Left" VerticalAlignment="Center"></local:DualChamber>
+            <local:DualChamber Canvas.Left="1280" Canvas.Top="996" Width="400" RotateTransformValue="0" RobotWafer1="{Binding ElementName=efem,Path=PlatingCell3Wafer}" RobotWafer2="{Binding ElementName=efem,Path=PlatingCell4Wafer}" HorizontalAlignment="Center" VerticalAlignment="Top"></local:DualChamber>
+            <local:DualChamber Canvas.Left="1280" Canvas.Top="-45" Width="400" RotateTransformValue="180" RobotWafer1="{Binding ElementName=efem,Path=PlatingCell2Wafer}" RobotWafer2="{Binding ElementName=efem,Path=PlatingCell1Wafer}" HorizontalAlignment="Center" VerticalAlignment="Top"></local:DualChamber>
+            <local:DualChamber Canvas.Left="1712" Canvas.Top="445" Width="400" RotateTransformValue="270" RobotWafer1="{Binding ElementName=efem,Path=VPW2Wafer}" RobotWafer2="{Binding ElementName=efem,Path=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" Canvas.Left="450"/>