Browse Source

update Recipe Exec

git-svn-id: http://10.4.3.168:50001/svn/Furnace@132 dbcde07d-dcf5-c148-8a84-ac3097b7778e
Jiangjinyuan 1 month ago
parent
commit
22628988cf

+ 6 - 2
FrameworkLocal/Common/CommonData/EnumData/MaintenanceProcessingCommandEnum.cs

@@ -20,8 +20,12 @@ namespace MECF.Framework.Common.CommonData.EnumData
             _message = msg;
         }
 
-        public void Exec()
+        public void Exec(string msg = "")
         {
+            if (!string.IsNullOrEmpty(msg))
+            {
+                _message = msg;
+            }
             _alarmReportExec?.Invoke(_message);
         }
     }
@@ -89,7 +93,7 @@ namespace MECF.Framework.Common.CommonData.EnumData
 
         NonOperationTime1,
         NonOperationTime2,
-  
+
         RecipeExecuteFreq,
         RecipeThickness,
 

+ 4 - 11
Furnace/FurnaceRT/Equipments/PMs/PMModule.cs

@@ -36,6 +36,7 @@ using static Aitex.Core.Common.DeviceData.AITConfigData;
 using MECF.Framework.Common.CommonData.SorterDefines;
 using MECF.Framework.Common.Utilities;
 using System.Windows.Documents;
+using MECF.Framework.Common.CommonData.EnumData;
 
 namespace FurnaceRT.Equipments.PMs
 {
@@ -933,6 +934,8 @@ namespace FurnaceRT.Equipments.PMs
         private bool FsmStartPreProcess(object[] param)
         {
             _recipeRunningInfo.RecipeName = (string)param[0];
+
+     
             if (!RecipeParser.Parse(_recipeRunningInfo.RecipeName, ModuleName.PM1.ToString(), out var recipeHead, out var recipeSteps, out string reason, "Process"))
             {
                 PreprocessStartFailedWarning.Set($"Load process recipe {_recipeRunningInfo.RecipeName} failed, {reason}");
@@ -959,18 +962,7 @@ namespace FurnaceRT.Equipments.PMs
             Result ret = StartRoutine(_preprocessRoutine);
             if (ret == Result.FAIL || ret == Result.DONE)
                 return false;
-            #region MyRegion
-            var isScheduleMaintenance = SC.ContainsItem("System.EnableScheduleMaintenance") && SC.GetValue<bool>("System.EnableScheduleMaintenance");
-            if (isScheduleMaintenance)
-            {
-                if (CheckRecipeThicknessMoreThan(_recipeRunningInfo.RecipeName))
-                    return false;
 
-                if (CheckRecipeExecuteFreqMoreThan(_recipeRunningInfo.RecipeName))
-                    return false;
-            }
-         
-            #endregion
 
 
             if (!IsJobProcess)
@@ -980,6 +972,7 @@ namespace FurnaceRT.Equipments.PMs
         }
         private bool FsmStartOtherRecipePreProcess(object[] param)
         {
+
             _recipeRunningInfo.RecipeName = param[0].ToString();
             var recipeType = param[1].ToString();
             var tableID = 1;

+ 191 - 33
Furnace/FurnaceRT/Equipments/PMs/PMScheduleMaintenance.cs

@@ -7,6 +7,7 @@ using Aitex.Core.RT.Log;
 using Aitex.Core.RT.OperationCenter;
 using Aitex.Core.RT.Routine;
 using Aitex.Core.RT.SCCore;
+using Aitex.Core.UI.Control;
 using Aitex.Core.Util;
 using DocumentFormat.OpenXml.VariantTypes;
 using FurnaceRT.Equipments.Systems;
@@ -98,12 +99,13 @@ namespace FurnaceRT.Equipments.PMs
                     case MaintenanceProcessingCommandEnum.AlarmReport:
                         alarmReportItem?.Exec();
                         break;
+
+                    case MaintenanceProcessingCommandEnum.JobAutoStart:
+                        break;
                     case MaintenanceProcessingCommandEnum.JobProhibition:
                         break;
                     case MaintenanceProcessingCommandEnum.JobManualStart:
                         break;
-                    case MaintenanceProcessingCommandEnum.JobAutoStart:
-                        break;
                 }
             }
         }
