Browse Source

fix add FTR pick/place lp1/2检测是否回原点 然后agv close

jiangjy 1 day ago
parent
commit
ed2ac2cc55

+ 15 - 10
FrameworkLocal/Common/Device/ModuleName.cs

@@ -14,7 +14,7 @@ namespace MECF.Framework.Common.Equipment
     [Serializable]
     public enum ModuleName
     {
-       
+
         [EnumMember]
         System = 0,
 
@@ -154,7 +154,7 @@ namespace MECF.Framework.Common.Equipment
 
         [EnumMember]
         Buffer6,
-        
+
         //PMs
 
         [EnumMember]
@@ -239,7 +239,7 @@ namespace MECF.Framework.Common.Equipment
 
         [EnumMember]
         SMIFB,
-       
+
         [EnumMember]
         CassetteRobot,
         [EnumMember]
@@ -326,7 +326,7 @@ namespace MECF.Framework.Common.Equipment
         [EnumMember]
         LP,
         [EnumMember]
-        Stocker,  
+        Stocker,
         [EnumMember]
         GaslineHeater,
     }
@@ -342,6 +342,11 @@ namespace MECF.Framework.Common.Equipment
         {
             return unit == ModuleName.TurnOverStation;
         }
+        public static bool IsLoadPort1And2(ModuleName unit)
+        {
+
+            return unit == ModuleName.LP1  || unit == ModuleName.LP2;
+        }
         public static bool IsLoadPort(ModuleName unit)
         {
             return unit == ModuleName.LP1
@@ -367,7 +372,7 @@ namespace MECF.Framework.Common.Equipment
 
         public static bool IsCOT(string unit)
         {
-            return unit.ToString().Contains( "2_1")
+            return unit.ToString().Contains("2_1")
                    || unit.ToString().Contains("2_2");
         }
 
@@ -428,7 +433,7 @@ namespace MECF.Framework.Common.Equipment
                    || unit == ModuleName.PMD
                     ;
         }
