Browse Source

fix E84 load port 3/4

JET-JJY 2 weeks ago
parent
commit
48c611f54e

+ 5 - 5
FrameworkLocal/Common/SubstrateTrackings/CarrierManager.cs

@@ -432,11 +432,11 @@ namespace MECF.Framework.Common.SubstrateTrackings
             if (!_locationCarriers.ContainsKey(module))
                 return;
 
-            if (!string.IsNullOrEmpty(_locationCarriers[module][0].CarrierId))
-            {
-                DeleteCarrier(module);
-                CreateCarrier(module);
-            }
+            //if (!string.IsNullOrEmpty(_locationCarriers[module][0].CarrierId))
+            //{
+            //    DeleteCarrier(module);
+            //    CreateCarrier(module);
+            //}
 
             _locationCarriers[module][0].CarrierId = carrierId;
 

+ 16 - 14
Furnace/FurnaceRT/Devices/IoLP.cs

@@ -214,15 +214,12 @@ namespace FurnaceRT.Devices
             //MonitorIndicator();
 
             MonitorCSTADD();
-            if (!SC.GetValue<bool>("System.IsSimulatorMode"))
-            {
-                MonitorCSTRemove();
-            }
+            MonitorCSTRemove();
         }
         public void MonitorCSTRemove()
         {
             _cstRemovetrg.CLK = !IsFoupPresent;
-            if (!CurrentCarrier.IsEmpty || SC.GetValue<bool>("System.IsSimulatorMode"))
+            if (!CurrentCarrier.IsEmpty)
             {
                 if (_cstRemovetrg.Q)
                 {
@@ -290,8 +287,7 @@ namespace FurnaceRT.Devices
                 CarrierManager.Instance.DeleteCarrier(Name);
 
                 if (_lpcallback != null) _lpcallback.CarrerRemove(removeCarrierID);
-
-                EV.PostInfoLog("LoadPort", $"{LPModuleName} carrier:{removeCarrierID} was removed.");
+                EV.PostInfoLog(Name, $"{LPModuleName} carrier:{removeCarrierID} was removed.");
 
                 _carrierId = "";
 
@@ -387,7 +383,7 @@ namespace FurnaceRT.Devices
                 FaLoadPort faLoadPort = FALoadPortManager.Instance.GetLoadPort(PortID);
                 if (faLoadPort.GetAccessMode() == 1)
                 {
-                    EV.PostInfoLog("LoadPort", $"{LPModuleName} ReadID.");
+                    EV.PostInfoLog(Name, $"{LPModuleName} ReadID.");
                     ReadIDReady = false;
                     lpmodule.Invoke("ReadID");
                 }
@@ -403,7 +399,7 @@ namespace FurnaceRT.Devices
                 if (_lpcallback != null)
                     _lpcallback.CarrierArrive();
                 _isMapped = false;
-                EV.PostInfoLog("LoadPort", $"{LPModuleName} carrier arrived.");
+                EV.PostInfoLog(Name, $"{LPModuleName} carrier arrived.");
             }
 
         }
@@ -456,7 +452,13 @@ namespace FurnaceRT.Devices
         {
 
         }
-
+        public void ReadIDComplete(string id)
+        {
+            ReadIDReady = true;
+            EV.PostInfoLog(LPModuleName.ToString(), $"{LPModuleName} ReadIDComplete");
+            Singleton<FAJobController>.Instance.Eqp_NoteCarrierIdRead(PortID, id);
+            _carrierId = id;
+        }
         public void Terminate()
         {
 
@@ -986,7 +988,7 @@ namespace FurnaceRT.Devices
         {
             if (_slotMap.Length != ValidSlotsNumber)
             {
-                EV.PostAlarmLog("LoadPort", "Mapping Data Error.");
+                EV.PostAlarmLog(Name, "Mapping Data Error.");
             }
 
             for (int i = 0; i < _slotMap.Length; i++)
@@ -1009,20 +1011,20 @@ namespace FurnaceRT.Devices
                         WaferManager.Instance.UpdateWaferSize(LPModuleName, i, GetCurrentWaferSize());
                         CarrierManager.Instance.RegisterCarrierWafer(Name, i, wafer);
                         EV.Notify(AlarmLoadPortMapCrossedWafer);
-                        EV.PostInfoLog("LoadPort", $"{LPModuleName} map crossed wafer on carrier:{_carrierId},slot:{i + 1}.");
+                        EV.PostInfoLog(Name, $"{LPModuleName} map crossed wafer on carrier:{_carrierId},slot:{i + 1}.");
                         break;
                     case 'W':
                         wafer = WaferManager.Instance.CreateWafer(LPModuleName, i, WaferStatus.Double);
                         WaferManager.Instance.UpdateWaferSize(LPModuleName, i, GetCurrentWaferSize());
                         CarrierManager.Instance.RegisterCarrierWafer(Name, i, wafer);
                         EV.Notify(AlarmLoadPortMapDoubleWafer);
-                        EV.PostInfoLog("LoadPort", $"{LPModuleName} map double wafer on carrier:{_carrierId},slot:{i + 1}.");
+                        EV.PostInfoLog(Name, $"{LPModuleName} map double wafer on carrier:{_carrierId},slot:{i + 1}.");
                         break;
                     case '?':
                         wafer = WaferManager.Instance.CreateWafer(LPModuleName, i, WaferStatus.Unknown);
                         WaferManager.Instance.UpdateWaferSize(LPModuleName, i, GetCurrentWaferSize());
                         CarrierManager.Instance.RegisterCarrierWafer(Name, i, wafer);
-                        EV.PostInfoLog("LoadPort", $"{LPModuleName} map unknown wafer on carrier:{_carrierId},slot:{i + 1}.");
+                        EV.PostInfoLog(Name, $"{LPModuleName} map unknown wafer on carrier:{_carrierId},slot:{i + 1}.");
                         break;
                 }
             }

+ 31 - 28
Furnace/FurnaceRT/Equipments/LPs/LoadPortModuleDevice.cs

@@ -49,8 +49,10 @@ namespace FurnaceRT.Equipments.LPs
                 idReaderDevice = DEVICE.GetDevice<CIDReaderBaseDevice>($"CarrierIDReader.RFIDReader1");
             if (idReaderDevice != null)
             {
-                idReaderDevice.OnCarrierIDReadEvent += OnCarrierIDReadEvent;
-                idReaderDevice.OnCarrierIDNReadEvent += OnCarrierIDNReadEvent;
+                if (SC.ContainsItem("CarrierID.CarrierIdReaderProtocolType") && SC.GetStringValue("CarrierID.CarrierIdReaderProtocolType") == "1:N")
+                    idReaderDevice.OnCarrierIDNReadEvent += OnCarrierIDNReadEvent;
+                else
+                    idReaderDevice.OnCarrierIDReadEvent += OnCarrierIDReadEvent;
                 idReaderDevice.OnCarrierIDReadFailedEvent += OnCarrierIDReadFailedEvent;
                 LPDevice.CarrierIDReaderCallBack = idReaderDevice;
                 LPDevice.CIDReaders = new CIDReaderBaseDevice[] { idReaderDevice };
@@ -99,30 +101,30 @@ namespace FurnaceRT.Equipments.LPs
             _foupPresentTrig.CLK = LPDevice.IsFoupPresent;
             if (_foupPresentTrig.T && IsReady)
             {
-                var carrier = CarrierManager.Instance.GetCarrier(Module, 0);
-                if (carrier != null && !carrier.IsEmpty)
-                {
-                    var wafers = WaferManager.Instance.GetWafers(ModuleHelper.Converter(Module));
-                    for (int i = 0; i < wafers.Length; i++)
-                    {
-                        if (!wafers[i].IsEmpty)
-                            WaferManager.Instance.DeleteWafer(ModuleHelper.Converter(Module), i);
-                    }
+                //    var carrier = CarrierManager.Instance.GetCarrier(Module, 0);
+                //    if (carrier != null && !carrier.IsEmpty)
+                //    {
+                //        var wafers = WaferManager.Instance.GetWafers(ModuleHelper.Converter(Module));
+                //        for (int i = 0; i < wafers.Length; i++)
+                //        {
+                //            if (!wafers[i].IsEmpty)
+                //                WaferManager.Instance.DeleteWafer(ModuleHelper.Converter(Module), i);
+                //        }
 
-                    CarrierManager.Instance.DeleteCarrier(Module);
+                //        CarrierManager.Instance.DeleteCarrier(Module);
 
-                }
-            }
-            if (_foupPresentTrig.R)
-            {
-                if (SC.GetValue<bool>($"LoadPort.{Name}.EnableAutoCarrierIdRead"))
-                    isNeedReadCarrerID = true;
-            }
-            if(isNeedReadCarrerID && (LPDevice.CarrierIDReaderCallBack as CIDReaderBaseDevice).IsReady && (LPDevice.CarrierIDReaderCallBack as CIDReaderBaseDevice).Check((int)CIDMsg.ReadCarrierID, out _))
-            {
-                LPDevice.ReadCarrierID();
-                isNeedReadCarrerID = false;
+                //    }
             }
+            //if (_foupPresentTrig.R)
+            //{
+            //    if (SC.GetValue<bool>($"LoadPort.{Name}.EnableAutoCarrierIdRead"))
+            //        isNeedReadCarrerID = true;
+            //}
+            //if(isNeedReadCarrerID && (LPDevice.CarrierIDReaderCallBack as CIDReaderBaseDevice).IsReady && (LPDevice.CarrierIDReaderCallBack as CIDReaderBaseDevice).Check((int)CIDMsg.ReadCarrierID, out _))
+            //{
+            //    LPDevice.ReadCarrierID();
+            //    isNeedReadCarrerID = false;
+            //}
         }
         public bool HomeLoadPort(out string reason)
         {
@@ -147,15 +149,16 @@ namespace FurnaceRT.Equipments.LPs
         }
         public void OnCarrierIDReadEvent(ModuleName module, string name, string carrierId)
         {
-            CarrierId = carrierId;
-            CarrierManager.Instance.UpdateCarrierId(module.ToString(), carrierId);          
+            LPDevice.ReadIDComplete(carrierId);
+            UpdateCarrierID(carrierId);
         }
         public void OnCarrierIDNReadEvent(ModuleName module, string name, string carrierId,int index)
         {
             if ($"LP{index}" == Module.ToString())
             {
-                CarrierId = carrierId;
-                CarrierManager.Instance.UpdateCarrierId(module.ToString(), carrierId);
+                //CarrierId = carrierId;
+                LPDevice.ReadIDComplete(carrierId);
+                UpdateCarrierID(carrierId);
             }
         }
         public void OnCarrierIDReadFailedEvent(ModuleName module, string name, string errorcode)
@@ -165,7 +168,7 @@ namespace FurnaceRT.Equipments.LPs
         public override void UpdateCarrierID(string _id)
         {
             CarrierId = _id;
-            CarrierManager.Instance.UpdateCarrierId(Name, _id);
+            //CarrierManager.Instance.UpdateCarrierId(Name, _id);
             LPDevice.ProceedSetCarrierID(_id);
         }
     }

