Browse Source

git-svn-id: http://10.4.3.168:50001/svn/Furnace@33 dbcde07d-dcf5-c148-8a84-ac3097b7778e

Zhangjian 5 months ago
parent
commit
fe39091f42

+ 36 - 0
Branch/NTP02/Furnace/FurnaceRT/Equipments/CarrierRobots/CarrierLoad.cs

@@ -21,6 +21,7 @@ namespace FurnaceRT.Equipments.CarrierRobots
     {
         enum RoutineStep
         {
+            SetRobotActionCommand,
             Pick,
             DoorOpen,
             DoorClose,
@@ -249,6 +250,9 @@ namespace FurnaceRT.Equipments.CarrierRobots
                 if (_source == ModuleName.LP1 || _source == ModuleName.LP2)
                     SaferDoorOpen((int)RoutineStep.DoorOpen, true, _timeout);
 
+                if (_cassetteRobotModule.TrigActionCommand != null)
+                    SetRobotActionCommand((int)RoutineStep.SetRobotActionCommand, _source, _timeout);
+
                 Pick((int)RoutineStep.Pick, _source, _sourceSlot, _blade, _carrierType, _currentCarrierId, _destinationStocker, _timeout);
 
                 if (_source == ModuleName.LP1 || _source == ModuleName.LP2)
@@ -264,10 +268,12 @@ namespace FurnaceRT.Equipments.CarrierRobots
             }
             catch (RoutineFaildException ex)
             {
+                _cassetteRobotModule.ResetRobotActionCommand();
                 (Singleton<EquipmentManager>.Instance.Modules[_source] as ITransferTarget)?.NoteTransferStop(ModuleHelper.Converter(_cassetteRobotModule.Module), _blade, _sourceSlot, EnumTransferType.Pick);
                 return Result.FAIL;
             }
 
+            _cassetteRobotModule.ResetRobotActionCommand();
             (Singleton<EquipmentManager>.Instance.Modules[_source] as ITransferTarget)?.NoteTransferStop(ModuleHelper.Converter(_cassetteRobotModule.Module), _blade, _sourceSlot, EnumTransferType.Pick);
 
             Notify("Finished");
@@ -607,7 +613,37 @@ namespace FurnaceRT.Equipments.CarrierRobots
 
             _needStartCheck = false;
         }
+        private void SetRobotActionCommand(int id, ModuleName source, int timeout)
+        {
+            _routineStep = (RoutineStep)Enum.Parse(typeof(RoutineStep), id.ToString());
+            Tuple<bool, Result> ret = ExecuteAndWait(id, () =>
+            {
+                Notify($"Set robot action command target position {source}");
+
+                _cassetteRobotModule.SetRobotActionCommand(source, EnumTransferType.Pick);
 
+                return true;
+            }, () =>
+            {
+                return _cassetteRobotModule.CheckRobotActionCommand(source, EnumTransferType.Pick);
+            }, timeout * 1000);
+
+            if (ret.Item1)
+            {
+                if (ret.Item2 == Result.FAIL)
+                {
+                    _cassetteRobotModule.PickCassetteFailAlarm.Set($"pick from {source} failed for robot action command interlock");
+                    throw (new RoutineFaildException());
+                }
+                else if (ret.Item2 == Result.TIMEOUT) //timeout
+                {
+                    _cassetteRobotModule.PickCassetteTimeoutAlarm.Set($"timeout over {timeout} seconds");
+                    throw (new RoutineFaildException());
+                }
+                else
+                    throw (new RoutineBreakException());
+            }
+        }
         private void SaferDoorOpen(int id, bool isOpen, int timeout)
         {
             Tuple<bool, Result> ret = ExecuteAndWait(id, () =>

+ 3 - 3
Branch/NTP02/Furnace/FurnaceRT/Equipments/CarrierRobots/CarrierRobotPick.cs

@@ -224,9 +224,6 @@ namespace FurnaceRT.Equipments.CarrierRobots
                 if (_cassetteRobotModule.CarrierRobotDevice.IsPause)
                     return Result.RUN;
 
-                if(_cassetteRobotModule.TrigActionCommand != null)
-                    SetRobotActionCommand((int)RoutineStep.SetRobotActionCommand, _source, _timeout);
-
                 CheckBeforePick((int)RoutineStep.CheckBeforePick, _source, _sourceSlot, _blade);
 
                 if (ModuleHelper.IsBufferStocker(_source))
@@ -249,6 +246,9 @@ namespace FurnaceRT.Equipments.CarrierRobots
                     CheckGotoFinish((int)RoutineStep.CheckGotoFinish, _source, _timeout);
                 }
 
+                if (_cassetteRobotModule.TrigActionCommand != null)
+                    SetRobotActionCommand((int)RoutineStep.SetRobotActionCommand, _source, _timeout);
+
                 Pick((int)RoutineStep.Pick, _source, _sourceSlot, _blade, _timeout);
 
                 if (_source == ModuleName.LP1 || _source == ModuleName.LP2)

+ 5 - 5
Branch/NTP02/Furnace/FurnaceRT/Equipments/CarrierRobots/CarrierRobotPlace.cs

@@ -225,9 +225,6 @@ namespace FurnaceRT.Equipments.CarrierRobots
                 if (_cassetteRobotModule.CarrierRobotDevice.IsPause)
                     return Result.RUN;
 
-                if (_cassetteRobotModule.TrigActionCommand != null)
-                    SetRobotActionCommand((int)RoutineStep.SetRobotActionCommand, _destination, _timeout);
-
                 CheckBeforePlace((int)RoutineStep.CheckBeforePlace, _destination, _destinationSlot, _blade);
 
                 if (ModuleHelper.IsBufferStocker(_destination))
@@ -250,6 +247,9 @@ namespace FurnaceRT.Equipments.CarrierRobots
                     CheckGotoFinish((int)RoutineStep.CheckGotoFinish, _destination, _timeout);
                 }
 
