Browse Source

Revise stopPosition Bug;

niuyx 3 weeks ago
parent
commit
c003ed491f

+ 9 - 5
CyberX8_RT/Devices/AXIS/CanOpen/CanOpenAxis.cs

@@ -82,12 +82,13 @@ namespace CyberX8_RT.Devices.AXIS.CANOpen
             {
                 return true;
             }
+            _currentOperation = MotionOperation.StopPosition;
             if (_profilePositionRoutine.Monitor() == RState.Running)
             {
                 _profilePositionRoutine.Abort();
             }
             _status = _stopPositionRoutine.Start();
-            _currentOperation = MotionOperation.StopPosition;
+            
             return true;
         }
         /// <summary>
@@ -305,10 +306,13 @@ namespace CyberX8_RT.Devices.AXIS.CANOpen
                     }
                     else if (state == RState.Failed || state == RState.Timeout)
                     {
-                        _inTargetPosition = false;
-                        EndOperation();
-                        _status = RState.Failed;
-                        LOG.WriteLog(eEvent.ERR_AXIS, $"{Module}.{Name}", $"Profile Position error {_profilePositionRoutine.ErrorMsg}");
+                        if (_currentOperation == MotionOperation.Position)
+                        {
+                            _inTargetPosition = false;
+                            EndOperation();
+                            _status = RState.Failed;
+                            LOG.WriteLog(eEvent.ERR_AXIS, $"{Module}.{Name}", $"Profile Position error {_profilePositionRoutine.ErrorMsg}");
+                        }                          
                     }
                 }
 

+ 9 - 5
CyberX8_RT/Devices/AXIS/GalilLipsel/GalilLipselAxis.cs

@@ -81,12 +81,13 @@ namespace CyberX8_RT.Devices.AXIS.GalilLipsel
             {
                 return true;
             }
+            _currentOperation = MotionOperation.StopPosition;
             if (_profilePositionRoutine.Monitor() == RState.Running)
             {
                 _profilePositionRoutine.Abort();
             }
             _status = _stopPositionRoutine.Start();
-            _currentOperation = MotionOperation.StopPosition;
+            
             return true;
         }
 
@@ -177,10 +178,13 @@ namespace CyberX8_RT.Devices.AXIS.GalilLipsel
                     }
                     else if (state == RState.Failed || state == RState.Timeout)
                     {
-                        _inTargetPosition = false;
-                        EndOperation();
-                        _status = RState.Failed;
-                        LOG.WriteLog(eEvent.ERR_AXIS, $"{Module}.{Name}", $"Profile Position error {_profilePositionRoutine.ErrorMsg}");
+                        if (_currentOperation == MotionOperation.Position)
+                        {
+                            _inTargetPosition = false;
+                            EndOperation();
+                            _status = RState.Failed;
+                            LOG.WriteLog(eEvent.ERR_AXIS, $"{Module}.{Name}", $"Profile Position error {_profilePositionRoutine.ErrorMsg}");
+                        }
                     }
                 }
 

+ 9 - 6
CyberX8_RT/Devices/AXIS/GalilRotation/GalilRotationAxis.cs

@@ -87,12 +87,12 @@ namespace CyberX8_RT.Devices.AXIS.GalilLipsel
             {
                 return true;
             }
+            _currentOperation = MotionOperation.StopPosition;
             if (_profilePositionRoutine.Monitor() == RState.Running)
             {
                 _profilePositionRoutine.Abort();
             }
-            _status = _stopPositionRoutine.Start();
-            _currentOperation = MotionOperation.StopPosition;
+            _status = _stopPositionRoutine.Start();            
             return true;
         }
 
@@ -183,10 +183,13 @@ namespace CyberX8_RT.Devices.AXIS.GalilLipsel
                     }
                     else if (state == RState.Failed || state == RState.Timeout)
                     {
-                        _inTargetPosition = false;
-                        EndOperation();
-                        _status = RState.Failed;
-                        LOG.WriteLog(eEvent.ERR_AXIS, $"{Module}.{Name}", $"Profile Position error {_profilePositionRoutine.ErrorMsg}");
+                        if (_currentOperation == MotionOperation.Position)
+                        {
+                            _inTargetPosition = false;
+                            EndOperation();
+                            _status = RState.Failed;
+                            LOG.WriteLog(eEvent.ERR_AXIS, $"{Module}.{Name}", $"Profile Position error {_profilePositionRoutine.ErrorMsg}");
+                        }                        
                     }
                 }
 

+ 9 - 6
CyberX8_RT/Devices/AXIS/Maxon/MaxonAxis.cs

@@ -84,12 +84,12 @@ namespace CyberX8_RT.Devices.AXIS.CANOpen
             {
                 return true;
             }
+            _currentOperation = MotionOperation.StopPosition;
             if (_profilePositionRoutine.Monitor() == RState.Running)
             {
                 _profilePositionRoutine.Abort();
             }
-            _status = _stopPositionRoutine.Start();
-            _currentOperation = MotionOperation.StopPosition;
+            _status = _stopPositionRoutine.Start();          
             return true;
         }
         
@@ -290,10 +290,13 @@ namespace CyberX8_RT.Devices.AXIS.CANOpen
                     }
                     else if (state == RState.Failed || state == RState.Timeout)
                     {
-                        _inTargetPosition = false;
-                        EndOperation();
-                        _status = RState.Failed;
-                        LOG.WriteLog(eEvent.ERR_AXIS, $"{Module}.{Name}", $"Profile Position error {_profilePositionRoutine.ErrorMsg}");
+                        if (_currentOperation == MotionOperation.Position)
+                        {
+                            _inTargetPosition = false;
+                            EndOperation();
+                            _status = RState.Failed;
+                            LOG.WriteLog(eEvent.ERR_AXIS, $"{Module}.{Name}", $"Profile Position error {_profilePositionRoutine.ErrorMsg}");
+                        }                        
                     }
                 }
 

+ 10 - 6
CyberX8_RT/Devices/AXIS/Yaskawa/YaskawaAxis.cs

@@ -81,12 +81,12 @@ namespace CyberX8_RT.Devices.AXIS.Yaskawa
             {
                 return true;
             }
+            _currentOperation = MotionOperation.StopPosition;
             if (_profilePositionRoutine.Monitor() == RState.Running)
             {
                 _profilePositionRoutine.Abort();
             }
-            _status = _stopPositionRoutine.Start();
-            _currentOperation = MotionOperation.StopPosition;
+            _status = _stopPositionRoutine.Start();          
             return true;
         }
         
@@ -292,10 +292,14 @@ namespace CyberX8_RT.Devices.AXIS.Yaskawa
                     }
                     else if (state == RState.Failed || state == RState.Timeout)
                     {
-                        _inTargetPosition = false;
-                        EndOperation();
-                        _status = RState.Failed;
-                        LOG.WriteLog(eEvent.ERR_AXIS, $"{Module}.{Name}", $"Profile Position error {_profilePositionRoutine.ErrorMsg}");
+                        if (_currentOperation == MotionOperation.Position)
+                        {
+                            _inTargetPosition = false;
+                            EndOperation();
+                            _status = RState.Failed;
+                            LOG.WriteLog(eEvent.ERR_AXIS, $"{Module}.{Name}", $"Profile Position error {_profilePositionRoutine.ErrorMsg}");
+                        }
+                       
                     }
                 }