Browse Source

Added SE Robot movement, updated and uploaded VenusSeOperationOverViewModel.cs, VenusSeOperationOverView.xaml, SERobot.cs, HongHuVR.cs, SETMEntity.cs, Generic, SERobot1.xaml, SERobot2.xaml .

intern02 1 year ago
parent
commit
109e1ee3a2

+ 238 - 0
Venus/Venus_MainPages/ViewModels/VenusSeOperationOverViewModel.cs

@@ -19,6 +19,7 @@ using ExcelLibrary.BinaryFileFormat;
 using MECF.Framework.Common.Schedulers;
 using Venus_MainPages.Views;
 using System.Windows;
+using static Venus_Themes.CustomControls.SERobot;
 
 namespace Venus_MainPages.ViewModels
 {
@@ -37,6 +38,11 @@ namespace Venus_MainPages.ViewModels
         public WaferInfo m_RobotUpperWafer;
         public WaferInfo m_RobotLowerWafer;
         public WaferInfo m_PAWafer;
+        private SERobotTAction m_Robot1TAction;
+        private SERobotXAction m_Robot1XAction;
+        private SERobotTAction m_Robot2TAction;
+        private SERobotXAction m_Robot2XAction;
+        public RobotMoveInfo m_robotMoveInfo;
         private int m_VCE1WaferCount;
         private bool m_PMAIsInstalled;
         private bool m_PMBIsInstalled;
@@ -63,6 +69,35 @@ namespace Venus_MainPages.ViewModels
         #endregion
 
         #region 属性
+        public SERobotTAction Robot1TAction
+        {
+            get { return m_Robot1TAction; }
+            set { SetProperty(ref m_Robot1TAction, value); }
+        }
+        public SERobotXAction Robot1XAction
+        {
+            get { return m_Robot1XAction; }
+            set { SetProperty(ref m_Robot1XAction, value); }
+        }
+        public SERobotTAction Robot2TAction
+        {
+            get { return m_Robot2TAction; }
+            set { SetProperty(ref m_Robot2TAction, value); }
+        }
+        public SERobotXAction Robot2XAction
+        {
+            get { return m_Robot2XAction; }
+            set { SetProperty(ref m_Robot2XAction, value); }
+        }
+        public RobotMoveInfo RobotMoveInfo
+        {
+            get { return m_robotMoveInfo; }
+            set
+            {
+                RobotMoveInfoChanged(m_robotMoveInfo, value);
+                m_robotMoveInfo = value;
+            }
+        }
         public RecipeResult PMARecipeResult
         {
             get { return m_PMARecipeResult; }
@@ -671,6 +706,7 @@ namespace Venus_MainPages.ViewModels
                 {
                     VCE1ModuleInfo = ModuleManager.ModuleInfos["VCE1"];
                 }
+                RobotMoveInfo = (RobotMoveInfo)QueryDataClient.Instance.Service.GetData("SETM.RobotMoveAction");
 
                 TMModuleInfo = ModuleManager.ModuleInfos["TMRobot"];
                 RobotUpperWafer = TMModuleInfo.WaferManager.Wafers[0];
@@ -683,5 +719,207 @@ namespace Venus_MainPages.ViewModels
             }
         }
         #endregion
+        private async void RobotMoveInfoChanged(RobotMoveInfo oldValue, RobotMoveInfo newValue)
+        {
+            string RobotTarget;
+            if (oldValue == null || newValue == null)
+            {
+                return;
+            }
+
+            #region Rotating
+            if ((oldValue.Action == RobotAction.None || oldValue.ArmTarget != newValue.ArmTarget) && (newValue.Action == RobotAction.Rotating))
+            {
+                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")
+                {
+                    Robot1TAction = (SERobotTAction)Enum.Parse(typeof(SERobotTAction), module, true);
+                }
+                else if (arm == "ArmB")
+                {
+                    Robot2TAction = (SERobotTAction)Enum.Parse(typeof(SERobotTAction), module, true);
+                }
+            }
+            #endregion
+
+            #region VPA、VCE1 Pick、Place
+            else if ((oldValue.Action == RobotAction.None || oldValue.ArmTarget != newValue.ArmTarget) && (newValue.Action == RobotAction.Placing || newValue.Action == RobotAction.Picking))
+            {
+                var TMRobotMoveActionBladeTarget = newValue.BladeTarget;
+                var TMRobotMoveActionBladeCurrent = oldValue.BladeTarget;
+                if (TMRobotMoveActionBladeTarget != null)
+                {
+                    RobotTarget = TMRobotMoveActionBladeTarget.ToString();
+                }
+                else
+                {
+                    return;
+                }
+                var values = RobotTarget.Split('.');
+                var arm = values[0];
+                var module = values[1];
+                if (arm == "ArmA")
+                {
+                    var SERobotTAction = (SERobotTAction)Enum.Parse(typeof(SERobotTAction), module, true);
+                    if (SERobotTAction != Robot1TAction)
+                    {
+                        Robot1TAction = SERobotTAction;
+                    }
+                    else
+                    {
+                        //await Task.Delay(100);
+                    }
+                    await Task.Delay(600);
+
+                    if (module == "VCE1")
+                    {
+                        Robot1XAction = SERobotXAction.ToVCE;
+                    }
+                    else
+                    {
+                        Robot1XAction = SERobotXAction.Extend;
+                    }
+                    while ((newValue.Action == RobotAction.Placing && ModuleManager.ModuleInfos["TMRobot"].WaferManager.Wafers[0].WaferStatus != 0) || (newValue.Action == RobotAction.Picking && ModuleManager.ModuleInfos["TMRobot"].WaferManager.Wafers[0].WaferStatus == 0))
+                    {
+                        await Task.Delay(100);
+                    }
+                    Robot1XAction = SERobotXAction.Retract;
+                }
+                else if (arm == "ArmB")
+                {
+                    var waferRobotTAction = (SERobotTAction)Enum.Parse(typeof(SERobotTAction), module, true);
+                    if (waferRobotTAction != Robot2TAction)
+                    {
+                        Robot2TAction = waferRobotTAction;
+                    }
+                    else
+                    {
+                        //await Task.Delay(100);
+                    }
+                    await Task.Delay(600);
+                    if (module == "VCE1")
+                    {
+                        Robot2XAction = SERobotXAction.ToVCE;
+                    }
+                    else
+                    {
+                        Robot2XAction = SERobotXAction.Extend;
+                    }
+                    while ((newValue.Action == RobotAction.Placing && ModuleManager.ModuleInfos["TMRobot"].WaferManager.Wafers[1].WaferStatus != 0) || (newValue.Action == RobotAction.Picking && ModuleManager.ModuleInfos["TMRobot"].WaferManager.Wafers[1].WaferStatus == 0))
+                    {
+                        await Task.Delay(100);
+                    }
+                    Robot2XAction = SERobotXAction.Retract;
+                }
+
+            }
+            #endregion
+
+            #region PM pick、PM place
+            else if ((oldValue.Action == RobotAction.None || oldValue.ArmTarget != newValue.ArmTarget) && 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")
+                {
+                    var SERobotTAction = (SERobotTAction)Enum.Parse(typeof(SERobotTAction), module, true);
+                    if (SERobotTAction != Robot1TAction)
+                    {
+                        Robot1TAction = SERobotTAction;
+                    }
+                    else
+                    {
+                        // await Task.Delay(100);
+                    }
+                    await Task.Delay(600);
+
+                    Robot1XAction = SERobotXAction.Extend;
+                }
+                else if (arm == "ArmB")
+                {
+                    var SERobotTAction = (SERobotTAction)Enum.Parse(typeof(SERobotTAction), module, true);
+                    if (SERobotTAction != Robot2TAction)
+                    {
+                        Robot2TAction = SERobotTAction;
+                    }
+                    else
+                    {
+                        // await Task.Delay(100);
+                    }
+                    await Task.Delay(600);
+
+                    Robot2XAction = SERobotXAction.Extend;
+                }
+            }
+
+            else if ((oldValue.Action == RobotAction.None || oldValue.ArmTarget != newValue.ArmTarget) && 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 = SERobotXAction.Retract;
+                }
+                else if (arm == "ArmB")
+                {
+                    Robot2XAction = SERobotXAction.Retract;
+                }
+            }
+            #endregion
+            #region Home
+            else if (oldValue.Action == RobotAction.None && newValue.Action == RobotAction.Homing)
+            {
+                if (Robot1XAction == SERobotXAction.Extend)
+                {
+                    Robot1XAction = SERobotXAction.Retract;
+                }
+                if (Robot2XAction == SERobotXAction.Extend)
+                {
+                    Robot2XAction = SERobotXAction.Retract;
+                }
+                await Task.Delay(2000);
+                if (Robot1TAction != SERobotTAction.T_Origin)
+                {
+                    Robot1TAction = SERobotTAction.T_Origin;
+                }
+                if (Robot2TAction != SERobotTAction.T_Origin)
+                {
+                    Robot2TAction = SERobotTAction.T_Origin;
+                }
+            }
+
+            #endregion
+
+        }
     }
 }

