| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304 | using System;using System.Collections.Generic;using System.Linq;using System.Text;using System.Threading.Tasks;namespace MECF.Framework.Common.FAServices{    /// <summary>    /// Gem200的事件    /// </summary>    public static class UniversalEvents    {        public const string EquipmentOFFLINE = "EquipmentOFFLINE";        public const string HOSTOFFLINE = "HOSTOFFLINE";        public const string ControlStateLOCAL = "ControlStateLOCAL";        public const string ControlStateREMOTE = "ControlStateREMOTE";        public const string ProcessingStarted = "ProcessingStarted";        public const string ProcessingCompleted = "ProcessingCompleted";        public const string ProcessingStopped = "ProcessingStopped";        public const string ProcessingStateChanged = "ProcessingStateChanged";        public const string EquipmentConstantChanged = "EquipmentConstantChanged";        public const string ProcessProgramChanged = "ProcessProgramChanged";        public const string ProcessProgramSelected = "ProcessProgramSelected";        public const string ProcessProgramCreated = "ProcessProgramCreated";        public const string SpoolingActivated = "SpoolingActivated";        public const string SpoolingDeactivated = "SpoolingDeactivated";        public const string SpoolingFailed = "SpoolingFailed";        public const string EquipmentChangeToAuto = "EquipmentChangeToAuto";        public const string EquipmentChangeToManual = "EquipmentChangeToManual";        public const string WAFER_LEFT_POSITION = "WAFER_LEFT_POSITION";        public const string WAFER_ARRIVE_POSITION = "WAFER_ARRIVE_POSITION";        public const string CARRIER_ARRIVED = "CARRIER_ARRIVED";        public const string CARRIER_REMOVED = "CARRIER_REMOVED";        public const string CARRIER_ID_READ = "CARRIER_ID_READ";        public const string CARRIER_ID_READ_FAILED = "CARRIER_ID_READ_FAILED";        public const string CARRIER_ID_WRITE = "CARRIER_ID_WRITE";        public const string CARRIER_ID_WRITE_FAILED = "CARRIER_ID_WRITE_FAILED";        public const string CARRIER_LOADED = "CARRIER_LOADED";        public const string CARRIER_UNLOADED = "CARRIER_UNLOADED";        public const string SLOT_MAP_AVAILABLE = "SLOT_MAP_AVAILABLE";        public const string PortReadyToLoad = "PortReadyToLoad";        public const string PortReadyToUnload = "PortReadyToUnload";        public const string CarrierProcessStart = "CarrierProcessStart";        public const string CarrierProcessComplete = "CarrierProcessComplete";        public const string PortJobStarted = "PortJobStarted";        public const string PortJobStopped = "PortJobStopped";        public const string PortJobPaused = "PortJobPaused";        public const string PortJobResumed = "PortJobResumed";        public const string PortJobAborted = "PortJobAborted";        public const string PortJobFinished = "PortJobFinished";        public const string PortJobFailed = "PortJobFailed";        public const string PortMapFailed = "PortMapFailed";        public const string PortPPSelected = "PortPPSelected";        public const string PortPPSelectFailed = "PortPPSelectFailed";        public const string RecipeStart = "RecipeStart";        public const string RecipeComplete = "RecipeComplete";        public const string RecipeStepStart = "RecipeStepStart";        public const string RecipeStepEnd = "RecipeStepEnd";        public const string RecipeFailed = "RecipeFailed";        public const string RecipeStop = "RecipeStop";        public const string RecipeHold = "RecipeHold";        public const string RecipeRelease = "RecipeRelease";        public const string RecipeJumpStep = "RecipeJumpStep";        public const string RecipeStepSkip = "RecipeStepSkip";        public const string RecipeJumpEnd = "RecipeJumpEnd";        public const string RecipeAbort = "RecipeAbort";        public const string CallAlarmRecipe = "CallAlarmRecipe";        public const string CallAbortRecipe = "CallAbortRecipe";        public const string RunResetRecipe = "RunResetRecipe";        public const string CarrierInEnd = "CarrierInEnd";        public const string CarrierInStart = "CarrierInStart";        public const string CarrierOutStart = "CarrierOutStart";        public const string CarrierOutEnd = "CarrierOutEnd";        public const string ChargeStart = "ChargeStart";        public const string ChargeEnd = "ChargeEnd";        public const string DischargeStart = "DischargeStart";        public const string DischargeEnd = "DischargeEnd";        public const string BatchLocOccupied = "BatchLocOccupied";        public const string BatchLocUnOccupied = "BatchLocUnOccupied";        public const string SideDummyStateAlarm = "SideDummyStateAlarm";        public const string ExtraDummyStateAlarm = "ExtraDummyStateAlarm";        public const string SideDummyStateWarning = "SideDummyStateWarning";        public const string ExtraDummyStateWarning = "ExtraDummyStateWarning";        /// <summary>        /// 定义Gem200事件的ID        /// </summary>        public enum EventName        {            EquipmentOFFLINE = 1,            ControlStateLOCAL = 2,            ControlStateREMOTE = 3,            ProcessingStarted = 4,            ProcessingCompleted = 5,            ProcessingStopped = 6,            ProcessingStateChanged = 7,            EquipmentConstantChanged = 8,            ProcessProgramChanged = 9,            ProcessProgramSelected = 10,            ProcessProgramCreated = 14,            SpoolingActivated = 11,            SpoolingDeactivated = 12,            SpoolingFailed = 13,            HOSTOFFLINE = 20,            EquipmentChangeToAuto = 501,            EquipmentChangeToManual = 502,            WAFER_LEFT_POSITION = 503,            WAFER_ARRIVE_POSITION = 504,            CARRIER_ARRIVED = 1000,            CARRIER_REMOVED = 1001,            CARRIER_ID_READ = 1002,            CARRIER_ID_READ_FAILED = 1003,            CARRIER_ID_WRITE = 1004,            CARRIER_ID_WRITE_FAILED = 1005,            CARRIER_LOADED = 1006,            CARRIER_UNLOADED = 1007,            SLOT_MAP_AVAILABLE = 1008,            PortReadyToLoad = 1010,            PortReadyToUnload = 1011,            CarrierProcessStart = 1020,            CarrierProcessComplete = 1021,            PortJobStarted = 1022,            PortJobStopped = 1023,            PortJobPaused = 1024,            PortJobResumed = 1025,            PortJobAborted = 1026,            PortJobFinished = 1027,            PortJobFailed = 1028,            PortMapFailed = 1029,            PortPPSelected = 1030,            PortPPSelectFailed = 1031,            RecipeStart = 2000,            RecipeComplete = 2001,            RecipeStepStart = 2002,            RecipeStepEnd = 2003,            RecipeFailed = 2004,            ChargeStart = 2010,            ChargeEnd = 2011,            DischargeStart = 2012,            DischargeEnd = 2013,            BatchLocOccupied = 2020,            BatchLocUnOccupied = 2021,            SideDummyStateAlarm = 2022,            ExtraDummyStateAlarm = 2023,            CarrierInEnd = 2024,            CarrierInStart = 2026,            CarrierOutStart = 2025,            CarrierOutEnd = 2027,            SideDummyStateWarning = 2028,            ExtraDummyStateWarning = 2029,            RecipeHold = 2040,            RecipeRelease = 2041,            RecipeStop = 2042,            RecipeJumpStep = 2043,            RecipeAbort = 2044,            RecipeSkip = 2045,            RecipeJumpEnd = 2046,            CallAlarmRecipe = 2047,            CallAbortRecipe = 2048,            RunResetRecipe = 2049,            RecipeStepSkip = 2050,        }        /// <summary>        /// 定义Gem200的事件所Link的VIDs        /// </summary>        public static Dictionary<string, VIDItem> UniversalEventsDictionary = new Dictionary<string, VIDItem>()        {            {EquipmentOFFLINE, new VIDItem() {Name = EquipmentOFFLINE, Index = (int)EventName.EquipmentOFFLINE, LinkableVid = new[] {3,4}}},            {HOSTOFFLINE, new VIDItem() {Name = HOSTOFFLINE, Index = (int)EventName.HOSTOFFLINE, LinkableVid = new[] {3,4}}},            {ControlStateLOCAL, new VIDItem() {Name = ControlStateLOCAL, Index = (int)EventName.ControlStateLOCAL, LinkableVid = new[] {3,4}}},            {ControlStateREMOTE, new VIDItem() {Name = ControlStateREMOTE, Index = (int)EventName.ControlStateREMOTE, LinkableVid = new[] {3,4}}},            {ProcessingStarted, new VIDItem() {Name = ProcessingStarted, Index = (int)EventName.ProcessingStarted, LinkableVid = new[] {3,7}}},            {ProcessingCompleted, new VIDItem() {Name = ProcessingCompleted, Index = (int)EventName.ProcessingCompleted, LinkableVid = new[] {3,7}}},            {ProcessingStopped, new VIDItem() {Name = ProcessingStopped, Index = (int)EventName.ProcessingStopped, LinkableVid = new[] {3,7}}},            {ProcessingStateChanged, new VIDItem() {Name = ProcessingStateChanged, Index = (int)EventName.ProcessingStateChanged, LinkableVid = new[] {3,8,7}}},            {EquipmentConstantChanged, new VIDItem() {Name = EquipmentConstantChanged, Index = (int)EventName.EquipmentConstantChanged, LinkableVid = new[] {(int)DataVariables.DataName.ECChangedID}}},            {ProcessProgramChanged, new VIDItem() {Name = ProcessProgramChanged, Index = (int)EventName.ProcessProgramChanged, LinkableVid = new[] {(int)DataVariables.DataName.SequenceID,(int)DataVariables.DataName.PPChangeName, (int)DataVariables.DataName.PPChangeStatus}}},            {ProcessProgramSelected, new VIDItem() {Name = ProcessProgramSelected, Index = (int)EventName.ProcessProgramSelected, LinkableVid = new[] {(int)DataVariables.DataName.SequenceID}}},            {ProcessProgramCreated, new VIDItem() {Name = ProcessProgramCreated, Index = (int)EventName.ProcessProgramCreated, LinkableVid = new[] {(int)DataVariables.DataName.SequenceID}}},            {SpoolingActivated, new VIDItem() {Name = SpoolingActivated, Index = (int)EventName.SpoolingActivated}},            {SpoolingDeactivated, new VIDItem() {Name = SpoolingDeactivated, Index = (int)EventName.SpoolingDeactivated}},            {SpoolingFailed, new VIDItem() {Name = SpoolingFailed, Index = (int)EventName.SpoolingFailed}},            {EquipmentChangeToAuto, new VIDItem() {Name = EquipmentChangeToAuto, Index = (int)EventName.EquipmentChangeToAuto}},            {EquipmentChangeToManual, new VIDItem() {Name = EquipmentChangeToManual, Index = (int)EventName.EquipmentChangeToManual}},            {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}}},            {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}}},            {CARRIER_ARRIVED, new VIDItem() {Name = CARRIER_ARRIVED, Index = (int)EventName.CARRIER_ARRIVED, LinkableVid = new[] {(int)DataVariables.DataName.PortID,3}}},            {CARRIER_REMOVED, new VIDItem() {Name = CARRIER_REMOVED, Index = (int)EventName.CARRIER_REMOVED, LinkableVid = new[] {(int)DataVariables.DataName.CarrierID, (int)DataVariables.DataName.PortID, 3 }}},            { 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 }}},            { 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 }}},            { 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 }}},            { 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 }}},            { CARRIER_LOADED, new VIDItem() {Name = CARRIER_LOADED, Index = (int)EventName.CARRIER_LOADED, LinkableVid = new[] {(int)DataVariables.DataName.CarrierID, (int)DataVariables.DataName.PortID, 3 }}},            { CARRIER_UNLOADED, new VIDItem() {Name = CARRIER_UNLOADED, Index = (int)EventName.CARRIER_UNLOADED, LinkableVid = new[] {(int)DataVariables.DataName.CarrierID, (int)DataVariables.DataName.PortID, 3 }}},            { 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 }}},            { PortReadyToLoad, new VIDItem() {Name = PortReadyToLoad, Index = (int)EventName.PortReadyToLoad, LinkableVid = new[] {(int)DataVariables.DataName.PortID, 3 }}},            { PortReadyToUnload, new VIDItem() {Name = PortReadyToUnload, Index = (int)EventName.PortReadyToUnload, LinkableVid = new[] {(int)DataVariables.DataName.PortID, 3 }}},            { CarrierProcessStart, new VIDItem() {Name = CarrierProcessStart, Index = (int)EventName.CarrierProcessStart, LinkableVid = new[] {(int)DataVariables.DataName.CarrierID,(int)DataVariables.DataName.PortID,3}}},            {CarrierProcessComplete, new VIDItem() {Name = CarrierProcessComplete, Index = (int)EventName.CarrierProcessComplete, LinkableVid = new[] {(int)DataVariables.DataName.CarrierID,(int)DataVariables.DataName.PortID,3}}},            {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}}},            {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}}},            {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}}},            {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}}},            {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}}},            {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}}},            {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}}},            {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}}},            {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}}},            {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}}},            {RecipeStart, new VIDItem() {Name = RecipeStart, Index = (int)EventName.RecipeStart,                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,                }}},            {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}}},            {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}}},            {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}}},            {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}}},                    {ChargeStart, new VIDItem() {Name = ChargeStart, Index = (int)EventName.ChargeStart,  LinkableVid = new[] {(int)DataVariables.DataName.PRJobID, (int)DataVariables.DataName.Clock}}},            {ChargeEnd, new VIDItem() {Name = ChargeEnd, Index = (int)EventName.ChargeEnd,  LinkableVid = new[] {(int)DataVariables.DataName.PRJobID, (int)DataVariables.DataName.Clock, (int)DataVariables.DataName.BoatSlotMapList}}},            {DischargeStart, new VIDItem() {Name = DischargeStart, Index = (int)EventName.DischargeStart,  LinkableVid = new[] {(int)DataVariables.DataName.PRJobID, (int)DataVariables.DataName.Clock, (int)DataVariables.DataName.BoatSlotMapList}}},            {DischargeEnd, new VIDItem() {Name = DischargeEnd, Index = (int)EventName.DischargeEnd,  LinkableVid = new[] {(int)DataVariables.DataName.PRJobID, (int)DataVariables.DataName.Clock}}},            {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}}},            {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}}},            {SideDummyStateAlarm, new VIDItem() {Name = SideDummyStateAlarm, Index = (int)EventName.SideDummyStateAlarm,  LinkableVid = new[] {(int)DataVariables.DataName.CarrierID}}},            {ExtraDummyStateAlarm, new VIDItem() {Name = ExtraDummyStateAlarm, Index = (int)EventName.ExtraDummyStateAlarm,  LinkableVid = new[] {(int)DataVariables.DataName.CarrierID}}},            {SideDummyStateWarning, new VIDItem() {Name = SideDummyStateWarning, Index = (int)EventName.SideDummyStateWarning,  LinkableVid = new[] {(int)DataVariables.DataName.CarrierID}}},            {ExtraDummyStateWarning, new VIDItem() {Name = ExtraDummyStateWarning, Index = (int)EventName.ExtraDummyStateWarning,  LinkableVid = new[] {(int)DataVariables.DataName.CarrierID}}},            {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}}},            {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}}},            {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}}},            {CarrierOutEnd, new VIDItem() {Name = CarrierOutEnd, Index = (int)EventName.CarrierOutEnd,  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.PPIDList,                (int)DataVariables.DataName.BatchLocID,                (int)DataVariables.DataName.BoatID,                (int)DataVariables.DataName.WaferIDList,                (int)DataVariables.DataName.PrdVariableList,                (int)DataVariables.DataName.CarrierIDList,                (int)DataVariables.DataName.ProcessCarrierIDList,                (int)DataVariables.DataName.EPTState,                (int)DataVariables.DataName.PPStepChange,                (int)DataVariables.DataName.LotID,                (int)DataVariables.DataName.PPChangeName,                (int)DataVariables.DataName.PPChangeStatus,                (int)DataVariables.DataName.CJState,                (int)DataVariables.DataName.AlarmID,                (int)DataVariables.DataName.EventName,            }}},            {RecipeHold, new VIDItem() {Name = RecipeHold, Index = (int)EventName.RecipeHold,  LinkableVid = new[] {(int)DataVariables.DataName.RecipeID,(int)DataVariables.DataName.RecipeStepNumber}}},            {RecipeStop, new VIDItem() {Name = RecipeStop, Index = (int)EventName.RecipeStop,  LinkableVid = new[] {(int)DataVariables.DataName.RecipeID,(int)DataVariables.DataName.NewRecipeStepNumber}}},            {RecipeRelease, new VIDItem() {Name = RecipeRelease, Index = (int)EventName.RecipeRelease,  LinkableVid = new[] {(int)DataVariables.DataName.RecipeID,(int)DataVariables.DataName.NewRecipeStepNumber}}},            {RecipeStepSkip, new VIDItem() {Name = RecipeStepSkip, Index = (int)EventName.RecipeStepSkip,  LinkableVid = new[] {(int)DataVariables.DataName.RecipeID,(int)DataVariables.DataName.NewRecipeStepNumber}}},            {RecipeJumpStep, new VIDItem() {Name = RecipeJumpStep, Index = (int)EventName.RecipeJumpStep,  LinkableVid = new[] {(int)DataVariables.DataName.RecipeID,(int)DataVariables.DataName.NewRecipeStepNumber, (int)DataVariables.DataName.StepId}}},            {RecipeAbort, new VIDItem() {Name = RecipeAbort, Index = (int)EventName.RecipeAbort,  LinkableVid = new[] {(int)DataVariables.DataName.RecipeID,(int)DataVariables.DataName.NewRecipeStepNumber}}},            {RecipeJumpEnd, new VIDItem() {Name = RecipeJumpEnd, Index = (int)EventName.RecipeJumpEnd,  LinkableVid = new[] {(int)DataVariables.DataName.RecipeID,(int)DataVariables.DataName.NewRecipeStepNumber, (int)DataVariables.DataName.StepId}}},            {CallAlarmRecipe, new VIDItem() {Name = CallAlarmRecipe, Index = (int)EventName.CallAlarmRecipe,  LinkableVid = new[] {(int)DataVariables.DataName.RecipeID,(int)DataVariables.DataName.NewRecipeStepNumber, (int)DataVariables.DataName.CallRecipeID}}},            {CallAbortRecipe, new VIDItem() {Name = CallAbortRecipe, Index = (int)EventName.CallAbortRecipe,  LinkableVid = new[] {(int)DataVariables.DataName.RecipeID,(int)DataVariables.DataName.NewRecipeStepNumber, (int)DataVariables.DataName.CallRecipeID}}},            {RunResetRecipe, new VIDItem() {Name = RunResetRecipe, Index = (int)EventName.RunResetRecipe,  LinkableVid = new[] {(int)DataVariables.DataName.RecipeID,(int)DataVariables.DataName.NewRecipeStepNumber, (int)DataVariables.DataName.CallRecipeID }}},        };    }}
 |