|  | @@ -32,6 +32,7 @@ namespace FurnaceRT.Equipments.Boats
 | 
												
													
														
															|  |              BoatRAxisMove,
 |  |              BoatRAxisMove,
 | 
												
													
														
															|  |              SetBoatZAxisMoveStop,
 |  |              SetBoatZAxisMoveStop,
 | 
												
													
														
															|  |              SetBoatRAxisMoveStop,
 |  |              SetBoatRAxisMoveStop,
 | 
												
													
														
															|  | 
 |  | +            CheckSensor,
 | 
												
													
														
															|  |              SetBoatInterval,
 |  |              SetBoatInterval,
 | 
												
													
														
															|  |              CheckPrepareMove,
 |  |              CheckPrepareMove,
 | 
												
													
														
															|  |              Loop,
 |  |              Loop,
 | 
												
											
												
													
														
															|  | @@ -164,6 +165,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, _timeout);
 | 
												
													
														
															|  | 
 |  | +
 | 
												
													
														
															|  |                          Delay((int)RoutineStep.Delay1, 2);
 |  |                          Delay((int)RoutineStep.Delay1, 2);
 | 
												
													
														
															|  |  
 |  |  
 | 
												
													
														
															|  |                          SetBoatRAxisHome((int)RoutineStep.BoatRAxisHome, _timeout);
 |  |                          SetBoatRAxisHome((int)RoutineStep.BoatRAxisHome, _timeout);
 | 
												
											
												
													
														
															|  | @@ -334,7 +337,42 @@ 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)
 | 
												
													
														
															|  | 
 |  | +                {
 | 
												
													
														
															|  | 
 |  | +                    throw (new RoutineFaildException());
 | 
												
													
														
															|  | 
 |  | +                }
 | 
												
													
														
															|  | 
 |  | +                else if (ret.Item2 == Result.TIMEOUT) //timeout
 | 
												
													
														
															|  | 
 |  | +                {
 | 
												
													
														
															|  | 
 |  | +                    throw (new RoutineFaildException());
 | 
												
													
														
															|  | 
 |  | +                }
 | 
												
													
														
															|  | 
 |  | +                else
 | 
												
													
														
															|  | 
 |  | +                    throw (new RoutineBreakException());
 | 
												
													
														
															|  | 
 |  | +            }
 | 
												
													
														
															|  | 
 |  | +        }
 | 
												
													
														
															|  |          private void SetBoatRAxisHome(int id, int timeout)
 |  |          private void SetBoatRAxisHome(int id, int timeout)
 | 
												
													
														
															|  |          {
 |  |          {
 | 
												
													
														
															|  |              Tuple<bool, Result> ret = ExecuteAndWait(id, () =>
 |  |              Tuple<bool, Result> ret = ExecuteAndWait(id, () =>
 |