+ 5 - 2
Venus/Venus_MainPages/Views/VenusSeOperationOverView.xaml

@@ -269,6 +269,9 @@
                             <RotateTransform Angle="90"></RotateTransform>
                         </Rectangle.RenderTransform>
                     </Rectangle>
+                    <customControls:SERobot Panel.ZIndex="999" OriginT="T_Origin" Canvas.Left="522" Canvas.Top="420"   Width="200" Height="300"   x:Name="robot1"  RobotTAction="{Binding Robot1TAction}" RobotXAction="{Binding Robot1XAction}" RobotWafer="{Binding RobotUpperWafer}"  RobotSpeed="15"/>
+                    <customControls:SERobot Panel.ZIndex="999" OriginT="T_Origin" Canvas.Left="522" Canvas.Top="420"   Width="200" Height="300"   x:Name="robot2"  RobotTAction="{Binding Robot2TAction}" RobotXAction="{Binding Robot2XAction}" RobotWafer="{Binding RobotLowerWafer}"  RobotSpeed="15"/>
+                    
                     <userControls:VenusSETM Canvas.Top="450" Canvas.Left="500" PAWafer="{Binding PAWafer}" 
                                             VCEIsInstalled="{Binding VCEIsInstalled }" 
                                             PMAIsInstalled="{Binding PMAIsInstalled}"
@@ -293,8 +296,8 @@
                             </LinearGradientBrush>
                         </Rectangle.Fill>
                     </Rectangle>
-                    <ctrls:WaferCtrl WaferData="{Binding RobotUpperWafer}" Canvas.Left="598" Canvas.Top="485" HorizontalAlignment="Center" VerticalAlignment="Top" Panel.ZIndex="100"/>
-                    <ctrls:WaferCtrl WaferData="{Binding RobotLowerWafer}" Canvas.Left="598" Canvas.Top="580" HorizontalAlignment="Center" VerticalAlignment="Top" Panel.ZIndex="100"/>
+                    <!--<ctrls:WaferCtrl WaferData="{Binding RobotUpperWafer}" Canvas.Left="598" Canvas.Top="485" HorizontalAlignment="Center" VerticalAlignment="Top" Panel.ZIndex="100"/>-->
+                    <!--<ctrls:WaferCtrl WaferData="{Binding RobotLowerWafer}" Canvas.Left="598" Canvas.Top="580" HorizontalAlignment="Center" VerticalAlignment="Top" Panel.ZIndex="100"/>-->
                 </Canvas>
             </Viewbox>
 

+ 19 - 9
Venus/Venus_RT/Devices/TM/HongHuVR.cs

@@ -7,6 +7,7 @@ using MECF.Framework.Common.Equipment;
 using MECF.Framework.Common.SubstrateTrackings;
 using MECF.Framework.RT.EquipmentLibrary.HardwareUnits.Robot;
 using System;
+using System.Collections.Concurrent;
 using System.Collections.Generic;
 using System.Linq;
 using System.Runtime.InteropServices;
@@ -47,7 +48,6 @@ namespace Venus_RT.Devices.VCE
         private bool _IsHomed;
         private VRStep _currentStep = VRStep.Idle;
         private Dictionary<ModuleName, int> _StationNumbers = new Dictionary<ModuleName, int>();
-        private RobotMoveInfo _robotMoveInfo = new RobotMoveInfo();
         public RState Status { get { return _status; } }
         public bool IsHomed { get { return _IsHomed; } }
         private string Hand2Arm(Hand hand) => hand == Hand.Blade1 ? "B" : "A";
@@ -56,9 +56,8 @@ namespace Venus_RT.Devices.VCE
         private readonly Regex _rex_check_load = new Regex(@"CHECK LOAD\s*");
 
         private readonly Regex _rex_error_code = new Regex(@"_ERR\s+(\d+)\s*");
-        public RobotMoveInfo VaccumRobotMoveInfo { get { return _robotMoveInfo; } }
-
-        public RobotMoveInfo TMRobotMoveInfo => throw new NotImplementedException();
+        private RobotMoveInfo _robotMoveInfo = new RobotMoveInfo();
+        public RobotMoveInfo TMRobotMoveInfo { get { return _robotMoveInfo; } }
 
         public double Offset_X => 0;
                                   
@@ -71,6 +70,7 @@ namespace Venus_RT.Devices.VCE
             { "701" , "设备检查互锁,发现无法执行"},
             { "722" , "设备动作,但是发生异常"},
         };
+        private BlockingCollection<RobotAnimationData> blockingCollection = new BlockingCollection<RobotAnimationData>();
 
         public HongHuVR()
         {
@@ -91,6 +91,16 @@ namespace Venus_RT.Devices.VCE
             _StationNumbers[ModuleName.PMD] = SC.GetValue<int>("SETM.PMDStationNumber");
 
             WaferManager.Instance.SubscribeLocation(ModuleName.TMRobot, 2);
+            Task.Run(() =>
+            {
+                foreach (var data in blockingCollection.GetConsumingEnumerable())
+                {
+                    _robotMoveInfo.Action = data.Action;
+                    _robotMoveInfo.ArmTarget = data.Hand == Hand.Blade1 ? RobotArm.ArmA : (data.Hand == Hand.Both ? RobotArm.Both : RobotArm.ArmB);
+                    _robotMoveInfo.BladeTarget = $"{_robotMoveInfo.ArmTarget}.{data.Target}";
+                    System.Threading.Thread.Sleep(300);
+                }
+            });
         }
         //初始化某个轴
         //1.清错
@@ -135,7 +145,7 @@ namespace Venus_RT.Devices.VCE
 
             _currentStep = VRStep.PickExtend;
             _status = RState.Running;
-            SetRobotMovingInfo(RobotAction.Picking, hand, station);
+            SetRobotMovingInfo(RobotAction.Extending, hand, station);
             return _SendCommand($"PICK {_StationNumbers[station]} ARM {Hand2Arm(hand)} ENRT NR");
         }
 
@@ -146,7 +156,7 @@ namespace Venus_RT.Devices.VCE
 
             _currentStep = VRStep.PickRetract;
             _status = RState.Running;
-            SetRobotMovingInfo(RobotAction.Picking, hand, station);
+            SetRobotMovingInfo(RobotAction.Retracting, hand, station);
             return _SendCommand($"PICK {_StationNumbers[station]} ARM {Hand2Arm(hand)} STRT NR");
         }
         public bool Place(ModuleName station, int slot, Hand hand)
@@ -156,7 +166,7 @@ namespace Venus_RT.Devices.VCE
 
             _currentStep = VRStep.Place;
             _status = RState.Running;