+ 1 - 1
Furnace/FurnaceRT/Equipments/Schedulers/SchedulerFACallback.cs

@@ -546,7 +546,7 @@ namespace FurnaceRT.Equipments.Schedulers
             dvid["CarrierID"] = carrier.CarrierId;
 
             EV.Notify("SLOT_MAP_AVAILABLE", dvid);
-            Singleton<FAJobController>.Instance.Eqp_NoteCarrierSlotMapRead(carrier.PortID, slotMap);
+           Singleton<FAJobController>.Instance.Eqp_NoteCarrierSlotMapRead(carrier.PortID, slotMap, carrier.CarrierId);
             CarrierInEnd(carrier);
         }
 

+ 10 - 1
Furnace/FurnaceRT/Equipments/Schedulers/SchedulerModuleFactory.cs

@@ -17,6 +17,8 @@ namespace FurnaceRT.Equipments.Schedulers
 
         protected static SchedulerLoadPort _lp1 = new SchedulerLoadPort(ModuleName.LP1);
         protected static SchedulerLoadPort _lp2 = new SchedulerLoadPort(ModuleName.LP2);
+        protected static SchedulerLoadPort _lp3 = new SchedulerLoadPort(ModuleName.LP3);
+        protected static SchedulerLoadPort _lp4 = new SchedulerLoadPort(ModuleName.LP4);
         protected List<SchedulerLoadPort> _lstLPs;
         protected static List<SchedulerFIMS> _lstFIMSs;
         //protected List<SchedulerStocker> _lstBatchAStocker;
