Browse Source

add vpw cell waferinfo
add vpw abort

chenzk 6 days ago
parent
commit
7cf1fd838c

+ 4 - 1
PunkHPX8_Core/RtState.cs

@@ -125,9 +125,11 @@ namespace PunkHPX8_Core
         Error,
         Init,
         Initialized,
+        Aborting,
         Idle,
         Initializing,
-        Purgeing
+        Purgeing,
+    
     }
     public enum VPWCellState
     {
@@ -144,5 +146,6 @@ namespace PunkHPX8_Core
         RunReciping,
         ManualReciping,
         CycleManualProcessing,
+        Aborting
     }
 }

+ 6 - 6
PunkHPX8_MainPages/ViewModels/VPWMotionViewModel.cs

@@ -170,12 +170,12 @@ namespace PunkHPX8_MainPages.ViewModels
                     CommandMotionData tmp2 = CommonFunction.GetValue<CommandMotionData>(_rtDataValueDic, $"{VPW2RotationModuleName}.{MOTION_DATA}");
                     if (tmp2 != null)
                     {
-                        tmp2.ActualVelocity = Math.Round(tmp1.ActualVelocity, 2);
-                        tmp2.ProfileVelocity = Math.Round(tmp1.ProfileVelocity, 2);
-                        tmp2.HomingVelocity = Math.Round(tmp1.HomingVelocity, 2);
-                        tmp2.HomingVelocitySlow = Math.Round(tmp1.HomingVelocitySlow, 2);
-                        tmp2.ProfileDecel = tmp1.ProfileDecel;
-                        tmp2.ProfileAccel = tmp1.ProfileAccel;
+                        tmp2.ActualVelocity = Math.Round(tmp2.ActualVelocity, 2);
+                        tmp2.ProfileVelocity = Math.Round(tmp2.ProfileVelocity, 2);
+                        tmp2.HomingVelocity = Math.Round(tmp2.HomingVelocity, 2);
+                        tmp2.HomingVelocitySlow = Math.Round(tmp2.HomingVelocitySlow, 2);
+                        tmp2.ProfileDecel = tmp2.ProfileDecel;
+                        tmp2.ProfileAccel = tmp2.ProfileAccel;
                     }
                     VPW2RotationMotionData = tmp2;
                 }

+ 2 - 1
PunkHPX8_MainPages/Views/VPWCellView.xaml

@@ -43,7 +43,8 @@
         <Grid Grid.Row="1" Grid.Column="1">
             <UserControls:WaferOverviewPanel HorizontalAlignment="Left" Margin="10,0,0,0" VerticalAlignment="Center" 
                         IsEnabled="{Binding IsEnabled}"
-                         />
+                        WaferIDValue="{Binding WaferInfo.WaferID}" 
+                        SeqRecipeValue="{Binding WaferInfo.SequenceName}"/>
         </Grid>
         <Grid Grid.Row="2" Grid.Column="0" Grid.RowSpan="2">
             <UserControls:VPWCellStatusControl HorizontalAlignment="Left" Margin="10,-50,0,0" VerticalAlignment="Center" 

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

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

+ 10 - 1
PunkHPX8_RT/Modules/VpwCell/VpwCellEntity.cs

@@ -230,6 +230,7 @@ namespace PunkHPX8_RT.Modules.VpwMain
             AnyStateTransition(VPWCellMsg.Error, NullFunc, VPWCellState.Error);
             //Initialized
             Transition(VPWCellState.Error, VPWCellMsg.Initialize, InitializeAll, VPWCellState.Initializing);
+            Transition(VPWCellState.Aborting, VPWCellMsg.Initialize, InitializeAll, VPWCellState.Initializing);
             Transition(VPWCellState.Init, VPWCellMsg.Initialize, InitializeAll, VPWCellState.Initializing);
             Transition(VPWCellState.Idle, VPWCellMsg.Initialize, InitializeAll, VPWCellState.Initializing);
             Transition(VPWCellState.Initializing, FSM_MSG.TIMER, InitializeAllMonitor, VPWCellState.Idle);
@@ -241,7 +242,7 @@ namespace PunkHPX8_RT.Modules.VpwMain
             //Cycle Manual Process
             Transition(VPWCellState.Idle, VPWCellMsg.CycleProcessRecipe, CycleManualProcess, VPWCellState.CycleManualProcessing);
             Transition(VPWCellState.CycleManualProcessing, FSM_MSG.TIMER, CycleManualMonitor, VPWCellState.Idle);