@@ -259,7 +261,7 @@ namespace FurnaceRT.Equipments.PMs
             var item = Singleton<ScheduleMaintenanceDataManager>.Instance.Item.Values.Where(a => a.Item == MaintenanceItemEnum.RecipeExecuteFreq.ToString() && a.Path == $"{DataItemEnum.Reactor}.{ReactorsEnum.Recipe}" && a.AdditionInformationDisplay == recipeName).FirstOrDefault();
             if (item == null)
                 return;
-         
+
             if (item != null && item.Item == MaintenanceItemEnum.RecipeExecuteFreq.ToString())
                 Singleton<ScheduleMaintenanceDataManager>.Instance.Increase(item.Item);
 
@@ -288,52 +290,208 @@ namespace FurnaceRT.Equipments.PMs
         #endregion
 
         #region 检查是否超过设定值
+        public void CheckRecipeExecuteFreqMoreThan(string recipeName, out bool isPause)
+        {
+            CheckRecipeMoreThan(
+                recipeName,
+                MaintenanceItemEnum.RecipeExecuteFreq.ToString(),
+                Singleton<EquipmentManager>.Instance.RecipeExecuteFreqWarning.Set,
+                Singleton<EquipmentManager>.Instance.RecipeExecuteFreqAlarm.Set,
+                "times",
+                out isPause);
+        }
+
+        public void CheckRecipeThicknessMoreThan(string recipeName, out bool isPause)
+        {
+            CheckRecipeMoreThan(
+                recipeName,
+                MaintenanceItemEnum.RecipeThickness.ToString(),
+                Singleton<EquipmentManager>.Instance.RecipeThicknessWarning.Set,
+                Singleton<EquipmentManager>.Instance.RecipeThicknessAlarm.Set,
+                "Å",
+                out isPause);
+        }
 