- 
+
         public static bool IsLoadLock(string unit)
         {
             return IsLoadLock(ModuleHelper.Converter(unit));
@@ -477,7 +482,7 @@ namespace MECF.Framework.Common.Equipment
         {
             return IsAligner(ModuleHelper.Converter(unit));
         }
-        
+
 
         public static bool IsAligner(ModuleName unit)
         {
@@ -529,7 +534,7 @@ namespace MECF.Framework.Common.Equipment
         public static string GetE84LpName(string device)
         {
             string e84 = string.Empty;
-            switch(device)
+            switch (device)
             {
                 case "P1":
                 case "LP1":
@@ -575,7 +580,7 @@ namespace MECF.Framework.Common.Equipment
 
             return e84;
         }
-        
+
         public static ModuleName Converter(string module)
         {
             module = module.Replace("-", "_");
@@ -589,7 +594,7 @@ namespace MECF.Framework.Common.Equipment
                 return ModuleName.Cassette4;
             if (module.ToLower().Contains("1_5"))
                 return ModuleName.Cassette5;
-            return (ModuleName) Enum.Parse(typeof(ModuleName), module);
+            return (ModuleName)Enum.Parse(typeof(ModuleName), module);
         }
         /// <summary>
         /// 

+ 4 - 3
Furnace/FurnaceRT/Config/IO/ELK/DeviceModelPM.xml

@@ -513,9 +513,9 @@
 				    aoRobotActionCommand="AO_FOUPRobotActionCommand"
 				    aiRobotActionCommand="AI_FOUPRobotActionCommand"
 						
-				   diRobotHome1="DI_FTRHome1"
-				   diRobotHome2="DI_FTRHome2"
-				   diRobotHome3="DI_FTRHome3"
+				   diRobotHome1CZ="DI_FTRHomeCZ"
+				   diRobotHome2CS="DI_FTRHomeCS"
+				   diRobotHome3CX="DI_FTRHomeCX"
 
 			scRootPath=""
 			/>
@@ -1256,6 +1256,7 @@
 		<IoSensor id="SensorSL05004LAfurnacedoorsw" display="SL05004LAfurnacedoorsw" di="DI_SL05004LAfurnacedoorsw"/>
 
 		<IoSensor id="SensorPLCHeartBeatPC" display="PLCHeartBeatPC" di="DI_PLCHeartBeatPC"/>
+		<IoSensor id="SensorFTRHomeCX" display="FTRHomeCX" di="DI_FTRHomeCX"/>
 
 
 	</IoSensors>

+ 3 - 3
Furnace/FurnaceRT/Config/IO/ELK/_ioDefinePM.xml

@@ -453,9 +453,9 @@
 		<DI_ITEM Index="1862" Name="DI_LP1FOUPInPosition3" BufferOffset="1862" Addr="D116.6" Description="AGV loadport1 FOUP in position3(D116.6)" />
 		<DI_ITEM Index="1863" Name="DI_LP1FOUPDetect" BufferOffset="1863" Addr="D116.7" Description="AGV loadport1 FOUP detect(D116.7)" />
 
-		<DI_ITEM Index="1864" Name="DI_FTRHome1" BufferOffset="1864" Addr="D116.8" Description="FTR Home1(D116.8)" />
-		<DI_ITEM Index="1865" Name="DI_FTRHome1" BufferOffset="1865" Addr="D116.9" Description="FTR Home2(D116.9)" />
-		<DI_ITEM Index="1866" Name="DI_FTRHome1" BufferOffset="1866" Addr="D116.10" Description="FTR Home3(D116.10)" />
+		<DI_ITEM Index="1864" Name="DI_FTRHomeCZ" BufferOffset="1864" Addr="D116.8" Description="FTR Home1 CZ(D116.8)" />
+		<DI_ITEM Index="1865" Name="DI_FTRHomeCS" BufferOffset="1865" Addr="D116.9" Description="FTR Home2 CS(D116.9)" />
+		<DI_ITEM Index="1866" Name="DI_FTRHomeCX" BufferOffset="1866" Addr="D116.10" Description="FTR Home3 CX(D116.10)" />
 
 
 		<DI_ITEM Index="1872" Name="DI_LP2FOUPLeftClamp" BufferOffset="1872" Addr="D117.0" Description="AGV loadport2 FOUP left clamp(D117.0)" />

+ 2 - 0
Furnace/FurnaceRT/Equipments/CarrierRobots/CarrierRobotModuleDevice.cs

@@ -35,6 +35,7 @@ namespace FurnaceRT.Equipments.CarrierRobots
         public IoTrigger TrigActionCommand => _trigActionCommand;
         public RobotBaseDevice CarrierRobotDevice { get; set; }
         public IoBufferMotor BufferDevice { get; set; }
+        public IoSensor SensorFTRHomeCX;
         private IoTrigger _trigAlarmReset;
         private IoTrigger _trigActionCommand;
         private IoAlarmSignal _alarmSignaRobotAlarm;
@@ -50,6 +51,7 @@ namespace FurnaceRT.Equipments.CarrierRobots
             DoorDevice = DEVICE.GetDevice<IoDoor>($"PM1.AGVDoor");
             AlarmSignaFOUPRobotTPStatusWarning = DEVICE.GetDevice<IoAlarmSignal>($"PM1.AlarmSignaFOUPRobotTPStatusWarning");
             _alarmSignaRobotAlarm = DEVICE.GetDevice<IoAlarmSignal>($"PM1.AlarmSignaFOUPRobotAlarm");
+            SensorFTRHomeCX = DEVICE.GetDevice<IoSensor>($"PM1.SensorFTRHomeCX");
             _trigAlarmReset = DEVICE.GetDevice<IoTrigger>($"PM1.TrigFOUPRobotAlarmReset");
             _trigActionCommand = DEVICE.GetDevice<IoTrigger>($"PM1.TrigFOUPRobotActionCommand");
             CarrierManager.Instance.SubscribeLocation(Module, 1, SC.GetValue<int>("System.CassetteSlotCount"));

+ 7 - 2
Furnace/FurnaceRT/Equipments/CarrierRobots/CarrierRobotPick.cs

@@ -130,7 +130,7 @@ namespace FurnaceRT.Equipments.CarrierRobots
                 if (ModuleHelper.IsLoadPort(_source))
                 {
                     var lpModule = Singleton<EquipmentManager>.Instance.Modules[_source] as LoadPortModule;
-                    if(lpModule == null)
+                    if (lpModule == null)
                     {
                         _cassetteRobotModule.PickCassetteFailAlarm.Set($"pick from {_source} failed for not install");
                         return Result.FAIL;
@@ -483,7 +483,12 @@ namespace FurnaceRT.Equipments.CarrierRobots
             {
                 if (_cassetteRobotModule.CarrierRobotDevice.IsReady() && !_cassetteRobotModule.CarrierRobotDevice.IsError)
                 {
-                    return true;
+                    if (!ModuleHelper.IsLoadPort1And2(_source))
+                        return true;
+
+                    if (_cassetteRobotModule.SensorFTRHomeCX != null && _cassetteRobotModule.SensorFTRHomeCX.Value)
+                        return true;
+
                 }
 
                 return false;

+ 7 - 3
Furnace/FurnaceRT/Equipments/CarrierRobots/CarrierRobotPlace.cs

@@ -123,7 +123,7 @@ namespace FurnaceRT.Equipments.CarrierRobots
 
             if (_needStartCheck)
             {
-                if(!Singleton<EquipmentManager>.Instance.Modules.ContainsKey(_destination))
+                if (!Singleton<EquipmentManager>.Instance.Modules.ContainsKey(_destination))
                 {
                     _cassetteRobotModule.PlaceCassetteFailAlarm.Set($"place to {_destination} failed for not install");
                     return Result.FAIL;
@@ -266,7 +266,7 @@ namespace FurnaceRT.Equipments.CarrierRobots
                 {
                     SetLPUnload((int)RoutineStep.SetLPUnload, _destination, _timeout);
                     SaferDoorOpen((int)RoutineStep.DoorClose, false, _timeout);
-                }  
+                }
                 //RobotRequestCassettePresent((int)RoutineStep.RobotRequestCassettePresent, _blade, _timeout);
 
                 CheckCassetteInfoByRobotSensor((int)RoutineStep.CheckCassetteInfoByRobotSensor, _blade, false);
@@ -478,7 +478,11 @@ namespace FurnaceRT.Equipments.CarrierRobots
             {
                 if (_cassetteRobotModule.CarrierRobotDevice.IsReady() && !_cassetteRobotModule.CarrierRobotDevice.IsError)
                 {
-                    return true;
+                    if (!ModuleHelper.IsLoadPort1And2(_destination))
+                        return true;
+
+                    if (_cassetteRobotModule.SensorFTRHomeCX != null && _cassetteRobotModule.SensorFTRHomeCX.Value)
+                        return true;
                 }
 
                 return false;

+ 3 - 3
Furnace/FurnaceSimulator/Config/ELK/_ioDefinePM.xml

@@ -453,9 +453,9 @@
 		<DI_ITEM Index="1862" Name="DI_LP1FOUPInPosition3" BufferOffset="1862" Addr="D116.6" Description="AGV loadport1 FOUP in position3(D116.6)" />
 		<DI_ITEM Index="1863" Name="DI_LP1FOUPDetect" BufferOffset="1863" Addr="D116.7" Description="AGV loadport1 FOUP detect(D116.7)" />
 
-		<DI_ITEM Index="1864" Name="DI_FTRHome1" BufferOffset="1864" Addr="D116.8" Description="FTR Home1(D116.8)" />
-		<DI_ITEM Index="1865" Name="DI_FTRHome1" BufferOffset="1865" Addr="D116.9" Description="FTR Home2(D116.9)" />
-		<DI_ITEM Index="1866" Name="DI_FTRHome1" BufferOffset="1866" Addr="D116.10" Description="FTR Home3(D116.10)" />
+		<DI_ITEM Index="1864" Name="DI_FTRHomeCZ" BufferOffset="1864" Addr="D116.8" Description="FTR Home1 CZ(D116.8)" />
+		<DI_ITEM Index="1865" Name="DI_FTRHomeCS" BufferOffset="1865" Addr="D116.9" Description="FTR Home2 CS(D116.9)" />
+		<DI_ITEM Index="1866" Name="DI_FTRHomeCX" BufferOffset="1866" Addr="D116.10" Description="FTR Home3 CX(D116.10)" />
 
 
 		<DI_ITEM Index="1872" Name="DI_LP2FOUPLeftClamp" BufferOffset="1872" Addr="D117.0" Description="AGV loadport2 FOUP left clamp(D117.0)" />

+ 3 - 3
Furnace/FurnaceSimulator/Config/_ioDefinePM.xml

@@ -453,9 +453,9 @@
 		<DI_ITEM Index="1862" Name="DI_LP1FOUPInPosition3" BufferOffset="1862" Addr="D116.6" Description="AGV loadport1 FOUP in position3(D116.6)" />
 		<DI_ITEM Index="1863" Name="DI_LP1FOUPDetect" BufferOffset="1863" Addr="D116.7" Description="AGV loadport1 FOUP detect(D116.7)" />
 
-		<DI_ITEM Index="1864" Name="DI_FTRHome1" BufferOffset="1864" Addr="D116.8" Description="FTR Home1(D116.8)" />
-		<DI_ITEM Index="1865" Name="DI_FTRHome1" BufferOffset="1865" Addr="D116.9" Description="FTR Home2(D116.9)" />
-		<DI_ITEM Index="1866" Name="DI_FTRHome1" BufferOffset="1866" Addr="D116.10" Description="FTR Home3(D116.10)" />
+		<DI_ITEM Index="1864" Name="DI_FTRHomeCZ" BufferOffset="1864" Addr="D116.8" Description="FTR Home1 CZ(D116.8)" />
+		<DI_ITEM Index="1865" Name="DI_FTRHomeCS" BufferOffset="1865" Addr="D116.9" Description="FTR Home2 CS(D116.9)" />
+		<DI_ITEM Index="1866" Name="DI_FTRHomeCX" BufferOffset="1866" Addr="D116.10" Description="FTR Home3 CX(D116.10)" />
 
 
 		<DI_ITEM Index="1872" Name="DI_LP2FOUPLeftClamp" BufferOffset="1872" Addr="D117.0" Description="AGV loadport2 FOUP left clamp(D117.0)" />