| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527 | 
							- using Aitex.Common.Util;
 
- using Aitex.Core.RT.DataCenter;
 
- using Aitex.Core.RT.Event;
 
- using Aitex.Core.RT.OperationCenter;
 
- using System.Collections.Generic;
 
- using Aitex.Core.Common.DeviceData;
 
- using Aitex.Core.RT.Device;
 
- using Aitex.Core.RT.SCCore;
 
- using Aitex.Core.Util;
 
- using Aitex.Sorter.Common;
 
- using MECF.Framework.Common.Equipment;
 
- //using Venus_RT.Device.YASKAWA;
 
- //using Venus_RT.Devices.EFEM;
 
- using Venus_RT.FAs;
 
- using Venus_RT.Modules;
 
- using Aitex.Core.RT.Log;
 
- namespace Venus_RT.HostWrapper
 
- {
 
-     class FaManager : FaHost, IHostCallback
 
-     {
 
-         private const string PROCESS_START_INQUIRY = "PROCESS_START_INQUIRY";
 
-         private class DataName
 
-         {
 
-             public const string CommunicationStatus = "CommunicationStatus";
 
-             public const string ControlStatus = "ControlStatus";
 
-             public const string ControlSubStatus = "ControlSubStatus";
 
-             public const string SpoolingState = "SpoolingState";
 
-             public const string SpoolingActual = "SpoolingActual";
 
-             public const string SpoolingTotal = "SpoolingTotal";
 
-             public const string SpoolingFullTime = "SpoolingFullTime";
 
-             public const string SpoolingStartTime = "SpoolingStartTime";
 
-             public const string IsSpoolingEnable = "IsSpoolingEnable";
 
-         }
 
-         private Dictionary<string, ModuleName> _dicPortModule = new Dictionary<string, ModuleName>()
 
-         {
 
-             {"1", ModuleName.LP1},
 
-             {"2", ModuleName.LP2},
 
-             {"3", ModuleName.LP3},
 
-         };
 
-         public void Initialize()
 
-         {
 
-             base.Initialize(this, PathManager.GetCfgDir() + "ClusterGemModel.xml");
 
-             OP.Subscribe("System.FACommand", InvokeFaCommand);
 
-             DATA.Subscribe("System.CommunicationStatus", () => FaCommunicationState);
 
-             DATA.Subscribe("System.ControlStatus", () => FaControlState);
 
-             DATA.Subscribe("System.ControlSubStatus", () => FaControlSubState);
 
-             DATA.Subscribe("System.SpoolingState", () => SpoolingState);
 
-             DATA.Subscribe("System.SpoolingActual", () => SpoolingActual);
 
-             DATA.Subscribe("System.SpoolingTotal", () => SpoolingTotal);
 
-             DATA.Subscribe("System.SpoolingFullTime", () => SpoolingFullTime);
 
-             DATA.Subscribe("System.SpoolingStartTime", () => SpoolingStartTime);
 
-             DATA.Subscribe("System.IsSpoolingEnable", () => IsSpoolingEnable);
 
-             EV.Subscribe(new EventItem(PROCESS_START_INQUIRY));
 
-         }
 
-         private bool InvokeFaCommand(string arg1, object[] arg2)
 
-         {
 
-             LOG.Write(eEvent.INFO_FA, ModuleName.System, arg1 + ":" + arg2[0]);
 
-             Invoke(arg2[0].ToString(), null);
 
-             return true;
 
-         }
 
-         public string GetSvidValue(string svName)
 
-         {
 
-             switch (svName)
 
-             {
 
-                 case "PMA.RecipeProcessTime":
 
-                     svName = "PMA.RecipeTotalElapsedSeconds";
 
-                     break;
 
-                 case "PMB.RecipeProcessTime":
 
-                     svName = "PMB.RecipeTotalElapsedSeconds";
 
-                     break;
 
-                 //case "PMC.RecipeProcessTime":
 
-                 //    svName = "PMC.RecipeTotalElapsedSeconds";
 
-                 //    break;
 
-                 //case "PMD.RecipeProcessTime":
 
-                 //    svName = "PMD.RecipeTotalElapsedSeconds";
 
-                 //    break;
 
-             }
 
-             //if (svName == "PMA.RecipeProcessTime")
 
-             //    svName = "PMA.RecipeTotalElapsedSeconds";
 
-             //else if (svName == "PMB.RecipeProcessTime")
 
-             //    svName = "PMB.RecipeTotalElapsedSeconds";
 
-             object data = DATA.Poll(svName);
 
-             if (data != null)
 
-             {
 
-                 return data.ToString();
 
-             }
 
-             return "";
 
-         }
 
-         public List<string> GetListSvidValue(string svName)
 
-         {
 
-             List<string> result = new List<string>();
 
-             foreach (var VARIABLE in result)
 
-             {
 
-             }
 
-             return result;
 
-         }
 
-         public bool MapCassette(string portId, out string reason)
 
-         {
 
-             if (!_dicPortModule.ContainsKey(portId))
 
-             {
 
-                 reason = $"{portId} not valid";
 
-                 return false;
 
-             }
 
-             //var LPDevice = Singleton<RouteManager>.Instance.EFEM.EfemDevice[_dicPortModule[portId]] as Loadport;
 
-             //if (LPDevice==null)
 
-             //{
 
-             //    reason = $"{portId} not valid";
 
-             //    return false;
 
-             //}
 
-             //if (!LPDevice.HasCassette )
 
-             //{
 
-             //    reason = $"{portId} cassette not placed";
 
-             //    return false;
 
-             //}
 
-             //if (LPDevice.Protrusion)
 
-             //{
 
-             //    reason = $"{portId} cassette wafer protrude";
 
-             //    return false;
 
-             //}
 
-             //if (LPDevice.Status == DeviceState.Error)
 
-             //{
 
-             //    reason = $"{portId} port in error, need reset";
 
-             //    return false;
 
-             //}
 
-             if (SC.ContainsItem("EFEM.CheckSideDoorOnEAPMap") && SC.GetValue<bool>("EFEM.CheckSideDoorOnEAPMap"))
 
-             {
 
-                 //if (Singleton<RouteManager>.Instance.EFEM.EfemDevice.DoorSwitch != LidState.Close)
 
-                 {
 
-                     reason = $"EFEM side door not closed, can not map {portId}";
 
-                     return false;
 
-                 }
 
-             }
 
-             if (SC.ContainsItem("EFEM.CheckCassetteDoorOnEAPMap") &&
 
-                 SC.GetValue<bool>("EFEM.CheckCassetteDoorOnEAPMap"))
 
-             {
 
-                 //if (Singleton<RouteManager>.Instance.EFEM.EfemDevice.CassetteDoor != LidState.Close)
 
-                 {
 
-                     reason = $"Cassette door not closed, can not map {portId}";
 
-                     return false;
 
-                 }
 
-             }
 
-             OP.DoOperation($"{_dicPortModule[portId]}.Map");
 
-             reason = string.Empty;
 
-             return true;
 
-         }
 
-         public bool PPSelect(string portId, string jobId, string lotId, string[] slotSequence, out string reason)
 
-         {
 
-             if (!_dicPortModule.ContainsKey(portId))
 
-             {
 
-                 reason = $"{portId} not valid";
 
-                 return false;
 
-             }
 
-  
 
-             //if (!Singleton<RouteManager>.Instance.IsAutoMode)
 
-             //{
 
-             //    reason = $"System not in auto mode";
 
-             //    return false;
 
-             //}
 
-             Dictionary<string, object> param = new Dictionary<string, object>()
 
-             {
 
-                 {"JobId", jobId},
 
-                 {"LotId", lotId},
 
-                 {"Module", _dicPortModule[portId].ToString()},
 
-                 {"SlotSequence", slotSequence},
 
-                 {"AutoStart", false},
 
-             };
 
-             OP.DoOperation("System.CreateJob", param);
 
-             reason = string.Empty;
 
-             return true;
 
-         }
 
-         public bool StartJob(string jobId, out string reason)
 
-         {
 
-             var param = new object[] { jobId };
 
-             OP.DoOperation("System.StartJob", param);
 
-             reason = string.Empty;
 
-             return true;
 
-         }
 
-         public bool AbortJob(string jobId, out string reason)
 
-         {
 
-             var param = new object[] { jobId };
 
-             OP.DoOperation("System.AbortJob", param);
 
-             reason = string.Empty;
 
-             return true;
 
-         }
 
-         public bool PauseJob(string jobId, out string reason)
 
-         {
 
-             var param = new object[] { jobId };
 
-             OP.DoOperation("System.PauseJob", param);
 
-             reason = string.Empty;
 
-             return true;
 
-         }
 
-         public bool ResumeJob(string jobId, out string reason)
 
-         {
 
-             var param = new object[] { jobId };
 
-             OP.DoOperation("System.ResumeJob", param);
 
-             reason = string.Empty;
 
-             return true;
 
-         }
 
-         public bool StopJob(string jobId, out string reason)
 
-         {
 
-             var param = new object[] { jobId };
 
-             OP.DoOperation("System.StopJob", param);
 
-             reason = string.Empty;
 
-             return true;
 
-         }
 
-         public bool Load(string portId, out string reason)
 
-         {
 
-             if (!_dicPortModule.ContainsKey(portId))
 
-             {
 
-                 reason = $"{portId} not valid";
 
-                 return false;
 
-             }
 
-             //var LPDevice = Singleton<RouteManager>.Instance.EFEM.EfemDevice[_dicPortModule[portId]] as Loadport;
 
-             //if (LPDevice == null)
 
-             //{
 
-             //    reason = $"{portId} not valid";
 
-             //    return false;
 
-             //}
 
-             //if (!LPDevice.HasCassette)
 
-             //{
 
-             //    reason = $"{portId} cassette not placed";
 
-             //    return false;
 
-             //}
 
-  
 
-             //if (LPDevice.Status == DeviceState.Error)
 
-             //{
 
-             //    reason = $"{portId} port in error, need reset";
 
-             //    return false;
 
-             //}
 
-             OP.DoOperation($"{_dicPortModule[portId]}.Load");
 
-             reason = string.Empty;
 
-             return true;
 
-         }
 
-         public bool Unload(string portId, out string reason)
 
-         {
 
-             if (!_dicPortModule.ContainsKey(portId))
 
-             {
 
-                 reason = $"{portId} not valid";
 
-                 return false;
 
-             }
 
-             //var LPDevice = Singleton<RouteManager>.Instance.EFEM.EfemDevice[_dicPortModule[portId]] as Loadport;
 
-             //if (LPDevice == null)
 
-             //{
 
-             //    reason = $"{portId} not valid";
 
-             //    return false;
 
-             //}
 
-             //if (!LPDevice.HasCassette)
 
-             //{
 
-             //    reason = $"{portId} cassette not placed";
 
-             //    return false;
 
-             //}
 
-  
 
-             //if (LPDevice.Status == DeviceState.Error)
 
-             //{
 
-             //    reason = $"{portId} port in error, need reset";
 
-             //    return false;
 
-             //}
 
-             //if (SC.GetValue<bool>("EFEM.AutoUnlockAfterUnload") )
 
-             //{
 
-             //    OP.DoOperation($"{_dicPortModule[portId]}.Unload");
 
-             //}
 
-             //else
 
-             //{
 
-             //    OP.DoOperation($"{_dicPortModule[portId]}.Undock");
 
-             //}
 
-             
 
-             reason = string.Empty;
 
-             return true;
 
-         }
 
-         public bool Lock(string portId, out string reason)
 
-         {
 
-             if (!_dicPortModule.ContainsKey(portId))
 
-             {
 
-                 reason = $"{portId} not valid";
 
-                 return false;
 
-             }
 
-             //var LPDevice = Singleton<RouteManager>.Instance.EFEM.EfemDevice[_dicPortModule[portId]] as Loadport;
 
-             //if (LPDevice == null)
 
-             //{
 
-             //    reason = $"{portId} not valid";
 
-             //    return false;
 
-             //}
 
-             //if (!LPDevice.HasCassette)
 
-             //{
 
-             //    reason = $"{portId} cassette not placed";
 
-             //    return false;
 
-             //}
 
-  
 
-             //if (LPDevice.Status == DeviceState.Error)
 
-             //{
 
-             //    reason = $"{portId} port in error, need reset";
 
-             //    return false;
 
-             //}
 
-             OP.DoOperation($"{_dicPortModule[portId]}.Clamp");
 
-             reason = string.Empty;
 
-             return true;
 
-         }
 
-         public bool Unlock(string portId, out string reason)
 
-         {
 
-             if (!_dicPortModule.ContainsKey(portId))
 
-             {
 
-                 reason = $"{portId} not valid";
 
-                 return false;
 
-             }
 
-             //var LPDevice = Singleton<RouteManager>.Instance.EFEM.EfemDevice[_dicPortModule[portId]] as Loadport;
 
-             //if (LPDevice == null)
 
-             //{
 
-             //    reason = $"{portId} not valid";
 
-             //    return false;
 
-             //}
 
-             //if (!LPDevice.HasCassette)
 
-             //{
 
-             //    reason = $"{portId} cassette not placed";
 
-             //    return false;
 
-             //}
 
-  
 
-             //if (LPDevice.Status == DeviceState.Error)
 
-             //{
 
-             //    reason = $"{portId} port in error, need reset";
 
-             //    return false;
 
-             //}
 
-             OP.DoOperation($"{_dicPortModule[portId]}.Unclamp");
 
-             reason = string.Empty;
 
-             return true;
 
-         }
 
-         public bool ReadID(string portId, out string reason)
 
-         {
 
-             if (!_dicPortModule.ContainsKey(portId))
 
-             {
 
-                 reason = $"{portId} not valid";
 
-                 return false;
 
-             }
 
-             //var LPDevice = Singleton<RouteManager>.Instance.EFEM.EfemDevice[_dicPortModule[portId]] as Loadport;
 
-             //if (LPDevice == null)
 
-             //{
 
-             //    reason = $"{portId} not valid";
 
-             //    return false;
 
-             //}
 
-             //if (!LPDevice.HasCassette)
 
-             //{
 
-             //    reason = $"{portId} cassette not placed";
 
-             //    return false;
 
-             //}
 
-  
 
-             //if (LPDevice.Status == DeviceState.Error)
 
-             //{
 
-             //    reason = $"{portId} port in error, need reset";
 
-             //    return false;
 
-             //}
 
-             OP.DoOperation($"{_dicPortModule[portId]}.ReadCarrierId");
 
-             reason = string.Empty;
 
-             return true;
 
-         }
 
-         public bool ReadTag(string portId, out string reason)
 
-         {
 
-             if (!_dicPortModule.ContainsKey(portId))
 
-             {
 
-                 reason = $"{portId} not valid";
 
-                 return false;
 
-             }
 
-             //var LPDevice = Singleton<RouteManager>.Instance.EFEM.EfemDevice[_dicPortModule[portId]] as Loadport;
 
-             //if (LPDevice == null)
 
-             //{
 
-             //    reason = $"{portId} not valid";
 
-             //    return false;
 
-             //}
 
-             //if (!LPDevice.HasCassette)
 
-             //{
 
-             //    reason = $"{portId} cassette not placed";
 
-             //    return false;
 
-             //}
 
-             //if (LPDevice.Status == DeviceState.Error)
 
-             //{
 
-             //    reason = $"{portId} port in error, need reset";
 
-             //    return false;
 
-             //}
 
-             OP.DoOperation($"{_dicPortModule[portId]}.ReadTagData");
 
-             reason = string.Empty;
 
-             return true;
 
-         }
 
-         public bool WriteID(string portId, string carrierID, out string reason)
 
-         {
 
-             if (!_dicPortModule.ContainsKey(portId))
 
-             {
 
-                 reason = $"{portId} not valid";
 
-                 return false;
 
-             }
 
-             //var LPDevice = Singleton<RouteManager>.Instance.EFEM.EfemDevice[_dicPortModule[portId]] as Loadport;
 
-             //if (LPDevice == null)
 
-             //{
 
-             //    reason = $"{portId} not valid";
 
-             //    return false;
 
-             //}
 
-             //if (!LPDevice.HasCassette)
 
-             //{
 
-             //    reason = $"{portId} cassette not placed";
 
-             //    return false;
 
-             //}
 
-             //if (LPDevice.Status == DeviceState.Error)
 
-             //{
 
-             //    reason = $"{portId} port in error, need reset";
 
-             //    return false;
 
-             //}
 
-             OP.DoOperation($"{_dicPortModule[portId]}.WriteCarrierID", carrierID);
 
-             reason = string.Empty;
 
-             return true;
 
-         }
 
-         public bool WriteTag(string portId, string tagData, out string reason)
 
-         {
 
-             if (!_dicPortModule.ContainsKey(portId))
 
-             {
 
-                 reason = $"{portId} not valid";
 
-                 return false;
 
-             }
 
-             //var LPDevice = Singleton<RouteManager>.Instance.EFEM.EfemDevice[_dicPortModule[portId]] as Loadport;
 
-             //if (LPDevice == null)
 
-             //{
 
-             //    reason = $"{portId} not valid";
 
-             //    return false;
 
-             //}
 
-             //if (!LPDevice.HasCassette)
 
-             //{
 
-             //    reason = $"{portId} cassette not placed";
 
-             //    return false;
 
-             //}
 
-             //if (LPDevice.Status == DeviceState.Error)
 
-             //{
 
-             //    reason = $"{portId} port in error, need reset";
 
-             //    return false;
 
-             //}
 
-             OP.DoOperation($"{_dicPortModule[portId]}.WriteTagData", tagData);
 
-             reason = string.Empty;
 
-             return true;
 
-         }
 
-     }
 
- }
 
 
  |