Browse Source

update recipe调用各个事件

jiangjy 1 week ago
parent
commit
ccd63c3e77

+ 1 - 0
FrameworkLocal/Common/Common.csproj

@@ -325,6 +325,7 @@
     <Compile Include="Device\Bases\SignalTowerBase.cs" />
     <Compile Include="Device\Common\BaseDevice.cs" />
     <Compile Include="Device\Common\DeviceDefineManager.cs" />
+    <Compile Include="Device\ConstantsCommon.cs" />
     <Compile Include="Display\DisplayManager.cs" />
     <Compile Include="EtherCAT\Hongke\ICifx.cs" />
     <Compile Include="EtherCAT\Hongke\IWcfCifxService.cs" />

+ 20 - 0
FrameworkLocal/Common/Device/ConstantsCommon.cs

@@ -0,0 +1,20 @@
+using System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Text;
+using System.Threading.Tasks;
+
+namespace MECF.Framework.Common.Device
+{
+    /// <summary>
+    /// 定义系统中使用的常量字符串
+    /// </summary>
+    public class ConstantsCommon
+    {
+        public const string AlarmConditionTrigger = "AlarmConditionTrigger";
+        public const string LeakCheckTrigger = "LeakCheckTrigger";
+        public const string ManualTrigger = "ManualTrigger";
+        public const string RecipeTrigger = "RecipeTrigger";
+
+    }
+}

+ 14 - 1
Furnace/FurnaceRT/Equipments/PMs/PMAlarmCondition.cs

@@ -14,6 +14,7 @@ using DocumentFormat.OpenXml.Drawing.Charts;
 using FurnaceRT.Equipments.PMs.RecipeExecutions;
 using FurnaceRT.Equipments.Systems;
 using MECF.Framework.Common.CommonData.EnumData;
+using MECF.Framework.Common.Device;
 using MECF.Framework.Common.Device.Bases;
 using MECF.Framework.Common.Equipment;
 using MECF.Framework.Common.Event;
@@ -27,6 +28,7 @@ using System.Collections.Generic;
 using System.Diagnostics;
 using System.Linq;
 using System.Web.ApplicationServices;
+using System.Windows.Shell;
 using System.Xml;
 
 namespace FurnaceRT.Equipments.PMs
@@ -983,6 +985,7 @@ namespace FurnaceRT.Equipments.PMs
                     if (!string.IsNullOrEmpty(sensorName))
                         log = $"{log} ,sensorName={sensorName}";
 
+                    _processRoutine.FACallBack(ConstantsCommon.AlarmConditionTrigger, UniversalEvents.AlarmConditionTriggerReset, Module, RecipeRunningInfo.RecipeName, RecipeRunningInfo.StepNumber.ToString(), recipe);
 
                     LOG.Write(log);
                     break;
@@ -992,9 +995,11 @@ namespace FurnaceRT.Equipments.PMs
                     _isAlarmConditionHasRecipeCommand = true;
                     if (IsProcessing)
                     {
+                        var jumpStep = RecipeRunningInfo.RecipeStepList.Count - 1;
                         //因为要跳到执行最后一步,所以stepNumber需要减一
-                        _processRoutine.JumpCurrentRecipeStep(RecipeRunningInfo.RecipeStepList.Count - 1, RecipeRunningInfo.RecipeStepList[RecipeRunningInfo.RecipeStepList.Count - 1].StepName);
+                        _processRoutine.JumpCurrentRecipeStep(jumpStep, RecipeRunningInfo.RecipeStepList[RecipeRunningInfo.RecipeStepList.Count - 1].StepName);
 
+                        _processRoutine.FACallBack(ConstantsCommon.AlarmConditionTrigger, UniversalEvents.AlarmConditionTriggerEnd, Module, RecipeRunningInfo.RecipeName, RecipeRunningInfo.StepNumber.ToString(), jumpStep.ToString());
 
                     }
                     else
@@ -1028,6 +1033,7 @@ namespace FurnaceRT.Equipments.PMs
                     if (!string.IsNullOrEmpty(sensorName))
                         log = $"{log} ,sensorName={sensorName}";
 
+                    _processRoutine.FACallBack(ConstantsCommon.AlarmConditionTrigger, UniversalEvents.AlarmConditionTriggerHold, Module, RecipeRunningInfo.RecipeName, RecipeRunningInfo.StepNumber.ToString());
 
                     LOG.Write(log);
                     break;
@@ -1064,6 +1070,7 @@ namespace FurnaceRT.Equipments.PMs
                             if (jumpStepNumber > 0)
                             {
                                 _processRoutine.JumpCurrentRecipeStep(jumpStepNumber, stepName);
+                                _processRoutine.FACallBack(ConstantsCommon.AlarmConditionTrigger, UniversalEvents.AlarmConditionTriggerJumpStep, Module, RecipeRunningInfo.RecipeName, RecipeRunningInfo.StepNumber.ToString(), jumpStepNumber.ToString());
 
                             }
                         }
@@ -1082,6 +1089,8 @@ namespace FurnaceRT.Equipments.PMs
                             if (jumpStepNumber > 0)
                             {
                                 CheckToPostMessage((int)MSG.AlarmConditionJumpStep, jumpStepNumber);
+                                _processRoutine.FACallBack(ConstantsCommon.AlarmConditionTrigger, UniversalEvents.AlarmConditionTriggerJumpStep, Module, RecipeRunningInfo.RecipeName, RecipeRunningInfo.StepNumber.ToString(), jumpStepNumber.ToString());
+
                             }
                         }
 
@@ -1100,6 +1109,7 @@ namespace FurnaceRT.Equipments.PMs
                             recipeType = "Alarm";
                             recipeTable = paras[0].Replace("CALL", "").Replace(" ", "").Replace(":", "").Replace(":", "");
                             CheckToPostMessage((int)MSG.RunOtherRecipe, recipe, recipeType, recipeTable);
