Browse Source

优化跑片动画算法
完成recipe tolerance部分功能

lixiang 1 year ago
parent
commit
235f843244

+ 96 - 55
Venus/Venus_MainPages/ViewModels/OperationOverViewModel.cs

@@ -24,7 +24,7 @@ namespace Venus_MainPages.ViewModels
     public class OperationOverViewModel : BindableBase
     {
         #region 私有字段
-        private bool m_TabIsChecked=true;
+        private bool m_TabIsChecked = true;
         private ModuleInfo m_LP1ModuleInfo;
         private ModuleInfo m_LP2ModuleInfo;
         private ModuleInfo m_LLAModuleInfo;
@@ -90,9 +90,9 @@ namespace Venus_MainPages.ViewModels
         #region  属性
 
         public bool TabIsChecked
-        { 
-         get { return m_TabIsChecked; }
-         set { SetProperty(ref m_TabIsChecked, value); }
+        {
+            get { return m_TabIsChecked; }
+            set { SetProperty(ref m_TabIsChecked, value); }
         }
         public ModuleInfo LP1ModuleInfo
         {
@@ -152,25 +152,25 @@ namespace Venus_MainPages.ViewModels
             set { SetProperty(ref m_Robot2XAction, value); }
         }
 
-        public WaferRobotTAction Robot3TAction 
+        public WaferRobotTAction Robot3TAction
         {
-            get{ return m_Robot3TAction;} 
-            set{SetProperty(ref m_Robot3TAction ,value);}
+            get { return m_Robot3TAction; }
+            set { SetProperty(ref m_Robot3TAction, value); }
         }
-        public WaferRobotXAction Robot3XAction 
+        public WaferRobotXAction Robot3XAction
         {
-            get{ return m_Robot3XAction;} 
-            set{SetProperty(ref m_Robot3XAction ,value);}
+            get { return m_Robot3XAction; }
+            set { SetProperty(ref m_Robot3XAction, value); }
         }
-        public WaferRobotTAction Robot4TAction 
+        public WaferRobotTAction Robot4TAction
         {
-            get{ return m_Robot4TAction;} 
-            set{SetProperty(ref m_Robot4TAction ,value);}
+            get { return m_Robot4TAction; }
+            set { SetProperty(ref m_Robot4TAction, value); }
         }
-        public WaferRobotXAction Robot4XAction 
+        public WaferRobotXAction Robot4XAction
         {
-            get{ return m_Robot4XAction;} 
-            set{SetProperty(ref m_Robot4XAction, value);}
+            get { return m_Robot4XAction; }
+            set { SetProperty(ref m_Robot4XAction, value); }
         }
 
         public RobotMoveInfo RobotMoveInfo
@@ -441,7 +441,7 @@ namespace Venus_MainPages.ViewModels
         public DelegateCommand EnableManualCommand =>
             _EnableManualCommand ?? (_EnableManualCommand = new DelegateCommand(OnEnableManual));
 
-        
+
         public bool SwitchFlag;
 
         #endregion
@@ -472,7 +472,7 @@ namespace Venus_MainPages.ViewModels
             ATMModeIsOn = Convert.ToBoolean(QueryDataClient.Instance.Service.GetConfig("System.IsATMMode")) == true ? "ATM Mode On" : "ATM Mode Off";
         }
 
-      
+
         #endregion
 
         #region 命令方法
@@ -488,7 +488,7 @@ namespace Venus_MainPages.ViewModels
                 LP3WaferAssociation.ModuleData = ModuleManager.ModuleInfos["LP3"];
                 SwitchFlag = true;
             }
-            
+
         }
 
         private void OnLoadWafer(object obj)
@@ -501,7 +501,7 @@ namespace Venus_MainPages.ViewModels
         }
         private void OnSelectAll(object obj)
         {
-            var info=obj as WaferAssociationInfo;
+            var info = obj as WaferAssociationInfo;
 
             info.SlotFrom = 1;
             info.SlotTo = 25;
@@ -516,7 +516,7 @@ namespace Venus_MainPages.ViewModels
         }
         private void OnStart(object obj)
         {
-            var info = obj as WaferAssociationInfo;           
+            var info = obj as WaferAssociationInfo;
             InvokeClient.Instance.Service.DoOperation("System.StartJob", info.LotId);
         }
         private void OnStop(object obj)