-            SetRobotMovingInfo(RobotAction.Picking, hand, station);
+            SetRobotMovingInfo(RobotAction.Placing, hand, station);
             return _SendCommand($"PLACE {_StationNumbers[station]} ARM {Hand2Arm(hand)}");
         }
         public bool PlaceExtend(ModuleName station, int slot, Hand hand)
@@ -166,7 +176,7 @@ namespace Venus_RT.Devices.VCE
 
             _currentStep = VRStep.Place;
             _status = RState.Running;
-            SetRobotMovingInfo(RobotAction.Picking, hand, station);
+            SetRobotMovingInfo(RobotAction.Extending, hand, station);
             return _SendCommand($"PLACE {_StationNumbers[station]} ARM {Hand2Arm(hand)} ENRT NR");
         }
         public bool PlaceRetract(ModuleName station, int slot, Hand hand)
@@ -176,7 +186,7 @@ namespace Venus_RT.Devices.VCE
 
             _currentStep = VRStep.Place;
             _status = RState.Running;
-            SetRobotMovingInfo(RobotAction.Picking, hand, station);
+            SetRobotMovingInfo(RobotAction.Retracting, hand, station);
             return _SendCommand($"PLACE {_StationNumbers[station]} ARM {Hand2Arm(hand)} STRT NR");
         }
         public bool Transfer(ModuleName fromstation, ModuleName tostation, Hand hand)

+ 5 - 0
Venus/Venus_RT/Modules/TM/VenusEntity/SETMEntity.cs

@@ -3,6 +3,7 @@ using Aitex.Core.RT.Device;
 using Aitex.Core.RT.Fsm;
 using Aitex.Core.RT.Log;
 using Aitex.Core.RT.OperationCenter;
+using Aitex.Core.Util;
 using Aitex.Sorter.Common;
 using MECF.Framework.Common.Equipment;
 using MECF.Framework.Common.SubstrateTrackings;
@@ -187,6 +188,10 @@ namespace Venus_RT.Modules.TM.VenusEntity
         protected override bool Init()
         {
             DATA.Subscribe($"SETM.FsmState", () => ((STATE)fsm.State).ToString());
+            DATA.Subscribe("SETM.RobotMoveAction", () => _robot.TMRobotMoveInfo, SubscriptionAttribute.FLAG.IgnoreSaveDB);
+            DATA.Subscribe("SETM.RobotMoveAction.ArmTarget", () => _robot.TMRobotMoveInfo.ArmTarget.ToString(), SubscriptionAttribute.FLAG.IgnoreSaveDB);
+            DATA.Subscribe("SETM.RobotMoveAction.BladeTarget", () => _robot.TMRobotMoveInfo.BladeTarget, SubscriptionAttribute.FLAG.IgnoreSaveDB);
+            DATA.Subscribe("SETM.RobotMoveAction.RobotAction", () => _robot.TMRobotMoveInfo.Action.ToString(), SubscriptionAttribute.FLAG.IgnoreSaveDB);
 
             OP.Subscribe("SETM.Home", (cmd, args) => { PostMsg(MSG.Home); return true; });
             OP.Subscribe("SETM.Pick", (cmd, args) => { PostMsg(MSG.Pick, args); return true; });

+ 9 - 2
Venus/Venus_Themes/CustomControls/SERobot.cs

@@ -18,6 +18,7 @@ namespace Venus_Themes.CustomControls
             Extend,
             ToVCE,
             FromVCE,
+            FromVCEToVPA,
             Retract
         }
 
@@ -27,8 +28,8 @@ namespace Venus_Themes.CustomControls
             PMA,
             PMB,
             PMC,
-            VCE,
-            Aligner1,
+            VCE1,
+            VPA,
             RightLocation,
             LeftLocation
 
@@ -96,6 +97,12 @@ namespace Venus_Themes.CustomControls
                         VisualStateManager.GoToState(control, newAct.ToString(), true);
                     }
                     break;
+                case SERobotXAction.FromVCEToVPA:
+                    if (newAct != oldAct)
+                    {
+                        VisualStateManager.GoToState(control, newAct.ToString(), true);
+                    }
+                    break;
                 default:
                     break;
             }

+ 206 - 132
Venus/Venus_Themes/Themes/Generic.xaml

@@ -409,106 +409,153 @@
                                     <VisualTransition To="Extend">
                                         <Storyboard FillBehavior="HoldEnd" Timeline.SpeedRatio="13">
                                             <DoubleAnimationUsingKeyFrames Storyboard.TargetName="armXT1RotateAct" Storyboard.TargetProperty="Angle">
-                                                <LinearDoubleKeyFrame Value="90" KeyTime="0:0:0"/>
-                                                <LinearDoubleKeyFrame Value="0"  KeyTime="0:0:9"/>
+                                                <LinearDoubleKeyFrame Value="-120" KeyTime="0:0:0"/>
+                                                <LinearDoubleKeyFrame Value="-90" KeyTime="0:0:6"/>
                                             </DoubleAnimationUsingKeyFrames>
+                                            <!--中臂-->
                                             <DoubleAnimationUsingKeyFrames Storyboard.TargetName="armXT2ArmRotateAct" Storyboard.TargetProperty="Angle">
-                                                <LinearDoubleKeyFrame Value="-90" KeyTime="0:0:0"/>
-                                                <LinearDoubleKeyFrame Value="0"   KeyTime="0:0:9"/>
+                                                <LinearDoubleKeyFrame Value="-115" KeyTime="0:0:0"/>
+                                                <LinearDoubleKeyFrame Value="-210" KeyTime="0:0:6"/>
                                             </DoubleAnimationUsingKeyFrames>
-                                            <DoubleAnimationUsingKeyFrames Storyboard.TargetName="armXT2Act" Storyboard.TargetProperty="X">
-                                                <LinearDoubleKeyFrame Value="0" KeyTime="0:0:9"/>
-                                                <LinearDoubleKeyFrame Value="2.126" KeyTime="0:0:8"/>
-                                                <LinearDoubleKeyFrame Value="8.443" KeyTime="0:0:7"/>
-                                                <LinearDoubleKeyFrame Value="18.756" KeyTime="0:0:6"/>
-                                                <LinearDoubleKeyFrame Value="32.753" KeyTime="0:0:5"/>
-                                                <LinearDoubleKeyFrame Value="50.009" KeyTime="0:0:4"/>
-                                                <LinearDoubleKeyFrame Value="70" KeyTime="0:0:3"/>
-                                                <LinearDoubleKeyFrame Value="92.117" KeyTime="0:0:2"/>
-                                                <LinearDoubleKeyFrame Value="115.689" KeyTime="0:0:1"/>
-                                                <LinearDoubleKeyFrame Value="140" KeyTime="0:0:0"/>
+                                            <!--前臂-->
+                                            <DoubleAnimationUsingKeyFrames Storyboard.TargetName="armXT3ArmTranslateAct" Storyboard.TargetProperty="X">
+                                                <LinearDoubleKeyFrame Value="225" KeyTime="0:0:0"/>
+                                                <LinearDoubleKeyFrame Value="110" KeyTime="0:0:6"/>
+                                            </DoubleAnimationUsingKeyFrames>
+                                            <DoubleAnimationUsingKeyFrames Storyboard.TargetName="armXT3ArmTranslateAct" Storyboard.TargetProperty="Y">
+                                                <LinearDoubleKeyFrame Value="0" KeyTime="0:0:6"/>
+                                                <LinearDoubleKeyFrame Value="-5" KeyTime="0:0:5"/>
+                                                <LinearDoubleKeyFrame Value="-10" KeyTime="0:0:4"/>
+                                                <LinearDoubleKeyFrame Value="-11" KeyTime="0:0:3"/>
+                                                <LinearDoubleKeyFrame Value="-10" KeyTime="0:0:2"/>
+                                                <LinearDoubleKeyFrame Value="-5" KeyTime="0:0:1"/>
+                                                <LinearDoubleKeyFrame Value="0" KeyTime="0:0:0"/>
                                             </DoubleAnimationUsingKeyFrames>
                                         </Storyboard>
                                     </VisualTransition>
                                     <VisualTransition To="Retract">
                                         <Storyboard FillBehavior="HoldEnd" SpeedRatio="14">
                                             <DoubleAnimationUsingKeyFrames Storyboard.TargetName="armXT1RotateAct" Storyboard.TargetProperty="Angle">