+                            _processRoutine.FACallBack(ConstantsCommon.AlarmConditionTrigger, UniversalEvents.AlarmConditionTriggerCallAlarmRecipe, Module, RecipeRunningInfo.RecipeName, RecipeRunningInfo.StepNumber.ToString(), string.Empty, recipe);
 
                             LOG.Write($"Alarm condition: command={command} recipe={recipe}");
                         }
@@ -1118,6 +1128,9 @@ namespace FurnaceRT.Equipments.PMs
                             recipeTable = paras[0].Replace("ABORT", "").Replace(" ", "").Replace(":", "").Replace(":", "");
                             CheckToPostMessage((int)MSG.RunOtherRecipe, recipe, recipeType, recipeTable);
                             LOG.Write($"Alarm condition: command={command} recipe={recipe}");
+
+                            _processRoutine.FACallBack(ConstantsCommon.AlarmConditionTrigger, UniversalEvents.AlarmConditionTriggerCallAbortRecipe, Module, RecipeRunningInfo.RecipeName, RecipeRunningInfo.StepNumber.ToString(), string.Empty, recipe);
+
                         }
                     }
                     break;

+ 21 - 3
Furnace/FurnaceRT/Equipments/PMs/PMLeakCheck.cs

@@ -11,14 +11,17 @@ using Aitex.Core.Util;
 using FurnaceRT.Devices;
 using FurnaceRT.Equipments.Systems;
 using MECF.Framework.Common.CommonData.EnumData;
+using MECF.Framework.Common.Device;
 using MECF.Framework.Common.Equipment;
 using MECF.Framework.Common.Event;
+using MECF.Framework.Common.FAServices;
 using MECF.Framework.Common.OperationCenter;
 using System;
 using System.Collections;
 using System.Collections.Generic;
 using System.Diagnostics;
 using System.Linq;
+using System.Windows.Shell;
 using System.Xml;
 
 namespace FurnaceRT.Equipments.PMs
@@ -60,8 +63,8 @@ namespace FurnaceRT.Equipments.PMs
             DATA.Subscribe($"{Module}.LeakCheckBasePressure", () => _leakCheckTableParameter != null ? _basePressure : 0.0f);
             DATA.Subscribe($"{Module}.LeakCheckLeakLimit", () => _leakCheckTableParameter != null ? _leakCheckTableParameter.LeakLimit : 0.0f);
             DATA.Subscribe($"{Module}.LeakCheckDelayMonitorPressure", () => _leakCheckTableParameter != null ? (float)_leakCheckDelayMonitorPressure : 0.0f);
-            DATA.Subscribe($"{Module}.LeakCheckDelayStartPressure", () => _leakCheckTableParameter != null  ? (float)_leakCheckDelayStartPressure : 0.0f);
-            DATA.Subscribe($"{Module}.LeakCheckMonitorPressure", () => _leakCheckTableParameter != null  ? (float)_leakCheckMonitorPressure : 0.0f);
+            DATA.Subscribe($"{Module}.LeakCheckDelayStartPressure", () => _leakCheckTableParameter != null ? (float)_leakCheckDelayStartPressure : 0.0f);
+            DATA.Subscribe($"{Module}.LeakCheckMonitorPressure", () => _leakCheckTableParameter != null ? (float)_leakCheckMonitorPressure : 0.0f);
             DATA.Subscribe($"{Module}.LeakCheckStartPressure", () => _leakCheckTableParameter != null ? (float)_leakCheckStartPressure : 0.0f);
             DATA.Subscribe($"{Module}.LeakCheckActualLeak", () => (float)_leakCheckActualLeak);
             DATA.Subscribe($"{Module}.LeakCheckRetryCurrentCount", () => _currentRetryCount);
@@ -370,15 +373,24 @@ namespace FurnaceRT.Equipments.PMs
                     RecipeExecEntryEnumValue = RecipeExecEntryEnum.LeakCheckTrigger;
                     CheckToPostMessage((int)MSG.RunOtherRecipe, recipe, recipeType);
                     LOG.Write($"Leak check: command={command} recipe={recipe}");
+
+                    _processRoutine.FACallBack(ConstantsCommon.LeakCheckTrigger, UniversalEvents.LeakCheckTriggerReset, Module, RecipeRunningInfo.RecipeName, RecipeRunningInfo.StepNumber.ToString(), recipe);
+
                     break;
                 case "End":
                     //因为要跳到执行最后一步,所以stepNumber需要减一
-                    _processRoutine.JumpCurrentRecipeStep(RecipeRunningInfo.RecipeStepList.Count - 1, RecipeRunningInfo.RecipeStepList[RecipeRunningInfo.RecipeStepList.Count - 1].StepName);
+                    var jumpStep = RecipeRunningInfo.RecipeStepList.Count - 1;
+                    _processRoutine.JumpCurrentRecipeStep(jumpStep, RecipeRunningInfo.RecipeStepList[RecipeRunningInfo.RecipeStepList.Count - 1].StepName);
                     LOG.Write($"Leak check: command={command} step name={RecipeRunningInfo.RecipeStepList[RecipeRunningInfo.RecipeStepList.Count - 1].StepName}");
+                    _processRoutine.FACallBack(ConstantsCommon.LeakCheckTrigger, UniversalEvents.LeakCheckTriggerEnd, Module, RecipeRunningInfo.RecipeName, RecipeRunningInfo.StepNumber.ToString(), jumpStep.ToString());
+
                     break;
                 case "Hold":
                     _processRoutine.PauseRecipe();
                     LOG.Write($"Leak check: command={command}");