@@ -551,7 +551,7 @@ namespace Venus_MainPages.ViewModels
             WaferDialogView dialog = new WaferDialogView()
             {
                 Owner = Application.Current.MainWindow,
-            }; 
+            };
             dialog.Height = 300;
             dialog.Width = 400;
             double angel = 0;
@@ -560,7 +560,7 @@ namespace Venus_MainPages.ViewModels
             {
                 if ((bool)dialog.AlignFlag == true && !string.IsNullOrEmpty(dialog.Angle))
                 {
-                   angel = Convert.ToDouble(dialog.Angle);
+                    angel = Convert.ToDouble(dialog.Angle);
                 }
 
                 if ((bool)dialog.CoolingFlag == true && !string.IsNullOrEmpty(dialog.CoolingTime))
@@ -568,14 +568,14 @@ namespace Venus_MainPages.ViewModels
                     coolingtime = Convert.ToDouble(dialog.CoolingTime);
                 }
 
-                InvokeClient.Instance.Service.DoOperation("System.ReturnAllWafer", dialog.CoolingFlag,coolingtime, dialog.AlignFlag, angel);
+                InvokeClient.Instance.Service.DoOperation("System.ReturnAllWafer", dialog.CoolingFlag, coolingtime, dialog.AlignFlag, angel);
             }