-            Transition(VPWCellState.CycleManualProcessing, VPWCellMsg.Abort, RunRecipeAbort, VPWCellState.Init);
+            Transition(VPWCellState.CycleManualProcessing, VPWCellMsg.Abort, RunRecipeAbort, VPWCellState.Aborting);
             //Prepare
             Transition(VPWCellState.Idle, VPWCellMsg.Prepare, Prepare, VPWCellState.Preparing);
             Transition(VPWCellState.Preparing, FSM_MSG.TIMER, PrepareMonitor, VPWCellState.WaitForRunRecipe);
@@ -515,6 +516,14 @@ namespace PunkHPX8_RT.Modules.VpwMain
         private bool RunRecipeAbort(object[] param)
         {
             _cycleManualProcessRoutine.Abort();
+
+            VpwMainEntity vpwMainEntity = Singleton<RouteManager>.Instance.GetModule<VpwMainEntity>("VPWMain1");
+            if (vpwMainEntity != null) 
+            {
+                //把main的状态置为暂停
+                vpwMainEntity.PostMsg(VPWMainMsg.Abort);
+            }
+           
             //记录LotTrack
             _runRecipeCompleteTime = DateTime.Now;
             _cycleManualProcessRoutine.VpwLotTrackHeaderDatas.ProcessTime = (_runRecipeCompleteTime - _runRecipeStartTime).TotalSeconds.ToString("F2");

+ 13 - 1
PunkHPX8_RT/Modules/VpwMain/VpwMainEntity.cs

@@ -5,6 +5,7 @@ using Aitex.Core.RT.Log;
 using Aitex.Core.RT.OperationCenter;
 using Aitex.Core.Util;
 using Aitex.Core.Utilities;
+using CyberX12_RT.Modules.VpwCell;
 using MECF.Framework.Common.Equipment;
 using MECF.Framework.Common.Persistent.Reservoirs;
 using MECF.Framework.Common.Persistent.VpwMain;
@@ -152,10 +153,12 @@ namespace PunkHPX8_RT.Modules.VpwMain
             fsm = new StateMachine<VpwMainEntity>(Module.ToString(), (int)VPWMainState.Init, 100);
             fsm.EnableRepeatedMsg(true);
             AnyStateTransition(VPWMainMsg.Error, NullFunc, VPWMainState.Error);
+            AnyStateTransition(VPWMainMsg.Abort, PurgeAbort, VPWMainState.Aborting);
             //Initialized
             Transition(VPWMainState.Error, VPWMainMsg.Initialize, InitializeAll, VPWMainState.Initializing);
             Transition(VPWMainState.Init, VPWMainMsg.Initialize, InitializeAll, VPWMainState.Initializing);
             Transition(VPWMainState.Idle, VPWMainMsg.Initialize, InitializeAll, VPWMainState.Initializing);
+            Transition(VPWMainState.Aborting, VPWMainMsg.Initialize, InitializeAll, VPWMainState.Initializing);
             Transition(VPWMainState.Initializing, FSM_MSG.TIMER, InitializeAllMonitor, VPWMainState.Idle);
             Transition(VPWMainState.Error, VPWMainMsg.EnterIdle, NullFunc, VPWMainState.Idle);
             Transition(VPWMainState.Init, VPWMainMsg.EnterIdle, NullFunc, VPWMainState.Idle);
@@ -166,12 +169,15 @@ namespace PunkHPX8_RT.Modules.VpwMain
             Transition(VPWMainState.Idle, VPWMainMsg.Purge, Purge, VPWMainState.Purgeing);
             Transition(VPWMainState.Purgeing, VPWMainMsg.Purge, NullFunc, VPWMainState.Purgeing);
             Transition(VPWMainState.Purgeing, FSM_MSG.TIMER, PurgeMonitor, VPWMainState.Idle);
+           
+
+
 
             EnumLoop<VPWMainState>.ForEach((item) => { fsm.MapState((int)item, item.ToString()); });
 
             EnumLoop<VPWMainMsg>.ForEach((item) => { fsm.MapMessage((int)item, item.ToString()); });
         }
-        /// <summary>
+        /// <summary
         /// 初始化参数
         /// </summary>
         private void InitializeParameter()
@@ -265,6 +271,12 @@ namespace PunkHPX8_RT.Modules.VpwMain
             }
             return ret == RState.End;
         }
+
+        private bool PurgeAbort(object[] param)
+        {
+            _vpwPurgeRoutine.Abort();
+            return true;
+        }
         #endregion