+                    _processRoutine.FACallBack(ConstantsCommon.LeakCheckTrigger, UniversalEvents.LeakCheckTriggerHold, Module, RecipeRunningInfo.RecipeName, RecipeRunningInfo.StepNumber.ToString());
+
+
                     break;
                 case "Monitor":
                     LOG.Write($"Leak check: command={command}");
@@ -395,7 +407,11 @@ namespace FurnaceRT.Equipments.PMs
                         var stepName = command.Replace("JUMP ", "");
                         var jumpStepNumber = RecipeRunningInfo.RecipeStepList.FindIndex(x => x.StepName == stepName);
                         if (jumpStepNumber > 0)
+                        {
                             _processRoutine.JumpCurrentRecipeStep(jumpStepNumber, stepName);
+                            _processRoutine.FACallBack(ConstantsCommon.LeakCheckTrigger, UniversalEvents.LeakCheckTriggerJumpStep, Module, RecipeRunningInfo.RecipeName, RecipeRunningInfo.StepNumber.ToString(), jumpStepNumber.ToString());
+
+                        }
 
                         LOG.Write($"Leak check: command={command} step name={stepName}");
                     }
@@ -411,6 +427,7 @@ namespace FurnaceRT.Equipments.PMs
                             recipeType = "Alarm";
                             recipeTable = paras[0].Replace("CALL", "").Replace(" ", "").Replace(":", "").Replace(":", "");
                             CheckToPostMessage((int)MSG.RunOtherRecipe, recipe, recipeType, recipeTable);
+                            _processRoutine.FACallBack(ConstantsCommon.LeakCheckTrigger, UniversalEvents.LeakCheckTriggerCallAlarmRecipe, Module, RecipeRunningInfo.RecipeName, RecipeRunningInfo.StepNumber.ToString(), string.Empty, recipe);
 
                             LOG.Write($"Leak check: command={command} recipe={recipe}");
                         }
@@ -427,6 +444,7 @@ namespace FurnaceRT.Equipments.PMs
                             recipeType = "Abort";
                             recipeTable = paras[0].Replace("ABORT", "").Replace(" ", "").Replace(":", "").Replace(":", "");
                             CheckToPostMessage((int)MSG.RunOtherRecipe, recipe, recipeType, recipeTable);
+                            _processRoutine.FACallBack(ConstantsCommon.LeakCheckTrigger, UniversalEvents.LeakCheckTriggerCallAbortRecipe, Module, RecipeRunningInfo.RecipeName, RecipeRunningInfo.StepNumber.ToString(), string.Empty, recipe);
 
                             LOG.Write($"Leak check: command={command} recipe={recipe}");
                         }

+ 13 - 2
Furnace/FurnaceRT/Equipments/PMs/PMModule.cs

@@ -46,6 +46,7 @@ using FurnaceRT.Equipments.Schedulers;
 using FabConnect.SecsGemInterface.Common;
 using MECF.Framework.Common.FAServices;
 using MECF.Framework.FA.Core.FAInterface;
+using MECF.Framework.Common.Device;
 
 namespace FurnaceRT.Equipments.PMs
 {
@@ -399,7 +400,7 @@ namespace FurnaceRT.Equipments.PMs
             DATA.Subscribe($"{Name}.LoopCountSet", () => _recipeRunningInfo.LoopCountSet);
             DATA.Subscribe($"{Name}.LoopCountCurrent", () => _recipeRunningInfo.LoopCountCurrent);
             DATA.Subscribe($"{Name}.IsLooping", () => _recipeRunningInfo.IsLooping);
-            DATA.Subscribe($"{Name}.RemainTimeToEnterCooling", () => _recipeRunningInfo.RemainTimeExcludeEndStep-_recipeRunningInfo.TotalElapseTime,SubscriptionAttribute.FLAG.IgnoreSaveDB);
+            DATA.Subscribe($"{Name}.RemainTimeToEnterCooling", () => _recipeRunningInfo.RemainTimeExcludeEndStep - _recipeRunningInfo.TotalElapseTime, SubscriptionAttribute.FLAG.IgnoreSaveDB);
 
 
             DATA.Subscribe("ProcessFlow.Status", () => StringProcessFlowState);
@@ -1293,6 +1294,8 @@ namespace FurnaceRT.Equipments.PMs
         private bool FsmSkipStep(object[] param)
         {
             _processRoutine.SkipCurrentRecipeStep();
+            _processRoutine.FACallBack(ConstantsCommon.ManualTrigger, UniversalEvents.ManualTriggerRecipeSkip, Module, RecipeRunningInfo.RecipeName, RecipeRunningInfo.StepNumber.ToString());
+
             return true;
         }
 
@@ -1300,18 +1303,24 @@ namespace FurnaceRT.Equipments.PMs
         {
             int.TryParse(param[0].ToString(), out int stepNumber);
             _processRoutine.JumpCurrentRecipeStep(stepNumber, param[1].ToString());
+            _processRoutine.FACallBack(ConstantsCommon.ManualTrigger, UniversalEvents.ManualTriggerRecipeJump, Module, RecipeRunningInfo.RecipeName, stepNumber.ToString(), param[1].ToString());
+
             return true;
         }
 
         private bool FsmRecipePause(object[] param)
         {
             _processRoutine.PauseRecipe();
+            _processRoutine.FACallBack(ConstantsCommon.ManualTrigger, UniversalEvents.ManualTriggerRecipeHold, Module, RecipeRunningInfo.RecipeName, RecipeRunningInfo.StepNumber.ToString());
+
             return true;
         }
 
         private bool FsmRecipeContinue(object[] param)
         {
             _processRoutine.ContinueRecipe();
+            _processRoutine.FACallBack(ConstantsCommon.ManualTrigger, UniversalEvents.ManualTriggerRecipeRelease, Module, RecipeRunningInfo.RecipeName, RecipeRunningInfo.StepNumber.ToString());
+
             return true;
         }
 
@@ -1337,7 +1346,6 @@ namespace FurnaceRT.Equipments.PMs
                 {
                     PostMsg(MSG.Error);
                     ExecuteAbortRecipeFailAlarm.Set($"Load abort recipe {recipeName} failed, {reason}");
-
                     return false;
                 }
             }