-            
+
         }
 
         private void OnSetSequence(object obj)
         {
-            var info = obj as WaferInfo;            
+            var info = obj as WaferInfo;
             bool flag = info.SequenceName != "" ? false : true;
             if (info.ModuleID == "LP1")
             {
@@ -586,7 +586,7 @@ namespace Venus_MainPages.ViewModels
                 AssociateSequence(LP2WaferAssociation, flag, info.SlotID);
             }
             else if (info.ModuleID == "LP3")
-            { 
+            {
                 AssociateSequence(LP3WaferAssociation, flag, info.SlotID);
             }
         }
@@ -626,7 +626,7 @@ namespace Venus_MainPages.ViewModels
         #region 私有方法
         private void Timer_Tick(object sender, EventArgs e)
         {
-           
+
             LP1ModuleInfo = ModuleManager.ModuleInfos["LP1"];
             LP2ModuleInfo = ModuleManager.ModuleInfos["LP2"];
             LP3ModuleInfo = ModuleManager.ModuleInfos["LP3"];
@@ -640,7 +640,7 @@ namespace Venus_MainPages.ViewModels
             if (LLAIsInstalled == true)
             {
                 LLAModuleInfo = ModuleManager.ModuleInfos["LLA"];
-                LLAWafer = ModuleManager.ModuleInfos["LLA"].WaferManager.Wafers.FirstOrDefault(x => x.WaferStatus != 0);           
+                LLAWafer = ModuleManager.ModuleInfos["LLA"].WaferManager.Wafers.FirstOrDefault(x => x.WaferStatus != 0);
             }
             if (LLBIsInstalled == true)
             {
@@ -680,12 +680,12 @@ namespace Venus_MainPages.ViewModels
             {
                 EFEMBladeAWafer = ModuleManager.ModuleInfos["EfemRobot"].WaferManager.Wafers[0];
                 EFEMBladeBWafer = ModuleManager.ModuleInfos["EfemRobot"].WaferManager.Wafers[1];
-                Aligner1Wafer   = ModuleManager.ModuleInfos["Aligner1"].WaferManager.Wafers[0];
+                Aligner1Wafer = ModuleManager.ModuleInfos["Aligner1"].WaferManager.Wafers[0];
             }
 
             RobotMoveInfo = (RobotMoveInfo)QueryDataClient.Instance.Service.GetData("TM.RobotMoveAction");
-            EfemRobotMoveInfo=(RobotMoveInfo)QueryDataClient.Instance.Service.GetData("EFEM.RobotMoveAction");
-            LP1WaferCount = LP1ModuleInfo.WaferManager.Wafers.Where(x=>x.WaferStatus!=0).Count();
+            EfemRobotMoveInfo = (RobotMoveInfo)QueryDataClient.Instance.Service.GetData("EFEM.RobotMoveAction");
+            LP1WaferCount = LP1ModuleInfo.WaferManager.Wafers.Where(x => x.WaferStatus != 0).Count();
             LP2WaferCount = LP2ModuleInfo.WaferManager.Wafers.Where(x => x.WaferStatus != 0).Count();
             LP3WaferCount = LP3ModuleInfo.WaferManager.Wafers.Where(x => x.WaferStatus != 0).Count();
 
@@ -721,12 +721,11 @@ namespace Venus_MainPages.ViewModels
                 {
                     Robot2TAction = (WaferRobotTAction)Enum.Parse(typeof(WaferRobotTAction), module, true);
                 }
-                return;
             }
             #endregion
 
             #region pick 和 place LL
-            if (oldValue.Action == RobotAction.None && (newValue.Action == RobotAction.Placing || newValue.Action == RobotAction.Picking))
+            else if (oldValue.Action == RobotAction.None && (newValue.Action == RobotAction.Placing || newValue.Action == RobotAction.Picking))
             {
                 var TMRobotMoveActionBladeTarget = newValue.BladeTarget;
                 if (TMRobotMoveActionBladeTarget != null)
@@ -743,8 +742,19 @@ namespace Venus_MainPages.ViewModels
 
                 if (arm == "ArmA")
                 {
-                    Robot1TAction = (WaferRobotTAction)Enum.Parse(typeof(WaferRobotTAction), module, true);
-                    await Task.Delay(600);
+                    var waferRobotTAction = (WaferRobotTAction)Enum.Parse(typeof(WaferRobotTAction), module, true);
+                    if (waferRobotTAction != Robot1TAction)
+                    {
+                        Robot1TAction = waferRobotTAction;
+                        await Task.Delay(600);
+                    }
+                    else
+                    { 
+                        await Task.Delay(100);
+                    }
+
+                    //Robot1TAction = (WaferRobotTAction)Enum.Parse(typeof(WaferRobotTAction), module, true);
+                    //await Task.Delay(600);
                     Robot1XAction = WaferRobotXAction.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))
                     {
@@ -754,8 +764,19 @@ namespace Venus_MainPages.ViewModels
                 }
                 else if (arm == "ArmB")
                 {
-                    Robot2TAction = (WaferRobotTAction)Enum.Parse(typeof(WaferRobotTAction), module, true);
-                    await Task.Delay(600);
+                    var waferRobotTAction = (WaferRobotTAction)Enum.Parse(typeof(WaferRobotTAction), module, true);
+                    if (waferRobotTAction != Robot2TAction)
+                    {
+                        Robot2TAction = waferRobotTAction;
+                        await Task.Delay(600);
+                    }
+                    else
+                    { 
+                        await Task.Delay(100);
+                    }
+
+                    //Robot2TAction = (WaferRobotTAction)Enum.Parse(typeof(WaferRobotTAction), module, true);
+                    //await Task.Delay(600);
                     Robot2XAction = WaferRobotXAction.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))
                     {
@@ -763,13 +784,12 @@ namespace Venus_MainPages.ViewModels
                     }
                     Robot2XAction = WaferRobotXAction.Retract;
                 }
-                return;
             }
 
             #endregion
 
             #region pick 和 place pm