-                                                <LinearDoubleKeyFrame Value="0"  KeyTime="0:0:0"/>
-                                                <LinearDoubleKeyFrame Value="90" KeyTime="0:0:9"/>
+                                                <LinearDoubleKeyFrame Value="-90" KeyTime="0:0:0"/>
+                                                <LinearDoubleKeyFrame Value="-115" KeyTime="0:0:6"/>
                                             </DoubleAnimationUsingKeyFrames>
+                                            <!--中臂-->
                                             <DoubleAnimationUsingKeyFrames Storyboard.TargetName="armXT2ArmRotateAct" Storyboard.TargetProperty="Angle">
-                                                <LinearDoubleKeyFrame Value="0"   KeyTime="0:0:0"/>
-                                                <LinearDoubleKeyFrame Value="-90" KeyTime="0:0:9"/>
+                                                <LinearDoubleKeyFrame Value="-210" KeyTime="0:0:0"/>
+                                                <LinearDoubleKeyFrame Value="-120" KeyTime="0:0:6"/>
                                             </DoubleAnimationUsingKeyFrames>
-                                            <DoubleAnimationUsingKeyFrames Storyboard.TargetName="armXT2Act" Storyboard.TargetProperty="X">
+                                            <!--前臂-->
+                                            <DoubleAnimationUsingKeyFrames Storyboard.TargetName="armXT3ArmTranslateAct" Storyboard.TargetProperty="X">
+                                                <LinearDoubleKeyFrame Value="110" KeyTime="0:0:0"/>
+                                                <LinearDoubleKeyFrame Value="225" KeyTime="0:0:6"/>
+                                            </DoubleAnimationUsingKeyFrames>
+                                            <DoubleAnimationUsingKeyFrames Storyboard.TargetName="armXT3ArmTranslateAct" Storyboard.TargetProperty="Y">
                                                 <LinearDoubleKeyFrame Value="0" KeyTime="0:0:0"/>
-                                                <LinearDoubleKeyFrame Value="2.126" KeyTime="0:0:1"/>
-                                                <LinearDoubleKeyFrame Value="8.443" KeyTime="0:0:2"/>
-                                                <LinearDoubleKeyFrame Value="18.756" KeyTime="0:0:3"/>
-                                                <LinearDoubleKeyFrame Value="32.753" KeyTime="0:0:4"/>
-                                                <LinearDoubleKeyFrame Value="50.009" KeyTime="0:0:5"/>
-                                                <LinearDoubleKeyFrame Value="70" KeyTime="0:0:6"/>
-                                                <LinearDoubleKeyFrame Value="92.117" KeyTime="0:0:7"/>
-                                                <LinearDoubleKeyFrame Value="115.689" KeyTime="0:0:8"/>
-                                                <LinearDoubleKeyFrame Value="140" KeyTime="0:0:9"/>
+                                                <LinearDoubleKeyFrame Value="-5" KeyTime="0:0:1"/>
+                                                <LinearDoubleKeyFrame Value="-10" KeyTime="0:0:2"/>
+                                                <LinearDoubleKeyFrame Value="-11" KeyTime="0:0:3"/>
+                                                <LinearDoubleKeyFrame Value="-10" KeyTime="0:0:4"/>
+                                                <LinearDoubleKeyFrame Value="-5" KeyTime="0:0:5"/>
+                                                <LinearDoubleKeyFrame Value="0" KeyTime="0:0:6"/>
                                             </DoubleAnimationUsingKeyFrames>
                                         </Storyboard>
                                     </VisualTransition>
                                     <VisualTransition To="ToVCE">
-                                        <Storyboard FillBehavior="HoldEnd">
+                                        <Storyboard FillBehavior="HoldEnd" SpeedRatio="14">
                                             <!--后臂+底座-->
                                             <DoubleAnimationUsingKeyFrames Storyboard.TargetName="armXT1RotateAct" Storyboard.TargetProperty="Angle">
-                                                <LinearDoubleKeyFrame Value="-20" KeyTime="0:0:0"/>
-                                                <LinearDoubleKeyFrame Value="90" KeyTime="0:0:5"/>
+                                                <LinearDoubleKeyFrame Value="-115" KeyTime="0:0:0"/>
+                                                <LinearDoubleKeyFrame Value="0" KeyTime="0:0:6"/>
                                             </DoubleAnimationUsingKeyFrames>
                                             <!--中臂-->
                                             <DoubleAnimationUsingKeyFrames Storyboard.TargetName="armXT2ArmRotateAct" Storyboard.TargetProperty="Angle">
-                                                <LinearDoubleKeyFrame Value="30" KeyTime="0:0:0"/>
-                                                <LinearDoubleKeyFrame Value="-90" KeyTime="0:0:5"/>
-                                            </DoubleAnimationUsingKeyFrames>
-                                            <DoubleAnimationUsingKeyFrames Storyboard.TargetName="armXT2ArmTranslateAct" Storyboard.TargetProperty="X">
-                                                <LinearDoubleKeyFrame Value="0" KeyTime="0:0:0"/>
-                                                <LinearDoubleKeyFrame Value="20" KeyTime="0:0:1"/>
-                                                <LinearDoubleKeyFrame Value="25" KeyTime="0:0:2"/>
-                                                <LinearDoubleKeyFrame Value="30" KeyTime="0:0:3"/>
-                                                <LinearDoubleKeyFrame Value="35" KeyTime="0:0:4"/>
-                                                <LinearDoubleKeyFrame Value="80" KeyTime="0:0:5"/>
-                                            </DoubleAnimationUsingKeyFrames>
-                                            <DoubleAnimationUsingKeyFrames Storyboard.TargetName="armXT2ArmTranslateActY" Storyboard.TargetProperty="Y">
-                                                <LinearDoubleKeyFrame Value="15" KeyTime="0:0:0"/>
-                                                <LinearDoubleKeyFrame Value="-40" KeyTime="0:0:5"/>
+                                                <LinearDoubleKeyFrame Value="-120" KeyTime="0:0:0"/>
+                                                <LinearDoubleKeyFrame Value="-360" KeyTime="0:0:6"/>
                                             </DoubleAnimationUsingKeyFrames>
                                             <!--前臂-->
+                                            <DoubleAnimationUsingKeyFrames Storyboard.TargetName="armXT3ArmTranslateAct" Storyboard.TargetProperty="X">
+                                                <LinearDoubleKeyFrame Value="225" KeyTime="0:0:0"/>
+                                                <LinearDoubleKeyFrame Value="178" KeyTime="0:0:1"/>
+                                                <LinearDoubleKeyFrame Value="127" KeyTime="0:0:2"/>
+                                                <LinearDoubleKeyFrame Value="80" KeyTime="0:0:3"/>
+                                                <LinearDoubleKeyFrame Value="40" KeyTime="0:0:4"/>
+                                                <LinearDoubleKeyFrame Value="10" KeyTime="0:0:5"/>
+                                                <LinearDoubleKeyFrame Value="0" KeyTime="0:0:6"/>
+                                            </DoubleAnimationUsingKeyFrames>
                                             <DoubleAnimationUsingKeyFrames Storyboard.TargetName="armXT3ArmTranslateAct" Storyboard.TargetProperty="Y">