@@ -1372,6 +1380,7 @@ namespace FurnaceRT.Equipments.PMs
                 {
 
                     ExecuteAbortRecipeFailAlarm.Set($"Load abort recipe {recipeName} failed, {reason}");
+
                     return false;
                 }
                 else
@@ -1384,6 +1393,8 @@ namespace FurnaceRT.Equipments.PMs
 
             RecipeExecEntryEnumValue = RecipeExecEntryEnum.AbortRecipeTrigger;
             CheckToPostMessage((int)MSG.RunOtherRecipe, recipeName, recipeType, recipeTable);
+            _processRoutine.FACallBack(ConstantsCommon.ManualTrigger, UniversalEvents.ManualTriggerRecipeAbort, Module, RecipeRunningInfo.RecipeName, RecipeRunningInfo.StepNumber.ToString(), "", recipeName);
+
             return true;
         }
 

+ 7 - 0
Furnace/FurnaceRT/Equipments/PMs/PMModuleDevice.cs

@@ -27,6 +27,8 @@ using static Aitex.Core.RT.Device.Unit.IoBoat;
 using MECF.Framework.Common.CommonData.SorterDefines;
 using System.Windows;
 using FurnaceRT.Extraction;
+using MECF.Framework.Common.Device;
+using MECF.Framework.Common.FAServices;
 
 namespace FurnaceRT.Equipments.PMs
 {
@@ -2481,10 +2483,13 @@ namespace FurnaceRT.Equipments.PMs
             {
                 case "Hold":
                     _processRoutine.PauseRecipe();
+                    _processRoutine.FACallBack(ConstantsCommon.RecipeTrigger, UniversalEvents.RecipeTriggerHold, Module, RecipeRunningInfo.RecipeName, RecipeRunningInfo.StepNumber.ToString());
                     break;
                 case "Hold + Buzzer":
                     _processRoutine.PauseRecipe();
                     BuzzerOn();
+                    _processRoutine.FACallBack(ConstantsCommon.RecipeTrigger, UniversalEvents.RecipeTriggerHold, Module, RecipeRunningInfo.RecipeName, RecipeRunningInfo.StepNumber.ToString());
+
                     break;
                 case "Buzzer":
                     BuzzerOn();
@@ -2494,6 +2499,8 @@ namespace FurnaceRT.Equipments.PMs
                 case "Leak Check3":
                     int.TryParse(command.Replace("Leak Check", ""), out int index);
                     SetLeakCheckTableIndex(index);
+                    _processRoutine.FACallBack(ConstantsCommon.RecipeTrigger, UniversalEvents.RecipeTriggerLeakCheck, Module, RecipeRunningInfo.RecipeName, RecipeRunningInfo.StepNumber.ToString());
+
                     break;
             }
             return true;

+ 99 - 30
Furnace/FurnaceRT/Equipments/PMs/RecipeExecutions/Process.cs

@@ -20,6 +20,10 @@ using FurnaceRT.Equipments.Systems;
 using MECF.Framework.Common.CommonData.EnumData;
 using MECF.Framework.Common.FAServices;
 using System.Threading.Tasks;
+using DocumentFormat.OpenXml.Drawing.Charts;
+using MECF.Framework.Common.Device;
+using Aitex.Core.Common.DeviceData;
+using Aitex.Sorter.Common;
 
 namespace FurnaceRT.Equipments.PMs.RecipeExecutions
 {
@@ -355,12 +359,15 @@ namespace FurnaceRT.Equipments.PMs.RecipeExecutions
                     PMModule.RecipeRunningInfo.SubRecipeCurrentLoopCount = 1;
                     PMModule.RecipeRunningInfo.SubRecipeLoopCount = PMModule.RecipeRunningInfo.RecipeStepList[_currentStepNumber].SubRecipeLoopCount;
                     PMModule.RecipeRunningInfo.SubRecipeTable = PMModule.RecipeRunningInfo.RecipeStepList[_currentStepNumber].SubRecipeTableInfo;
+                    _faCallback.RecipeTriggerCallSubRecipe(Module, PMModule.RecipeRunningInfo.RecipeName, PMModule.RecipeRunningInfo.StepNumber.ToString(), PMModule.RecipeRunningInfo.RecipeStepList[_currentStepNumber].SubRecipeTableInfo);
+
                 }
                 PMModule.RecipeRunningInfo.RecipeStepList[_currentStepNumber].IsCallSubStep = false;
                 IsSubReciep = true;
             }
             else
             {
+
                 PMModule.RecipeRunningInfo.SubRecipeTable = string.Empty;
                 curSteps = PMModule.RecipeRunningInfo.RecipeStepList;
                 PMModule.RecipeRunningInfo.SubRecipeLoopCount = 0;
@@ -399,6 +406,8 @@ namespace FurnaceRT.Equipments.PMs.RecipeExecutions
 
                                     if (curSteps[_currentSubRecipeStepNumber].IsJumpStep)
                                     {
+                                        _faCallback.RecipeTriggerJumpStep(Module, PMModule.RecipeRunningInfo.RecipeName, _currentStepNumber.ToString(), curSteps[_currentStepNumber].JumpStepNo.ToString());
+
                                         _currentSubRecipeStepNumber = curSteps[_currentSubRecipeStepNumber].JumpStepNo;
                                     }
                                     PMModule.SetFDCRecipeStepName(IsSubReciep, curSteps[_currentSubRecipeStepNumber].StepName, (_currentSubRecipeStepNumber + 1).ToString());
@@ -416,8 +425,11 @@ namespace FurnaceRT.Equipments.PMs.RecipeExecutions
 
                                     if (curSteps[_currentStepNumber].IsJumpStep)
                                     {
+                                        _faCallback.RecipeTriggerJumpStep(Module, PMModule.RecipeRunningInfo.RecipeName, _currentStepNumber.ToString(), curSteps[_currentStepNumber].JumpStepNo.ToString());
+
                                         curSteps[_currentStepNumber].IsJumpStep = false;//只执行一次
                                         _currentStepNumber = curSteps[_currentStepNumber].JumpStepNo;
+
                                     }
                                     PMModule.SetFDCRecipeStepName(IsSubReciep, curSteps[_currentStepNumber].StepName, _currentStepNumber.ToString());
                                     RecipeExec("Main recipe", curSteps, _currentStepNumber, _curStepElpasedTimeBeforePaused);
@@ -1207,9 +1219,7 @@ namespace FurnaceRT.Equipments.PMs.RecipeExecutions
             ContinueAction = RecipeContinueMode.StepContinue;
             var step = IsSubReciep ? _currentSubRecipeStepNumber + 1 : _currentStepNumber;
 
-            Task.Delay(300).ContinueWith((a) =>
-            {
-            });
+
         }
 
 
