瀏覽代碼

revise safeopen/close log bug

chenzk 1 天之前
父節點
當前提交
f22f75738a

+ 2 - 0
CyberX8_RT/Devices/EFEM/EfemBase.cs

@@ -88,6 +88,8 @@ namespace CyberX8_RT.Devices.EFEM
         public virtual bool LiftIsDown { get; }
 
         public virtual bool IsResumeRDYReceived {  get; set;}
+        public virtual bool IsPauseRDYReceived {  get; set;}
+        public virtual bool IsActionRDYReceived {  get; set;}
 
         public abstract bool HomeAll();
         public abstract bool Home(ModuleName mod);

+ 6 - 1
CyberX8_RT/Devices/EFEM/SunWayRobot.cs

@@ -97,6 +97,8 @@ namespace CyberX8_RT.Devices.EFEM
         private string _address = "";
 
         public override bool IsResumeRDYReceived { get; set; }
+        public override bool IsPauseRDYReceived { get; set; }
+        public override bool IsActionRDYReceived { get; set; }
 
         public SunWayRobot()
         {
@@ -333,6 +335,7 @@ namespace CyberX8_RT.Devices.EFEM
         }
         public override bool Resume()
         {
+            IsActionRDYReceived = false; //把收到resume信号后执行resume动作成功的变量置false 
             //判断socket是否链接
             if (!_socket.IsConnected)
             {
@@ -973,6 +976,8 @@ namespace CyberX8_RT.Devices.EFEM
             {
                 _status = RState.End;
                 IsResumeRDYReceived = false;
+                IsPauseRDYReceived = false;
+                IsActionRDYReceived = true;
             }
             else if (msg.Contains("_RDY"))
             {
@@ -995,9 +1000,9 @@ namespace CyberX8_RT.Devices.EFEM
                         break;
                     case EfemOperation.Pause:
                         //SetRobotMovingInfo(RobotAction.None, Hand.Both, ModuleName.EfemRobot);
+                        IsPauseRDYReceived = true;
                         break;
                     case EfemOperation.Resume:
-                        _status = RState.Running;  //开始执行恢复动作
                         IsResumeRDYReceived = true;
                         break;
                 }

+ 2 - 2
CyberX8_RT/Modules/EFEM/EfemEntity.cs

@@ -1207,7 +1207,7 @@ namespace CyberX8_RT.Modules
             RState ret = _efemSafeOpenRoutine.Monitor();
             if (ret == RState.Failed || ret == RState.Timeout)
             {
-                LOG.Write(eEvent.ERR_EFEM_COMMON_FAILED, ModuleName.EFEM, "SafeOpen");
+                LOG.Write(eEvent.ERR_EFEM_COMMON_FAILED, ModuleName.EFEM, "SafeOpen Failed");
                 return false;
             }
             return ret == RState.End;
@@ -1218,7 +1218,7 @@ namespace CyberX8_RT.Modules
             RState ret = _efemSafeCloseRoutine.Monitor();
             if (ret == RState.Failed || ret == RState.Timeout)
             {
-                LOG.Write(eEvent.ERR_EFEM_COMMON_FAILED, ModuleName.EFEM, "SafeClose");
+                LOG.Write(eEvent.ERR_EFEM_COMMON_FAILED, ModuleName.EFEM, "SafeClose Failed");
                 return false;
             }
             return ret == RState.End;

+ 4 - 11
CyberX8_RT/Modules/EFEM/EfemSafeCloseRoutine.cs

@@ -18,6 +18,7 @@ namespace CyberX8_RT.Modules.EFEM
         {
             Close,
             Resume,
+            ResumeSignalCheck,
             ResumeActionDoneCheck,
             End
         }
@@ -48,7 +49,8 @@ namespace CyberX8_RT.Modules.EFEM
         public RState Monitor()
         {
             Runner.Run(SafeCloseStep.Close, () => { return Close(); }, _delay_1ms)
-                  .Run(SafeCloseStep.Resume, () => { return Resume(); }, CheckResumeDone,_delay_1s)
+                  .Run(SafeCloseStep.Resume, () => { return Resume(); },_delay_1ms)
+                  .Wait(SafeCloseStep.ResumeSignalCheck, CheckResumeDone)
                   .Wait(SafeCloseStep.ResumeActionDoneCheck, ResumeActionDoneCheck)
                   .End(SafeCloseStep.End, NullFun, 0);
 
@@ -78,16 +80,7 @@ namespace CyberX8_RT.Modules.EFEM
         /// <returns></returns>
         private bool ResumeActionDoneCheck()
         {
-            if (_efem.Status == RState.End)
-            {
-                return true;
-            }
-            else if (_efem.Status == RState.Failed)
-            {
-                LOG.Write(eEvent.ERR_EFEM_COMMON_FAILED, Module, $"Efem Resume Action failed: {_efem.Status}");
-                return true;
-            }
-            return false;
+            return _efem.IsActionRDYReceived;
         }
 
         private bool Close()

+ 5 - 13
CyberX8_RT/Modules/EFEM/EfemSafeOpenRoutine.cs

@@ -18,7 +18,7 @@ namespace CyberX8_RT.Modules.EFEM
         private enum SafeOpenStep 
         { 
             Pause,
-            PauseCheck,
+            PauseSignalCheck,
             Open,
             End
         }
@@ -49,9 +49,10 @@ namespace CyberX8_RT.Modules.EFEM
         /// <returns></returns>
         public RState Monitor()
         {
-            Runner.Run(SafeOpenStep.Pause, () => { return Pause(); },CheckPauseDone, _delay_1s)
+            Runner.Run(SafeOpenStep.Pause, () => { return Pause(); }, _delay_1ms)
+                   .Wait(SafeOpenStep.PauseSignalCheck, CheckPauseDone)
                    .Run(SafeOpenStep.Open, () => { return Open(); },_delay_1ms)
-                    .End(SafeOpenStep.End, NullFun, 0);
+                   .End(SafeOpenStep.End, NullFun, 0);
 
             return Runner.Status;
         }
@@ -70,16 +71,7 @@ namespace CyberX8_RT.Modules.EFEM
         /// <returns></returns>
         private bool CheckPauseDone()
         {
-            if (_efem.Status == RState.End)
-            {
-                return true;
-            }
-            else if (_efem.Status == RState.Failed)
-            {
-                LOG.Write(eEvent.ERR_EFEM_COMMON_FAILED, Module, $"Efem Pause failed: {_efem.Status}");
-                return true;
-            }
-            return false;
+            return _efem.IsPauseRDYReceived;
         }
 
         private bool Open()