-                                                <LinearDoubleKeyFrame Value="65" KeyTime="0:0:0"/>
-                                                <LinearDoubleKeyFrame Value="-155" KeyTime="0:0:5"/>
+                                                <LinearDoubleKeyFrame Value="0" KeyTime="0:0:0"/>
+                                                <LinearDoubleKeyFrame Value="-7" KeyTime="0:0:1"/>
+                                                <LinearDoubleKeyFrame Value="-10" KeyTime="0:0:2"/>
+                                                <LinearDoubleKeyFrame Value="-10" KeyTime="0:0:3"/>
+                                                <LinearDoubleKeyFrame Value="-8" KeyTime="0:0:4"/>
+                                                <LinearDoubleKeyFrame Value="-5" KeyTime="0:0:5"/>
+                                                <LinearDoubleKeyFrame Value="0" KeyTime="0:0:6"/>
                                             </DoubleAnimationUsingKeyFrames>
                                         </Storyboard>
                                     </VisualTransition>
                                     <VisualTransition To="FromVCE">
-                                        <Storyboard FillBehavior="HoldEnd">
+                                        <Storyboard FillBehavior="HoldEnd" SpeedRatio="14">
                                             <!--后臂+底座-->
                                             <DoubleAnimationUsingKeyFrames Storyboard.TargetName="armXT1RotateAct" Storyboard.TargetProperty="Angle">
-                                                <LinearDoubleKeyFrame Value="90" KeyTime="0:0:0"/>
-                                                <LinearDoubleKeyFrame Value="-20" KeyTime="0:0:5"/>
+                                                <LinearDoubleKeyFrame Value="0" KeyTime="0:0:0"/>
+                                                <LinearDoubleKeyFrame Value="-115" KeyTime="0:0:6"/>
                                             </DoubleAnimationUsingKeyFrames>
                                             <!--中臂-->
                                             <DoubleAnimationUsingKeyFrames Storyboard.TargetName="armXT2ArmRotateAct" Storyboard.TargetProperty="Angle">
-                                                <LinearDoubleKeyFrame Value="-90" KeyTime="0:0:0"/>
-                                                <LinearDoubleKeyFrame Value="30" KeyTime="0:0:5"/>
+                                                <LinearDoubleKeyFrame Value="-360" KeyTime="0:0:0"/>
+                                                <LinearDoubleKeyFrame Value="-120" KeyTime="0:0:6"/>
+                                            </DoubleAnimationUsingKeyFrames>
+                                            <!--前臂-->
+                                            <DoubleAnimationUsingKeyFrames Storyboard.TargetName="armXT3ArmTranslateAct" Storyboard.TargetProperty="X">
+                                                <LinearDoubleKeyFrame Value="225" KeyTime="0:0:6"/>
+                                                <LinearDoubleKeyFrame Value="178" KeyTime="0:0:5"/>
+                                                <LinearDoubleKeyFrame Value="127" KeyTime="0:0:4"/>
+                                                <LinearDoubleKeyFrame Value="80" KeyTime="0:0:3"/>
+                                                <LinearDoubleKeyFrame Value="40" KeyTime="0:0:2"/>
+                                                <LinearDoubleKeyFrame Value="10" KeyTime="0:0:1"/>
+                                                <LinearDoubleKeyFrame Value="0" KeyTime="0:0:0"/>
+                                            </DoubleAnimationUsingKeyFrames>
+                                            <DoubleAnimationUsingKeyFrames Storyboard.TargetName="armXT3ArmTranslateAct" Storyboard.TargetProperty="Y">
+                                                <LinearDoubleKeyFrame Value="0" KeyTime="0:0:6"/>
+                                                <LinearDoubleKeyFrame Value="-7" KeyTime="0:0:5"/>
+                                                <LinearDoubleKeyFrame Value="-10" KeyTime="0:0:4"/>
+                                                <LinearDoubleKeyFrame Value="-10" KeyTime="0:0:3"/>
+                                                <LinearDoubleKeyFrame Value="-8" KeyTime="0:0:2"/>
+                                                <LinearDoubleKeyFrame Value="-5" KeyTime="0:0:1"/>
+                                                <LinearDoubleKeyFrame Value="0" KeyTime="0:0:0"/>
                                             </DoubleAnimationUsingKeyFrames>
-                                            <DoubleAnimationUsingKeyFrames Storyboard.TargetName="armXT2ArmTranslateAct" Storyboard.TargetProperty="X">
-                                                <LinearDoubleKeyFrame Value="15" KeyTime="0:0:0"/>
-                                                <LinearDoubleKeyFrame Value="0" KeyTime="0:0:5"/>
+                                        </Storyboard>
+                                    </VisualTransition>
+                                    <VisualTransition To="FromVCEToVPA">
+                                        <Storyboard FillBehavior="HoldEnd" SpeedRatio="14">
+                                            <!--后臂+底座-->
+                                            <DoubleAnimationUsingKeyFrames Storyboard.TargetName="armXT1RotateAct" Storyboard.TargetProperty="Angle">
+                                                <LinearDoubleKeyFrame Value="0" KeyTime="0:0:0"/>
+                                                <LinearDoubleKeyFrame Value="-90" KeyTime="0:0:6"/>
                                             </DoubleAnimationUsingKeyFrames>
-                                            <DoubleAnimationUsingKeyFrames Storyboard.TargetName="armXT2ArmTranslateActY" Storyboard.TargetProperty="Y">
-                                                <LinearDoubleKeyFrame Value="-75" KeyTime="0:0:0"/>
-                                                <LinearDoubleKeyFrame Value="15" KeyTime="0:0:5"/>
+                                            <!--中臂-->
+                                            <DoubleAnimationUsingKeyFrames Storyboard.TargetName="armXT2ArmRotateAct" Storyboard.TargetProperty="Angle">
+                                                <LinearDoubleKeyFrame Value="-360" KeyTime="0:0:0"/>
+                                                <LinearDoubleKeyFrame Value="-210" KeyTime="0:0:6"/>
                                             </DoubleAnimationUsingKeyFrames>
                                             <!--前臂-->
+                                            <DoubleAnimationUsingKeyFrames Storyboard.TargetName="armXT3ArmTranslateAct" Storyboard.TargetProperty="X">
+                                                <LinearDoubleKeyFrame Value="110" KeyTime="0:0:6"/>
+                                                <LinearDoubleKeyFrame Value="82" KeyTime="0:0:5"/>
+                                                <LinearDoubleKeyFrame Value="55" KeyTime="0:0:4"/>
+                                                <LinearDoubleKeyFrame Value="32" KeyTime="0:0:3"/>
+                                                <LinearDoubleKeyFrame Value="15" KeyTime="0:0:2"/>
+                                                <LinearDoubleKeyFrame Value="5" KeyTime="0:0:1"/>
+                                                <LinearDoubleKeyFrame Value="0" KeyTime="0:0:0"/>
+                                            </DoubleAnimationUsingKeyFrames>
                                             <DoubleAnimationUsingKeyFrames Storyboard.TargetName="armXT3ArmTranslateAct" Storyboard.TargetProperty="Y">
-                                                <LinearDoubleKeyFrame Value="-155" KeyTime="0:0:0"/>
-                                                <LinearDoubleKeyFrame Value="65" KeyTime="0:0:5"/>
+                                                <LinearDoubleKeyFrame Value="0" KeyTime="0:0:6"/>
+                                                <LinearDoubleKeyFrame Value="5" KeyTime="0:0:5"/>
+                                                <LinearDoubleKeyFrame Value="8" KeyTime="0:0:4"/>
+                                                <LinearDoubleKeyFrame Value="8" KeyTime="0:0:3"/>
+                                                <LinearDoubleKeyFrame Value="6" KeyTime="0:0:2"/>
+                                                <LinearDoubleKeyFrame Value="4" KeyTime="0:0:1"/>
+                                                <LinearDoubleKeyFrame Value="0" KeyTime="0:0:0"/>
                                             </DoubleAnimationUsingKeyFrames>
                                         </Storyboard>
                                     </VisualTransition>