@@ -1280,33 +1290,6 @@ namespace FurnaceRT.Equipments.PMs.RecipeExecutions
         {
             JumpCurrentRecipeStep(_currentStepNumber - 1, PMModule.RecipeRunningInfo.RecipeStepList[_currentStepNumber - 1].StepName);
         }
-        public void FACallBack(string recipeAction, string module, string recipeName, string recipeStep, string jumpStpeId = "", string otherRecipeName = "")
-        {
-            //if (recipeAction == UniversalEvents.RecipeAbort)
-            //{
-            //    _faCallback.RecipeAbort(module, recipeName, recipeStep);
-            //}
-            //if (recipeAction == UniversalEvents.RecipeJumpStep)
-            //{
-            //    _faCallback.RecipeJumpStep(module, recipeName, recipeStep, jumpStpeId);
-            //}
-            //if (recipeAction == UniversalEvents.RecipeJumpEnd)
-            //{
-            //    _faCallback.RecipeJumpEnd(module, recipeName, recipeStep, jumpStpeId);
-            //}
-            //if (recipeAction == UniversalEvents.CallAlarmRecipe)
-            //{
-            //    _faCallback.RecipeCallAlarmRecipe(module, recipeName, recipeStep, otherRecipeName);
-            //}
-            //if (recipeAction == UniversalEvents.CallAbortRecipe)
-            //{
-            //    _faCallback.RecipeCallAbortRecipe(module, recipeName, recipeStep, otherRecipeName);
-            //}
-            //if (recipeAction == UniversalEvents.RunResetRecipe)
-            //{
-            //    _faCallback.RecipeRunResetRecipe(module, recipeName, recipeStep, otherRecipeName);
-            //}
-        }
         public void JumpCurrentRecipeStep(int stepNumber, string stepName, bool isAlarmConditionCall = false)
         {
             PMModule.StopLeakCheckTimer();
@@ -1845,6 +1828,92 @@ namespace FurnaceRT.Equipments.PMs.RecipeExecutions
             _fdc.Start(curSteps[currentStepNumber].RecipeCommands);
         }
 
+        public void FACallBack(string triggerModule, string recipeAction, string module, string recipeName, string recipeStep, string jumpStpeId = "", string otherRecipeName = "")
+        {
+
+
+            if (triggerModule == ConstantsCommon.AlarmConditionTrigger)
+            {
+                _faCallback.RecipeAbnormalEnd(module, recipeName, recipeStep);
+
+                switch (recipeAction)
+                {
+                    case UniversalEvents.AlarmConditionTriggerReset:
+                        _faCallback.AlarmConditionTriggerReset(module, recipeName, recipeStep, otherRecipeName);
+                        break;
+
+                    case UniversalEvents.AlarmConditionTriggerEnd:
+                        _faCallback.AlarmConditionTriggerEnd(module, recipeName, recipeStep);
+                        break;
+                    case UniversalEvents.AlarmConditionTriggerHold:
+                        _faCallback.AlarmConditionTriggerHold(module, recipeName, recipeStep);
+                        break;
+
+                    case UniversalEvents.AlarmConditionTriggerJumpStep:
+                        _faCallback.AlarmConditionTriggerJumpStep(module, recipeName, recipeStep, jumpStpeId);
+                        break;
+                    case UniversalEvents.AlarmConditionTriggerCallAlarmRecipe:
+                        _faCallback.AlarmConditionTriggerCallAlarmRecipe(module, recipeName, recipeStep, otherRecipeName);
+                        break;
+
+                    case UniversalEvents.AlarmConditionTriggerCallAbortRecipe:
+                        _faCallback.AlarmConditionTriggerCallAbortRecipe(module, recipeName, recipeStep, otherRecipeName);
+                        break;
+                }
+            }
+            if (triggerModule == ConstantsCommon.LeakCheckTrigger)
+            {
+
+                switch (recipeAction)
+                {
+                    case UniversalEvents.LeakCheckTriggerReset:
+                        _faCallback.LeakCheckTriggerReset(module, recipeName, recipeStep, otherRecipeName);
+                        break;
+
+                    case UniversalEvents.LeakCheckTriggerEnd:
+                        _faCallback.LeakCheckTriggerEnd(module, recipeName, recipeStep);
+                        break;
+                    case UniversalEvents.LeakCheckTriggerHold:
+                        _faCallback.LeakCheckTriggerHold(module, recipeName, recipeStep);
+                        break;
+
+                    case UniversalEvents.LeakCheckTriggerJumpStep:
+                        _faCallback.LeakCheckTriggerJumpStep(module, recipeName, recipeStep, jumpStpeId);
+                        break;
+                    case UniversalEvents.LeakCheckTriggerCallAlarmRecipe:
+                        _faCallback.LeakCheckTriggerCallAlarmRecipe(module, recipeName, recipeStep, otherRecipeName);
+                        break;
+
+                    case UniversalEvents.LeakCheckTriggerCallAbortRecipe:
+                        _faCallback.LeakCheckTriggerCallAbortRecipe(module, recipeName, recipeStep, otherRecipeName);
+                        break;
+                }
+            }
+            if (triggerModule == ConstantsCommon.ManualTrigger)
+            {
+
+                switch (recipeAction)
+                {
+
+                    case UniversalEvents.ManualTriggerRecipeHold:
+                        _faCallback.ManualTriggerRecipeHold(module, recipeName, recipeStep);
+                        break;
+                    case UniversalEvents.ManualTriggerRecipeRelease:
+                        _faCallback.ManualTriggerRecipeRelease(module, recipeName, recipeStep);
+                        break;
+                    case UniversalEvents.ManualTriggerRecipeSkip:
+                        _faCallback.ManualTriggerRecipeSkip(module, recipeName, recipeStep);
+                        break;
+                    case UniversalEvents.ManualTriggerRecipeJump:
+                        _faCallback.ManualTriggerRecipeJump(module, recipeName, recipeStep, jumpStpeId);
+                        break;
+
+                    case UniversalEvents.ManualTriggerRecipeAbort:
+                        _faCallback.ManualTriggerRecipeAbort(module, recipeName, recipeStep, otherRecipeName);
+                        break;
+                }
+            }
+        }
 
     }
 }

