Browse Source

revise platingcell run recipe bug

chenzk 1 week ago
parent
commit
139861bd89

+ 5 - 0
PunkHPX8_MainPages/ViewModels/DepRecipeViewModel.cs

@@ -411,6 +411,11 @@ namespace PunkHPX8_MainPages.ViewModels
                     totaltime += obj.DurartionSeconds;
                     totalcurrent += (obj.CurrentValue * obj.DurartionSeconds);
                     platingsteps++;
+                    if(obj.BiDireaction && obj.BiDFrequency == 0)
+                    {
+                        MessageBox.Show("Frequency can not set 0 when Bi-Direction is true,Save Recipe Failed", "Save Recipe", MessageBoxButton.OK, MessageBoxImage.Information);
+                        return;
+                    }
                 }
                 //计算Deposition PlatingSteps
                 Recipe.DepStepCount = platingsteps;

+ 15 - 4
PunkHPX8_MainPages/ViewModels/PlatingCellHomePageViewModel.cs

@@ -499,6 +499,7 @@ namespace PunkHPX8_MainPages.ViewModels
         /// </summary>
         public void LoadData(string systemName)
         {
+            _rtDataKeys.Clear();
             Module = systemName;
             if (!String.IsNullOrEmpty(Module) && ("PlatingCell1".Equals(Module) || "PlatingCell3".Equals(Module)))
             {
@@ -518,7 +519,17 @@ namespace PunkHPX8_MainPages.ViewModels
             }
             RecipeModuleName = "DEP Recipe";
             RecipeType = "dep";
+            _rtDataKeys.Add($"{Module}.ReservoirName");
+            _rtDataValueDic = QueryDataClient.Instance.Service.PollData(_rtDataKeys);
+            if (_rtDataValueDic != null)
+            {
+                ReservoirName = CommonFunction.GetValue<string>(_rtDataValueDic, $"{Module}.ReservoirName");
+            }
             _rtDataKeys.Clear();
+            if (ReservoirName != null)
+            {
+                _rtDataKeys.Add($"{ReservoirName}.Chemistry");
+            }
             _rtDataKeys.Add($"{Module}.FsmState");
             _rtDataKeys.Add($"{Module}.{PERSISTENT_VALUE}");
             _rtDataKeys.Add($"{Module}.CurrentRecipe");
@@ -526,8 +537,8 @@ namespace PunkHPX8_MainPages.ViewModels
             _rtDataKeys.Add($"{Module}.TimeRemain");
             _rtDataKeys.Add($"{Module}.{PLATINGCELLDATA}");
             _rtDataKeys.Add($"{Module}.ReservoirCommonData");
-            _rtDataKeys.Add($"{Module}.ReservoirName");
-            _rtDataKeys.Add($"{Module}.Chemistry");
+       
+
             _rtDataKeys.Add($"{Module}.PowerSupplierData");
             _rtDataKeys.Add($"{Module}.CurrentCCRStep");
             _rtDataKeys.Add($"{Module}.CurrentCCRTimeRemain");
@@ -561,9 +572,9 @@ namespace PunkHPX8_MainPages.ViewModels
                     TimeRemaining = CommonFunction.GetValue<int>(_rtDataValueDic, $"{Module}.TimeRemain");
                     PlatingCellCommonData = CommonFunction.GetValue<PlatingCellData>(_rtDataValueDic, $"{Module}.{PLATINGCELLDATA}");
                     ReservoirCommonData = CommonFunction.GetValue<ReservoirData>(_rtDataValueDic, $"{Module}.ReservoirCommonData");
-                    Chemistry = CommonFunction.GetValue<string>(_rtDataValueDic, $"{Module}.Chemistry");
+                    Chemistry = CommonFunction.GetValue<string>(_rtDataValueDic, $"{ReservoirName}.Chemistry");
                     VerticalMotionData = CommonFunction.GetValue<CommandMotionData>(_rtDataValueDic, $"{VerticalName}.MotionData");
-                    ReservoirName = CommonFunction.GetValue<string>(_rtDataValueDic, $"{Module}.ReservoirName");
+
                     CurrentCCRStep = CommonFunction.GetValue<string>(_rtDataValueDic, $"{Module}.CurrentCCRStep");
                     CurrentCCRStepTimeRemain = CommonFunction.GetValue<double>(_rtDataValueDic, $"{Module}.CurrentCCRTimeRemain");
                     CurrentCCRRotationSpeed = CommonFunction.GetValue<double>(_rtDataValueDic, $"{Module}.Rotation.ProfileVelocity");

+ 5 - 0
PunkHPX8_RT/Devices/PlatingCell/PlatingCellDevice.cs

@@ -128,6 +128,10 @@ namespace PunkHPX8_RT.Devices.PlatingCell
         /// CCR当前剩余时间
         /// </summary>
         private double _timeRemain;
+        /// <summary>
+        /// 对应reservoir槽体化学液
+        /// </summary>
+        private string _reservoirChemistry;
         #endregion
 
         #region 属性
@@ -419,6 +423,7 @@ namespace PunkHPX8_RT.Devices.PlatingCell
             DATA.Subscribe($"{Module}.ReservoirName", () => _reservoirName, SubscriptionAttribute.FLAG.IgnoreSaveDB);
             DATA.Subscribe($"{Module}.CurrentCCRStep", () => _currentCCRStep, SubscriptionAttribute.FLAG.IgnoreSaveDB);
             DATA.Subscribe($"{Module}.CurrentCCRTimeRemain", () => _timeRemain, SubscriptionAttribute.FLAG.IgnoreSaveDB);
+            DATA.Subscribe($"{Module}.ReservoirChemistry", () => _reservoirChemistry, SubscriptionAttribute.FLAG.IgnoreSaveDB);
 
             DATA.Subscribe($"{Module}.PowerSupplierData", () => _powerSupplier.PowerSupplierData, SubscriptionAttribute.FLAG.IgnoreSaveDB);
             DATA.Subscribe($"{Module}.PowerSupplier.ID", () => _powerSupplier.Module, SubscriptionAttribute.FLAG.IgnoreSaveDB);

+ 1 - 0
PunkHPX8_RT/Devices/Reservoir/ReservoirDevice.cs

@@ -302,6 +302,7 @@ namespace PunkHPX8_RT.Devices.Reservoir
             DATA.Subscribe($"{Module}.IsManualCAReplen", () => { return _currentDireplenOperation == DiReplenOperation.ManualCADiReplen; }, SubscriptionAttribute.FLAG.IgnoreSaveDB);
             DATA.Subscribe($"{Module}.IsDIReplenPerfillTimeOut", () => _isDIReplenPerfillTimeOut, SubscriptionAttribute.FLAG.IgnoreSaveDB);
             DATA.Subscribe($"{Module}.IsDIReplenMaxTimeOut", () => _isDIReplenMaxTimeOut, SubscriptionAttribute.FLAG.IgnoreSaveDB);
+            DATA.Subscribe($"{Module}.Metal", () => _resRecipe.Metal, SubscriptionAttribute.FLAG.IgnoreSaveDB);
         }
         /// <summary>
         /// 初始化Operation