@@ -517,18 +564,15 @@
                                     <Storyboard FillBehavior="HoldEnd">
                                         <!--后臂+底座-->
                                         <DoubleAnimationUsingKeyFrames Storyboard.TargetName="armXT1RotateAct" Storyboard.TargetProperty="Angle">
-                                            <LinearDoubleKeyFrame Value="-20" KeyTime="0:0:0"/>
+                                            <LinearDoubleKeyFrame Value="-115" KeyTime="0:0:0"/>
                                         </DoubleAnimationUsingKeyFrames>
                                         <!--中臂-->
                                         <DoubleAnimationUsingKeyFrames Storyboard.TargetName="armXT2ArmRotateAct" Storyboard.TargetProperty="Angle">
-                                            <LinearDoubleKeyFrame Value="30" KeyTime="0:0:0"/>
-                                        </DoubleAnimationUsingKeyFrames>
-                                        <DoubleAnimationUsingKeyFrames Storyboard.TargetName="armXT2ArmTranslateActY" Storyboard.TargetProperty="Y">
-                                            <LinearDoubleKeyFrame Value="15" KeyTime="0:0:0"/>
+                                            <LinearDoubleKeyFrame Value="-120" KeyTime="0:0:0"/>
                                         </DoubleAnimationUsingKeyFrames>
                                         <!--前臂-->
-                                        <DoubleAnimationUsingKeyFrames Storyboard.TargetName="armXT3ArmTranslateAct" Storyboard.TargetProperty="Y">
-                                            <LinearDoubleKeyFrame Value="65" KeyTime="0:0:0"/>
+                                        <DoubleAnimationUsingKeyFrames Storyboard.TargetName="armXT3ArmTranslateAct" Storyboard.TargetProperty="X">
+                                            <LinearDoubleKeyFrame Value="225" KeyTime="0:0:0"/>
                                         </DoubleAnimationUsingKeyFrames>
                                     </Storyboard>
                                 </VisualState>
@@ -536,21 +580,47 @@
                                     <Storyboard FillBehavior="HoldEnd">
                                         <!--后臂+底座-->
                                         <DoubleAnimationUsingKeyFrames Storyboard.TargetName="armXT1RotateAct" Storyboard.TargetProperty="Angle">
-                                            <LinearDoubleKeyFrame Value="90" KeyTime="0:0:0"/>
+                                            <LinearDoubleKeyFrame Value="0" KeyTime="0:0:0"/>
                                         </DoubleAnimationUsingKeyFrames>
                                         <!--中臂-->
                                         <DoubleAnimationUsingKeyFrames Storyboard.TargetName="armXT2ArmRotateAct" Storyboard.TargetProperty="Angle">
+                                            <LinearDoubleKeyFrame Value="-360" KeyTime="0:0:0"/>
+                                        </DoubleAnimationUsingKeyFrames>
+                                        <!--前臂-->
+                                        <DoubleAnimationUsingKeyFrames Storyboard.TargetName="armXT3ArmTranslateAct" Storyboard.TargetProperty="X">
+                                            <LinearDoubleKeyFrame Value="0" KeyTime="0:0:0"/>
+                                        </DoubleAnimationUsingKeyFrames>
+                                    </Storyboard>
+                                </VisualState>
+                                <VisualState Name="FromVCE">
+                                    <Storyboard FillBehavior="HoldEnd">
+                                        <!--后臂+底座-->
+                                        <DoubleAnimationUsingKeyFrames Storyboard.TargetName="armXT1RotateAct" Storyboard.TargetProperty="Angle">
+                                            <LinearDoubleKeyFrame Value="-115" KeyTime="0:0:0"/>
+                                        </DoubleAnimationUsingKeyFrames>
+                                        <!--中臂-->
+                                        <DoubleAnimationUsingKeyFrames Storyboard.TargetName="armXT2ArmRotateAct" Storyboard.TargetProperty="Angle">
+                                            <LinearDoubleKeyFrame Value="-120" KeyTime="0:0:0"/>
+                                        </DoubleAnimationUsingKeyFrames>
+                                        <!--前臂-->
+                                        <DoubleAnimationUsingKeyFrames Storyboard.TargetName="armXT3ArmTranslateAct" Storyboard.TargetProperty="X">
+                                            <LinearDoubleKeyFrame Value="225" KeyTime="0:0:0"/>
+                                        </DoubleAnimationUsingKeyFrames>
+                                    </Storyboard>
+                                </VisualState>
+                                <VisualState Name="FromVCEToVPA">
+                                    <Storyboard FillBehavior="HoldEnd">
+                                        <!--后臂+底座-->
+                                        <DoubleAnimationUsingKeyFrames Storyboard.TargetName="armXT1RotateAct" Storyboard.TargetProperty="Angle">
                                             <LinearDoubleKeyFrame Value="-90" KeyTime="0:0:0"/>
                                         </DoubleAnimationUsingKeyFrames>
-                                        <DoubleAnimationUsingKeyFrames Storyboard.TargetName="armXT2ArmTranslateAct" Storyboard.TargetProperty="X">
-                                            <LinearDoubleKeyFrame Value="80" KeyTime="0:0:0"/>
+                                        <!--中臂-->
+                                        <DoubleAnimationUsingKeyFrames Storyboard.TargetName="armXT2ArmRotateAct" Storyboard.TargetProperty="Angle">
+                                            <LinearDoubleKeyFrame Value="-210" KeyTime="0:0:0"/>
                                         </DoubleAnimationUsingKeyFrames>
-                                        <!--<DoubleAnimationUsingKeyFrames Storyboard.TargetName="armXT2ArmTranslateActY" Storyboard.TargetProperty="Y">
-                                            <LinearDoubleKeyFrame Value="-40" KeyTime="0:0:0"/>
-                                        </DoubleAnimationUsingKeyFrames>-->
                                         <!--前臂-->
-                                        <DoubleAnimationUsingKeyFrames Storyboard.TargetName="armXT3ArmTranslateAct" Storyboard.TargetProperty="Y">
-                                            <LinearDoubleKeyFrame Value="-155" KeyTime="0:0:0"/>
+                                        <DoubleAnimationUsingKeyFrames Storyboard.TargetName="armXT3ArmTranslateAct" Storyboard.TargetProperty="X">
+                                            <LinearDoubleKeyFrame Value="110" KeyTime="0:0:0"/>
                                         </DoubleAnimationUsingKeyFrames>
                                     </Storyboard>
                                 </VisualState>
@@ -558,18 +628,15 @@
                                     <Storyboard FillBehavior="HoldEnd">
                                         <!--后臂+底座-->
                                         <DoubleAnimationUsingKeyFrames Storyboard.TargetName="armXT1RotateAct" Storyboard.TargetProperty="Angle">
-                                            <LinearDoubleKeyFrame Value="30" KeyTime="0:0:0"/>
+                                            <LinearDoubleKeyFrame Value="-90" KeyTime="0:0:0"/>
                                         </DoubleAnimationUsingKeyFrames>
                                         <!--中臂-->
                                         <DoubleAnimationUsingKeyFrames Storyboard.TargetName="armXT2ArmRotateAct" Storyboard.TargetProperty="Angle">
-                                            <LinearDoubleKeyFrame Value="0" KeyTime="0:0:0"/>
-                                        </DoubleAnimationUsingKeyFrames>
-                                        <DoubleAnimationUsingKeyFrames Storyboard.TargetName="armXT2ArmTranslateActY" Storyboard.TargetProperty="Y">
-                                            <LinearDoubleKeyFrame Value="-25" KeyTime="0:0:0"/>
+                                            <LinearDoubleKeyFrame Value="-210" KeyTime="0:0:0"/>
                                         </DoubleAnimationUsingKeyFrames>
                                         <!--前臂-->