+ 47 - 47
Furnace/FurnaceRT/Equipments/PMs/RecipeFACallback.cs

@@ -242,232 +242,232 @@ namespace FurnaceRT.Equipments.PMs
         }
         #region 子事件上报
 
-        public void AlarmConditionTriggerReset(string module, string recipeName, int stepNumber, string otherRecipeName)
+        public void AlarmConditionTriggerReset(string module, string recipeName, string stepNumber, string otherRecipeName)
         {
             EV.Notify(UniversalEvents.AlarmConditionTriggerReset, new SerializableDictionary<string, object>()
             {
                 {DVIDName.RecipeID,  recipeName},
-                {DVIDName.RecipeStepNumber, stepNumber.ToString()},
+                {DVIDName.RecipeStepNumber, stepNumber},
                 {DVIDName.RecipeName, otherRecipeName},
             });
         }
-        public void AlarmConditionTriggerEnd(string module, string recipeName, int stepNumber)
+        public void AlarmConditionTriggerEnd(string module, string recipeName, string stepNumber)
         {
             ModuleName moduleName = ModuleHelper.Converter(module);
             EV.Notify(UniversalEvents.AlarmConditionTriggerEnd, new SerializableDictionary<string, object>()
             {
                 {DVIDName.RecipeID,  recipeName},
-                {DVIDName.RecipeStepNumber, stepNumber.ToString()},
+                {DVIDName.RecipeStepNumber, stepNumber},
             });
         }
-        public void AlarmConditionTriggerHold(string module, string recipeName, int stepNumber)
+        public void AlarmConditionTriggerHold(string module, string recipeName, string stepNumber)
         {
             ModuleName moduleName = ModuleHelper.Converter(module);
             EV.Notify(UniversalEvents.AlarmConditionTriggerHold, new SerializableDictionary<string, object>()
             {
                 {DVIDName.RecipeID,  recipeName},
-                {DVIDName.RecipeStepNumber, stepNumber.ToString()},
+                {DVIDName.RecipeStepNumber, stepNumber},
             });
         }
-        public void AlarmConditionTriggerJumpStep(string module, string recipeName, int stepNumber, int stepId)
+        public void AlarmConditionTriggerJumpStep(string module, string recipeName, string stepNumber, string stepId)
         {
             ModuleName moduleName = ModuleHelper.Converter(module);
             EV.Notify(UniversalEvents.AlarmConditionTriggerJumpStep, new SerializableDictionary<string, object>()
             {
                 {DVIDName.RecipeID,  recipeName},
-                {DVIDName.RecipeStepNumber, stepNumber.ToString()},
+                {DVIDName.RecipeStepNumber, stepNumber},
                 {DataVariables.StepId, stepId},
             });
         }
-        public void AlarmConditionTriggerCallAlarmRecipe(string module, string recipeName, int stepNumber, string otherRecipeName)
+        public void AlarmConditionTriggerCallAlarmRecipe(string module, string recipeName, string stepNumber, string otherRecipeName)
         {
             ModuleName moduleName = ModuleHelper.Converter(module);
             EV.Notify(UniversalEvents.AlarmConditionTriggerCallAlarmRecipe, new SerializableDictionary<string, object>()
             {
                 {DVIDName.RecipeID,  recipeName},
-                {DVIDName.RecipeStepNumber, stepNumber.ToString()},
+                {DVIDName.RecipeStepNumber, stepNumber},
                 {DVIDName.RecipeName, otherRecipeName},
             });
         }
-        public void AlarmConditionTriggerCallAbortRecipe(string module, string recipeName, int stepNumber, string otherRecipeName)
+        public void AlarmConditionTriggerCallAbortRecipe(string module, string recipeName, string stepNumber, string otherRecipeName)
         {
             ModuleName moduleName = ModuleHelper.Converter(module);
             EV.Notify(UniversalEvents.AlarmConditionTriggerCallAbortRecipe, new SerializableDictionary<string, object>()
             {
                 {DVIDName.RecipeID,  recipeName},
-                {DVIDName.RecipeStepNumber, stepNumber.ToString()},
+                {DVIDName.RecipeStepNumber, stepNumber},
                 {DVIDName.RecipeName, otherRecipeName},
             });
         }
 
