diff --git a/Modules/Mainframe/Config/PM/PM1/DeviceModelPM1.xml b/Modules/Mainframe/Config/PM/PM1/DeviceModelPM1.xml index 21a2518b..c7e1ae96 100644 --- a/Modules/Mainframe/Config/PM/PM1/DeviceModelPM1.xml +++ b/Modules/Mainframe/Config/PM/PM1/DeviceModelPM1.xml @@ -57,7 +57,7 @@ - + @@ -144,9 +144,7 @@ - - @@ -163,14 +161,12 @@ - - @@ -572,19 +568,24 @@ doGreen="DO_TowerGreen" doYellow="DO_TowerYellow" doRed="DO_TowerRed" doBuzzer="DO_Buzzer" aoBuzzerBlinkFreq="AO_BuzzerBlinkFreqHz"/> - - + + - - - + + @@ -161,7 +162,6 @@ - diff --git a/Modules/Mainframe/Config/PM/PM1/interlockPM1.xml b/Modules/Mainframe/Config/PM/PM1/interlockPM1.xml index 66ebc3de..49ef9a26 100644 --- a/Modules/Mainframe/Config/PM/PM1/interlockPM1.xml +++ b/Modules/Mainframe/Config/PM/PM1/interlockPM1.xml @@ -199,7 +199,7 @@ - + @@ -277,7 +277,7 @@ - + @@ -355,7 +355,7 @@ - + @@ -433,7 +433,7 @@ - + @@ -511,7 +511,7 @@ - + @@ -589,7 +589,7 @@ - + @@ -667,7 +667,7 @@ - + @@ -745,7 +745,7 @@ - + @@ -826,7 +826,7 @@ - + @@ -983,7 +983,7 @@ - + @@ -1065,7 +1065,7 @@ - + @@ -1147,7 +1147,7 @@ - + @@ -1229,7 +1229,7 @@ - + @@ -1340,10 +1340,10 @@ - + @@ -1521,7 +1521,7 @@ - + @@ -1596,7 +1596,7 @@ - + @@ -1671,7 +1671,7 @@ - + @@ -1746,7 +1746,7 @@ - + @@ -1821,7 +1821,7 @@ - + @@ -1896,7 +1896,7 @@ - + @@ -1964,7 +1964,7 @@ - + @@ -1987,7 +1987,7 @@ - + @@ -2030,7 +2030,7 @@ - + @@ -2052,7 +2052,7 @@ - + @@ -2141,7 +2141,7 @@ - + @@ -2806,7 +2806,7 @@ - + @@ -2940,7 +2940,7 @@ - + diff --git a/Modules/Mainframe/Config/PM/PM2/DeviceModelPM2.xml b/Modules/Mainframe/Config/PM/PM2/DeviceModelPM2.xml index 7ae0eca1..6e5ff3db 100644 --- a/Modules/Mainframe/Config/PM/PM2/DeviceModelPM2.xml +++ b/Modules/Mainframe/Config/PM/PM2/DeviceModelPM2.xml @@ -117,9 +117,7 @@ - - @@ -136,16 +134,12 @@ - - - - @@ -543,7 +537,7 @@ doGreen="DO_TowerGreen" doYellow="DO_TowerYellow" doRed="DO_TowerRed" doBuzzer="DO_Buzzer" aoBuzzerBlinkFreq="AO_BuzzerBlinkFreqHz"/> - + @@ -551,11 +545,9 @@ - - diff --git a/Modules/Mainframe/Config/PM/PM2/_ioDefinePM2.xml b/Modules/Mainframe/Config/PM/PM2/_ioDefinePM2.xml index 2c2cc6b9..c2bd71d3 100644 --- a/Modules/Mainframe/Config/PM/PM2/_ioDefinePM2.xml +++ b/Modules/Mainframe/Config/PM/PM2/_ioDefinePM2.xml @@ -143,6 +143,7 @@ + @@ -160,7 +161,6 @@ - diff --git a/Modules/Mainframe/Devices/IoLoadRotation.cs b/Modules/Mainframe/Devices/IoLoadRotation.cs index 6df3cf64..be9567ba 100644 --- a/Modules/Mainframe/Devices/IoLoadRotation.cs +++ b/Modules/Mainframe/Devices/IoLoadRotation.cs @@ -51,7 +51,7 @@ namespace SicModules.Devices private DeviceTimer _timer = new DeviceTimer(); - public bool ServeHomeDone => _diRelativeHomeDone.Value; + public bool IsServeHomeDone => _diRelativeHomeDone.Value; @@ -143,6 +143,7 @@ namespace SicModules.Devices DATA.Subscribe($"{Module}.{Name}.IsServoBusy", () => IsServoBusy); DATA.Subscribe($"{Module}.{Name}.IsServoError", () => IsServoError); DATA.Subscribe($"{Module}.{Name}.IsMoveDone", () => IsMoveDone); + DATA.Subscribe($"{Module}.{Name}.IsServeHomeDone", () => IsServeHomeDone); DATA.Subscribe($"{Module}.{Name}.CurPos", () => CurPos); DATA.Subscribe($"{Module}.{Name}.CCD1Degree", () => CCD1Degree); DATA.Subscribe($"{Module}.{Name}.CCD2Degree", () => CCD2Degree); diff --git a/Modules/Mainframe/LLs/LoadLockModule.cs b/Modules/Mainframe/LLs/LoadLockModule.cs index 36f87bbb..863fa109 100644 --- a/Modules/Mainframe/LLs/LoadLockModule.cs +++ b/Modules/Mainframe/LLs/LoadLockModule.cs @@ -155,7 +155,7 @@ namespace SicModules.LLs private LoadSeparateRoutine _loadSeparateRoutine; private LoadRotationHomeRoutine _loadRotationHomeRoutine; - private LoadLockTrayLodaAngleRoutine _loadLockTrayLodaAngleRoutine; + private LoadLockTrayLoadAngleRoutine _loadLockTrayLoadAngleRoutine; public LoadLockModule(ModuleName module) : base(1) @@ -206,7 +206,7 @@ namespace SicModules.LLs _loadLockGroupRoutine = new LoadLockGroupRoutine(module); _loadSeparateRoutine = new LoadSeparateRoutine(module); _loadRotationHomeRoutine = new LoadRotationHomeRoutine(); - _loadLockTrayLodaAngleRoutine = new LoadLockTrayLodaAngleRoutine(module); + _loadLockTrayLoadAngleRoutine = new LoadLockTrayLoadAngleRoutine(module); } private void InitDevice() @@ -596,7 +596,7 @@ namespace SicModules.LLs private bool FsmStartTrayHome(object[] param) { - Result ret = StartRoutine(_loadLockTrayLodaAngleRoutine); + Result ret = StartRoutine(_loadLockTrayLoadAngleRoutine); if (ret == Result.FAIL || ret == Result.DONE) return false; return ret == Result.RUN; diff --git a/Modules/Mainframe/LLs/Routines/Base/LoadLockBaseRoutine.cs b/Modules/Mainframe/LLs/Routines/Base/LoadLockBaseRoutine.cs index 9e4c8d59..df15341a 100644 --- a/Modules/Mainframe/LLs/Routines/Base/LoadLockBaseRoutine.cs +++ b/Modules/Mainframe/LLs/Routines/Base/LoadLockBaseRoutine.cs @@ -221,7 +221,7 @@ namespace SicModules.LLs.Routines.Base } return true; }, - () => _llRotation.ServeHomeDone + () => _llRotation.IsServeHomeDone , timeout * 1000); diff --git a/Modules/Mainframe/LLs/Routines/LoadLockTrayAlignerRoutine.cs b/Modules/Mainframe/LLs/Routines/LoadLockTrayAlignerRoutine.cs deleted file mode 100644 index 5a1dc182..00000000 --- a/Modules/Mainframe/LLs/Routines/LoadLockTrayAlignerRoutine.cs +++ /dev/null @@ -1,15 +0,0 @@ -using SicModules.LLs.Routines.Base; - -namespace SicModules.LLs.Routines -{ - public class LoadLockTrayAlignerRoutine:LoadLockBaseRoutine - { - /* 托盘对准 - * - */ - public LoadLockTrayAlignerRoutine() - { - Name = "Tray Aligner"; - } - } -} diff --git a/Modules/Mainframe/LLs/Routines/LoadLockTrayLodaAngleRoutine.cs b/Modules/Mainframe/LLs/Routines/LoadLockTrayLoadAngleRoutine.cs similarity index 94% rename from Modules/Mainframe/LLs/Routines/LoadLockTrayLodaAngleRoutine.cs rename to Modules/Mainframe/LLs/Routines/LoadLockTrayLoadAngleRoutine.cs index 8ca97bbc..7eb941bd 100644 --- a/Modules/Mainframe/LLs/Routines/LoadLockTrayLodaAngleRoutine.cs +++ b/Modules/Mainframe/LLs/Routines/LoadLockTrayLoadAngleRoutine.cs @@ -15,7 +15,7 @@ namespace SicModules.LLs.Routines /// /// Tray盘在Load腔中,根据感应器找上料角度 /// - public class LoadLockTrayLodaAngleRoutine : LoadLockBaseRoutine + public class LoadLockTrayLoadAngleRoutine : LoadLockBaseRoutine { private enum RoutineStep { @@ -36,10 +36,10 @@ namespace SicModules.LLs.Routines private LoadLockTrayClawRoutine _trayUnClamp = new LoadLockTrayClawRoutine(); - public LoadLockTrayLodaAngleRoutine(ModuleName module) + public LoadLockTrayLoadAngleRoutine(ModuleName module) { Module = module.ToString(); - Name = "TrayHome"; + Name = "Tray Load Angle"; } public override Result Start(params object[] objs) diff --git a/Modules/Mainframe/PMs/PMModuleDevice.cs b/Modules/Mainframe/PMs/PMModuleDevice.cs index 72cb35d3..096245e9 100644 --- a/Modules/Mainframe/PMs/PMModuleDevice.cs +++ b/Modules/Mainframe/PMs/PMModuleDevice.cs @@ -308,6 +308,9 @@ namespace SicModules.PMs [Tag("Mfc16")] public IoMFC Mfc16 { get; set; } + [Tag("Mfc17")] + public IoMFC Mfc17 { get; set; } + [Tag("Mfc19")] public IoMFC Mfc19 { get; set; } @@ -425,7 +428,7 @@ namespace SicModules.PMs #region ChamberMoveBody - [Tag("ChamberMoveBody")] + [Tag("IoChamberMoveBodySicMultiple")] public IoChamberMoveBody ChamberMoveBody { get; set; } #endregion ChamberMoveBody @@ -435,9 +438,6 @@ namespace SicModules.PMs [Tag("SHLidSwing")] public IoLidSwing SHLidSwing { get; set; } - [Tag("MiddleLidSwing")] - public IoLidSwing MiddleLidSwing { get; set; } - #endregion SHLidSwing #region ConfinementRing @@ -517,7 +517,7 @@ namespace SicModules.PMs private List _mfc = new List() { "Mfc1", "Mfc2", "Mfc3", "Mfc4", "Mfc5", "Mfc6", "Mfc7", "Mfc8","Mfc9", - "Mfc10", "Mfc11", "Mfc12", "Mfc13", "Mfc14", "Mfc15", "Mfc16","Mfc19", + "Mfc10", "Mfc11", "Mfc12", "Mfc13", "Mfc14", "Mfc15", "Mfc16","Mfc17","Mfc19", "Mfc20","Mfc22", "Mfc23", "Mfc26", "Mfc27", "Mfc28", "Mfc29", "Mfc31", "Mfc33", "Mfc34", "Mfc35", "Mfc36", "Mfc37", "Mfc38","Mfc31", "Mfc40", "Mfc41", "Mfc42", "Mfc43", "Mfc44", "Mfc45"}; @@ -546,6 +546,7 @@ namespace SicModules.PMs list.Add(Mfc14); list.Add(Mfc15); list.Add(Mfc16); + list.Add(Mfc17); list.Add(Mfc19); list.Add(Mfc20); list.Add(Mfc22); @@ -2103,9 +2104,9 @@ namespace SicModules.PMs { ChamberMoveBody.FuncCheckSwingUnlock = () => { - if (SHLidSwing != null && MiddleLidSwing != null) + if (SHLidSwing != null ) { - return SHLidSwing.LidUnlockFaceback || MiddleLidSwing.LidUnlockFaceback; + return SHLidSwing.LidUnlockFaceback ; } else { diff --git a/Modules/Mainframe/PMs/Routines/PMChamberMoveBodyRoutine.cs b/Modules/Mainframe/PMs/Routines/PMChamberMoveBodyRoutine.cs index 217356fb..5803de77 100644 --- a/Modules/Mainframe/PMs/Routines/PMChamberMoveBodyRoutine.cs +++ b/Modules/Mainframe/PMs/Routines/PMChamberMoveBodyRoutine.cs @@ -5,6 +5,7 @@ using Aitex.Core.RT.Device.Devices; using Aitex.Core.RT.Event; using Aitex.Core.RT.Routine; using MECF.Framework.Common.Equipment; +using MECF.Framework.RT.EquipmentLibrary.Devices; using SicModules.PMs.Routines.Base; namespace SicModules.PMs.Routines @@ -15,8 +16,7 @@ namespace SicModules.PMs.Routines public IoGasConnector _ioGasConnector; public IoLid _ioSHLid; public IoLidSwing _ioSHSwing; - public IoLid _ioMiddleLid; - public IoLidSwing _ioMiddleSwing; + private PMModule _pm1Module; private string _moveBodyGroup; @@ -27,7 +27,7 @@ namespace SicModules.PMs.Routines private bool IsShOpen = false; private bool IsTopOpen = false; - private bool IsMiddleOpen = false; + private Stopwatch _swTimer = new Stopwatch(); public int ElapsedTime @@ -78,13 +78,12 @@ namespace SicModules.PMs.Routines Name = "MoveBody"; _pm1Module = pm1; - _ioChamberMoveBody = DEVICE.GetDevice($"{pm1.Name}.{"ChamberMoveBody"}"); + _ioChamberMoveBody = DEVICE.GetDevice($"{pm1.Name}.{"ChamberMoveBody"}"); _ioGasConnector = DEVICE.GetDevice($"{pm1.Name}.{"GasConnector"}"); _ioSHLid = DEVICE.GetDevice($"{pm1.Name}.{"SHLid"}"); _ioSHSwing = DEVICE.GetDevice($"{pm1.Name}.{"SHLidSwing"}"); - _ioMiddleSwing = DEVICE.GetDevice($"{pm1.Name}.{"MiddleLidSwing"}"); _timeoutLid = 10; _timeoutSwing = 10; @@ -112,11 +111,11 @@ namespace SicModules.PMs.Routines EV.PostWarningLog(Module, "PM is not at ATM State(DI-9 PMATMSW),do not open Cham!"); return Result.FAIL; } - if (!_ioChamberMoveBody.DownFaceback) - { - EV.PostWarningLog(Module, "Chamber must in Down position!"); - return Result.FAIL; - } + //if (!_ioChamberMoveBody.DownFaceback) + //{ + // EV.PostWarningLog(Module, "Chamber must in Down position!"); + // return Result.FAIL; + //} if (!_ioChamberMoveBody.FrontFaceback) { EV.PostWarningLog(Module, "Chamber must in Front position!"); @@ -137,14 +136,8 @@ namespace SicModules.PMs.Routines { IsShOpen = true; IsTopOpen = false; - IsMiddleOpen = false; - } - else if (_ioMiddleLid.LoosenFaceback) - { - IsShOpen = false; - IsTopOpen = false; - IsMiddleOpen = true; } + _swTimer.Restart(); Reset(); @@ -171,18 +164,11 @@ namespace SicModules.PMs.Routines if (_Open) { - if (_moveBodyGroup.Contains("MID")) - { - CheckLidTighten((int)RoutineStep.RoutineStep9, _ioMiddleLid, "MiddleLid", false, _timeoutLid); - TimeDelay((int)RoutineStep.TimeDelay2, 2); - CheckLidSwingLock((int)RoutineStep.RoutineStep10, _ioMiddleSwing, "MiddleLid", false, _timeoutSwing); - } - else - { + CheckLidTighten((int)RoutineStep.RoutineStep9, _ioSHLid, "SHLid", false, _timeoutLid); TimeDelay((int)RoutineStep.TimeDelay2, 2); CheckLidSwingLock((int)RoutineStep.RoutineStep10, _ioSHSwing, "SHLid", false, _timeoutSwing); - } + TimeDelay((int)RoutineStep.RoutineStepTime2, 2); @@ -195,14 +181,7 @@ namespace SicModules.PMs.Routines TimeDelay((int)RoutineStep.TimeDelay2, 2); CheckLidTighten((int)RoutineStep.RoutineStep1, _ioSHLid, "SHLid", true, _timeoutLid); } - else if (IsMiddleOpen) - { - CheckLidSwingLock((int)RoutineStep.RoutineStep6, _ioMiddleSwing, "MiddleLid", true, _timeoutSwing); - TimeDelay((int)RoutineStep.TimeDelay2, 2); - CheckLidTighten((int)RoutineStep.RoutineStep3, _ioMiddleLid, "MiddleLid", true, _timeoutLid); - } - - + GasConnectorTighten((int)RoutineStep.RoutineStep9, true, _timeoutGasConnector); //关闭V76 diff --git a/Modules/Mainframe/SicModules.csproj b/Modules/Mainframe/SicModules.csproj index 205c80d9..9f1084ad 100644 --- a/Modules/Mainframe/SicModules.csproj +++ b/Modules/Mainframe/SicModules.csproj @@ -121,12 +121,11 @@ - - + diff --git a/Modules/Mainframe/TMs/Routines/Base/TMBaseRoutine.cs b/Modules/Mainframe/TMs/Routines/Base/TMBaseRoutine.cs index e8b1459f..94ff88bf 100644 --- a/Modules/Mainframe/TMs/Routines/Base/TMBaseRoutine.cs +++ b/Modules/Mainframe/TMs/Routines/Base/TMBaseRoutine.cs @@ -7,6 +7,7 @@ using Aitex.Core.RT.Device.Unit; using Aitex.Core.RT.Event; using Aitex.Core.RT.Routine; using Aitex.Core.RT.SCCore; +using MECF.Framework.Common.CommonData; using MECF.Framework.Common.Equipment; using MECF.Framework.Common.Schedulers; using MECF.Framework.Common.SubstrateTrackings; @@ -1409,12 +1410,24 @@ namespace SicModules.TMs.Routines.Base } } - protected void RobotMoveSingleStepAndWait(int id, RobotBaseDevice robot, ModuleName source, int slot, RobotArmEnum hand, int timeout,bool isPlace, bool isGoIn) + /// + /// 机械手单步移动指令,组合成Pick或PLace动作, + /// + /// + /// 机械手对象 + /// 目标模块 + /// 工位号 + /// 手臂类型 + /// 标识机械手取放动作 + /// 机械手是否缩回 + /// 机械手是否伸进去 + /// 超时时间 + protected void RobotMoveSingleStepAndWait(int id, RobotBaseDevice robot, ModuleName source, int slot, RobotArmEnum hand, RobotAction action, bool isMoving, bool isGoIn, int timeout) { Tuple ret = ExecuteAndWait(id, () => { - Notify($"Goto {source} {slot + 1} use {(hand == RobotArmEnum.Blade1 ? "Blade1" : "Blade2")}"); - List para = new List() { hand, source, slot, isPlace, isGoIn }; + Notify($"{action} {source} {slot + 1} use {(hand == RobotArmEnum.Blade1 ? "Blade1" : "Blade2")}"); + List para = new List() { hand, source, slot, action, isMoving, isGoIn }; if (!robot.MoveSingleStep(para.ToArray())) { robot.IsBusy = false; @@ -1434,7 +1447,7 @@ namespace SicModules.TMs.Routines.Base { if (ret.Item2 == Result.FAIL) { - Stop($"Goto failed, error {robot.ErrorCode}"); + Stop($"{action} failed, error {robot.ErrorCode}"); throw (new RoutineFaildException()); } else if (ret.Item2 == Result.TIMEOUT) //timeout @@ -2031,6 +2044,7 @@ namespace SicModules.TMs.Routines.Base { Tuple ret = ExecuteAndWait(id, () => { + Notify($"Wait servo load angle run"); if (_sicServo != null) { _sicServo.LoadAngleRun(speed); @@ -2095,6 +2109,7 @@ namespace SicModules.TMs.Routines.Base { Tuple ret = ExecuteAndWait(id, () => { + Notify($"Wait servo unload angle run"); if (_sicServo != null) { _sicServo.UnloadAngleRun(speed); diff --git a/Modules/Mainframe/TMs/Routines/TMRobotPickRoutine.cs b/Modules/Mainframe/TMs/Routines/TMRobotPickRoutine.cs index 232d0a86..3a8dccd9 100644 --- a/Modules/Mainframe/TMs/Routines/TMRobotPickRoutine.cs +++ b/Modules/Mainframe/TMs/Routines/TMRobotPickRoutine.cs @@ -4,6 +4,7 @@ using Aitex.Core.RT.Event; using Aitex.Core.RT.Log; using Aitex.Core.RT.Routine; using Aitex.Core.RT.SCCore; +using MECF.Framework.Common.CommonData; using MECF.Framework.Common.Equipment; using MECF.Framework.Common.SubstrateTrackings; using MECF.Framework.RT.EquipmentLibrary.HardwareUnits.Robots; @@ -281,7 +282,7 @@ namespace SicModules.TMs.Routines CheckRobotReady((int)RoutineStep.CheckRobotReady, RobotDevice, _pickTimeout); CheckBeforePick((int)RoutineStep.CheckBeforePick, _target, _targetSlot, _blade); RobotRequestWaferPresent((int)RoutineStep.BeforePickRequestWaferPresent, RobotDevice, _blade, _pickTimeout); - ////CheckWaferInfoByRobotRQ((int)RoutineStep.AfterPickCheckWaferInfoByRobotSensor, RobotDevice, _blade, Module, _target.ToString(), 1000); + CheckWaferInfoByRobotRQ((int)RoutineStep.AfterPickCheckWaferInfoByRobotSensor, RobotDevice, _blade, Module, _target.ToString(), 1000); WaitPMReadySensor((int)RoutineStep.WaitPMSensor, _target,5); SetRobotExtendToDO((int)RoutineStep.SetRobortExtendToDo, _target, 2); CheckRobotReady((int)RoutineStep.CheckRobotReady, RobotDevice, _pickTimeout); @@ -300,13 +301,13 @@ namespace SicModules.TMs.Routines //要求从原点位转到Load位置,抵消 WaitSicServoLoadAngleRun((int)RoutineStep.SicServoLoadAngleRun, _sicServoLoadAngle, 90); - RobotMoveSingleStepAndWait((int)RoutineStep.RobotGotoPmLowAndWait, RobotDevice, _target, _targetSlot, _blade, 60, false, true);//先进去,停在高位 + RobotMoveSingleStepAndWait((int)RoutineStep.RobotGotoPmLowAndWait, RobotDevice, _target, _targetSlot, _blade, RobotAction.Picking, false,true,60);//先进去,停在高位 TimeDelay((int)RoutineStep.TimeDelay3, 3); //等磁流体开始旋转,释放Tray盘 WaitSicServoUnloadAngleRun((int)RoutineStep.SicServoUnloadAngleRun, _sicServoUnloadAngle, 90);//开始旋转,释放Tray盘 TimeDelay((int)RoutineStep.TimeDelay4, 3); - RobotMoveSingleStepAndWait((int)RoutineStep.RobotGotoPmHighAndWait, RobotDevice, _target, _targetSlot, _blade, 60, false, false);//从高位退出去 + RobotMoveSingleStepAndWait((int)RoutineStep.RobotGotoPmHighAndWait, RobotDevice, _target, _targetSlot, _blade, RobotAction.Picking, true,false,60);//从高位退出去 } @@ -318,7 +319,7 @@ namespace SicModules.TMs.Routines IsPicking = false; TimeDelay((int)RoutineStep.TimeDelay2, 1); RobotRequestWaferPresent((int)RoutineStep.RequestWaferPresent, RobotDevice, _blade, _pickTimeout); - ////CheckWaferInfoByRobotRQ((int)RoutineStep.CheckWaferInfoByRobotSensor, RobotDevice, _blade, Module, _target.ToString(), 1000); + CheckWaferInfoByRobotRQ((int)RoutineStep.CheckWaferInfoByRobotSensor, RobotDevice, _blade, Module, _target.ToString(), 1000); if (_requestAWCData) { diff --git a/Modules/Mainframe/TMs/Routines/TMRobotPlaceRoutine.cs b/Modules/Mainframe/TMs/Routines/TMRobotPlaceRoutine.cs index cfc1c186..e5940612 100644 --- a/Modules/Mainframe/TMs/Routines/TMRobotPlaceRoutine.cs +++ b/Modules/Mainframe/TMs/Routines/TMRobotPlaceRoutine.cs @@ -4,6 +4,7 @@ using Aitex.Core.RT.Event; using Aitex.Core.RT.Log; using Aitex.Core.RT.Routine; using Aitex.Core.RT.SCCore; +using MECF.Framework.Common.CommonData; using MECF.Framework.Common.Equipment; using MECF.Framework.Common.SubstrateTrackings; using MECF.Framework.RT.EquipmentLibrary.HardwareUnits.PMs; @@ -263,7 +264,7 @@ namespace SicModules.TMs.Routines CheckBeforePlace((int)RoutineStep.CheckBeforePlace, _target, _targetSlot, _blade); RobotRequestWaferPresent((int)RoutineStep.BeforePlaceRequestWaferPresent, RobotDevice, _blade, _placeTimeout); - ////CheckWaferInfoByRobotRQ((int)RoutineStep.BeforePlaceCheckWaferInfoByRobotSensor, RobotDevice, _blade, Module, _target.ToString(), 10); + CheckWaferInfoByRobotRQ((int)RoutineStep.BeforePlaceCheckWaferInfoByRobotSensor, RobotDevice, _blade, Module, _target.ToString(), 10); WaitPMReadySensor((int)RoutineStep.WaitPMSensor, _target, 5); SetRobotExtendToDO((int)RoutineStep.SetRobortExtendToDo, _target, 2); @@ -282,29 +283,24 @@ namespace SicModules.TMs.Routines WaitCheckServoParkHomePosition((int)RoutineStep.WaitCheckServoHome, _serveHomeMaxDeviation, 90); - RobotMoveSingleStepAndWait((int)RoutineStep.RobotGotoPmLowAndWait, RobotDevice, _target, _targetSlot, _blade, _placeTimeout,true,true);//先进去,停在高位 + RobotMoveSingleStepAndWait((int)RoutineStep.RobotGotoPmLowAndWait, RobotDevice, _target, _targetSlot, _blade, RobotAction.Placing,false, true,60);//先进去,停在高位 TimeDelay((int)RoutineStep.TimeDelay4, 3); WaitSicServoLoadAngleRun((int)RoutineStep.WaitSicServoLoadAngleRun, _sicServoLoadAngleRun, 90);//机械手到高位,磁流体旋转锁紧Tray盘 TimeDelay((int)RoutineStep.TimeDelay5, 3); - RobotMoveSingleStepAndWait((int)RoutineStep.RobotGotoPmHighAndWait, RobotDevice, _target, _targetSlot, _blade, _placeTimeout, true, false);//从高位出去 - - //测试用 - //SetServoActualSpeed((int)RoutineStep.SetServoActualSpeed, 5, 90); + RobotMoveSingleStepAndWait((int)RoutineStep.RobotGotoPmHighAndWait, RobotDevice, _target, _targetSlot, _blade, RobotAction.Placing, true,false,60);//从高位出去 } else//别的模块保持机械手逻辑不变 { - //RobotMoveSingleStepAndWait((int)RoutineStep.RobotGotoPmLowAndWait, RobotDevice, _target, _targetSlot, _blade, _placeTimeout, true, true);//先进去,停在高位 - //RobotMoveSingleStepAndWait((int)RoutineStep.RobotGotoPmHighAndWait, RobotDevice, _target, _targetSlot, _blade, _placeTimeout, true, false);//从高位出去 Place((int)RoutineStep.Place, RobotDevice, _target, _targetSlot, _blade, _placeTimeout); } IsPicking = false; TimeDelay((int)RoutineStep.TimeDelay1, 1); RobotRequestWaferPresent((int)RoutineStep.RequestWaferPresent, RobotDevice, _blade, _placeTimeout); - ////CheckWaferInfoByRobotRQ((int)RoutineStep.CheckWaferInfoByRobotSensor, RobotDevice, _blade, Module, _target.ToString(), 10); + CheckWaferInfoByRobotRQ((int)RoutineStep.CheckWaferInfoByRobotSensor, RobotDevice, _blade, Module, _target.ToString(), 10); if (_requestAWCData) { diff --git a/Modules/Mainframe/TMs/TMModule.cs b/Modules/Mainframe/TMs/TMModule.cs index 5d88124f..d4f84a3c 100644 --- a/Modules/Mainframe/TMs/TMModule.cs +++ b/Modules/Mainframe/TMs/TMModule.cs @@ -18,6 +18,7 @@ using Aitex.Sorter.Common; using MECF.Framework.Common.Equipment; using MECF.Framework.Common.Event; using MECF.Framework.Common.PLC; +using MECF.Framework.RT.EquipmentLibrary.HardwareUnits.Robots; using SicModules.TMs.Routines; using SicAds = SicModules.Devices.SicAds; @@ -574,6 +575,10 @@ namespace SicModules.TMs OP.Subscribe($"{Module}.SetOnline", (string cmd, object[] args) => PutOnline()); OP.Subscribe($"{Module}.SetOffline", (string cmd, object[] args) => PutOffline()); + + OP.Subscribe($"TMRobot.RobotArmBlade1SetParameter", (string cmd, object[] args) =>RobotArmBlade1SetParameter(args)); + OP.Subscribe($"TMRobot.RobotArmBlade1ReadParameter", (string cmd, object[] args) => RobotArmBlade1ReadParameter(args)); + } private void InitData() @@ -703,6 +708,16 @@ namespace SicModules.TMs return true; } + private bool RobotArmBlade1SetParameter(object[] param) + { + return RobotDevice.SetParameter(new object[] { param[0], RobotArmEnum.Blade1, param[1] }); + } + + private bool RobotArmBlade1ReadParameter(object[] param) + { + return RobotDevice.ReadParameter(new object[] { param[0], RobotArmEnum.Blade1}); + } + private bool FsmExitError(object[] param) { return true; diff --git a/Modules/Mainframe/gitversion.json b/Modules/Mainframe/gitversion.json index 16a477dc..c47b0d17 100644 --- a/Modules/Mainframe/gitversion.json +++ b/Modules/Mainframe/gitversion.json @@ -2,34 +2,34 @@ "Major": 23, "Minor": 9, "Patch": 2, - "PreReleaseTag": "----multiplate-develop.587", - "PreReleaseTagWithDash": "-----multiplate-develop.587", + "PreReleaseTag": "----multiplate-develop.588", + "PreReleaseTagWithDash": "-----multiplate-develop.588", "PreReleaseLabel": "----multiplate-develop", "PreReleaseLabelWithDash": "-----multiplate-develop", - "PreReleaseNumber": 587, - "WeightedPreReleaseNumber": 587, + "PreReleaseNumber": 588, + "WeightedPreReleaseNumber": 588, "BuildMetaData": null, "BuildMetaDataPadded": "", - "FullBuildMetaData": "Branch.----multiplate-develop.Sha.4c18bc3c1736a4751da6f6c99bfdb84962b7ed2c", + "FullBuildMetaData": "Branch.----multiplate-develop.Sha.a5a61abb6afe3222e126eaf3cd2f3b3bf109b405", "MajorMinorPatch": "23.9.2", - "SemVer": "23.9.2-----multiplate-develop.587", - "LegacySemVer": "23.9.2-----multiplate-de587", - "LegacySemVerPadded": "23.9.2-----multiplate-d0587", - "AssemblySemVer": "23.9.2.587", - "AssemblySemFileVer": "23.9.2.587", - "FullSemVer": "23.9.2-----multiplate-develop.587", - "InformationalVersion": "23.9.2-----multiplate-develop.587+Branch.----multiplate-develop.Sha.4c18bc3c1736a4751da6f6c99bfdb84962b7ed2c", + "SemVer": "23.9.2-----multiplate-develop.588", + "LegacySemVer": "23.9.2-----multiplate-de588", + "LegacySemVerPadded": "23.9.2-----multiplate-d0588", + "AssemblySemVer": "23.9.2.588", + "AssemblySemFileVer": "23.9.2.588", + "FullSemVer": "23.9.2-----multiplate-develop.588", + "InformationalVersion": "23.9.2-----multiplate-develop.588+Branch.----multiplate-develop.Sha.a5a61abb6afe3222e126eaf3cd2f3b3bf109b405", "BranchName": "多片机/multiplate-develop", "EscapedBranchName": "----multiplate-develop", - "Sha": "4c18bc3c1736a4751da6f6c99bfdb84962b7ed2c", - "ShortSha": "4c18bc3", - "NuGetVersionV2": "23.9.2-----multiplate-d0587", - "NuGetVersion": "23.9.2-----multiplate-d0587", - "NuGetPreReleaseTagV2": "----multiplate-d0587", - "NuGetPreReleaseTag": "----multiplate-d0587", + "Sha": "a5a61abb6afe3222e126eaf3cd2f3b3bf109b405", + "ShortSha": "a5a61ab", + "NuGetVersionV2": "23.9.2-----multiplate-d0588", + "NuGetVersion": "23.9.2-----multiplate-d0588", + "NuGetPreReleaseTagV2": "----multiplate-d0588", + "NuGetPreReleaseTag": "----multiplate-d0588", "VersionSourceSha": "c29389314a6af8abb1346677a53be6fe6b00379e", - "CommitsSinceVersionSource": 587, - "CommitsSinceVersionSourcePadded": "0587", - "UncommittedChanges": 0, - "CommitDate": "2024-06-24" + "CommitsSinceVersionSource": 588, + "CommitsSinceVersionSourcePadded": "0588", + "UncommittedChanges": 25, + "CommitDate": "2024-06-25" } \ No newline at end of file diff --git a/SicRT/gitversion.json b/SicRT/gitversion.json index 16a477dc..c47b0d17 100644 --- a/SicRT/gitversion.json +++ b/SicRT/gitversion.json @@ -2,34 +2,34 @@ "Major": 23, "Minor": 9, "Patch": 2, - "PreReleaseTag": "----multiplate-develop.587", - "PreReleaseTagWithDash": "-----multiplate-develop.587", + "PreReleaseTag": "----multiplate-develop.588", + "PreReleaseTagWithDash": "-----multiplate-develop.588", "PreReleaseLabel": "----multiplate-develop", "PreReleaseLabelWithDash": "-----multiplate-develop", - "PreReleaseNumber": 587, - "WeightedPreReleaseNumber": 587, + "PreReleaseNumber": 588, + "WeightedPreReleaseNumber": 588, "BuildMetaData": null, "BuildMetaDataPadded": "", - "FullBuildMetaData": "Branch.----multiplate-develop.Sha.4c18bc3c1736a4751da6f6c99bfdb84962b7ed2c", + "FullBuildMetaData": "Branch.----multiplate-develop.Sha.a5a61abb6afe3222e126eaf3cd2f3b3bf109b405", "MajorMinorPatch": "23.9.2", - "SemVer": "23.9.2-----multiplate-develop.587", - "LegacySemVer": "23.9.2-----multiplate-de587", - "LegacySemVerPadded": "23.9.2-----multiplate-d0587", - "AssemblySemVer": "23.9.2.587", - "AssemblySemFileVer": "23.9.2.587", - "FullSemVer": "23.9.2-----multiplate-develop.587", - "InformationalVersion": "23.9.2-----multiplate-develop.587+Branch.----multiplate-develop.Sha.4c18bc3c1736a4751da6f6c99bfdb84962b7ed2c", + "SemVer": "23.9.2-----multiplate-develop.588", + "LegacySemVer": "23.9.2-----multiplate-de588", + "LegacySemVerPadded": "23.9.2-----multiplate-d0588", + "AssemblySemVer": "23.9.2.588", + "AssemblySemFileVer": "23.9.2.588", + "FullSemVer": "23.9.2-----multiplate-develop.588", + "InformationalVersion": "23.9.2-----multiplate-develop.588+Branch.----multiplate-develop.Sha.a5a61abb6afe3222e126eaf3cd2f3b3bf109b405", "BranchName": "多片机/multiplate-develop", "EscapedBranchName": "----multiplate-develop", - "Sha": "4c18bc3c1736a4751da6f6c99bfdb84962b7ed2c", - "ShortSha": "4c18bc3", - "NuGetVersionV2": "23.9.2-----multiplate-d0587", - "NuGetVersion": "23.9.2-----multiplate-d0587", - "NuGetPreReleaseTagV2": "----multiplate-d0587", - "NuGetPreReleaseTag": "----multiplate-d0587", + "Sha": "a5a61abb6afe3222e126eaf3cd2f3b3bf109b405", + "ShortSha": "a5a61ab", + "NuGetVersionV2": "23.9.2-----multiplate-d0588", + "NuGetVersion": "23.9.2-----multiplate-d0588", + "NuGetPreReleaseTagV2": "----multiplate-d0588", + "NuGetPreReleaseTag": "----multiplate-d0588", "VersionSourceSha": "c29389314a6af8abb1346677a53be6fe6b00379e", - "CommitsSinceVersionSource": 587, - "CommitsSinceVersionSourcePadded": "0587", - "UncommittedChanges": 0, - "CommitDate": "2024-06-24" + "CommitsSinceVersionSource": 588, + "CommitsSinceVersionSourcePadded": "0588", + "UncommittedChanges": 25, + "CommitDate": "2024-06-25" } \ No newline at end of file diff --git a/SicSimulator/Config/_ioDefinePM.xml b/SicSimulator/Config/_ioDefinePM.xml index 9f3d0932..5a14c5fb 100644 --- a/SicSimulator/Config/_ioDefinePM.xml +++ b/SicSimulator/Config/_ioDefinePM.xml @@ -147,6 +147,7 @@ + @@ -164,7 +165,6 @@ - diff --git a/SicSimulator/gitversion.json b/SicSimulator/gitversion.json index 16a477dc..c47b0d17 100644 --- a/SicSimulator/gitversion.json +++ b/SicSimulator/gitversion.json @@ -2,34 +2,34 @@ "Major": 23, "Minor": 9, "Patch": 2, - "PreReleaseTag": "----multiplate-develop.587", - "PreReleaseTagWithDash": "-----multiplate-develop.587", + "PreReleaseTag": "----multiplate-develop.588", + "PreReleaseTagWithDash": "-----multiplate-develop.588", "PreReleaseLabel": "----multiplate-develop", "PreReleaseLabelWithDash": "-----multiplate-develop", - "PreReleaseNumber": 587, - "WeightedPreReleaseNumber": 587, + "PreReleaseNumber": 588, + "WeightedPreReleaseNumber": 588, "BuildMetaData": null, "BuildMetaDataPadded": "", - "FullBuildMetaData": "Branch.----multiplate-develop.Sha.4c18bc3c1736a4751da6f6c99bfdb84962b7ed2c", + "FullBuildMetaData": "Branch.----multiplate-develop.Sha.a5a61abb6afe3222e126eaf3cd2f3b3bf109b405", "MajorMinorPatch": "23.9.2", - "SemVer": "23.9.2-----multiplate-develop.587", - "LegacySemVer": "23.9.2-----multiplate-de587", - "LegacySemVerPadded": "23.9.2-----multiplate-d0587", - "AssemblySemVer": "23.9.2.587", - "AssemblySemFileVer": "23.9.2.587", - "FullSemVer": "23.9.2-----multiplate-develop.587", - "InformationalVersion": "23.9.2-----multiplate-develop.587+Branch.----multiplate-develop.Sha.4c18bc3c1736a4751da6f6c99bfdb84962b7ed2c", + "SemVer": "23.9.2-----multiplate-develop.588", + "LegacySemVer": "23.9.2-----multiplate-de588", + "LegacySemVerPadded": "23.9.2-----multiplate-d0588", + "AssemblySemVer": "23.9.2.588", + "AssemblySemFileVer": "23.9.2.588", + "FullSemVer": "23.9.2-----multiplate-develop.588", + "InformationalVersion": "23.9.2-----multiplate-develop.588+Branch.----multiplate-develop.Sha.a5a61abb6afe3222e126eaf3cd2f3b3bf109b405", "BranchName": "多片机/multiplate-develop", "EscapedBranchName": "----multiplate-develop", - "Sha": "4c18bc3c1736a4751da6f6c99bfdb84962b7ed2c", - "ShortSha": "4c18bc3", - "NuGetVersionV2": "23.9.2-----multiplate-d0587", - "NuGetVersion": "23.9.2-----multiplate-d0587", - "NuGetPreReleaseTagV2": "----multiplate-d0587", - "NuGetPreReleaseTag": "----multiplate-d0587", + "Sha": "a5a61abb6afe3222e126eaf3cd2f3b3bf109b405", + "ShortSha": "a5a61ab", + "NuGetVersionV2": "23.9.2-----multiplate-d0588", + "NuGetVersion": "23.9.2-----multiplate-d0588", + "NuGetPreReleaseTagV2": "----multiplate-d0588", + "NuGetPreReleaseTag": "----multiplate-d0588", "VersionSourceSha": "c29389314a6af8abb1346677a53be6fe6b00379e", - "CommitsSinceVersionSource": 587, - "CommitsSinceVersionSourcePadded": "0587", - "UncommittedChanges": 0, - "CommitDate": "2024-06-24" + "CommitsSinceVersionSource": 588, + "CommitsSinceVersionSourcePadded": "0588", + "UncommittedChanges": 25, + "CommitDate": "2024-06-25" } \ No newline at end of file diff --git a/SicUI/Controls/BodyBottom.xaml b/SicUI/Controls/BodyBottom.xaml index 52e08f71..a6c06d15 100644 --- a/SicUI/Controls/BodyBottom.xaml +++ b/SicUI/Controls/BodyBottom.xaml @@ -62,7 +62,7 @@ Source="/SicUI;component/Themes/Images/parts/bodymove/bottom3.png" /> - + - + + + + + @@ -2990,6 +3006,7 @@ + @@ -3471,6 +3488,95 @@ + + + + + + + + + + + + + + + + + + + + + + + diff --git a/SicUI/Models/Maintenances/TM/TMViewModel.cs b/SicUI/Models/Maintenances/TM/TMViewModel.cs index 95150a44..71ea3a30 100644 --- a/SicUI/Models/Maintenances/TM/TMViewModel.cs +++ b/SicUI/Models/Maintenances/TM/TMViewModel.cs @@ -14,6 +14,7 @@ using Aitex.Core.RT.SCCore; using Aitex.Core.RT.DataCenter; using MECF.Framework.Common.DBCore; using System; +using MECF.Framework.RT.EquipmentLibrary.HardwareUnits.Robots; namespace SicUI.Client.Models.Platform.TM { @@ -264,6 +265,15 @@ namespace SicUI.Client.Models.Platform.TM return ModuleStatusBackground.GetStatusBackground(status); } + private List _robotLoads=new List(){"ON","OFF"}; + public List RobotLoads + { + get { return _robotLoads; } + set { _robotLoads = value; NotifyOfPropertyChange("RobotLoads"); } + } + + + public string SelectRobotLoad { get; set; } = "ON"; private List _modules = new List() { "PM1", "PM2", "LoadLock", "UnLoad", "Buffer.01", "Buffer.02", "Buffer.03" }; public List Modules @@ -319,6 +329,13 @@ namespace SicUI.Client.Models.Platform.TM [Subscription("Load.Rotation.CurPos")] public double LdRotationCurPos { get; set; } + [Subscription("Load.Rotation.IsMoveDone")] + public bool IsMoveDone { get; set; } + + [Subscription("Load.Rotation.IsServeHomeDone")] + public bool IsServeHomeDone { get; set; } + + [Subscription("TM.LoadSlowPump.DeviceData")] public AITValveData LLSlowRough { get; set; } @@ -626,6 +643,10 @@ namespace SicUI.Client.Models.Platform.TM #endregion #region TM Robot + + [Subscription("TMRobot.IsHaveWafer")] + public bool IsTmRobotHaveWafer { get; set; } + public void TMRobot_Home() { TMProvider.Instance.TMRobot_Home(); @@ -1084,7 +1105,15 @@ namespace SicUI.Client.Models.Platform.TM InvokeClient.Instance.Service.DoOperation($"{module}.Separate"); } - + public void RobotSetParameter() + { + InvokeClient.Instance.Service.DoOperation($"TMRobot.RobotArmBlade1SetParameter", new object[] { "SetLoad", SelectRobotLoad =="ON" ? true:false}); + } + + public void RobotReadParameter() + { + InvokeClient.Instance.Service.DoOperation($"TMRobot.RobotArmBlade1ReadParameter", new object[] { "QueryWaferPresent"}); + } #endregion #region ConfinementRing diff --git a/SicUI/Models/PMs/PMMotionView.xaml b/SicUI/Models/PMs/PMMotionView.xaml index ccf940c3..5e141b27 100644 --- a/SicUI/Models/PMs/PMMotionView.xaml +++ b/SicUI/Models/PMs/PMMotionView.xaml @@ -1432,12 +1432,10 @@ Background="{DynamicResource Table_BG_Content}" BorderBrush="{DynamicResource Table_BD}" BorderThickness="0,0,1,1"> -