diff --git a/Modules/Mainframe/Aligners/AlignerModuleBase.cs b/Modules/Mainframe/Aligners/AlignerModuleBase.cs index cb2e28a4..7e69887a 100644 --- a/Modules/Mainframe/Aligners/AlignerModuleBase.cs +++ b/Modules/Mainframe/Aligners/AlignerModuleBase.cs @@ -19,7 +19,7 @@ namespace SicModules.Aligners public override bool Initialize() { - WaferManager.Instance.SubscribeLocation(Module, _slot,true,false); + WaferManager.Instance.SubscribeLocation(Module, _slot); return base.Initialize(); } diff --git a/Modules/Mainframe/Cassettes/CassetteModule.cs b/Modules/Mainframe/Cassettes/CassetteModule.cs index b4c71fc7..ae3dfd32 100644 --- a/Modules/Mainframe/Cassettes/CassetteModule.cs +++ b/Modules/Mainframe/Cassettes/CassetteModule.cs @@ -182,7 +182,6 @@ namespace SicModules.Cassettes endSlot = endSlot - 1; int slotFrom = 0; int slotTo = 0; - WaferStatus state = WaferStatus.Normal; ModuleName chamber = ModuleHelper.Converter(Module); if (chamber == ModuleName.CassBL) @@ -198,25 +197,25 @@ namespace SicModules.Cassettes if (slotTo >= slotFrom) { - //if (WaferManager.Instance.IsWaferSlotLocationValid(chamber, 0) && WaferManager.Instance.IsWaferSlotLocationValid(chamber, slotTo - 1)) - //{ - // WaferManager.Instance.DeleteWafer(chamber, 0, slotTo); - //} - //else - //{ - // EV.PostWarningLog("Cassette", string.Format($"Invalid slot,{Module} slot from {slotFrom}, slot to {slotTo}")); - // return false; - //} - - for (int slot = slotFrom; slot <= slotTo; slot++) { if (WaferManager.Instance.IsWaferSlotLocationValid(chamber, slot)) { - if (WaferManager.Instance.CreateWafer(chamber, slot, state) == null) + if (chamber == ModuleName.CassBL) { - EV.PostWarningLog("Cassette", string.Format($"Create slot {slot + 1} wafer failed.")); - return false; + if (WaferManager.Instance.CreateTray(chamber, slot) == null) + { + EV.PostWarningLog("Cassette", string.Format($"Create slot {slot + 1} tray failed.")); + return false; + } + } + else + { + if (WaferManager.Instance.CreateWafer(chamber, slot) == null) + { + EV.PostWarningLog("Cassette", string.Format($"Create slot {slot + 1} wafer failed.")); + return false; + } } } else @@ -226,7 +225,14 @@ namespace SicModules.Cassettes } } - EV.PostInfoLog("Cassette", $"Create wafer from {slotFrom} to {slotTo} successed."); + if (chamber == ModuleName.CassBL) + { + EV.PostInfoLog("Cassette", $"Create tray from {slotFrom + 1} to {slotTo + 1} successed."); + } + else + { + EV.PostInfoLog("Cassette", $"Create wafer from {slotFrom + 1} to {slotTo + 1} successed."); + } return true; } @@ -257,22 +263,18 @@ namespace SicModules.Cassettes if (slotTo >= slotFrom) { - //if (WaferManager.Instance.IsWaferSlotLocationValid(chamber, 0) && WaferManager.Instance.IsWaferSlotLocationValid(chamber, slotTo - 1)) - //{ - // WaferManager.Instance.DeleteWafer(chamber, 0, slotTo); - //} - //else - //{ - // EV.PostWarningLog("Cassette", string.Format($"Invalid slot,{Module} slot from {slotFrom}, slot to {slotTo}")); - // return false; - //} - - - for (int slot = startSlot; slot <= slotTo; slot++) + for (int slot = slotFrom; slot <= slotTo; slot++) { if (WaferManager.Instance.IsWaferSlotLocationValid(chamber, slot)) { - WaferManager.Instance.DeleteWafer(chamber, slot); + if (chamber == ModuleName.CassBL) + { + WaferManager.Instance.DeleteTray(chamber, slot); + } + else + { + WaferManager.Instance.DeleteWafer(chamber, slot); + } } else { @@ -281,7 +283,14 @@ namespace SicModules.Cassettes } } - EV.PostInfoLog("Cassette", $"Delete wafer from {slotFrom} to {slotTo} successed."); + if (chamber == ModuleName.CassBL) + { + EV.PostInfoLog("Cassette", $"Delete tray from {slotFrom + 1} to {slotTo + 1} successed."); + } + else + { + EV.PostInfoLog("Cassette", $"Delete wafer from {slotFrom + 1} to {slotTo + 1} successed."); + } return true; } diff --git a/Modules/Mainframe/Cassettes/CassetteModuleBase.cs b/Modules/Mainframe/Cassettes/CassetteModuleBase.cs index bf98cf15..5de9b9bc 100644 --- a/Modules/Mainframe/Cassettes/CassetteModuleBase.cs +++ b/Modules/Mainframe/Cassettes/CassetteModuleBase.cs @@ -19,14 +19,8 @@ namespace SicModules.Cassettes public override bool Initialize() { - if (Module == ModuleName.CassBL.ToString()) - { - WaferManager.Instance.SubscribeLocation(Module, _slot, false, true); - } - else - { - WaferManager.Instance.SubscribeLocation(Module, _slot, true, false); - } + WaferManager.Instance.SubscribeLocation(Module, _slot); + CarrierManager.Instance.SubscribeLocation(Module, 1); return base.Initialize(); diff --git a/SicRT/Equipments/AutoTransfer.cs b/SicRT/Equipments/AutoTransfer.cs index f5737213..9a14bcf0 100644 --- a/SicRT/Equipments/AutoTransfer.cs +++ b/SicRT/Equipments/AutoTransfer.cs @@ -955,7 +955,7 @@ namespace SicRT.Modules foreach (var needProcessWafer in cj.LotWafers) { - if (CheckWaferNeedProcess((ModuleName)needProcessWafer.WaferOriginStation, needProcessWafer.WaferOriginSlot, ModuleName.PM1)) + if (CheckWaferNeedProcess(ModuleHelper.Converter(needProcessWafer.WaferOriginStation), needProcessWafer.WaferOriginSlot, ModuleName.PM1)) { if (_pm1.IsError) { @@ -969,7 +969,7 @@ namespace SicRT.Modules return; } } - else if (CheckWaferNeedProcess((ModuleName)needProcessWafer.WaferOriginStation, needProcessWafer.WaferOriginSlot, ModuleName.PM2)) + else if (CheckWaferNeedProcess(ModuleHelper.Converter(needProcessWafer.WaferOriginStation), needProcessWafer.WaferOriginSlot, ModuleName.PM2)) { if (_pm2.IsError) { @@ -2890,7 +2890,7 @@ namespace SicRT.Modules if (canPlaceCassette) { var wafer = _waferRobot.GetWaferInfo(0); - if (GetWaferReturnedCassette((ModuleName)wafer.WaferOriginStation) == ModuleName.CassAL) + if (GetWaferReturnedCassette(ModuleHelper.Converter(wafer.WaferOriginStation)) == ModuleName.CassAL) { if (_cassetteAL.IsAvailable && _cassetteAL.IsReadyForPlace(ModuleName.WaferRobot, wafer.WaferOriginSlot)) { @@ -2901,7 +2901,7 @@ namespace SicRT.Modules } } } - else if (GetWaferReturnedCassette((ModuleName)wafer.WaferOriginStation) == ModuleName.CassAR) + else if (GetWaferReturnedCassette(ModuleHelper.Converter(wafer.WaferOriginStation)) == ModuleName.CassAR) { if (_cassetteAR.IsAvailable && _cassetteAR.IsReadyForPlace(ModuleName.WaferRobot, wafer.WaferOriginSlot)) { diff --git a/SicRT/Equipments/ReturnAllWafer.cs b/SicRT/Equipments/ReturnAllWafer.cs index 5bc0c69b..f0b03844 100644 --- a/SicRT/Equipments/ReturnAllWafer.cs +++ b/SicRT/Equipments/ReturnAllWafer.cs @@ -615,7 +615,7 @@ namespace SicRT.Modules if (canPlaceCassette) { var wafer = _waferRobot.GetWaferInfo(0); - if (wafer.WaferOriginStation == (int)ModuleName.CassAL) + if (wafer.WaferOriginStation == ModuleName.CassAL.ToString()) { if (_cassetteAL.IsReadyForPlace(ModuleName.WaferRobot, wafer.WaferOriginSlot) && WaferManager.Instance.CheckNoWafer(ModuleName.CassAL, wafer.WaferOriginSlot)) { @@ -626,7 +626,7 @@ namespace SicRT.Modules } } } - else if (wafer.WaferOriginStation == (int)ModuleName.CassAR) + else if (wafer.WaferOriginStation == ModuleName.CassAR.ToString()) { if (_cassetteAR.IsReadyForPlace(ModuleName.WaferRobot, wafer.WaferOriginSlot) && WaferManager.Instance.CheckNoWafer(ModuleName.CassAR, wafer.WaferOriginSlot)) { diff --git a/SicRT/Equipments/Systems/EquipmentManager.cs b/SicRT/Equipments/Systems/EquipmentManager.cs index b1672a1a..351388dc 100644 --- a/SicRT/Equipments/Systems/EquipmentManager.cs +++ b/SicRT/Equipments/Systems/EquipmentManager.cs @@ -484,12 +484,14 @@ namespace SicRT.Equipments.Systems { OP.Subscribe("CreateWafer", InvokeCreateWafer); + OP.Subscribe("CreateTray", InvokeCreateTray); + OP.Subscribe("DeleteWafer", InvokeDeleteWafer); - OP.Subscribe("ReturnWafer", InvokeReturnWafer); - OP.Subscribe("DeleteTray", InvokeDeleteTray); + OP.Subscribe("ReturnWafer", InvokeReturnWafer); + OP.Subscribe("AlterWaferInfo", InvokeAlterWaferInfo); OP.Subscribe("UpdatTrayBelongTo", (string cmd, object[] args) => { return true; });//注册空的方法,否则调用时日志有错误输出 @@ -1186,50 +1188,29 @@ namespace SicRT.Equipments.Systems return CheckToPostMessage((int)MSG.MoveWafer, target, slot, - (ModuleName)wafer.WaferOriginStation, wafer.WaferOriginSlot, + ModuleHelper.Converter(wafer.WaferOriginStation), wafer.WaferOriginSlot, false, 0, false, 0); } - - private bool InvokeDeleteWafer(string arg1, object[] args) + private bool InvokeCreateWafer(string arg1, object[] args) { ModuleName chamber = ModuleHelper.Converter(args[0].ToString()); int slot = (int)args[1]; + WaferStatus status = WaferStatus.Normal; - if (chamber == ModuleName.TrayRobot || chamber == ModuleName.CassBL) + if (WaferManager.Instance.IsWaferSlotLocationValid(chamber, slot)) { - if (WaferManager.Instance.CheckHasTray(chamber, slot)) + if (WaferManager.Instance.CheckHasWafer(chamber, slot)) { - WaferManager.Instance.DeleteWafer(chamber, slot); - EV.PostMessage(ModuleName.System.ToString(), EventEnum.WaferDelete, chamber.ToString(), slot + 1); + EV.PostInfoLog("System", string.Format("{0} slot {1} already has wafer.create wafer is not valid", chamber, slot)); } - else + else if (WaferManager.Instance.CreateWafer(chamber, slot, status) != null) { - EV.PostInfoLog("System", string.Format("No wafer at {0} {1}, delete not valid", chamber.ToString(), slot + 1)); - } - } - else if (WaferManager.Instance.CheckHasWafer(chamber, slot)) - { - if (chamber == ModuleName.TMRobot || chamber == ModuleName.LoadLock || chamber == ModuleName.UnLoad - || chamber == ModuleName.Buffer || chamber == ModuleName.PM1 || chamber == ModuleName.PM2) - { - if (WaferManager.Instance.CheckHasTray(chamber, slot)) - { - WaferManager.Instance.DeleteWaferOnly(chamber, slot); - } - else - { - WaferManager.Instance.DeleteWafer(chamber, slot); - } - } - else - { - WaferManager.Instance.DeleteWafer(chamber, slot); + EV.PostMessage(ModuleName.System.ToString(), EventEnum.WaferCreate, chamber.ToString(), slot, status.ToString()); } } else { - EV.PostWarningLog("System", string.Format("Invalid position,{0},{1}", chamber.ToString(), slot.ToString())); return false; } @@ -1237,51 +1218,55 @@ namespace SicRT.Equipments.Systems return true; } - private bool InvokeCreateWafer(string arg1, object[] args) + private bool InvokeCreateTray(string arg1, object[] args) { ModuleName chamber = ModuleHelper.Converter(args[0].ToString()); int slot = (int)args[1]; - WaferStatus state = WaferStatus.Normal; + TrayStatus status = TrayStatus.Normal; - if (chamber == ModuleName.TrayRobot || chamber == ModuleName.CassBL) + if (WaferManager.Instance.IsWaferSlotLocationValid(chamber, slot)) { - if (WaferManager.Instance.IsWaferSlotLocationValid(chamber, slot)) + if (WaferManager.Instance.CheckHasTray(chamber, slot)) { - if (WaferManager.Instance.CheckHasTray(chamber, slot)) - { - EV.PostInfoLog("System", string.Format("{0} slot {1} already has tray.create wafer is not valid", chamber, slot)); - } - else if (WaferManager.Instance.CreateWafer(chamber, slot, state) != null) - { - EV.PostMessage(ModuleName.System.ToString(), EventEnum.WaferCreate, chamber.ToString(), slot + 1, state.ToString()); - } + EV.PostInfoLog("System", string.Format("{0} slot {1} already has tray.create tray is not valid", chamber, slot)); } - else + else if (WaferManager.Instance.CreateTray(chamber, slot, status) != null) { - EV.PostWarningLog("System", string.Format("Invalid position,{0},{1}", chamber.ToString(), slot.ToString())); - return false; + //EV.PostMessage(ModuleName.System.ToString(), EventEnum.WaferCreate, chamber.ToString(), slot + 1, status.ToString()); } } else { + EV.PostWarningLog("System", string.Format("Invalid position,{0},{1}", chamber.ToString(), slot.ToString())); + return false; + } - if (WaferManager.Instance.IsWaferSlotLocationValid(chamber, slot)) + return true; + } + + private bool InvokeDeleteWafer(string arg1, object[] args) + { + ModuleName chamber = ModuleHelper.Converter(args[0].ToString()); + int slot = (int)args[1]; + + if (WaferManager.Instance.IsWaferSlotLocationValid(chamber, slot)) + { + if (!WaferManager.Instance.CheckHasWafer(chamber, slot)) { - if (WaferManager.Instance.CheckHasWafer(chamber, slot)) - { - EV.PostInfoLog("System", string.Format("{0} slot {1} already has wafer.create wafer is not valid", chamber, slot)); - } - else if (WaferManager.Instance.CreateWafer(chamber, slot, state) != null) - { - EV.PostMessage(ModuleName.System.ToString(), EventEnum.WaferCreate, chamber.ToString(), slot + 1, state.ToString()); - } + EV.PostInfoLog("System", string.Format("{0} slot {1} no wafer.delete wafer is not valid", chamber, slot)); } - else + else { - EV.PostWarningLog("System", string.Format("Invalid position,{0},{1}", chamber.ToString(), slot.ToString())); - return false; + WaferManager.Instance.DeleteWafer(chamber, slot); + EV.PostMessage(ModuleName.System.ToString(), EventEnum.WaferDelete, chamber.ToString(), slot); } } + else + { + EV.PostWarningLog("System", string.Format("Invalid position,{0},{1}", chamber.ToString(), slot.ToString())); + return false; + } + return true; } @@ -1290,28 +1275,24 @@ namespace SicRT.Equipments.Systems ModuleName chamber = ModuleHelper.Converter(args[0].ToString()); int slot = (int)args[1]; - if (WaferManager.Instance.CheckHasTray(chamber, slot)) + if (WaferManager.Instance.IsWaferSlotLocationValid(chamber, slot)) { - if (chamber == ModuleName.Buffer) + if (!WaferManager.Instance.CheckHasTray(chamber, slot)) { - WaferManager.Instance.DeleteWafer(chamber, slot); - } - else if (WaferManager.Instance.CheckHasWafer(chamber, slot)) - { - if(chamber == ModuleName.PM1 || chamber == ModuleName.PM2) - { - WaferManager.Instance.DeleteWafer(chamber, slot); - } - else - { - WaferManager.Instance.GetWafer(chamber, slot).TrayState = TrayStatus.Empty; - } + EV.PostInfoLog("System", string.Format("{0} slot {1} no tray.delete tray is not valid", chamber, slot)); } else { - WaferManager.Instance.DeleteWafer(chamber, slot); + WaferManager.Instance.DeleteTray(chamber, slot); + //EV.PostMessage(ModuleName.System.ToString(), EventEnum.WaferDelete, chamber.ToString(), slot); } } + else + { + EV.PostWarningLog("System", string.Format("Invalid position,{0},{1}", chamber.ToString(), slot.ToString())); + return false; + } + return true; } diff --git a/SicUI/Models/Operations/Overviews/OverViewView.xaml b/SicUI/Models/Operations/Overviews/OverViewView.xaml index 1adcddf6..06613cdc 100644 --- a/SicUI/Models/Operations/Overviews/OverViewView.xaml +++ b/SicUI/Models/Operations/Overviews/OverViewView.xaml @@ -162,7 +162,7 @@ ToolTip="{lex:Loc ID_BTN_CreateWafer_ToolTip}"> - + @@ -181,7 +181,7 @@ ToolTip="{lex:Loc ID_BTN_DeleteWafer_ToolTip}"> - + @@ -283,7 +283,7 @@ ToolTip="{lex:Loc ID_BTN_CreateWafer_ToolTip}"> - + @@ -302,7 +302,7 @@ ToolTip="{lex:Loc ID_BTN_DeleteWafer_ToolTip}"> - + @@ -863,7 +863,7 @@ ToolTip="{lex:Loc ID_BTN_CreateTray_ToolTip}"> - + @@ -881,7 +881,7 @@ ToolTip="{lex:Loc ID_BTN_DeleteTray_ToolTip}"> - + diff --git a/SicUI/Models/Operations/Overviews/OverViewViewModel.cs b/SicUI/Models/Operations/Overviews/OverViewViewModel.cs index b22f2e87..16c3a7eb 100644 --- a/SicUI/Models/Operations/Overviews/OverViewViewModel.cs +++ b/SicUI/Models/Operations/Overviews/OverViewViewModel.cs @@ -1179,7 +1179,7 @@ namespace SicUI.Models.Operations.Overviews public bool IsCassARLoadEnable => true; public bool IsCassBLLoadEnable => true; - public void CreateWafer(string cassName, string startSlotStr, string endSlotStr) + public void CreateAll(string cassName, string startSlotStr, string endSlotStr) { int startSlot = 0; int endSlot = 0; @@ -1189,7 +1189,7 @@ namespace SicUI.Models.Operations.Overviews } } - public void DeleteWafer(string cassName, string startSlotStr, string endSlotStr) + public void DeleteAll(string cassName, string startSlotStr, string endSlotStr) { int startSlot = 0; int endSlot = 0; diff --git a/ThirdParty/MECF.Framework/MECF.Framework.Common.dll b/ThirdParty/MECF.Framework/MECF.Framework.Common.dll index 69c83114..38322123 100644 Binary files a/ThirdParty/MECF.Framework/MECF.Framework.Common.dll and b/ThirdParty/MECF.Framework/MECF.Framework.Common.dll differ diff --git a/ThirdParty/MECF.Framework/MECF.Framework.RT.Core.dll b/ThirdParty/MECF.Framework/MECF.Framework.RT.Core.dll index 14ee5e77..ce640398 100644 Binary files a/ThirdParty/MECF.Framework/MECF.Framework.RT.Core.dll and b/ThirdParty/MECF.Framework/MECF.Framework.RT.Core.dll differ diff --git a/ThirdParty/MECF.Framework/MECF.Framework.RT.EquipmentLibrary.dll b/ThirdParty/MECF.Framework/MECF.Framework.RT.EquipmentLibrary.dll index 3c4ab8c2..db403749 100644 Binary files a/ThirdParty/MECF.Framework/MECF.Framework.RT.EquipmentLibrary.dll and b/ThirdParty/MECF.Framework/MECF.Framework.RT.EquipmentLibrary.dll differ diff --git a/ThirdParty/MECF.Framework/MECF.Framework.Simulator.Core.dll b/ThirdParty/MECF.Framework/MECF.Framework.Simulator.Core.dll index e81c5a47..c0123402 100644 Binary files a/ThirdParty/MECF.Framework/MECF.Framework.Simulator.Core.dll and b/ThirdParty/MECF.Framework/MECF.Framework.Simulator.Core.dll differ diff --git a/ThirdParty/MECF.Framework/MECF.Framework.UI.Client.dll b/ThirdParty/MECF.Framework/MECF.Framework.UI.Client.dll index 701c521a..f27a0c14 100644 Binary files a/ThirdParty/MECF.Framework/MECF.Framework.UI.Client.dll and b/ThirdParty/MECF.Framework/MECF.Framework.UI.Client.dll differ diff --git a/ThirdParty/MECF.Framework/MECF.Framework.UI.Core.dll b/ThirdParty/MECF.Framework/MECF.Framework.UI.Core.dll index 420721fe..8bfcbfa3 100644 Binary files a/ThirdParty/MECF.Framework/MECF.Framework.UI.Core.dll and b/ThirdParty/MECF.Framework/MECF.Framework.UI.Core.dll differ