-            if (oldValue.Action == RobotAction.None && newValue.Action == RobotAction.Extending)
+            else if (oldValue.Action == RobotAction.None && newValue.Action == RobotAction.Extending)
             {
                 var TMRobotMoveActionBladeTarget = newValue.BladeTarget;
                 if (TMRobotMoveActionBladeTarget != null)
@@ -785,20 +805,34 @@ namespace Venus_MainPages.ViewModels
                 var module = values[1];
                 if (arm == "ArmA")
                 {
-                    Robot1TAction = (WaferRobotTAction)Enum.Parse(typeof(WaferRobotTAction), module, true);
-                    await Task.Delay(1500);
+                    var waferRobotTAction = (WaferRobotTAction)Enum.Parse(typeof(WaferRobotTAction), module, true);
+                    if (waferRobotTAction != Robot1TAction)
+                    {
+                        Robot1TAction = waferRobotTAction;
+                        await Task.Delay(600);
+                    }
+                    else
+                    { 
+                        await Task.Delay(100);
+                    }
                     Robot1XAction = WaferRobotXAction.Extend;
                 }
                 else if (arm == "ArmB")
                 {
-                    Robot2TAction = (WaferRobotTAction)Enum.Parse(typeof(WaferRobotTAction), module, true);
-                    await Task.Delay(1500);
+                    var waferRobotTAction = (WaferRobotTAction)Enum.Parse(typeof(WaferRobotTAction), module, true);
+                    if (waferRobotTAction != Robot2TAction)
+                    {
+                        Robot2TAction = waferRobotTAction;
+                        await Task.Delay(600);
+                    }
+                    else
+                    { 
+                        await Task.Delay(100);
+                    }
                     Robot2XAction = WaferRobotXAction.Extend;
                 }
-                return;
-
             }
-            if (oldValue.Action == RobotAction.None && newValue.Action == RobotAction.Retracting)
+            else if (oldValue.Action == RobotAction.None && newValue.Action == RobotAction.Retracting)
             {
                 var TMRobotMoveActionBladeTarget = newValue.BladeTarget;
                 if (TMRobotMoveActionBladeTarget != null)
@@ -819,7 +853,6 @@ namespace Venus_MainPages.ViewModels
                 {
                     Robot2XAction = WaferRobotXAction.Retract;
                 }
-                return;
             }
             #endregion
 
@@ -853,8 +886,12 @@ namespace Venus_MainPages.ViewModels
                     var robot3Robot3TAction = (WaferRobotTAction)Enum.Parse(typeof(WaferRobotTAction), module, true);
                     //await Task.Delay(1000);
                     await ChangePosition(robot3Robot3TAction);
-                    Robot3TAction = robot3Robot3TAction;
-                    await Task.Delay(600);
+                    if (Robot3TAction != robot3Robot3TAction)
+                    {
+                        Robot3TAction = robot3Robot3TAction;
+                        await Task.Delay(600);
+                    }
+                    
 
                     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))
@@ -868,8 +905,12 @@ namespace Venus_MainPages.ViewModels
                     var robot4Robot4TAction = (WaferRobotTAction)Enum.Parse(typeof(WaferRobotTAction), module, true);
                     //await Task.Delay(1000);
                     await ChangePosition(robot4Robot4TAction);
-                    Robot4TAction = robot4Robot4TAction;
-                    await Task.Delay(600);
+                    if (Robot4TAction != robot4Robot4TAction)
+                    {
+                        Robot4TAction = robot4Robot4TAction;
+                        await Task.Delay(600);
+                    }
+                   
                     //ChangePosition(Robot4TAction);
                     //await Task.Delay(2000);
                     Robot4XAction = WaferRobotXAction.Extend;