+                if (_cassetteRobotModule.TrigActionCommand != null)
+                    SetRobotActionCommand((int)RoutineStep.SetRobotActionCommand, _destination, _timeout);
+
                 Place((int)RoutineStep.Place, _destination, _destinationSlot, _blade, _timeout);
 
                 if (_destination == ModuleName.LP1 || _destination == ModuleName.LP2)
@@ -295,12 +295,12 @@ namespace FurnaceRT.Equipments.CarrierRobots
             {
                 if (ret.Item2 == Result.FAIL)
                 {
-                    _cassetteRobotModule.PickCassetteFailAlarm.Set($"pick from {source} failed for robot action command interlock");
+                    _cassetteRobotModule.PlaceCassetteTimeoutAlarm.Set($"place to {source} failed for robot action command interlock");
                     throw (new RoutineFaildException());
                 }
                 else if (ret.Item2 == Result.TIMEOUT) //timeout
                 {
-                    _cassetteRobotModule.PickCassetteTimeoutAlarm.Set($"timeout over {timeout} seconds");
+                    _cassetteRobotModule.PlaceCassetteTimeoutAlarm.Set($"timeout over {timeout} seconds");
                     throw (new RoutineFaildException());
                 }
                 else

+ 37 - 0
Branch/NTP02/Furnace/FurnaceRT/Equipments/CarrierRobots/CarrierUnload.cs

@@ -20,6 +20,7 @@ namespace FurnaceRT.Equipments.CarrierRobots
     {
         enum RoutineStep
         {
+            SetRobotActionCommand,
             Place,
             DoorOpen,
             DoorClose,
@@ -198,6 +199,7 @@ namespace FurnaceRT.Equipments.CarrierRobots
 
         public void Abort()
         {
+            _cassetteRobotModule.ResetRobotActionCommand();
             _cassetteRobotModule.Stop();
             (Singleton<EquipmentManager>.Instance.Modules[_destination] as ITransferTarget)?.NoteTransferStop(ModuleHelper.Converter(_cassetteRobotModule.Module), _blade, _destinationSlot, EnumTransferType.Place);
         }
@@ -215,6 +217,9 @@ namespace FurnaceRT.Equipments.CarrierRobots
                 if (_destination == ModuleName.LP1 || _destination == ModuleName.LP2)
                     SaferDoorOpen((int)RoutineStep.DoorOpen, true, _timeout);
 
+                if (_cassetteRobotModule.TrigActionCommand != null)
+                    SetRobotActionCommand((int)RoutineStep.SetRobotActionCommand, _destination, _timeout);
+
                 Place((int)RoutineStep.Place, _destination, _destinationSlot, _blade, _timeout);
 
                 if (_destination == ModuleName.LP1 || _destination == ModuleName.LP2)
@@ -230,10 +235,12 @@ namespace FurnaceRT.Equipments.CarrierRobots
             }
             catch (RoutineFaildException ex)
             {
+                _cassetteRobotModule.ResetRobotActionCommand();
                 (Singleton<EquipmentManager>.Instance.Modules[_destination] as ITransferTarget)?.NoteTransferStop(ModuleHelper.Converter(_cassetteRobotModule.Module), _blade, _destinationSlot, EnumTransferType.Place);
                 return Result.FAIL;
             }
 
+            _cassetteRobotModule.ResetRobotActionCommand();
             if (SC.GetValue<bool>("System.IsSimulatorMode"))
                 CarrierManager.Instance.DeleteCarrier(_destination.ToString());
 
@@ -242,7 +249,37 @@ namespace FurnaceRT.Equipments.CarrierRobots
             Notify("Finished");
             return Result.DONE;
         }
+        private void SetRobotActionCommand(int id, ModuleName source, int timeout)
+        {
+            _routineStep = (RoutineStep)Enum.Parse(typeof(RoutineStep), id.ToString());
+            Tuple<bool, Result> ret = ExecuteAndWait(id, () =>
+            {
+                Notify($"Set robot action command target position {source}");
+
+                _cassetteRobotModule.SetRobotActionCommand(source, EnumTransferType.Place);
 
+                return true;
+            }, () =>
+            {
+                return _cassetteRobotModule.CheckRobotActionCommand(source, EnumTransferType.Place);
+            }, timeout * 1000);
+
+            if (ret.Item1)
+            {
+                if (ret.Item2 == Result.FAIL)
+                {
+                    _cassetteRobotModule.PlaceCassetteTimeoutAlarm.Set($"place to {source} failed for robot action command interlock");
+                    throw (new RoutineFaildException());
+                }
+                else if (ret.Item2 == Result.TIMEOUT) //timeout
+                {
+                    _cassetteRobotModule.PlaceCassetteTimeoutAlarm.Set($"timeout over {timeout} seconds");
+                    throw (new RoutineFaildException());
+                }
+                else
+                    throw (new RoutineBreakException());
+            }
+        }
         private void Place(int id, ModuleName target, int slot, Hand hand, int timeout)
         {
             _routineStep = (RoutineStep)Enum.Parse(typeof(RoutineStep), id.ToString());

+ 2 - 2
Branch/NTP02/Furnace/FurnaceRT/Properties/AssemblyInfo.cs

@@ -51,5 +51,5 @@ using System.Windows;
 // 可以指定所有值,也可以使用以下所示的 "*" 预置版本号和修订号
 // 方法是按如下所示使用“*”: :
 // [assembly: AssemblyVersion("1.0.*")]
-[assembly: AssemblyVersion("0.0.2.65")]
-[assembly: AssemblyFileVersion("0.0.2.65")]
+[assembly: AssemblyVersion("0.0.2.66")]
+[assembly: AssemblyFileVersion("0.0.2.66")]

+ 3 - 0
Branch/NTP02/Furnace/FurnaceRT/ReleaseNotes.txt

@@ -6,6 +6,9 @@
 					 Furnace 系统更新历史记录
 
 ---------------------------------------------------------------------------------
+2025-1-16 version 0.0.2.66
+1.LP 取放agv 门打开后再发送判断,buffer先转动到位置再发送判断aiao
+
 2025-1-12 version 0.0.2.65
 1、bug168 文件夹里面的recipe,双击后会展开左右移动
 2、bug169 sibcn不用显示出来gasline模块

+ 2 - 2
Branch/NTP02/Furnace/FurnaceUI/Properties/AssemblyInfo.cs

@@ -54,5 +54,5 @@ using System.Windows;
 // You can specify all the values or you can default the Build and Revision Numbers 
 // by using the '*' as shown below:
 // [assembly: AssemblyVersion("1.0.*")]
-[assembly: AssemblyVersion("0.0.2.65")]
-[assembly: AssemblyFileVersion("0.0.2.65")]
+[assembly: AssemblyVersion("0.0.2.66")]
+[assembly: AssemblyFileVersion("0.0.2.66")]