Browse Source

add vpw abort

chenzk 1 week ago
parent
commit
1919481acd

+ 28 - 0
PunkHPX8_MainPages/ViewModels/VPWMainViewModel.cs

@@ -86,6 +86,14 @@ namespace PunkHPX8_MainPages.ViewModels
         /// cell 2 flow
         /// </summary>
         private double _vpw2CellFlow;
+        /// <summary>
+        /// cell 1 vacuum valve
+        /// </summary>
+        private bool _vpw1VacuumValve;
+        /// <summary>
+        /// cell 2 vacuum valve
+        /// </summary>
+        private bool _vpw2VacuumValve;
         #endregion
 
 
@@ -191,6 +199,22 @@ namespace PunkHPX8_MainPages.ViewModels
             get { return _vpw2CellFlow; }
             set { SetProperty(ref _vpw2CellFlow, value); }
         }
+        /// <summary>
+        ///cell 1 vacuum valve
+        /// </summary>
+        public bool Vpw1VacuumValve
+        {
+            get { return _vpw1VacuumValve; }
+            set { SetProperty(ref _vpw1VacuumValve, value); }
+        }
+        /// <summary>
+        ///cell 2 vacuum valve
+        /// </summary>
+        public bool Vpw2VacuumValve
+        {
+            get { return _vpw2VacuumValve; }
+            set { SetProperty(ref _vpw2VacuumValve, value); }
+        }
         #endregion
 
         #endregion
@@ -223,6 +247,8 @@ namespace PunkHPX8_MainPages.ViewModels
             _rtDataKeys.Add($"{Module}.FsmState");
             _rtDataKeys.Add($"VPW1.DiwCellFlow");
             _rtDataKeys.Add($"VPW2.DiwCellFlow");
+            _rtDataKeys.Add($"VPW1.VacuumValve");
+            _rtDataKeys.Add($"VPW2.VacuumValve");
             if (_timer == null)
             {
                 _timer = new DispatcherTimer();
@@ -249,6 +275,8 @@ namespace PunkHPX8_MainPages.ViewModels
                     IsPurge = "Purgeing".Equals(Status) ? true : false;
                     Vpw1CellFlow = CommonFunction.GetValue<double>(_rtDataValueDic, $"VPW1.DiwCellFlow");
                     Vpw2CellFlow = CommonFunction.GetValue<double>(_rtDataValueDic, $"VPW2.DiwCellFlow");
+                    Vpw1VacuumValve = CommonFunction.GetValue<bool>(_rtDataValueDic, $"VPW1.VacuumValve");
+                    Vpw2VacuumValve = CommonFunction.GetValue<bool>(_rtDataValueDic, $"VPW2.VacuumValve");
                 }
             }
         }

+ 2 - 0
PunkHPX8_MainPages/Views/VPWMainView.xaml

@@ -83,6 +83,8 @@
                                            IsVacuumPumpOpen="{Binding VpwMainCommonData.VacuumPumpEnable}"
                                            Cell1DIWFlow="{Binding Vpw1CellFlow}"
                                            Cell2DIWFlow="{Binding Vpw2CellFlow}"
+                                           VPW1VACValve="{Binding Vpw1VacuumValve}"
+                                           VPW2VACValve="{Binding Vpw2VacuumValve}"
                 
                 ></UserControls:VPWMainUIControl>
         </Grid>

+ 1 - 0
PunkHPX8_RT/Devices/VpwCell/VpwCellDevice.cs

@@ -155,6 +155,7 @@ namespace PunkHPX8_RT.Devices.VpwCell
             DATA.Subscribe($"{Module}.{COMMON_DATA}", () => CommonData, SubscriptionAttribute.FLAG.IgnoreSaveDB);
             DATA.Subscribe($"{Module}.{PERSISTENT_VALUE}", () => _vpwCellPersistentValue, SubscriptionAttribute.FLAG.IgnoreSaveDB);
             DATA.Subscribe($"{Module}.DiwCellFlow", () => CommonData.DiwFlow, SubscriptionAttribute.FLAG.IgnoreSaveDB);