-        public bool CheckRecipeExecuteFreqMoreThan(string recipeName)
+        private void CheckRecipeMoreThan(
+            string recipeName,
+            string maintenanceItemType,
+            Action<string> warningSetId,
+            Action<string> alarmSetId,
+            string unit,
+            out bool isPause)
         {
+            isPause = false;
 
             if (string.IsNullOrEmpty(recipeName))
-                return false;
-            var item = Singleton<ScheduleMaintenanceDataManager>.Instance.Item.Values.Where(a => a.Item == MaintenanceItemEnum.RecipeExecuteFreq.ToString() && a.Path == $"{DataItemEnum.Reactor}.{ReactorsEnum.Recipe}" && a.AdditionInformationDisplay == recipeName).FirstOrDefault();
-            if (item == null)
-                return false;
+                return;
 
-            if (item.CurrentValue > item.StartValue && item.CurrentValue < item.LimitValue)
-            {
-                MaintenanceProcessingCommandExec(item.MaintenanceProcessing, new AlarmReportItem(Singleton<EquipmentManager>.Instance.RecipeExecuteFreqWarning.Set, $"more than {item.StartValue} times"));
-                return false;
-            }
+            var item = Singleton<ScheduleMaintenanceDataManager>.Instance.Item.Values
+                         .FirstOrDefault(a =>
+                          a.Item == maintenanceItemType &&
+                          a.Path == $"{DataItemEnum.Reactor}.{ReactorsEnum.Recipe}" &&
+                          a.AdditionInformationDisplay == recipeName);
 
-            if (item.CurrentValue >= item.LimitValue)
-            {
-                MaintenanceProcessingCommandExec(item.MaintenanceProcessing, new AlarmReportItem(Singleton<EquipmentManager>.Instance.RecipeExecuteFreqAlarm.Set, $"more than {item.LimitValue} times"));
-                return true;
-            }
-            return false;
-        }
-        public bool CheckRecipeThicknessMoreThan(string recipeName)
-        {
-            if (string.IsNullOrEmpty(recipeName))
-                return false;
-            var item = Singleton<ScheduleMaintenanceDataManager>.Instance.Item.Values.Where(a => a.Item == MaintenanceItemEnum.RecipeThickness.ToString() && a.Path == $"{DataItemEnum.Reactor}.{ReactorsEnum.Recipe}" && a.AdditionInformationDisplay == recipeName).FirstOrDefault();
+            if (item == null || !Enum.TryParse<MaintenanceProcessingCommandEnum>(item.MaintenanceProcessing, out var command))
+                return;
 
-            if (item == null)
-                return false;
+            string message = $"{item.AdditionInformationDisplay} {item.CurrentValue} more than {item.StartValue} {unit}";
+            string nullMessage = $"No recipe file associated, unable to trigger JobAutoStart";
+            var warningAction = new AlarmReportItem(warningSetId, message);
+            var alarmAction = new AlarmReportItem(alarmSetId, message);
 
-            if (item.CurrentValue > item.StartValue && item.CurrentValue < item.LimitValue)
+            if (item.CurrentValue > item.StartValue && item.CurrentValue < item.LimitValue && command != MaintenanceProcessingCommandEnum.None)
             {
-                MaintenanceProcessingCommandExec(item.MaintenanceProcessing, new AlarmReportItem(Singleton<EquipmentManager>.Instance.RecipeThicknessWarning.Set, $"more than {item.StartValue} Å"));
-                return false;
+                warningAction.Exec();
             }
 
             if (item.CurrentValue >= item.LimitValue)
             {
-                MaintenanceProcessingCommandExec(item.MaintenanceProcessing, new AlarmReportItem(Singleton<EquipmentManager>.Instance.RecipeThicknessAlarm.Set, $"more than {item.LimitValue} Å"));
-                return true;
+                ExecuteAlarm(alarmAction, ref isPause);
+
+                switch (command)
+                {
+                    case MaintenanceProcessingCommandEnum.JobAutoStart:
+                        if (string.IsNullOrEmpty(item.AssociationProcessRecipeName))
+                        {
+                            ExecuteAlarm(new AlarmReportItem(alarmSetId, nullMessage), ref isPause);
+                            return;
+                        }
+                        CheckToPostMessage((int)MSG.RunOtherRecipe, item.AssociationProcessRecipeName, "Process");
+                        break;
+                }
             }
+        }
 
-            return false;
+        private void ExecuteAlarm(AlarmReportItem alarmAction, ref bool isPause)
+        {
+            alarmAction.Exec();
+            isPause = true;
         }
