UniversalEvents.cs 32 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372
  1. using System;
  2. using System.Collections.Generic;
  3. using System.Linq;
  4. using System.Text;
  5. using System.Threading.Tasks;
  6. namespace MECF.Framework.Common.FAServices
  7. {
  8. /// <summary>
  9. /// Gem200的事件
  10. /// </summary>
  11. public static class UniversalEvents
  12. {
  13. public const string EquipmentOFFLINE = "EquipmentOFFLINE";
  14. public const string HOSTOFFLINE = "HOSTOFFLINE";
  15. public const string ControlStateLOCAL = "ControlStateLOCAL";
  16. public const string ControlStateREMOTE = "ControlStateREMOTE";
  17. public const string ProcessingStarted = "ProcessingStarted";
  18. public const string ProcessingCompleted = "ProcessingCompleted";
  19. public const string ProcessingStopped = "ProcessingStopped";
  20. public const string ProcessingStateChanged = "ProcessingStateChanged";
  21. public const string EquipmentConstantChanged = "EquipmentConstantChanged";
  22. public const string ProcessProgramChanged = "ProcessProgramChanged";
  23. public const string ProcessProgramSelected = "ProcessProgramSelected";
  24. public const string ProcessProgramCreated = "ProcessProgramCreated";
  25. public const string SpoolingActivated = "SpoolingActivated";
  26. public const string SpoolingDeactivated = "SpoolingDeactivated";
  27. public const string SpoolingFailed = "SpoolingFailed";
  28. public const string EquipmentChangeToAuto = "EquipmentChangeToAuto";
  29. public const string EquipmentChangeToManual = "EquipmentChangeToManual";
  30. public const string WAFER_LEFT_POSITION = "WAFER_LEFT_POSITION";
  31. public const string WAFER_ARRIVE_POSITION = "WAFER_ARRIVE_POSITION";
  32. public const string CARRIER_ARRIVED = "CARRIER_ARRIVED";
  33. public const string CARRIER_REMOVED = "CARRIER_REMOVED";
  34. public const string CARRIER_ID_READ = "CARRIER_ID_READ";
  35. public const string CARRIER_ID_READ_FAILED = "CARRIER_ID_READ_FAILED";
  36. public const string CARRIER_ID_WRITE = "CARRIER_ID_WRITE";
  37. public const string CARRIER_ID_WRITE_FAILED = "CARRIER_ID_WRITE_FAILED";
  38. public const string CARRIER_LOADED = "CARRIER_LOADED";
  39. public const string CARRIER_UNLOADED = "CARRIER_UNLOADED";
  40. public const string SLOT_MAP_AVAILABLE = "SLOT_MAP_AVAILABLE";
  41. public const string PortReadyToLoad = "PortReadyToLoad";
  42. public const string PortReadyToUnload = "PortReadyToUnload";
  43. public const string CarrierProcessStart = "CarrierProcessStart";
  44. public const string CarrierProcessComplete = "CarrierProcessComplete";
  45. public const string PortJobStarted = "PortJobStarted";
  46. public const string PortJobStopped = "PortJobStopped";
  47. public const string PortJobPaused = "PortJobPaused";
  48. public const string PortJobResumed = "PortJobResumed";
  49. public const string PortJobAborted = "PortJobAborted";
  50. public const string PortJobFinished = "PortJobFinished";
  51. public const string PortJobFailed = "PortJobFailed";
  52. public const string PortMapFailed = "PortMapFailed";
  53. public const string PortPPSelected = "PortPPSelected";
  54. public const string PortPPSelectFailed = "PortPPSelectFailed";
  55. public const string RecipeStart = "RecipeStart";
  56. public const string RecipeComplete = "RecipeComplete";
  57. public const string RecipeStepStart = "RecipeStepStart";
  58. public const string RecipeStepEnd = "RecipeStepEnd";
  59. public const string RecipeFailed = "RecipeFailed";
  60. public const string CarrierInEnd = "CarrierInEnd";
  61. public const string CarrierInStart = "CarrierInStart";
  62. public const string CarrierOutStart = "CarrierOutStart";
  63. public const string CarrierOutEnd = "CarrierOutEnd";
  64. public const string ChargeStart = "ChargeStart";
  65. public const string ChargeEnd = "ChargeEnd";
  66. public const string DischargeStart = "DischargeStart";
  67. public const string DischargeEnd = "DischargeEnd";
  68. public const string BatchLocOccupied = "BatchLocOccupied";
  69. public const string BatchLocUnOccupied = "BatchLocUnOccupied";
  70. public const string SideDummyStateAlarm = "SideDummyStateAlarm";
  71. public const string ExtraDummyStateAlarm = "ExtraDummyStateAlarm";
  72. public const string SideDummyStateWarning = "SideDummyStateWarning";
  73. public const string ExtraDummyStateWarning = "ExtraDummyStateWarning";
  74. public const string AlarmConditionTriggerReset = "AlarmConditionTriggerReset";
  75. public const string AlarmConditionTriggerEnd = "AlarmConditionTriggerEnd";
  76. public const string AlarmConditionTriggerHold = "AlarmConditionTriggerHold";
  77. public const string AlarmConditionTriggerJumpStep = "AlarmConditionTriggerJumpStep";
  78. public const string AlarmConditionTriggerCallAlarmRecipe = "AlarmConditionTriggerCallAlarmRecipe";
  79. public const string AlarmConditionTriggerCallAbortRecipe = "AlarmConditionTriggerCallAbortRecipe";
  80. public const string RecipeAbnormalEnd = "RecipeAbnormalEnd";
  81. public const string LeakCheckTriggerReset = "LeakCheckTriggerReset";
  82. public const string LeakCheckTriggerEnd = "LeakCheckTriggerEnd";
  83. public const string LeakCheckTriggerHold = "LeakCheckTriggerHold";
  84. public const string LeakCheckTriggerJumpStep = "LeakCheckTriggerJumpStep";
  85. public const string LeakCheckTriggerCallAlarmRecipe = "LeakCheckTriggerCallAlarmRecipe";
  86. public const string LeakCheckTriggerCallAbortRecipe = "LeakCheckTriggerCallAbortRecipe";
  87. public const string ManualTriggerRecipeHold = "ManualTriggerRecipeHold";
  88. public const string ManualTriggerRecipeRelease = "ManualTriggerRecipeRelease";
  89. public const string ManualTriggerRecipeSkip = "ManualTriggerRecipeSkip";
  90. public const string ManualTriggerRecipeJump = "ManualTriggerRecipeJump";
  91. public const string ManualTriggerRecipeAbort = "ManualTriggerRecipeAbort";
  92. public const string RecipeTriggerReset = "RecipeTriggerReset";
  93. public const string RecipeTriggerEnd = "RecipeTriggerEnd";
  94. public const string RecipeTriggerHold = "RecipeTriggerHold";
  95. public const string RecipeTriggerLeakCheck = "RecipeTriggerLeakCheck";
  96. public const string RecipeTriggerJumpStep = "RecipeTriggerJumpStep";
  97. public const string RecipeTriggerCallSubRecipe = "RecipeTriggerCallSubRecipe";
  98. public const string RecipeCoolingStart = "RecipeCoolingStart";
  99. public const string RecipeCoolingEnd = "RecipeCoolingEnd";
  100. /// <summary>
  101. /// 定义Gem200事件的ID
  102. /// </summary>
  103. public enum EventName
  104. {
  105. EquipmentOFFLINE = 1,
  106. ControlStateLOCAL = 2,
  107. ControlStateREMOTE = 3,
  108. ProcessingStarted = 4,
  109. ProcessingCompleted = 5,
  110. ProcessingStopped = 6,
  111. ProcessingStateChanged = 7,
  112. EquipmentConstantChanged = 8,
  113. ProcessProgramChanged = 9,
  114. ProcessProgramSelected = 10,
  115. ProcessProgramCreated = 14,
  116. SpoolingActivated = 11,
  117. SpoolingDeactivated = 12,
  118. SpoolingFailed = 13,
  119. HOSTOFFLINE = 20,
  120. EquipmentChangeToAuto = 501,
  121. EquipmentChangeToManual = 502,
  122. WAFER_LEFT_POSITION = 503,
  123. WAFER_ARRIVE_POSITION = 504,
  124. CARRIER_ARRIVED = 1000,
  125. CARRIER_REMOVED = 1001,
  126. CARRIER_ID_READ = 1002,
  127. CARRIER_ID_READ_FAILED = 1003,
  128. CARRIER_ID_WRITE = 1004,
  129. CARRIER_ID_WRITE_FAILED = 1005,
  130. CARRIER_LOADED = 1006,
  131. CARRIER_UNLOADED = 1007,
  132. SLOT_MAP_AVAILABLE = 1008,
  133. PortReadyToLoad = 1010,
  134. PortReadyToUnload = 1011,
  135. CarrierProcessStart = 1020,
  136. CarrierProcessComplete = 1021,
  137. PortJobStarted = 1022,
  138. PortJobStopped = 1023,
  139. PortJobPaused = 1024,
  140. PortJobResumed = 1025,
  141. PortJobAborted = 1026,
  142. PortJobFinished = 1027,
  143. PortJobFailed = 1028,
  144. PortMapFailed = 1029,
  145. PortPPSelected = 1030,
  146. PortPPSelectFailed = 1031,
  147. RecipeStart = 2000,
  148. RecipeComplete = 2001,
  149. RecipeStepStart = 2002,
  150. RecipeStepEnd = 2003,
  151. RecipeFailed = 2004,
  152. ChargeStart = 2010,
  153. ChargeEnd = 2011,
  154. DischargeStart = 2012,
  155. DischargeEnd = 2013,
  156. BatchLocOccupied = 2020,
  157. BatchLocUnOccupied = 2021,
  158. SideDummyStateAlarm = 2022,
  159. ExtraDummyStateAlarm = 2023,
  160. CarrierInEnd = 2024,
  161. CarrierInStart = 2026,
  162. CarrierOutStart = 2025,
  163. CarrierOutEnd = 2027,
  164. SideDummyStateWarning = 2028,
  165. ExtraDummyStateWarning = 2029,
  166. AlarmConditionTriggerReset = 2030,
  167. AlarmConditionTriggerEnd = 2031,
  168. AlarmConditionTriggerHold = 2032,
  169. AlarmConditionTriggerJumpStep = 2033,
  170. AlarmConditionTriggerCallAlarmRecipe = 2034,
  171. AlarmConditionTriggerCallAbortRecipe = 2035,
  172. LeakCheckTriggerReset = 2040,
  173. LeakCheckTriggerEnd = 2041,
  174. LeakCheckTriggerHold = 2042,
  175. LeakCheckTriggerJumpStep = 2043,
  176. LeakCheckTriggerCallAlarmRecipe = 2044,
  177. LeakCheckTriggerCallAbortRecipe = 2045,
  178. ManualTriggerRecipeHold = 2050,
  179. ManualTriggerRecipeRelease = 2051,
  180. ManualTriggerRecipeSkip = 2052,
  181. ManualTriggerRecipeJump = 2053,
  182. ManualTriggerRecipeAbort = 2054,
  183. RecipeTriggerReset = 2060,
  184. RecipeTriggerEnd = 2061,
  185. RecipeTriggerHold = 2062,
  186. RecipeTriggerLeakCheck = 2063,
  187. RecipeTriggerJumpStep = 2064,
  188. RecipeTriggerCallSubRecipe = 2065,
  189. RecipeAbnormalEnd = 2066,
  190. RecipeCoolingStart = 2067,
  191. RecipeCoolingEnd = 2068,
  192. }
  193. /// <summary>
  194. /// 定义Gem200的事件所Link的VIDs
  195. /// </summary>
  196. public static Dictionary<string, VIDItem> UniversalEventsDictionary = new Dictionary<string, VIDItem>()
  197. {
  198. {EquipmentOFFLINE, new VIDItem() {Name = EquipmentOFFLINE, Index = (int)EventName.EquipmentOFFLINE, LinkableVid = new[] {3,4}}},
  199. {HOSTOFFLINE, new VIDItem() {Name = HOSTOFFLINE, Index = (int)EventName.HOSTOFFLINE, LinkableVid = new[] {3,4}}},
  200. {ControlStateLOCAL, new VIDItem() {Name = ControlStateLOCAL, Index = (int)EventName.ControlStateLOCAL, LinkableVid = new[] {3,4}}},
  201. {ControlStateREMOTE, new VIDItem() {Name = ControlStateREMOTE, Index = (int)EventName.ControlStateREMOTE, LinkableVid = new[] {3,4}}},
  202. {ProcessingStarted, new VIDItem() {Name = ProcessingStarted, Index = (int)EventName.ProcessingStarted, LinkableVid = new[] {3,7}}},
  203. {ProcessingCompleted, new VIDItem() {Name = ProcessingCompleted, Index = (int)EventName.ProcessingCompleted, LinkableVid = new[] {3,7}}},
  204. {ProcessingStopped, new VIDItem() {Name = ProcessingStopped, Index = (int)EventName.ProcessingStopped, LinkableVid = new[] {3,7}}},
  205. {ProcessingStateChanged, new VIDItem() {Name = ProcessingStateChanged, Index = (int)EventName.ProcessingStateChanged, LinkableVid = new[] {3,8,7}}},
  206. {EquipmentConstantChanged, new VIDItem() {Name = EquipmentConstantChanged, Index = (int)EventName.EquipmentConstantChanged, LinkableVid = new[] {(int)DataVariables.DataName.ECChangedID}}},
  207. {ProcessProgramChanged, new VIDItem() {Name = ProcessProgramChanged, Index = (int)EventName.ProcessProgramChanged, LinkableVid = new[] {(int)DataVariables.DataName.SequenceID,(int)DataVariables.DataName.PPChangeName, (int)DataVariables.DataName.PPChangeStatus}}},
  208. {ProcessProgramSelected, new VIDItem() {Name = ProcessProgramSelected, Index = (int)EventName.ProcessProgramSelected, LinkableVid = new[] {(int)DataVariables.DataName.SequenceID}}},
  209. {ProcessProgramCreated, new VIDItem() {Name = ProcessProgramCreated, Index = (int)EventName.ProcessProgramCreated, LinkableVid = new[] {(int)DataVariables.DataName.SequenceID}}},
  210. {SpoolingActivated, new VIDItem() {Name = SpoolingActivated, Index = (int)EventName.SpoolingActivated}},
  211. {SpoolingDeactivated, new VIDItem() {Name = SpoolingDeactivated, Index = (int)EventName.SpoolingDeactivated}},
  212. {SpoolingFailed, new VIDItem() {Name = SpoolingFailed, Index = (int)EventName.SpoolingFailed}},
  213. {EquipmentChangeToAuto, new VIDItem() {Name = EquipmentChangeToAuto, Index = (int)EventName.EquipmentChangeToAuto}},
  214. {EquipmentChangeToManual, new VIDItem() {Name = EquipmentChangeToManual, Index = (int)EventName.EquipmentChangeToManual}},
  215. {WAFER_LEFT_POSITION, new VIDItem() {Name = WAFER_LEFT_POSITION, Index = (int)EventName.WAFER_LEFT_POSITION, LinkableVid = new[] {(int)DataVariables.DataName.SubstID,(int)DataVariables.DataName.SubstLocID,(int)DataVariables.DataName.SubstLocState,3}}},
  216. {WAFER_ARRIVE_POSITION, new VIDItem() {Name = WAFER_ARRIVE_POSITION, Index = (int)EventName.WAFER_ARRIVE_POSITION, LinkableVid = new[] {(int)DataVariables.DataName.SubstID,(int)DataVariables.DataName.SubstLocID,(int)DataVariables.DataName.SubstLocState,3}}},
  217. {CARRIER_ARRIVED, new VIDItem() {Name = CARRIER_ARRIVED, Index = (int)EventName.CARRIER_ARRIVED, LinkableVid = new[] {(int)DataVariables.DataName.PortID,3}}},
  218. {CARRIER_REMOVED, new VIDItem() {Name = CARRIER_REMOVED, Index = (int)EventName.CARRIER_REMOVED, LinkableVid = new[] {(int)DataVariables.DataName.CarrierID, (int)DataVariables.DataName.PortID, 3 }}},
  219. { CARRIER_ID_READ, new VIDItem() {Name = CARRIER_ID_READ, Index = (int)EventName.CARRIER_ID_READ, LinkableVid = new[] {(int)DataVariables.DataName.CarrierID, (int)DataVariables.DataName.PortID, 3 }}},
  220. { CARRIER_ID_READ_FAILED, new VIDItem() {Name = CARRIER_ID_READ_FAILED, Index = (int)EventName.CARRIER_ID_READ_FAILED, LinkableVid = new[] { (int)DataVariables.DataName.PortID, 3 }}},
  221. { CARRIER_ID_WRITE, new VIDItem() {Name = CARRIER_ID_WRITE, Index = (int)EventName.CARRIER_ID_WRITE, LinkableVid = new[] {(int)DataVariables.DataName.CarrierID, (int)DataVariables.DataName.PortID, 3 }}},
  222. { CARRIER_ID_WRITE_FAILED, new VIDItem() {Name = CARRIER_ID_WRITE_FAILED, Index = (int)EventName.CARRIER_ID_WRITE_FAILED, LinkableVid = new[] {(int)DataVariables.DataName.PortID, 3 }}},
  223. { CARRIER_LOADED, new VIDItem() {Name = CARRIER_LOADED, Index = (int)EventName.CARRIER_LOADED, LinkableVid = new[] {(int)DataVariables.DataName.CarrierID, (int)DataVariables.DataName.PortID, 3 }}},
  224. { CARRIER_UNLOADED, new VIDItem() {Name = CARRIER_UNLOADED, Index = (int)EventName.CARRIER_UNLOADED, LinkableVid = new[] {(int)DataVariables.DataName.CarrierID, (int)DataVariables.DataName.PortID, 3 }}},
  225. { SLOT_MAP_AVAILABLE, new VIDItem() {Name = SLOT_MAP_AVAILABLE, Index = (int)EventName.SLOT_MAP_AVAILABLE, LinkableVid = new[] {(int)DataVariables.DataName.CarrierID,(int)DataVariables.DataName.SlotMap, (int)DataVariables.DataName.PortID, (int)DataVariables.DataName.SlotMapList, 3 }}},
  226. { PortReadyToLoad, new VIDItem() {Name = PortReadyToLoad, Index = (int)EventName.PortReadyToLoad, LinkableVid = new[] {(int)DataVariables.DataName.PortID, 3 }}},
  227. { PortReadyToUnload, new VIDItem() {Name = PortReadyToUnload, Index = (int)EventName.PortReadyToUnload, LinkableVid = new[] {(int)DataVariables.DataName.PortID, 3 }}},
  228. { CarrierProcessStart, new VIDItem() {Name = CarrierProcessStart, Index = (int)EventName.CarrierProcessStart, LinkableVid = new[] {(int)DataVariables.DataName.CarrierID,(int)DataVariables.DataName.PortID,3}}},
  229. {CarrierProcessComplete, new VIDItem() {Name = CarrierProcessComplete, Index = (int)EventName.CarrierProcessComplete, LinkableVid = new[] {(int)DataVariables.DataName.CarrierID,(int)DataVariables.DataName.PortID,3}}},
  230. {PortJobStarted, new VIDItem() {Name = PortJobStarted, Index = (int)EventName.PortJobStarted, LinkableVid = new[] {(int)DataVariables.DataName.LotID,(int)DataVariables.DataName.JobID,(int)DataVariables.DataName.PortID,(int)DataVariables.DataName.RecipeID}}},
  231. {PortJobStopped, new VIDItem() {Name = PortJobStopped, Index = (int)EventName.PortJobStopped, LinkableVid = new[] {(int)DataVariables.DataName.LotID,(int)DataVariables.DataName.JobID,(int)DataVariables.DataName.PortID,(int)DataVariables.DataName.RecipeID}}},
  232. {PortJobPaused, new VIDItem() {Name = PortJobPaused, Index = (int)EventName.PortJobPaused, LinkableVid = new[] {(int)DataVariables.DataName.LotID,(int)DataVariables.DataName.JobID,(int)DataVariables.DataName.PortID,(int)DataVariables.DataName.RecipeID}}},
  233. {PortJobResumed, new VIDItem() {Name = PortJobResumed, Index = (int)EventName.PortJobResumed, LinkableVid = new[] {(int)DataVariables.DataName.LotID,(int)DataVariables.DataName.JobID,(int)DataVariables.DataName.PortID,(int)DataVariables.DataName.RecipeID}}},
  234. {PortJobAborted, new VIDItem() {Name = PortJobAborted, Index = (int)EventName.PortJobAborted, LinkableVid = new[] {(int)DataVariables.DataName.LotID,(int)DataVariables.DataName.JobID,(int)DataVariables.DataName.PortID,(int)DataVariables.DataName.RecipeID}}},
  235. {PortJobFinished, new VIDItem() {Name = PortJobFinished, Index = (int)EventName.PortJobFinished, LinkableVid = new[] {(int)DataVariables.DataName.LotID,(int)DataVariables.DataName.JobID,(int)DataVariables.DataName.PortID,(int)DataVariables.DataName.RecipeID}}},
  236. {PortJobFailed, new VIDItem() {Name = PortJobFailed, Index = (int)EventName.PortJobFailed, LinkableVid = new[] {(int)DataVariables.DataName.LotID,(int)DataVariables.DataName.JobID,(int)DataVariables.DataName.PortID,(int)DataVariables.DataName.RecipeID}}},
  237. {PortMapFailed, new VIDItem() {Name = PortMapFailed, Index = (int)EventName.PortMapFailed, LinkableVid = new[] {(int)DataVariables.DataName.LotID,(int)DataVariables.DataName.JobID,(int)DataVariables.DataName.PortID,(int)DataVariables.DataName.RecipeID}}},
  238. {PortPPSelected, new VIDItem() {Name = PortPPSelected, Index = (int)EventName.PortPPSelected, LinkableVid = new[] {(int)DataVariables.DataName.LotID,(int)DataVariables.DataName.JobID,(int)DataVariables.DataName.PortID,(int)DataVariables.DataName.RecipeID}}},
  239. {PortPPSelectFailed, new VIDItem() {Name = PortPPSelectFailed, Index = (int)EventName.PortPPSelectFailed, LinkableVid = new[] {(int)DataVariables.DataName.LotID,(int)DataVariables.DataName.JobID,(int)DataVariables.DataName.PortID,(int)DataVariables.DataName.RecipeID}}},
  240. {RecipeStart, new VIDItem() {Name = RecipeStart, Index = (int)EventName.RecipeStart,
  241. LinkableVid = new[] {
  242. (int)DataVariables.DataName.RecipeID,
  243. (int)DataVariables.DataName.PortID,
  244. (int)DataVariables.DataName.StationName,
  245. (int)DataVariables.DataName.SlotID,
  246. (int)DataVariables.DataName.ProcessWaferIdList,
  247. (int)DataVariables.DataName.ProcessCarrierIDList,
  248. (int)DataVariables.DataName.ProcessLotIdList,
  249. }}},
  250. {RecipeComplete, new VIDItem() {Name = RecipeComplete, Index = (int)EventName.RecipeComplete, LinkableVid = new[] {(int)DataVariables.DataName.RecipeID,(int)DataVariables.DataName.PortID,(int)DataVariables.DataName.StationName,(int)DataVariables.DataName.SlotID,(int)DataVariables.DataName.ProcessWaferIdList,(int)DataVariables.DataName.ProcessCarrierIDList,(int)DataVariables.DataName.ProcessLotIdList}}},
  251. {RecipeStepStart, new VIDItem() {Name = RecipeStepStart, Index = (int)EventName.RecipeStepStart, LinkableVid = new[] {(int)DataVariables.DataName.RecipeID,(int)DataVariables.DataName.PortID,(int)DataVariables.DataName.StationName,(int)DataVariables.DataName.RecipeStepNumber,(int)DataVariables.DataName.SlotID}}},
  252. {RecipeStepEnd, new VIDItem() {Name = RecipeStepEnd, Index = (int)EventName.RecipeStepEnd, LinkableVid = new[] {(int)DataVariables.DataName.RecipeID,(int)DataVariables.DataName.PortID,(int)DataVariables.DataName.StationName, (int)DataVariables.DataName.RecipeStepNumber, (int)DataVariables.DataName.SlotID}}},
  253. {RecipeFailed, new VIDItem() {Name = RecipeFailed, Index = (int)EventName.RecipeFailed, LinkableVid = new[] {(int)DataVariables.DataName.RecipeID,(int)DataVariables.DataName.PortID,(int)DataVariables.DataName.StationName,(int)DataVariables.DataName.SlotID}}},
  254. {ChargeStart, new VIDItem() {Name = ChargeStart, Index = (int)EventName.ChargeStart, LinkableVid = new[] {(int)DataVariables.DataName.PRJobID, (int)DataVariables.DataName.Clock}}},
  255. {ChargeEnd, new VIDItem() {Name = ChargeEnd, Index = (int)EventName.ChargeEnd, LinkableVid = new[] {(int)DataVariables.DataName.PRJobID, (int)DataVariables.DataName.Clock, (int)DataVariables.DataName.BoatSlotMapList}}},
  256. {DischargeStart, new VIDItem() {Name = DischargeStart, Index = (int)EventName.DischargeStart, LinkableVid = new[] {(int)DataVariables.DataName.PRJobID, (int)DataVariables.DataName.Clock, (int)DataVariables.DataName.BoatSlotMapList}}},
  257. {DischargeEnd, new VIDItem() {Name = DischargeEnd, Index = (int)EventName.DischargeEnd, LinkableVid = new[] {(int)DataVariables.DataName.PRJobID, (int)DataVariables.DataName.Clock}}},
  258. {BatchLocOccupied, new VIDItem() {Name = BatchLocOccupied, Index = (int)EventName.BatchLocOccupied, LinkableVid = new[] {(int)DataVariables.DataName.CJID, (int)DataVariables.DataName.PRJobID, (int)DataVariables.DataName.SlotMapList, (int)DataVariables.DataName.Clock}}},
  259. {BatchLocUnOccupied, new VIDItem() {Name = BatchLocUnOccupied, Index = (int)EventName.BatchLocUnOccupied, LinkableVid = new[] {(int)DataVariables.DataName.CJID, (int)DataVariables.DataName.PRJobID, (int)DataVariables.DataName.SlotMapList, (int)DataVariables.DataName.Clock}}},
  260. {SideDummyStateAlarm, new VIDItem() {Name = SideDummyStateAlarm, Index = (int)EventName.SideDummyStateAlarm, LinkableVid = new[] {(int)DataVariables.DataName.CarrierID}}},
  261. {ExtraDummyStateAlarm, new VIDItem() {Name = ExtraDummyStateAlarm, Index = (int)EventName.ExtraDummyStateAlarm, LinkableVid = new[] {(int)DataVariables.DataName.CarrierID}}},
  262. {SideDummyStateWarning, new VIDItem() {Name = SideDummyStateWarning, Index = (int)EventName.SideDummyStateWarning, LinkableVid = new[] {(int)DataVariables.DataName.CarrierID}}},
  263. {ExtraDummyStateWarning, new VIDItem() {Name = ExtraDummyStateWarning, Index = (int)EventName.ExtraDummyStateWarning, LinkableVid = new[] {(int)DataVariables.DataName.CarrierID}}},
  264. {CarrierInStart, new VIDItem() {Name = CarrierInStart, Index = (int)EventName.CarrierInStart, LinkableVid = new[] {(int)DataVariables.DataName.PortID, (int)DataVariables.DataName.CarrierID, (int)DataVariables.DataName.Usage, (int)DataVariables.DataName.BufferCapacitiyList, (int)DataVariables.DataName.BufferMaterialInfo, (int)DataVariables.DataName.Clock}}},
  265. {CarrierInEnd, new VIDItem() {Name = CarrierInEnd, Index = (int)EventName.CarrierInEnd, LinkableVid = new[] {(int)DataVariables.DataName.PortID, (int)DataVariables.DataName.CarrierID, (int)DataVariables.DataName.Usage, (int)DataVariables.DataName.BufferCapacitiyList, (int)DataVariables.DataName.BufferMaterialInfo, (int)DataVariables.DataName.Clock}}},
  266. {CarrierOutStart, new VIDItem() {Name = CarrierOutStart, Index = (int)EventName.CarrierOutStart, LinkableVid = new[] {(int)DataVariables.DataName.PortID, (int)DataVariables.DataName.CarrierID, (int)DataVariables.DataName.Usage, (int)DataVariables.DataName.BufferCapacitiyList, (int)DataVariables.DataName.BufferMaterialInfo, (int)DataVariables.DataName.Clock}}},
  267. {CarrierOutEnd, new VIDItem() {Name = CarrierOutEnd, Index = (int)EventName.CarrierOutEnd, LinkableVid = new[] {(int)DataVariables.DataName.PortID, (int)DataVariables.DataName.CarrierID,
  268. (int)DataVariables.DataName.Usage,
  269. (int)DataVariables.DataName.BufferCapacitiyList,
  270. (int)DataVariables.DataName.BufferMaterialInfo,
  271. (int)DataVariables.DataName.PPIDList,
  272. (int)DataVariables.DataName.BatchLocID,
  273. (int)DataVariables.DataName.BoatID,
  274. (int)DataVariables.DataName.WaferIDList,
  275. (int)DataVariables.DataName.PrdVariableList,
  276. (int)DataVariables.DataName.CarrierIDList,
  277. (int)DataVariables.DataName.ProcessCarrierIDList,
  278. (int)DataVariables.DataName.EPTState,
  279. (int)DataVariables.DataName.PPStepChange,
  280. (int)DataVariables.DataName.LotID,
  281. (int)DataVariables.DataName.PPChangeName,
  282. (int)DataVariables.DataName.PPChangeStatus,
  283. (int)DataVariables.DataName.CJState,
  284. (int)DataVariables.DataName.AlarmID,
  285. (int)DataVariables.DataName.EventName,
  286. }}},
  287. {AlarmConditionTriggerReset, new VIDItem() {Name = AlarmConditionTriggerReset, Index = (int)EventName.AlarmConditionTriggerReset, LinkableVid = new[] {(int)DataVariables.DataName.RecipeID,(int)DataVariables.DataName.RecipeStepNumber,(int)DataVariables.DataName.RecipeName}}},
  288. {AlarmConditionTriggerEnd, new VIDItem() {Name = AlarmConditionTriggerEnd, Index = (int)EventName.AlarmConditionTriggerEnd, LinkableVid = new[] {(int)DataVariables.DataName.RecipeID,(int)DataVariables.DataName.RecipeStepNumber}}},
  289. {AlarmConditionTriggerHold, new VIDItem() {Name = AlarmConditionTriggerHold, Index = (int)EventName.AlarmConditionTriggerHold, LinkableVid = new[] {(int)DataVariables.DataName.RecipeID,(int)DataVariables.DataName.RecipeStepNumber}}},
  290. {AlarmConditionTriggerJumpStep, new VIDItem() {Name = AlarmConditionTriggerJumpStep, Index = (int)EventName.AlarmConditionTriggerJumpStep, LinkableVid = new[] {(int)DataVariables.DataName.RecipeID,(int)DataVariables.DataName.RecipeStepNumber,(int)DataVariables.DataName.StepId}}},
  291. {AlarmConditionTriggerCallAlarmRecipe, new VIDItem() {Name = AlarmConditionTriggerCallAlarmRecipe, Index = (int)EventName.AlarmConditionTriggerCallAlarmRecipe, LinkableVid = new[] {(int)DataVariables.DataName.RecipeID,(int)DataVariables.DataName.RecipeStepNumber,(int)DataVariables.DataName.RecipeName}}},
  292. {AlarmConditionTriggerCallAbortRecipe, new VIDItem() {Name = AlarmConditionTriggerCallAbortRecipe, Index = (int)EventName.AlarmConditionTriggerCallAbortRecipe, LinkableVid = new[] {(int)DataVariables.DataName.RecipeID,(int)DataVariables.DataName.RecipeStepNumber,(int)DataVariables.DataName.RecipeName}}},
  293. {LeakCheckTriggerReset, new VIDItem() {Name = LeakCheckTriggerReset, Index = (int)EventName.LeakCheckTriggerReset, LinkableVid = new[] {(int)DataVariables.DataName.RecipeID,(int)DataVariables.DataName.RecipeStepNumber,(int)DataVariables.DataName.RecipeName}}},
  294. {LeakCheckTriggerEnd, new VIDItem() {Name = LeakCheckTriggerEnd, Index = (int)EventName.LeakCheckTriggerEnd, LinkableVid = new[] {(int)DataVariables.DataName.RecipeID,(int)DataVariables.DataName.RecipeStepNumber}}},
  295. {LeakCheckTriggerHold, new VIDItem() {Name = LeakCheckTriggerHold, Index = (int)EventName.LeakCheckTriggerHold, LinkableVid = new[] {(int)DataVariables.DataName.RecipeID,(int)DataVariables.DataName.RecipeStepNumber}}},
  296. {LeakCheckTriggerJumpStep, new VIDItem() {Name = LeakCheckTriggerJumpStep, Index = (int)EventName.LeakCheckTriggerJumpStep, LinkableVid = new[] {(int)DataVariables.DataName.RecipeID,(int)DataVariables.DataName.RecipeStepNumber,(int)DataVariables.DataName.StepId}}},
  297. {LeakCheckTriggerCallAlarmRecipe, new VIDItem() {Name = LeakCheckTriggerCallAlarmRecipe, Index = (int)EventName.LeakCheckTriggerCallAlarmRecipe, LinkableVid = new[] {(int)DataVariables.DataName.RecipeID,(int)DataVariables.DataName.RecipeStepNumber,(int)DataVariables.DataName.RecipeName}}},
  298. {LeakCheckTriggerCallAbortRecipe, new VIDItem() {Name = LeakCheckTriggerCallAbortRecipe, Index = (int)EventName.LeakCheckTriggerCallAbortRecipe, LinkableVid = new[] {(int)DataVariables.DataName.RecipeID,(int)DataVariables.DataName.RecipeStepNumber,(int)DataVariables.DataName.RecipeName}}},
  299. {ManualTriggerRecipeHold, new VIDItem() {Name = ManualTriggerRecipeHold, Index = (int)EventName.ManualTriggerRecipeHold, LinkableVid = new[] {(int)DataVariables.DataName.RecipeID,(int)DataVariables.DataName.RecipeStepNumber}}},
  300. {ManualTriggerRecipeRelease, new VIDItem() {Name = ManualTriggerRecipeRelease, Index = (int)EventName.ManualTriggerRecipeRelease, LinkableVid = new[] {(int)DataVariables.DataName.RecipeID,(int)DataVariables.DataName.RecipeStepNumber}}},
  301. {ManualTriggerRecipeSkip, new VIDItem() {Name = ManualTriggerRecipeSkip, Index = (int)EventName.ManualTriggerRecipeSkip, LinkableVid = new[] {(int)DataVariables.DataName.RecipeID,(int)DataVariables.DataName.RecipeStepNumber}}},
  302. {ManualTriggerRecipeJump, new VIDItem() {Name = ManualTriggerRecipeJump, Index = (int)EventName.ManualTriggerRecipeJump, LinkableVid = new[] {(int)DataVariables.DataName.RecipeID,(int)DataVariables.DataName.RecipeStepNumber,(int)DataVariables.DataName.StepId}}},
  303. {ManualTriggerRecipeAbort, new VIDItem() {Name = ManualTriggerRecipeAbort, Index = (int)EventName.ManualTriggerRecipeAbort, LinkableVid = new[] {(int)DataVariables.DataName.RecipeID,(int)DataVariables.DataName.RecipeStepNumber,(int)DataVariables.DataName.RecipeName}}},
  304. {RecipeTriggerReset, new VIDItem() {Name = RecipeTriggerReset, Index = (int)EventName.RecipeTriggerReset, LinkableVid = new[] {(int)DataVariables.DataName.RecipeID,(int)DataVariables.DataName.RecipeStepNumber,(int)DataVariables.DataName.RecipeName}}},
  305. {RecipeTriggerEnd, new VIDItem() {Name = RecipeTriggerEnd, Index = (int)EventName.RecipeTriggerEnd, LinkableVid = new[] {(int)DataVariables.DataName.RecipeID,(int)DataVariables.DataName.RecipeStepNumber}}},
  306. {RecipeTriggerHold, new VIDItem() {Name = RecipeTriggerHold, Index = (int)EventName.RecipeTriggerHold, LinkableVid = new[] {(int)DataVariables.DataName.RecipeID,(int)DataVariables.DataName.RecipeStepNumber}}},
  307. {RecipeTriggerLeakCheck, new VIDItem() {Name = RecipeTriggerLeakCheck, Index = (int)EventName.RecipeTriggerLeakCheck, LinkableVid = new[] {(int)DataVariables.DataName.RecipeID,(int)DataVariables.DataName.RecipeStepNumber}}},
  308. {RecipeTriggerJumpStep, new VIDItem() {Name = RecipeTriggerJumpStep, Index = (int)EventName.RecipeTriggerJumpStep, LinkableVid = new[] {(int)DataVariables.DataName.RecipeID,(int)DataVariables.DataName.RecipeStepNumber,(int)DataVariables.DataName.StepId}}},
  309. {RecipeTriggerCallSubRecipe, new VIDItem() {Name = RecipeTriggerCallSubRecipe, Index = (int)EventName.RecipeTriggerCallSubRecipe, LinkableVid = new[] {(int)DataVariables.DataName.RecipeID,(int)DataVariables.DataName.RecipeStepNumber,(int)DataVariables.DataName.RecipeName}}},
  310. {RecipeAbnormalEnd, new VIDItem() {Name = RecipeAbnormalEnd, Index = (int)EventName.RecipeAbnormalEnd, LinkableVid = new[] { (int)DataVariables.DataName.RecipeID, (int)DataVariables.DataName.PortID, (int)DataVariables.DataName.StationName, (int)DataVariables.DataName.SlotID, (int)DataVariables.DataName.ProcessWaferIdList, (int)DataVariables.DataName.ProcessCarrierIDList, (int)DataVariables.DataName.ProcessLotIdList, }}},
  311. {RecipeCoolingStart, new VIDItem() {Name = RecipeCoolingStart, Index = (int)EventName.RecipeCoolingStart, LinkableVid = new[] { (int)DataVariables.DataName.RecipeID,(int)DataVariables.DataName.StationName,(int)DataVariables.DataName.PRJobID}}},
  312. {RecipeCoolingEnd, new VIDItem() {Name = RecipeCoolingEnd, Index = (int)EventName.RecipeCoolingEnd, LinkableVid = new[] { (int)DataVariables.DataName.RecipeID, (int)DataVariables.DataName.StationName,(int)DataVariables.DataName.PRJobID}}},
  313. };
  314. }
  315. }