+            DATA.Subscribe($"{Module}.VacuumValve", () => CommonData.VacuumValve, SubscriptionAttribute.FLAG.IgnoreSaveDB);
             DATA.Subscribe($"{Module}.{LOOPDO_VALUE}", ()=> { return GetLoopDOValue(); }, SubscriptionAttribute.FLAG.IgnoreSaveDB);
         }
         /// <summary>

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

@@ -241,6 +241,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);
             //Prepare
             Transition(VPWCellState.Idle, VPWCellMsg.Prepare, Prepare, VPWCellState.Preparing);
             Transition(VPWCellState.Preparing, FSM_MSG.TIMER, PrepareMonitor, VPWCellState.WaitForRunRecipe);
@@ -298,6 +299,7 @@ namespace PunkHPX8_RT.Modules.VpwMain
         {
             OP.Subscribe($"{Module}.InitializeAll", (cmd, args) => { return CheckToPostMessage<VPWCellState, VPWCellMsg>(eEvent.ERR_VPW, Module.ToString(), (int)VPWCellMsg.Initialize); });
             OP.Subscribe($"{Module}.Prepare", (cmd, args) => { return CheckToPostMessage<VPWCellState, VPWCellMsg>(eEvent.ERR_VPW, Module.ToString(), (int)VPWCellMsg.Prepare); });
+            OP.Subscribe($"{Module}.Abort", (cmd, args) => { return CheckToPostMessage<VPWCellState, VPWCellMsg>(eEvent.ERR_VPW, Module.ToString(), (int)VPWCellMsg.Abort); });
             OP.Subscribe($"{Module}.CycleManualProcessRecipe", (cmd, args) =>
             {
                 VpwRecipe recipe = RecipeFileManager.Instance.LoadGenericityRecipe<VpwRecipe>(args[0].ToString());
@@ -510,7 +512,16 @@ namespace PunkHPX8_RT.Modules.VpwMain
             }
             return result;
         }
-
+        private bool RunRecipeAbort(object[] param)
+        {
+            _cycleManualProcessRoutine.Abort();
+            //记录LotTrack
+            _runRecipeCompleteTime = DateTime.Now;
+            _cycleManualProcessRoutine.VpwLotTrackHeaderDatas.ProcessTime = (_runRecipeCompleteTime - _runRecipeStartTime).TotalSeconds.ToString("F2");
+            VpwLotTrackUtil.ExportVpwLotTrack(Module.ToString(), _cycleManualProcessRoutine.VpwLotTrackDatas,
+                _cycleManualProcessRoutine.VpwLotTrackHeaderDatas, IsAuto, _isRetry);
+            return true;
+        }
         #endregion
 
         #region VpwCell Retry

+ 4 - 4
PunkHPX8_Themes/UserControls/VPWMainUIControl.xaml.cs

@@ -264,21 +264,21 @@ namespace PunkHPX8_Themes.UserControls
 
         private void OpenVPW1VACValve_Click(object sender, RoutedEventArgs e)
         {
-            //InvokeClient.Instance.Service.DoOperation($"{ModuleName}.DegasAdjustOn");
+            InvokeClient.Instance.Service.DoOperation($"VPW1.VacuumValveOn");
         }
         private void CloseVPW1VACValve_Click(object sender, RoutedEventArgs e)
         {
-            //InvokeClient.Instance.Service.DoOperation($"{ModuleName}.DegasAdjustOn");
+            InvokeClient.Instance.Service.DoOperation($"VPW1.VacuumValveOff");
         }
 
 
         private void OpenVPW2VACValve_Click(object sender, RoutedEventArgs e)
         {
-            //InvokeClient.Instance.Service.DoOperation($"{ModuleName}.DegasAdjustOn");
+            InvokeClient.Instance.Service.DoOperation($"VPW2.VacuumValveOn");
         }
         private void CloseVPW2VACValve_Click(object sender, RoutedEventArgs e)
         {
-            //InvokeClient.Instance.Service.DoOperation($"{ModuleName}.DegasAdjustOn");
+            InvokeClient.Instance.Service.DoOperation($"VPW2.VacuumValveOff");
         }
     }
 }