@@ -58,7 +60,10 @@ namespace FurnaceRT.Equipments.Schedulers
             {
                 _lstLPs.Add(_lp2);
             }
-
+            if (SC.GetValue<bool>($"System.SetUp.IsLP3Installed"))
+            {
+                _lstLPs.Add(_lp3);
+            }
             //_lstBatchAStocker = new List<SchedulerStocker>();
             //_lstBatchBStocker = new List<SchedulerStocker>();
             _lstExtraDummyStocker = new List<SchedulerStocker>();
@@ -156,6 +161,10 @@ namespace FurnaceRT.Equipments.Schedulers
                     return _lp1;
                 case ModuleName.LP2:
                     return _lp2;
+                case ModuleName.LP3:
+                    return _lp3;
+                case ModuleName.LP4:
+                    return _lp4;
             }
 
             return null;

+ 16 - 0
Furnace/FurnaceRT/Equipments/Systems/EquipmentManager_FA.cs

@@ -801,6 +801,14 @@ namespace FurnaceRT.Equipments.Systems
                 {
                     _lp = Modules[ModuleName.LP2] as LoadPortModule;
                 }
+                if (portId == 3)
+                {
+                    _lp = Modules[ModuleName.LP3] as LoadPortModule;
+                }
+                else if (portId == 4)
+                {
+                    _lp = Modules[ModuleName.LP4] as LoadPortModule;
+                }
                 else
                 {
                     return false;
@@ -858,6 +866,14 @@ namespace FurnaceRT.Equipments.Systems
             {
                 _lp = Modules[ModuleName.LP2] as LoadPortModule;
             }
+            else if (portid == 3)
+            {
+                _lp = Modules[ModuleName.LP3] as LoadPortModule;
+            }
+            else if (portid == 4)
+            {
+                _lp = Modules[ModuleName.LP4] as LoadPortModule;
+            }
             else
             {
                 return false;

+ 1 - 2
Furnace/FurnaceRT/FurnaceRT.csproj

@@ -69,8 +69,7 @@
     <Reference Include="log4net">
       <HintPath>..\..\ThirdParty\dlls\log4net.dll</HintPath>
     </Reference>
-    <Reference Include="MECF.Framework.MyFA.Core, Version=1.0.9257.26145, Culture=neutral, processorArchitecture=MSIL">
-      <SpecificVersion>False</SpecificVersion>
+    <Reference Include="MECF.Framework.MyFA.Core">
       <HintPath>dependence\MECF.Framework.MyFA.Core.dll</HintPath>
     </Reference>
     <Reference Include="Microsoft.DwayneNeed">

BIN
Furnace/FurnaceRT/dependence/MECF.Framework.MyFA.Core.dll