-        public void LeakCheckTriggerReset(string module, string recipeName, int stepNumber, string otherRecipeName)
+        public void LeakCheckTriggerReset(string module, string recipeName, string stepNumber, string otherRecipeName)
         {
             ModuleName moduleName = ModuleHelper.Converter(module);
             EV.Notify(UniversalEvents.LeakCheckTriggerReset, new SerializableDictionary<string, object>()
             {
                 {DVIDName.RecipeID,  recipeName},
-                {DVIDName.RecipeStepNumber, stepNumber.ToString()},
+                {DVIDName.RecipeStepNumber, stepNumber},
             });
         }
-        public void LeakCheckTriggerEnd(string module, string recipeName, int stepNumber, string otherRecipeName)
+        public void LeakCheckTriggerEnd(string module, string recipeName, string stepNumber)
         {
             ModuleName moduleName = ModuleHelper.Converter(module);
             EV.Notify(UniversalEvents.LeakCheckTriggerEnd, new SerializableDictionary<string, object>()
             {
                 {DVIDName.RecipeID,  recipeName},
-                {DVIDName.RecipeStepNumber, stepNumber.ToString()},
+                {DVIDName.RecipeStepNumber, stepNumber},
             });
         }
-        public void LeakCheckTriggerHold(string module, string recipeName, int stepNumber, string otherRecipeName)
+        public void LeakCheckTriggerHold(string module, string recipeName, string stepNumber)
         {
             ModuleName moduleName = ModuleHelper.Converter(module);
             EV.Notify(UniversalEvents.LeakCheckTriggerHold, new SerializableDictionary<string, object>()
             {
                 {DVIDName.RecipeID,  recipeName},
-                {DVIDName.RecipeStepNumber, stepNumber.ToString()},
+                {DVIDName.RecipeStepNumber, stepNumber},
             });
         }
-        public void LeakCheckTriggerJumpStep(string module, string recipeName, int stepNumber, int stepId)
+        public void LeakCheckTriggerJumpStep(string module, string recipeName, string stepNumber, string stepId)
         {
             ModuleName moduleName = ModuleHelper.Converter(module);
             EV.Notify(UniversalEvents.LeakCheckTriggerJumpStep, new SerializableDictionary<string, object>()
             {
                 {DVIDName.RecipeID,  recipeName},
-                {DVIDName.RecipeStepNumber, stepNumber.ToString()},
+                {DVIDName.RecipeStepNumber, stepNumber},
                 {DataVariables.StepId, stepId},
             });
         }
 
-        public void LeakCheckTriggerCallAlarmRecipe(string module, string recipeName, int stepNumber, string otherRecipeName)
+        public void LeakCheckTriggerCallAlarmRecipe(string module, string recipeName, string stepNumber, string otherRecipeName)
         {
             ModuleName moduleName = ModuleHelper.Converter(module);
             EV.Notify(UniversalEvents.LeakCheckTriggerCallAlarmRecipe, new SerializableDictionary<string, object>()
             {
                 {DVIDName.RecipeID,  recipeName},
-                {DVIDName.RecipeStepNumber, stepNumber.ToString()},
+                {DVIDName.RecipeStepNumber, stepNumber},
                 {DVIDName.RecipeName, otherRecipeName},
             });
         }
 
-        public void LeakCheckTriggerCallAbortRecipe(string module, string recipeName, int stepNumber, string otherRecipeName)
+        public void LeakCheckTriggerCallAbortRecipe(string module, string recipeName, string stepNumber, string otherRecipeName)
         {
             ModuleName moduleName = ModuleHelper.Converter(module);
             EV.Notify(UniversalEvents.LeakCheckTriggerCallAbortRecipe, new SerializableDictionary<string, object>()
             {
                 {DVIDName.RecipeID,  recipeName},
-                {DVIDName.RecipeStepNumber, stepNumber.ToString()},
+                {DVIDName.RecipeStepNumber, stepNumber},
                 {DVIDName.RecipeName, otherRecipeName},
             });
         }
-        public void ManualTriggerRecipeHold(string module, string recipeName, int stepNumber, string otherRecipeName)
+        public void ManualTriggerRecipeHold(string module, string recipeName, string stepNumber )
         {
             ModuleName moduleName = ModuleHelper.Converter(module);
             EV.Notify(UniversalEvents.ManualTriggerRecipeHold, new SerializableDictionary<string, object>()
             {
                 {DVIDName.RecipeID,  recipeName},
-                {DVIDName.RecipeStepNumber, stepNumber.ToString()},
+                {DVIDName.RecipeStepNumber, stepNumber},
             });
         }
 
-        public void ManualTriggerRecipeRelease(string module, string recipeName, int stepNumber, string otherRecipeName)
+        public void ManualTriggerRecipeRelease(string module, string recipeName, string stepNumber)
         {
             ModuleName moduleName = ModuleHelper.Converter(module);
             EV.Notify(UniversalEvents.ManualTriggerRecipeRelease, new SerializableDictionary<string, object>()
             {
                 {DVIDName.RecipeID,  recipeName},
-                {DVIDName.RecipeStepNumber, stepNumber.ToString()},
+                {DVIDName.RecipeStepNumber, stepNumber},
             });
         }
-        public void ManualTriggerRecipeSkip(string module, string recipeName, int stepNumber, string otherRecipeName)
+        public void ManualTriggerRecipeSkip(string module, string recipeName, string stepNumber)
         {
             ModuleName moduleName = ModuleHelper.Converter(module);
             EV.Notify(UniversalEvents.ManualTriggerRecipeSkip, new SerializableDictionary<string, object>()
             {
                 {DVIDName.RecipeID,  recipeName},
-                {DVIDName.RecipeStepNumber, stepNumber.ToString()},
+                {DVIDName.RecipeStepNumber, stepNumber},
             });
         }