@@ -931,7 +972,7 @@ namespace Venus_MainPages.ViewModels
                 var arm = values[0];
                 if (arm == "ArmA")
                 {
-                    
+
                     Robot3XAction = WaferRobotXAction.Retract;
                     await Task.Delay(3000);
                     //ChangePosition(Robot3TAction);
@@ -1025,7 +1066,7 @@ namespace Venus_MainPages.ViewModels
         private void AssociateSequence(WaferAssociationInfo info, bool flag, int slot = -1)
         {
             List<WaferInfo> wafers = info.ModuleData.WaferManager.Wafers;
-              
+
             if (slot >= 0) //by wafer
             {
                 int index = wafers.Count - slot - 1;
@@ -1073,7 +1114,7 @@ namespace Venus_MainPages.ViewModels
             return true;
         }
 
-       
+
 
         private async Task ChangePosition(WaferRobotTAction waferRobotTAction)
         {

+ 1 - 1
Venus/Venus_MainPages/Views/OverKepler2300View.xaml

@@ -1185,7 +1185,7 @@
             <TextBox   Grid.Row="1" Grid.Column="1"  Width="Auto" Height="Auto" Text="{Binding OuterChillerTempSetpoint,UpdateSourceTrigger=PropertyChanged}" HorizontalContentAlignment="Center" VerticalContentAlignment="Center" BorderBrush="White"  BorderThickness="0" />
             <TextBlock Grid.Row="1" Grid.Column="2" Text="{Binding OuterTemperature,StringFormat='F1'}" FontSize="15" TextBlock.TextAlignment="Center" VerticalAlignment="Center" Block.TextAlignment="Center" />
 
-            <TextBlock Grid.Row="2" Text="Top Temp.(°C)" FontSize="15" VerticalAlignment="Center" HorizontalAlignment="Left" Padding="1,0,0,0"/>
+            <TextBlock Grid.Row="2" Text="Top   Temp.(°C)" FontSize="15" VerticalAlignment="Center" HorizontalAlignment="Left" Padding="1,0,0,0"/>
             <TextBox   Grid.Row="2" Grid.Column="1"  Width="Auto" Height="Auto" Text="{Binding TopChillerTempSetpoint,UpdateSourceTrigger=PropertyChanged}" HorizontalContentAlignment="Center" VerticalContentAlignment="Center" BorderBrush="White"  BorderThickness="0" />
             <TextBlock Grid.Row="2" Grid.Column="2" Text="{Binding TopTemperature,StringFormat='F1'}" FontSize="15" TextBlock.TextAlignment="Center" VerticalAlignment="Center" Block.TextAlignment="Center" />
 

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

@@ -1157,7 +1157,7 @@
                 <ColumnDefinition Width="*"/>
             </Grid.ColumnDefinitions>
             <TextBlock Grid.Row="0" Text="ESC Voltage(V)"     FontSize="15" VerticalAlignment="Center" HorizontalAlignment="Left" Padding="1,0,0,0"/>
-            <TextBlock Grid.Row="1" Text="ESC Current Leak(uA)"      FontSize="15" VerticalAlignment="Center" HorizontalAlignment="Left" Padding="1,0,0,0"/>
+            <TextBlock Grid.Row="1" Text="ESC R+/R-"      FontSize="15" VerticalAlignment="Center" HorizontalAlignment="Left" Padding="1,0,0,0"/>
             <TextBlock Grid.Row="2" Text="ESC Temp.(°C)" FontSize="15" VerticalAlignment="Center" HorizontalAlignment="Left" Padding="1,0,0,0"/>
             <!--<TextBlock Grid.Row="3" Text="Chiller Temp.(°C)" FontSize="15" VerticalAlignment="Center" HorizontalAlignment="Left" Padding="1,0,0,0"/>
             <TextBlock Grid.Row="4" Text="Wall Temp.(°C)" FontSize="15" VerticalAlignment="Center" HorizontalAlignment="Left" Padding="1,0,0,0"/>-->
@@ -1166,10 +1166,10 @@
             <TextBox Grid.Row="0" Grid.Column="1" Width="Auto" Height="Auto" Text="{Binding ESCVoltage,UpdateSourceTrigger=PropertyChanged}" HorizontalContentAlignment="Center" VerticalContentAlignment="Center" BorderBrush="White"  BorderThickness="0"/>
             <TextBlock Grid.Row="1" Grid.ColumnSpan="2" Grid.Column="1" Width="Auto" Height="Auto"   TextBlock.TextAlignment="Center" VerticalAlignment="Bottom" Block.TextAlignment="Center" Margin="0,0,0,4">
                 <TextBlock.Text>
-                    <MultiBinding StringFormat="{}{0}-{1}={2}">
+                    <MultiBinding StringFormat="{}{0}/{1}">
                         <Binding Path="ESCHVData.PositiveOutputCurrent"></Binding>
                         <Binding Path="ESCHVData.NegativeOutputCurrent"></Binding>
-                        <Binding Path="ESCHVData.Leak"></Binding>
+                        <!--<Binding Path="ESCHVData.Leak"></Binding>-->
                     </MultiBinding>
                 </TextBlock.Text>
             </TextBlock>

+ 1 - 1
Venus/Venus_Simulator/Devices/TMSimulatorServer.cs

@@ -29,7 +29,7 @@ namespace Venus_Simulator.Devices
         {
             if(str.Contains("HOME") || str.Contains("GOTO") || str.Contains("XFER"))
             {
-                Thread.Sleep(500);
+                Thread.Sleep(1500);
 
                 OnWriteMessage("_RDY");
             }

+ 14 - 3
Venus/Venus_Simulator/Instances/SimulatorSystem.cs

@@ -505,14 +505,25 @@ namespace Venus_Simulator.Instances
                 SetAiValue($"{mod}.AI_Second", DateTime.Now.Second);
 
 
-                SetAiValue($"{mod}.AI_TM_CHB_Pressure", 760000);
                 SetAiValue($"{mod}.AI_TM_Foreline_Pressure", 5001);
-                SetAiValue($"{mod}.AI_LLA_CHB_Pressure", 5002);
                 SetAiValue($"{mod}.AI_LLA_LLB_Foreline_Pressure", 5003);
+
+            if (SystemConfig.Instance.GetValue<bool>("System.IsATMMode"))
+            {
+                SetAiValue($"{mod}.AI_TM_CHB_Pressure", 760000);
+                SetAiValue($"{mod}.AI_LLA_CHB_Pressure", 760000);
+                SetAiValue($"{mod}.AI_LLB_CHB_Pressure", 760000);
+            }
+            else
+            {
+                SetAiValue($"{mod}.AI_TM_CHB_Pressure", 5000);
+                SetAiValue($"{mod}.AI_LLA_CHB_Pressure", 5002);
                 SetAiValue($"{mod}.AI_LLB_CHB_Pressure", 5004);
+            }
+
+
 
 
-            
 
         }
         private void SetSETMDefaultValue()

+ 5 - 5
Venus/Venus_Themes/Themes/Generic.xaml

@@ -38,7 +38,7 @@
                                 <VisualStateGroup Name="RobotXActions">
                                     <VisualStateGroup.Transitions>
                                         <VisualTransition To="Extend">
-                                        <Storyboard FillBehavior="HoldEnd" Timeline.SpeedRatio="9">
+                                        <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"/>
@@ -62,7 +62,7 @@
                                             </Storyboard>
                                         </VisualTransition>
                                         <VisualTransition To="Retract">
-                                            <Storyboard FillBehavior="HoldEnd" SpeedRatio="9">
+                                            <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"/>
@@ -163,7 +163,7 @@
                                         <VisualTransition To="PMD">
                                             <Storyboard FillBehavior="HoldEnd">
                                                 <DoubleAnimationUsingKeyFrames Storyboard.TargetName="robotRotateAct" Storyboard.TargetProperty="Angle">
-                                                    <LinearDoubleKeyFrame Value="180" KeyTime="0:0:1"/>
+                                                    <LinearDoubleKeyFrame Value="180" KeyTime="0:0:0.5"/>
                                                 </DoubleAnimationUsingKeyFrames>
                                             </Storyboard>
                                         </VisualTransition>
@@ -408,7 +408,7 @@
                             <VisualStateGroup Name="RobotXActions">
                                 <VisualStateGroup.Transitions>
                                     <VisualTransition To="Extend">
-                                        <Storyboard FillBehavior="HoldEnd" SpeedRatio="9">
+                                        <Storyboard FillBehavior="HoldEnd" SpeedRatio="13">
                                             <DoubleAnimationUsingKeyFrames Storyboard.TargetName="armXT1RotateAct" Storyboard.TargetProperty="Angle">
                                                 <LinearDoubleKeyFrame Value="90" KeyTime="0:0:0"/>
                                                 <LinearDoubleKeyFrame Value="0"  KeyTime="0:0:9"/>
@@ -432,7 +432,7 @@
                                         </Storyboard>
                                     </VisualTransition>
                                     <VisualTransition To="Retract">
-                                        <Storyboard FillBehavior="HoldEnd" SpeedRatio="9">
+                                        <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"/>