-                                        <DoubleAnimationUsingKeyFrames Storyboard.TargetName="armXT3ArmTranslateAct" Storyboard.TargetProperty="Y">
-                                            <LinearDoubleKeyFrame Value="-35" KeyTime="0:0:0"/>
+                                        <DoubleAnimationUsingKeyFrames Storyboard.TargetName="armXT3ArmTranslateAct" Storyboard.TargetProperty="X">
+                                            <LinearDoubleKeyFrame Value="110" KeyTime="0:0:0"/>
                                         </DoubleAnimationUsingKeyFrames>
                                     </Storyboard>
                                 </VisualState>
@@ -578,18 +645,15 @@
                                     <Storyboard FillBehavior="HoldEnd">
                                         <!--后臂+底座-->
                                         <DoubleAnimationUsingKeyFrames Storyboard.TargetName="armXT1RotateAct" Storyboard.TargetProperty="Angle">
-                                            <LinearDoubleKeyFrame Value="-20" KeyTime="0:0:0"/>
+                                            <LinearDoubleKeyFrame Value="-115" KeyTime="0:0:0"/>
                                         </DoubleAnimationUsingKeyFrames>
                                         <!--中臂-->
                                         <DoubleAnimationUsingKeyFrames Storyboard.TargetName="armXT2ArmRotateAct" Storyboard.TargetProperty="Angle">
-                                            <LinearDoubleKeyFrame Value="30" KeyTime="0:0:0"/>
-                                        </DoubleAnimationUsingKeyFrames>
-                                        <DoubleAnimationUsingKeyFrames Storyboard.TargetName="armXT2ArmTranslateActY" Storyboard.TargetProperty="Y">
-                                            <LinearDoubleKeyFrame Value="25" KeyTime="0:0:0"/>
+                                            <LinearDoubleKeyFrame Value="-120" KeyTime="0:0:0"/>
                                         </DoubleAnimationUsingKeyFrames>
                                         <!--前臂-->
-                                        <DoubleAnimationUsingKeyFrames Storyboard.TargetName="armXT3ArmTranslateAct" Storyboard.TargetProperty="Y">
-                                            <LinearDoubleKeyFrame Value="65" KeyTime="0:0:0"/>
+                                        <DoubleAnimationUsingKeyFrames Storyboard.TargetName="armXT3ArmTranslateAct" Storyboard.TargetProperty="X">
+                                            <LinearDoubleKeyFrame Value="225" KeyTime="0:0:0"/>
                                         </DoubleAnimationUsingKeyFrames>
                                     </Storyboard>
                                 </VisualState>
@@ -600,7 +664,7 @@
                                     <VisualTransition To="T_Origin">
                                         <Storyboard FillBehavior="HoldEnd">
                                             <DoubleAnimationUsingKeyFrames Storyboard.TargetName="robotRotateAct" Storyboard.TargetProperty="Angle">
-                                                <LinearDoubleKeyFrame Value="-90" KeyTime="0:0:1"/>
+                                                <LinearDoubleKeyFrame Value="0" KeyTime="0:0:1"/>
                                             </DoubleAnimationUsingKeyFrames>
                                         </Storyboard>
                                     </VisualTransition>
@@ -608,28 +672,35 @@
                                     <VisualTransition To="PMA">
                                         <Storyboard FillBehavior="HoldEnd">
                                             <DoubleAnimationUsingKeyFrames Storyboard.TargetName="robotRotateAct" Storyboard.TargetProperty="Angle">
-                                                <LinearDoubleKeyFrame Value="-90" KeyTime="0:0:0.5"/>
+                                                <LinearDoubleKeyFrame Value="0" KeyTime="0:0:0.5"/>
                                             </DoubleAnimationUsingKeyFrames>
                                         </Storyboard>
                                     </VisualTransition>
                                     <VisualTransition To="PMB">
                                         <Storyboard FillBehavior="HoldEnd">
                                             <DoubleAnimationUsingKeyFrames Storyboard.TargetName="robotRotateAct" Storyboard.TargetProperty="Angle">
-                                                <LinearDoubleKeyFrame Value="0" KeyTime="0:0:0.5"/>
+                                                <LinearDoubleKeyFrame Value="90" KeyTime="0:0:0.5"/>
                                             </DoubleAnimationUsingKeyFrames>
                                         </Storyboard>
                                     </VisualTransition>
                                     <VisualTransition To="PMC">
                                         <Storyboard FillBehavior="HoldEnd">
                                             <DoubleAnimationUsingKeyFrames Storyboard.TargetName="robotRotateAct" Storyboard.TargetProperty="Angle">
-                                                <LinearDoubleKeyFrame Value="120" KeyTime="0:0:0.5"/>
+                                                <LinearDoubleKeyFrame Value="180" KeyTime="0:0:0.5"/>
                                             </DoubleAnimationUsingKeyFrames>
                                         </Storyboard>
                                     </VisualTransition>
-                                    <VisualTransition To="Aligner1">
+                                    <VisualTransition To="VPA">
                                         <Storyboard FillBehavior="HoldEnd">
                                             <DoubleAnimationUsingKeyFrames Storyboard.TargetName="robotRotateAct" Storyboard.TargetProperty="Angle">
-                                                <LinearDoubleKeyFrame Value="180" KeyTime="0:0:0.5"/>
+                                                <LinearDoubleKeyFrame Value="270" KeyTime="0:0:0.5"/>
+                                            </DoubleAnimationUsingKeyFrames>
+                                        </Storyboard>
+                                    </VisualTransition>
+                                    <VisualTransition To="VCE1">
+                                        <Storyboard FillBehavior="HoldEnd">
+                                            <DoubleAnimationUsingKeyFrames Storyboard.TargetName="robotRotateAct" Storyboard.TargetProperty="Angle">
+                                                <LinearDoubleKeyFrame Value="270" KeyTime="0:0:0.5"/>
                                             </DoubleAnimationUsingKeyFrames>
                                         </Storyboard>
                                     </VisualTransition>
@@ -638,35 +709,42 @@
                                 <VisualState Name="T_Origin">
                                     <Storyboard FillBehavior="HoldEnd">
                                         <DoubleAnimationUsingKeyFrames Storyboard.TargetName="robotRotateAct" Storyboard.TargetProperty="Angle">
-                                            <LinearDoubleKeyFrame Value="-90" KeyTime="0:0:0"/>
+                                            <LinearDoubleKeyFrame Value="0" KeyTime="0:0:0"/>
                                         </DoubleAnimationUsingKeyFrames>
                                     </Storyboard>
                                 </VisualState>
                                 <VisualState Name="PMA">
                                     <Storyboard FillBehavior="HoldEnd">
                                         <DoubleAnimationUsingKeyFrames Storyboard.TargetName="robotRotateAct" Storyboard.TargetProperty="Angle">
-                                            <LinearDoubleKeyFrame Value="-90" KeyTime="0:0:0"/>
+                                            <LinearDoubleKeyFrame Value="0" KeyTime="0:0:0"/>
                                         </DoubleAnimationUsingKeyFrames>
                                     </Storyboard>
                                 </VisualState>
                                 <VisualState Name="PMB">
                                     <Storyboard FillBehavior="HoldEnd">
                                         <DoubleAnimationUsingKeyFrames Storyboard.TargetName="robotRotateAct" Storyboard.TargetProperty="Angle">
-                                            <LinearDoubleKeyFrame Value="0" KeyTime="0:0:0"/>
+                                            <LinearDoubleKeyFrame Value="90" KeyTime="0:0:0"/>
                                         </DoubleAnimationUsingKeyFrames>
                                     </Storyboard>
                                 </VisualState>
                                 <VisualState Name="PMC">
                                     <Storyboard FillBehavior="HoldEnd">
                                         <DoubleAnimationUsingKeyFrames Storyboard.TargetName="robotRotateAct" Storyboard.TargetProperty="Angle">
-                                            <LinearDoubleKeyFrame Value="90" KeyTime="0:0:0"/>
+                                            <LinearDoubleKeyFrame Value="180" KeyTime="0:0:0"/>
                                         </DoubleAnimationUsingKeyFrames>
                                     </Storyboard>
                                 </VisualState>