-        public void ManualTriggerRecipeJump(string module, string recipeName, int stepNumber, int stepId)
+        public void ManualTriggerRecipeJump(string module, string recipeName, string stepNumber, string stepId)
         {
             ModuleName moduleName = ModuleHelper.Converter(module);
             EV.Notify(UniversalEvents.ManualTriggerRecipeJump, new SerializableDictionary<string, object>()
             {
                 {DVIDName.RecipeID,  recipeName},
-                {DVIDName.RecipeStepNumber, stepNumber.ToString()},
+                {DVIDName.RecipeStepNumber,stepNumber},
                 {DataVariables.StepId, stepId},
             });
         }
-        public void ManualTriggerRecipeAbort(string module, string recipeName, int stepNumber, string otherRecipeName)
+        public void ManualTriggerRecipeAbort(string module, string recipeName, string stepNumber, string otherRecipeName)
         {
             ModuleName moduleName = ModuleHelper.Converter(module);
             EV.Notify(UniversalEvents.ManualTriggerRecipeAbort, new SerializableDictionary<string, object>()
             {
                 {DVIDName.RecipeID,  recipeName},
-                {DVIDName.RecipeStepNumber, stepNumber.ToString()},
+                {DVIDName.RecipeStepNumber, stepNumber},
                 {DVIDName.RecipeName, otherRecipeName},
             });
         }
 
-        public void RecipeTriggerReset(string module, string recipeName, int stepNumber, string otherRecipeName)
+        public void RecipeTriggerReset(string module, string recipeName, string stepNumber, string otherRecipeName)
         {
             ModuleName moduleName = ModuleHelper.Converter(module);
             EV.Notify(UniversalEvents.RecipeTriggerReset, new SerializableDictionary<string, object>()
             {
                 {DVIDName.RecipeID,  recipeName},
-                {DVIDName.RecipeStepNumber, stepNumber.ToString()},
+                {DVIDName.RecipeStepNumber, stepNumber},
                 {DVIDName.RecipeName, otherRecipeName},
             });
         }
-        public void RecipeTriggerEnd(string module, string recipeName, int stepNumber, string otherRecipeName)
+        public void RecipeTriggerEnd(string module, string recipeName, string stepNumber, string otherRecipeName)
         {
             ModuleName moduleName = ModuleHelper.Converter(module);
             EV.Notify(UniversalEvents.RecipeTriggerEnd, new SerializableDictionary<string, object>()
             {
                 {DVIDName.RecipeID,  recipeName},
-                {DVIDName.RecipeStepNumber, stepNumber.ToString()},
+                {DVIDName.RecipeStepNumber, stepNumber},
             });
         }
 
-        public void RecipeTriggerHold(string module, string recipeName, int stepNumber, string otherRecipeName)
+        public void RecipeTriggerHold(string module, string recipeName, string stepNumber, string otherRecipeName)
         {
             ModuleName moduleName = ModuleHelper.Converter(module);
             EV.Notify(UniversalEvents.RecipeTriggerHold, new SerializableDictionary<string, object>()
             {
                 {DVIDName.RecipeID,  recipeName},
-                {DVIDName.RecipeStepNumber, stepNumber.ToString()},
+                {DVIDName.RecipeStepNumber, stepNumber},
             });
         }
-        public void RecipeTriggerLeakCheck(string module, string recipeName, int stepNumber, string otherRecipeName)
+        public void RecipeTriggerLeakCheck(string module, string recipeName, string stepNumber, string otherRecipeName)
         {
             ModuleName moduleName = ModuleHelper.Converter(module);
             EV.Notify(UniversalEvents.RecipeTriggerLeakCheck, new SerializableDictionary<string, object>()
             {
                 {DVIDName.RecipeID,  recipeName},
-                {DVIDName.RecipeStepNumber, stepNumber.ToString()},
+                {DVIDName.RecipeStepNumber, stepNumber},
             });
         }
-        public void RecipeTriggerJumpStep(string module, string recipeName, int stepNumber, int stepId)
+        public void RecipeTriggerJumpStep(string module, string recipeName, string stepNumber, string stepId)
         {
             ModuleName moduleName = ModuleHelper.Converter(module);
             EV.Notify(UniversalEvents.RecipeTriggerJumpStep, new SerializableDictionary<string, object>()
             {
                 {DVIDName.RecipeID,  recipeName},
-                {DVIDName.RecipeStepNumber, stepNumber.ToString()},
+                {DVIDName.RecipeStepNumber, stepNumber},
                  {DataVariables.StepId, stepId},
             });
         }
 
-        public void RecipeTriggerCallSubRecipe(string module, string recipeName, int stepNumber, string otherRecipeName)
+        public void RecipeTriggerCallSubRecipe(string module, string recipeName, string stepNumber, string otherRecipeName)
         {
             ModuleName moduleName = ModuleHelper.Converter(module);
             EV.Notify(UniversalEvents.RecipeTriggerCallSubRecipe, new SerializableDictionary<string, object>()
             {
                 {DVIDName.RecipeID,  recipeName},
-                {DVIDName.RecipeStepNumber, stepNumber.ToString()},
+                {DVIDName.RecipeStepNumber, stepNumber},
                 {DVIDName.RecipeName, otherRecipeName},
             });
         }
-        public void RecipeAbnormalEnd(string module, string recipeName, int stepNumber)
+        public void RecipeAbnormalEnd(string module, string recipeName, string stepNumber)
         {
             EV.Notify(UniversalEvents.RecipeAbnormalEnd, new SerializableDictionary<string, object>()
             {