jiangjy 1 month ago
parent
commit
3860fac801

+ 21 - 5
Furnace/FurnaceRT/Devices/IoFurnaceMotor.cs

@@ -196,6 +196,7 @@ namespace FurnaceRT.Devices
         public string ErrorCode => $"{(_aiDriverErrorCode != null ? ((int)(_aiDriverErrorCode.FloatValue + 0.00001)).ToString("X") : "")}/{(_aiMotionErrorCode != null ? ((int)(_aiMotionErrorCode.FloatValue + 0.00001)).ToString("X") : "")}";
 
         private bool _isFloatAioType = false;
+        public bool IsHomingState = false;
         #endregion
 
         #region properties
@@ -215,6 +216,7 @@ namespace FurnaceRT.Devices
                 return false;
             }
         }
+        public bool IsHomeing => _diHoming == null ? false : _diHoming.Value;
         public bool IsHomeDone => _diHomeDone == null ? false : _diHomeDone.Value;
         public bool IsInitDone => _diInitDone == null ? false : _diInitDone.Value;
         public bool IsMoving => _diMoving == null ? false : _diMoving.Value;
@@ -250,7 +252,7 @@ namespace FurnaceRT.Devices
                 return _diServoOn.Value;
             }
         }
-
+        private R_TRIG _homingTrig = new R_TRIG();
         #endregion
 
         public IoFurnaceMotor(string module, XmlElement node, string ioModule = "")
@@ -549,11 +551,16 @@ namespace FurnaceRT.Devices
                         }
                         else
                         {
-                            if (_diHomeDone != null && _diHomeDone.Value)
+                            _homingTrig.CLK = !_diHoming.Value;
+                            if (_homingTrig.Q)
                             {
-                                _doHome.SetValue(false, out _);
-                                _state = State.Idle;
-                                EV.PostInfoLog($"{Module}", $"{Name} Motor home finish");
+                                if (_diHomeDone != null && _diHomeDone.Value)
+                                {
+                                    _doHome.SetValue(false, out _);
+                                    _state = State.Idle;
+                                    IsHomingState = false;
+                                    EV.PostInfoLog($"{Module}", $"{Name} Motor home finish");
+                                }
                             }
                         }
                     }
@@ -710,6 +717,7 @@ namespace FurnaceRT.Devices
             {
                 _doHome?.SetValue(true, out _);
                 _state = State.Homing;
+                IsHomingState = true;
             }
             else
             {
@@ -894,6 +902,14 @@ namespace FurnaceRT.Devices
 
             return false;
         }
+        public bool CheckServoHomeDone()
+        {
+            if (IsHomeDone && IsReady)
+            {
+                return true;
+            }
+            return false;
+        }
         public bool ServoReset(out string reason)
         {
             reason = string.Empty;

+ 2 - 2
Furnace/FurnaceRT/Equipments/Boats/BoatHome.cs

@@ -84,7 +84,7 @@ namespace FurnaceRT.Equipments.Boats
                 AutoShutterOpen((int)RoutineStep.AutoShutterOpen, true, _shutterTimeout);
 
                 CheckPrepareMove((int)RoutineStep.CheckPrepareMove, 2);
-                
+
                 SetBoatZAxisMove((int)RoutineStep.BoatZAxisHome, BoatPosition.HomePosition, (int)_zAxisTimeout);
 
                 SetBoatRAxisMoveStop((int)RoutineStep.SetBoatRAxisMoveStop);
@@ -144,7 +144,7 @@ namespace FurnaceRT.Equipments.Boats
             {
                 if (_boatModule.RAxisDevice.IsError)
                     return null;
-                return _boatModule.RAxisDevice.IsHomeDone&& _boatModule.RAxisDevice.IsMoving && _boatModule.RAxisDevice.IsReady;
+                return _boatModule.RAxisDevice.CheckServoHomeDone();
 
             }, timeout * 1000);