+ 14 - 2
PunkHPX8_RT/Modules/PlatingCell/PlatingCellEntity.cs

@@ -75,6 +75,10 @@ namespace PunkHPX8_RT.Modules.PlatingCell
         /// </summary>
         private int _recipeTime;
         /// <summary>
+        /// 循环次数
+        /// </summary>
+        private int _cycle = 0;
+        /// <summary>
         /// c&m Initialize routine
         /// </summary>
         private PlatingCellInitializeRoutine _initializeRoutine;
@@ -238,7 +242,7 @@ namespace PunkHPX8_RT.Modules.PlatingCell
             DATA.Subscribe($"{Module}.CurrentRecipe", () => _currentRecipe != null ? _currentRecipe.Ppid : "", SubscriptionAttribute.FLAG.IgnoreSaveDB);
             DATA.Subscribe($"{Module}.TotalTime", () => _recipeTime, SubscriptionAttribute.FLAG.IgnoreSaveDB);
             DATA.Subscribe($"{Module}.TimeRemain", () => _recipeTime != 0 && _runRecipeRoutine != null ? (_recipeTime - Math.Round((double)_runRecipeRoutine.ElapsedMilliseconds / 1000, 0)) : 0, SubscriptionAttribute.FLAG.IgnoreSaveDB);
-            DATA.Subscribe($"{Module}.Chemistry", () => _currentRecipe != null ? _currentRecipe.Chemistry : "", SubscriptionAttribute.FLAG.IgnoreSaveDB);
+            DATA.Subscribe($"{Module}.Chemistry", () => Chemistry, SubscriptionAttribute.FLAG.IgnoreSaveDB);
 
             DATA.Subscribe($"{Module}.IsInit", () => IsInit, SubscriptionAttribute.FLAG.IgnoreSaveDB);
             DATA.Subscribe($"{Module}.IsIdle", () => IsIdle, SubscriptionAttribute.FLAG.IgnoreSaveDB);
@@ -470,6 +474,14 @@ namespace PunkHPX8_RT.Modules.PlatingCell
         {
             bool result = _runRecipeRoutine.Start(param) == RState.Running;
             _currentStepState = "";
+            DepRecipe recipe = param[0] as DepRecipe;
+            _cycle = (int)param[2];
+            if (result)
+            {
+
+                _recipeTime = recipe.CalculateRecipeTotalTime() * _cycle;
+                _currentRecipe = recipe;
+            }
             return result;
         }
         /// <summary>
@@ -481,7 +493,7 @@ namespace PunkHPX8_RT.Modules.PlatingCell
         {
             RState state = _runRecipeRoutine.Monitor();
             _currentStepState = _runRecipeRoutine.CurrentStep;
-            LOG.WriteLog(eEvent.INFO_PLATINGCELL, Module.ToString(), _currentStepState);
+            //LOG.WriteLog(eEvent.INFO_PLATINGCELL, Module.ToString(), _currentStepState);
             if (state == RState.Failed || state == RState.Timeout)
             {
                 PostMsg(PlatingCellMsg.Error);

+ 1 - 0
PunkHPX8_RT/Modules/Reservoir/ReservoirEntity.cs

@@ -270,6 +270,7 @@ namespace PunkHPX8_RT.Modules.Reservoir
         {
             DATA.Subscribe($"{Module}.FsmState", () => ((ReservoirState)fsm.State).ToString(), SubscriptionAttribute.FLAG.IgnoreSaveDB);
             DATA.Subscribe($"{Module}.TemperatureControllerData", () => _temperatureController == null ? null : _temperatureController.TemperatureData, SubscriptionAttribute.FLAG.IgnoreSaveDB);
+            DATA.Subscribe($"{Module}.Chemistry", () => Chemistry, SubscriptionAttribute.FLAG.IgnoreSaveDB);
             
             DATA.Subscribe($"{Module}.Temperature", () => _temperatureController != null ? _temperatureController.TemperatureData.ReserviorTemperature : 0, SubscriptionAttribute.FLAG.IgnoreSaveDB);
             DATA.Subscribe($"{Module}.Temperature.ID", () => _temperatureController != null ? _temperatureController.Module : "", SubscriptionAttribute.FLAG.IgnoreSaveDB);