+
+        //public void CheckRecipeExecuteFreqMoreThan(string recipeName, out bool isPause)
+        //{
+        //    isPause = false;
+
+        //    if (string.IsNullOrEmpty(recipeName))
+        //        return;
+        //    var item = Singleton<ScheduleMaintenanceDataManager>.Instance.Item.Values
+        //                 .FirstOrDefault(a =>
+        //                  a.Item == MaintenanceItemEnum.RecipeExecuteFreq.ToString() &&
+        //                  a.Path == $"{DataItemEnum.Reactor}.{ReactorsEnum.Recipe}" &&
+        //                  a.AdditionInformationDisplay == recipeName);
+
+        //    if (item != null)
+        //    {
+        //        string message = $"{item.AdditionInformationDisplay} {item.CurrentValue} more than {item.StartValue} times";
+        //        string nullMessage = $"No recipe file associated, unable to trigger JobAutoStart";
+        //        var warningAction = new AlarmReportItem(Singleton<EquipmentManager>.Instance.RecipeExecuteFreqWarning.Set, message);
+        //        var alarmAction = new AlarmReportItem(Singleton<EquipmentManager>.Instance.RecipeExecuteFreqAlarm.Set, message);
+
+
+        //        if (Enum.TryParse<MaintenanceProcessingCommandEnum>(item.MaintenanceProcessing, out var command))
+        //        {
+        //            bool isWarning = item.CurrentValue > item.StartValue && item.CurrentValue < item.LimitValue;
+        //            bool isAlarm = item.CurrentValue >= item.LimitValue;
+        //            switch (command)
+        //            {
+        //                case MaintenanceProcessingCommandEnum.AlarmReport:
+        //                    if (isWarning)
+        //                        warningAction.Exec();
+
+        //                    if (isAlarm)
+        //                    {
+        //                        alarmAction.Exec();
+        //                        isPause = true;
+        //                    }
+        //                    break;
+
+        //                case MaintenanceProcessingCommandEnum.JobAutoStart:
+        //                    if (isWarning)
+        //                        warningAction.Exec();
+
+        //                    if (isAlarm)
+        //                    {
+        //                        alarmAction.Exec();
+        //                        if (string.IsNullOrEmpty(item.AssociationProcessRecipeName))
+        //                        {
+        //                            alarmAction.Exec(nullMessage);
+        //                            isPause = true;
+        //                            return;
+        //                        }
+        //                        CheckToPostMessage((int)MSG.RunOtherRecipe, item.AssociationProcessRecipeName, "Process");
+        //                        isPause = true;
+        //                    }
+        //                    break;
+
+        //            }
+        //        }
+
+        //    }
+
+        //}
+
+        //public void CheckRecipeThicknessMoreThan(string recipeName, out bool isPause)
+        //{
+        //    isPause = false;
+
+        //    if (string.IsNullOrEmpty(recipeName))
+        //        return;
+        //    var item = Singleton<ScheduleMaintenanceDataManager>.Instance.Item.Values
+        //                 .FirstOrDefault(a =>
+        //                  a.Item == MaintenanceItemEnum.RecipeThickness.ToString() &&
+        //                  a.Path == $"{DataItemEnum.Reactor}.{ReactorsEnum.Recipe}" &&
+        //                  a.AdditionInformationDisplay == recipeName);
+
+        //    if (item != null)
+        //    {
+        //        string message = $"{item.AdditionInformationDisplay} {item.CurrentValue} more than {item.StartValue} Å";
+        //        string nullMessage = $"No recipe file associated, unable to trigger JobAutoStart";
+        //        var warningAction = new AlarmReportItem(Singleton<EquipmentManager>.Instance.RecipeThicknessWarning.Set, message);
+        //        var alarmAction = new AlarmReportItem(Singleton<EquipmentManager>.Instance.RecipeThicknessAlarm.Set, message);
+
+
+        //        if (Enum.TryParse<MaintenanceProcessingCommandEnum>(item.MaintenanceProcessing, out var command))
+        //        {
+        //            bool isWarning = item.CurrentValue > item.StartValue && item.CurrentValue < item.LimitValue;
+        //            bool isAlarm = item.CurrentValue >= item.LimitValue;
+        //            switch (command)
+        //            {
+        //                case MaintenanceProcessingCommandEnum.AlarmReport:
+        //                    if (isWarning)
+        //                        warningAction.Exec();
+
+        //                    if (isAlarm)
+        //                    {
+        //                        alarmAction.Exec();
+        //                        isPause = true;
+        //                    }
+        //                    break;
+
+        //                case MaintenanceProcessingCommandEnum.JobAutoStart:
+        //                    if (isWarning)
+        //                        warningAction.Exec();
+
+        //                    if (isAlarm)
+        //                    {
+        //                        alarmAction.Exec();
+        //                        if (string.IsNullOrEmpty(item.AssociationProcessRecipeName))
+        //                        {
+        //                            alarmAction.Exec(nullMessage);
+        //                            isPause = true;
+        //                            return;
+        //                        }
+        //                        CheckToPostMessage((int)MSG.RunOtherRecipe, item.AssociationProcessRecipeName, "Process");
+        //                        isPause = true;
+        //                    }
+        //                    break;
+
+        //            }
+        //        }
+
+        //    }
+
+        //}
+
         #endregion
     }
 }