-                                <VisualState Name="Aligner1">
+                                <VisualState Name="VPA">
                                     <Storyboard FillBehavior="HoldEnd">
                                         <DoubleAnimationUsingKeyFrames Storyboard.TargetName="robotRotateAct" Storyboard.TargetProperty="Angle">
-                                            <LinearDoubleKeyFrame Value="180" KeyTime="0:0:0"/>
+                                            <LinearDoubleKeyFrame Value="270" KeyTime="0:0:0"/>
+                                        </DoubleAnimationUsingKeyFrames>
+                                    </Storyboard>
+                                </VisualState>
+                                <VisualState Name="VCE1">
+                                    <Storyboard FillBehavior="HoldEnd">
+                                        <DoubleAnimationUsingKeyFrames Storyboard.TargetName="robotRotateAct" Storyboard.TargetProperty="Angle">
+                                            <LinearDoubleKeyFrame Value="270" KeyTime="0:0:0"/>
                                         </DoubleAnimationUsingKeyFrames>
                                     </Storyboard>
                                 </VisualState>
@@ -681,12 +759,14 @@
                                 <Canvas.RenderTransform>
                                     <TransformGroup>
                                         <RotateTransform  x:Name="robotRotateAct"/>
+                                        <!--<RotateTransform Angle="-90"/>-->
                                         <!--<TranslateTransform  x:Name="robotUpDownAct"></TranslateTransform>-->
                                     </TransformGroup>
                                 </Canvas.RenderTransform>
                                 <Canvas x:Name="armXT1" Width="200" Height="100"  Canvas.Top="100" RenderTransformOrigin="0.5 0.5">
                                     <!--后臂+底座动作-->
                                     <Canvas.RenderTransform>
+                                        <!--<RotateTransform Angle="-115"/>-->
                                         <RotateTransform  x:Name="armXT1RotateAct"/>
                                     </Canvas.RenderTransform>
                                     <Canvas x:Name="armXT1Center"  Width="60" Height="60" Canvas.Left="70" Canvas.Top="20" ToolTip="底座">
@@ -699,47 +779,41 @@
                                             <userControls:SERobot3 IsEnabled="False" Height="150"/>
                                         </Viewbox>
                                     </Canvas>
-                                </Canvas>
-                                <Canvas x:Name="armXT2" Width="270" Height="50" Canvas.Left="0" Canvas.Top="180" RenderTransformOrigin="1 0.5">
-                                    <!--中臂加前臂动作-->
-                                    <Canvas.RenderTransform>
-                                        <TransformGroup>
-                                            <TranslateTransform x:Name="armXT2Act"></TranslateTransform>
-                                            <RotateTransform x:Name="armXT2RotateAct"/>
-                                        </TransformGroup>
-                                    </Canvas.RenderTransform>
-                                    <Canvas x:Name="armXT2Arm" Width="120" Height="40"  Canvas.Left="10" Canvas.Top="-50" ToolTip="中臂" RenderTransformOrigin="0 0.5">
+                                    <Canvas x:Name="armXT2Arm" Width="105" Height="40"  Canvas.Left="-73" Canvas.Top="30" ToolTip="中臂"  RenderTransformOrigin="1 0.5">
                                         <!--中臂动作-->
                                         <Canvas.RenderTransform>
                                             <TransformGroup>
+                                                <!--<RotateTransform Angle="-120"/>-->
+                                                <!--<TranslateTransform Y="15"/>-->
                                                 <TranslateTransform x:Name="armXT2ArmTranslateAct"/>
                                                 <RotateTransform x:Name="armXT2ArmRotateAct"/>
-                                                <TranslateTransform x:Name="armXT2ArmTranslateActY"/>
                                             </TransformGroup>
                                         </Canvas.RenderTransform>
-                                        <Viewbox Canvas.Left="0" Canvas.Top="-40" Width="120" Height="120" >
-                                            <userControls:SERobot2 IsEnabled="False" Height="150"/>
-                                        </Viewbox>
-                                    </Canvas>
-                                    <!--前臂动作-->
-                                    <Canvas x:Name="armGripper" Height="160" Width="45"  Canvas.Left="77" Canvas.Top="-170" ToolTip="前臂" RenderTransformOrigin="1 0.5">
-                                        <Canvas.RenderTransform>
-                                            <TransformGroup>
-                                                <TranslateTransform x:Name="armXT3ArmTranslateAct"/>
-                                                <RotateTransform x:Name="armXT3ArmRotateAct"/>
-                                            </TransformGroup>
-                                        </Canvas.RenderTransform>
-                                        <Viewbox  Canvas.Left="0" Canvas.Top="0" Width="45" Height="160">
-                                            <userControls:SERobot1 IsEnabled="False" Height="190"/>
-                                        </Viewbox>
-                                        <Viewbox Canvas.Left="-17" Canvas.Top="-90" Width="85" Height="85">
-                                            <userControls:WaferCtrl WaferData="{Binding RobotWafer,RelativeSource={RelativeSource TemplatedParent}}" IsEnabled="False"/>
+                                        <Viewbox Canvas.Left="10" Canvas.Top="-40" Width="110" Height="120" >
+                                            <userControls:SERobot2 IsEnabled="False"/>
                                         </Viewbox>
-
                                     </Canvas>
-
+                                </Canvas>
+                                <!--前臂动作-->
+                                <Canvas x:Name="armGripper" Height="40" Width="158"  Canvas.Left="-190" Canvas.Top="130" ToolTip="前臂" RenderTransformOrigin="1 0.5">
+                                    <Canvas.RenderTransform>
+                                        <TransformGroup>
+                                            <!--<TranslateTransform X="225"/>-->
+                                            <TranslateTransform x:Name="armXT3ArmTranslateAct"/>
+                                            <RotateTransform x:Name="armXT3ArmRotateAct"/>
+                                        </TransformGroup>
+                                    </Canvas.RenderTransform>
+                                    <Viewbox  Canvas.Left="56" Canvas.Top="-60" Width="45" Height="160">
+                                        <userControls:SERobot1 IsEnabled="False"/>
+                                    </Viewbox>
+                                    <Viewbox Canvas.Left="-40" Canvas.Top="-23" Width="85" Height="85">
+                                        <!--<Border BorderBrush="Black" BorderThickness="2">-->
+                                        <userControls:WaferCtrl WaferData="{Binding RobotWafer,RelativeSource={RelativeSource TemplatedParent}}" IsEnabled="False"/>
+                                        <!--</Border>-->
+                                    </Viewbox>
 
                                 </Canvas>
+
                             </Canvas>
                         </Canvas>
 

+ 8 - 0
Venus/Venus_Themes/UserControls/SERobot1.xaml

@@ -8,6 +8,14 @@
              d:DesignHeight="600" d:DesignWidth="165">
     <Grid>
         <StackPanel Orientation="Horizontal" RenderTransformOrigin="0.5,0.5">
+            <StackPanel.RenderTransform>
+                <TransformGroup>
+                    <ScaleTransform/>
+                    <SkewTransform/>
+                    <RotateTransform Angle="-90"/>
+                    <TranslateTransform/>
+                </TransformGroup>
+            </StackPanel.RenderTransform>
             <Image Source="pack://application:,,,/Venus_Themes;component/Themes/Images/parts/serobot/SERobot11.png"></Image>
         </StackPanel>
     </Grid>

+ 1 - 1
Venus/Venus_Themes/UserControls/SERobot2.xaml

@@ -12,7 +12,7 @@
                 <TransformGroup>
                     <ScaleTransform/>
                     <SkewTransform/>
-                    <RotateTransform Angle="90"/>
+                    <RotateTransform Angle="-90"/>
                     <TranslateTransform/>
                 </TransformGroup>
             </StackPanel.RenderTransform>