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