Browse Source

boatrotatestop指令 check moving状态

jiangjy 1 week ago
parent
commit
be165499d9
1 changed files with 40 additions and 0 deletions
  1. 40 0
      Furnace/FurnaceRT/Equipments/Boats/BoatMove.cs

+ 40 - 0
Furnace/FurnaceRT/Equipments/Boats/BoatMove.cs

@@ -37,6 +37,7 @@ namespace FurnaceRT.Equipments.Boats
             BoatRAxisMove,
             BoatRAxisMove,
             SetBoatZAxisMoveStop,
             SetBoatZAxisMoveStop,
             SetBoatRAxisMoveStop,
             SetBoatRAxisMoveStop,
+            CheckSensor,
             SetBoatInterval,
             SetBoatInterval,
             CheckPrepareMove,
             CheckPrepareMove,
             Load,
             Load,
@@ -176,6 +177,8 @@ namespace FurnaceRT.Equipments.Boats
                     case "boatrotatestop"://r home
                     case "boatrotatestop"://r home
                         SetBoatRAxisMoveStop((int)RoutineStep.SetBoatRAxisMoveStop);
                         SetBoatRAxisMoveStop((int)RoutineStep.SetBoatRAxisMoveStop);
 
 
+                        CheckBoatMoveSensor((int)RoutineStep.CheckSensor, _rAxisTimeout);
+
                         Delay((int)RoutineStep.Delay1, 2);
                         Delay((int)RoutineStep.Delay1, 2);
 
 
                         SetBoatRAxisHome((int)RoutineStep.BoatRAxisHome, _rAxisTimeout);
                         SetBoatRAxisHome((int)RoutineStep.BoatRAxisHome, _rAxisTimeout);
@@ -251,7 +254,44 @@ namespace FurnaceRT.Equipments.Boats
                     throw (new RoutineBreakException());
                     throw (new RoutineBreakException());
             }
             }
         }
         }
+        private void CheckBoatMoveSensor(int id, int timeout)
+        {
+            var reason = "";
+            Tuple<bool, Result> ret = ExecuteAndWait(id, () =>
+            {
+                Notify($"Check boat  move  Sensor");
+
+                return true;
+            }, () =>
+            {
+                if (!_boatModule.RAxisDevice.IsMoving)
+                {
+                    return true;
+                }
+
+                return false; ;
+
+
+            }, timeout * 1000);
 
 
+            if (ret.Item1)
+            {
+                if (ret.Item2 == Result.FAIL)
+                {
+                    _boatModule.RAxisDevice.ServoStop();
+                    throw (new RoutineFaildException());
+                }
+                else if (ret.Item2 == Result.TIMEOUT) //timeout
+                {
+                    _boatModule.BoatRAxisMoveTimeOut.Set($"CheckBoatMoveSensor can not complete in {timeout} seconds");
+                    _boatModule.RAxisDevice.ServoStop();
+
+                    throw (new RoutineFaildException());
+                }
+                else
+                    throw (new RoutineBreakException());
+            }
+        }
 
 
         private void CheckPrepareMove(int id, int timeout)
         private void CheckPrepareMove(int id, int timeout)
         {
         {