+ 23 - 0
Furnace/FurnaceRT/Equipments/PMs/RecipeExecutions/PreProcess.cs

@@ -4,6 +4,8 @@ using System;
 using Aitex.Core.RT.SCCore;
 using FurnaceRT.Equipments.PMs.Routines;
 using System.Collections.Generic;
+using FurnaceRT.Equipments.Systems;
+using Aitex.Core.Util;
 
 namespace FurnaceRT.Equipments.PMs.RecipeExecutions
 {
@@ -43,6 +45,25 @@ namespace FurnaceRT.Equipments.PMs.RecipeExecutions
             string reason = string.Empty;
             if (_isProcessRecipe)
             {
+                #region MyRegion
+                var isScheduleMaintenance = SC.ContainsItem("System.EnableScheduleMaintenance") && SC.GetValue<bool>("System.EnableScheduleMaintenance");
+                if (isScheduleMaintenance)
+                {
+                    var pm = (Singleton<EquipmentManager>.Instance.Modules[ModuleName.PM1] as PMModule);
+
+
+                    pm.CheckRecipeThicknessMoreThan(_recipeName, out var isPause);
+                    if (isPause)
+                        return Result.FAIL;
+
+                    pm.CheckRecipeExecuteFreqMoreThan(_recipeName, out isPause);
+                    if (isPause)
+                        return Result.FAIL;
+
+                }
+                #endregion
+
+
                 if (!RecipeParser.Parse(_recipeName, Module, out recipeHead, out recipeSteps, out reason, "Process"))
                 {
                     PMModule.PreprocessStartFailedWarning.Set($"Load process recipe {_recipeName} failed, {reason}");
@@ -53,6 +74,8 @@ namespace FurnaceRT.Equipments.PMs.RecipeExecutions
                 PMModule.RecipeRunningInfo.Head = recipeHead;
                 PMModule.RecipeRunningInfo.RecipeStepList = recipeSteps;
             }
+            
+
 
             Reset();
 

+ 19 - 19
Furnace/FurnaceRT/Equipments/Systems/EquipmentManagerAlarmDefine.cs

@@ -276,7 +276,7 @@ namespace FurnaceRT.Equipments.Systems
             SDWaferTypeUseCountWarning = SubscribeAlarm(new AlarmEventItem()
             {
                 EventEnum = $"{Name}.SDWaferTypeUseCountWarning",
-                Description = $"SD wafer type use count warning ",
+                Description = $"SD wafer useCount warning ",
                 Solution = "No information available. Press[Clear] to delete alarm message.",
                 Explaination = "No information available.",
                 AutoRecovery = false,
@@ -288,7 +288,7 @@ namespace FurnaceRT.Equipments.Systems
             SDWaferTypeUseCountAlarm = SubscribeAlarm(new AlarmEventItem()
             {
                 EventEnum = $"{Name}.SDWaferTypeUseCountAlarm",
-                Description = $"SD wafer type use count alarm ",
+                Description = $"SD wafer useCount alarm ",
                 Solution = "No information available. Press[Clear] to delete alarm message.",
                 Explaination = "No information available.",
                 AutoRecovery = false,
@@ -300,7 +300,7 @@ namespace FurnaceRT.Equipments.Systems
             SDWaferTypeUseTimeWarning = SubscribeAlarm(new AlarmEventItem()
             {
                 EventEnum = $"{Name}.SDWaferTypeUseTimeWarning",
-                Description = $"SD wafer type use time warning ",
+                Description = $"SD wafer useTime warning ",
                 Solution = "No information available. Press[Clear] to delete alarm message.",
                 Explaination = "No information available.",
                 AutoRecovery = false,
@@ -312,7 +312,7 @@ namespace FurnaceRT.Equipments.Systems
             RecipeExecuteFreqWarning = SubscribeAlarm(new AlarmEventItem()
             {
                 EventEnum = $"{Name}.RecipeExecuteFreqWarning",
-                Description = $"Recipe Exec Fre more then ",
+                Description = $"RecipeExecFre warning",
                 Solution = "No information available. Press[Clear] to delete alarm message.",
                 Explaination = "No information available.",
                 AutoRecovery = false,
@@ -323,7 +323,7 @@ namespace FurnaceRT.Equipments.Systems
             RecipeExecuteFreqAlarm = SubscribeAlarm(new AlarmEventItem()
             {
                 EventEnum = $"{Name}.RecipeExecuteFreqAlarm",
-                Description = $"Recipe Exec Fre more then ",
+                Description = $"RecipeExecFre Alarm",
                 Solution = "No information available. Press[Clear] to delete alarm message.",
                 Explaination = "No information available.",
                 AutoRecovery = false,
@@ -335,7 +335,7 @@ namespace FurnaceRT.Equipments.Systems
             RecipeThicknessWarning = SubscribeAlarm(new AlarmEventItem()
             {
                 EventEnum = $"{Name}.RecipeThicknessWarning",
-                Description = $"Recipe Thickness Warning ",
+                Description = $"RecipeThickness Warning ",
                 Solution = "No information available. Press[Clear] to delete alarm message.",
                 Explaination = "No information available.",
                 AutoRecovery = false,
@@ -346,7 +346,7 @@ namespace FurnaceRT.Equipments.Systems
             RecipeThicknessAlarm = SubscribeAlarm(new AlarmEventItem()
             {
                 EventEnum = $"{Name}.RecipeThicknessAlarm",
-                Description = $"Recipe Thickness Alarm",
+                Description = $"RecipeThickness Alarm",
                 Solution = "No information available. Press[Clear] to delete alarm message.",
                 Explaination = "No information available.",
                 AutoRecovery = false,
@@ -359,7 +359,7 @@ namespace FurnaceRT.Equipments.Systems
             ReatorStepRunFreqWarning = SubscribeAlarm(new AlarmEventItem()
             {
                 EventEnum = $"{Name}.ReatorStepRunFreqWarning",
-                Description = $"Recipe Step Run Freq Warning",
+                Description = $"StepRunFreq Warning",
                 Solution = "No information available. Press[Clear] to delete alarm message.",
                 Explaination = "No information available.",
                 AutoRecovery = false,
@@ -370,7 +370,7 @@ namespace FurnaceRT.Equipments.Systems
             ReatorStepRunFreqAlarm = SubscribeAlarm(new AlarmEventItem()
             {
                 EventEnum = $"{Name}.ReatorStepRunFreqAlarm",
-                Description = $"Recipe Step Run Freq Alarm",
+                Description = $"StepRunFreq Alarm",
                 Solution = "No information available. Press[Clear] to delete alarm message.",
                 Explaination = "No information available.",
                 AutoRecovery = false,
@@ -381,7 +381,7 @@ namespace FurnaceRT.Equipments.Systems
             ReatorStepThicknessWarning = SubscribeAlarm(new AlarmEventItem()
             {
                 EventEnum = $"{Name}.ReatorStepThicknessWarning",
-                Description = $"Recipe Step Run Thickness Warning",
+                Description = $"StepRunThickness Warning",
                 Solution = "No information available. Press[Clear] to delete alarm message.",
                 Explaination = "No information available.",
                 AutoRecovery = false,
@@ -392,7 +392,7 @@ namespace FurnaceRT.Equipments.Systems
             ReatorStepThicknessAlarm = SubscribeAlarm(new AlarmEventItem()
             {
                 EventEnum = $"{Name}.ReatorStepThicknessAlarm",
-                Description = $"Recipe Step Run Thickness Alarm",
+                Description = $"StepRunThickness Alarm",
                 Solution = "No information available. Press[Clear] to delete alarm message.",
                 Explaination = "No information available.",
                 AutoRecovery = false,
@@ -416,7 +416,7 @@ namespace FurnaceRT.Equipments.Systems
             SDWaferTypeThicknessWarning = SubscribeAlarm(new AlarmEventItem()
             {
                 EventEnum = $"{Name}.SDWaferTypeThicknessWarning",
-                Description = $"SD wafer type thickness warning ",
+                Description = $"SD wafer thickness warning ",
                 Solution = "No information available. Press[Clear] to delete alarm message.",
                 Explaination = "No information available.",
                 AutoRecovery = false,
@@ -428,7 +428,7 @@ namespace FurnaceRT.Equipments.Systems
             SDWaferTypeThicknessAlarm = SubscribeAlarm(new AlarmEventItem()
             {
                 EventEnum = $"{Name}.SDWaferTypeThicknessAlarm",
-                Description = $"SD wafer type thickness alarm ",
+                Description = $"SD wafer thickness alarm ",
                 Solution = "No information available. Press[Clear] to delete alarm message.",
                 Explaination = "No information available.",
                 AutoRecovery = false,
@@ -440,7 +440,7 @@ namespace FurnaceRT.Equipments.Systems
             EDWaferTypeUseCountWarning = SubscribeAlarm(new AlarmEventItem()
             {
                 EventEnum = $"{Name}.EDWaferTypeUseCountWarning",
-                Description = $"ED wafer type use count warning ",
+                Description = $"ED wafer useCount warning ",
                 Solution = "No information available. Press[Clear] to delete alarm message.",
                 Explaination = "No information available.",
                 AutoRecovery = false,
@@ -452,7 +452,7 @@ namespace FurnaceRT.Equipments.Systems
             EDWaferTypeUseCountAlarm = SubscribeAlarm(new AlarmEventItem()
             {
                 EventEnum = $"{Name}.EDWaferTypeUseCountAlarm",
-                Description = $"ED wafer type use count alarm ",
+                Description = $"ED wafer useCount alarm ",
                 Solution = "No information available. Press[Clear] to delete alarm message.",
                 Explaination = "No information available.",
                 AutoRecovery = false,
@@ -464,7 +464,7 @@ namespace FurnaceRT.Equipments.Systems
             EDWaferTypeUseTimeWarning = SubscribeAlarm(new AlarmEventItem()
             {
                 EventEnum = $"{Name}.EDWaferTypeUseTimeWarning",
-                Description = $"ED wafer type use time warning ",
+                Description = $"ED wafer useTime warning ",
                 Solution = "No information available. Press[Clear] to delete alarm message.",
                 Explaination = "No information available.",
                 AutoRecovery = false,
@@ -476,7 +476,7 @@ namespace FurnaceRT.Equipments.Systems
             EDWaferTypeUseTimeAlarm = SubscribeAlarm(new AlarmEventItem()
             {
                 EventEnum = $"{Name}.EDWaferTypeUseTimeAlarm",
-                Description = $"ED wafer type use time alarm ",
+                Description = $"ED wafer useTime alarm ",
                 Solution = "No information available. Press[Clear] to delete alarm message.",
                 Explaination = "No information available.",
                 AutoRecovery = false,
@@ -488,7 +488,7 @@ namespace FurnaceRT.Equipments.Systems
             EDWaferTypeThicknessWarning = SubscribeAlarm(new AlarmEventItem()
             {
                 EventEnum = $"{Name}.EDWaferTypeThicknessWarning",
-                Description = $"ED wafer type thickness warning ",
+                Description = $"ED wafer thickness warning ",
                 Solution = "No information available. Press[Clear] to delete alarm message.",
                 Explaination = "No information available.",
                 AutoRecovery = false,
@@ -500,7 +500,7 @@ namespace FurnaceRT.Equipments.Systems
             EDWaferTypeThicknessAlarm = SubscribeAlarm(new AlarmEventItem()
             {
                 EventEnum = $"{Name}.EDWaferTypeThicknessAlarm",
-                Description = $"ED wafer type thickness alarm ",
+                Description = $"ED wafer thickness alarm ",
                 Solution = "No information available. Press[Clear] to delete alarm message.",
                 Explaination = "No information available.",
                 AutoRecovery = false,