diff --git a/Rs.SkyLine/Flow/Space/TrayTest.cs b/Rs.SkyLine/Flow/Space/TrayTest.cs index ec7ebe4..434eaac 100644 --- a/Rs.SkyLine/Flow/Space/TrayTest.cs +++ b/Rs.SkyLine/Flow/Space/TrayTest.cs @@ -118,6 +118,7 @@ namespace Rs.AutoDischarge.V3.Flow else if (NeedLoad) { //上料 + Status= ETrayStatus.Loading; finished = false; NeedLoad = false; if (m_bWholeLoad) diff --git a/Rs.SkyLine/Flow/TakeTrayFlow.cs b/Rs.SkyLine/Flow/TakeTrayFlow.cs index 049aea8..b4eb619 100644 --- a/Rs.SkyLine/Flow/TakeTrayFlow.cs +++ b/Rs.SkyLine/Flow/TakeTrayFlow.cs @@ -1,4 +1,5 @@ -using Rs.Controls; +using Rs.AutoDischarge.V3.Flow; +using Rs.Controls; using Rs.Framework; using Rs.MotionPlat.Commom; using Rs.MotionPlat.Flow.Space; @@ -18,6 +19,7 @@ namespace Rs.MotionPlat.Flow 等待命令, 到取料盘上方, 等待到取料盘上方, + 等待料盘准备就绪, 到下方取料盘, 等待运动到取料位下方, 取料盘完成抬起, @@ -103,6 +105,12 @@ namespace Rs.MotionPlat.Flow Ops.Off($"{(int)m_fromTray}号料仓斜推气缸"); Ops.Off($"{(int)m_toTray}号料仓斜推气缸"); Thread.Sleep(500); + step = ETakeTrayFlowStep.等待料盘准备就绪; + } + break; + case ETakeTrayFlowStep.等待料盘准备就绪: + if(StockManager.Instance.GetStockStatus(m_fromTray)==ETrayStatus.Loaded) + { step = ETakeTrayFlowStep.到下方取料盘; } break; @@ -126,16 +134,19 @@ namespace Rs.MotionPlat.Flow { Msg.ShowError("上下气缸动位异常,请处理后点击确定"); stopwatch.Restart(); + Ops.On("夹爪真空吸"); + Thread.Sleep(150); + step = ETakeTrayFlowStep.取料盘完成抬起; } break; case ETakeTrayFlowStep.取料盘完成抬起: Ops.Off("上下气缸电磁阀动位"); Ops.On("上下气缸电磁阀原位"); - Thread.Sleep(150); + Thread.Sleep(1000); step = ETakeTrayFlowStep.取料盘后真空检测; break; case ETakeTrayFlowStep.取料盘后真空检测: - if (Ops.IsOn("上下气缸原位")) + if (Ops.IsOn("上下气缸原位") && Ops.IsOn("夹爪真空吸检测")) { step = ETakeTrayFlowStep.到放料盘上方; if(m_fromTray== EStockType.Empty2) @@ -143,6 +154,11 @@ namespace Rs.MotionPlat.Flow StockManager.Instance.Load(m_fromTray); } } + else + { + Msg.ShowError("取料盘失败,点击确定后重取"); + step = ETakeTrayFlowStep.到下方取料盘; + } break; case ETakeTrayFlowStep.到放料盘上方: centerX = SysConfigParam.GetValue($"Tray{m_toTray.ToString()}CenterX"); diff --git a/Rs.SkyLine/Flow/WorkFlow.cs b/Rs.SkyLine/Flow/WorkFlow.cs index 1c63e1a..4dbf560 100644 --- a/Rs.SkyLine/Flow/WorkFlow.cs +++ b/Rs.SkyLine/Flow/WorkFlow.cs @@ -53,6 +53,12 @@ namespace Rs.MotionPlat.Flow 等待测试工位下料完成, 等待Input料盘搬运完成, 等待Input料仓上料完成, + 等待Ok料仓收料完成, + 等待Ok料盘搬运完成, + 等待Ng料仓收料完成, + 等待Ng料盘搬运完成, + 等待Multi料仓收料完成, + 等待Multi料盘搬运完成, IDLE } @@ -173,12 +179,12 @@ namespace Rs.MotionPlat.Flow } else { - Msg.ShowInfo("tray has take over,please change tray"); - GlobalTray.InputTray.ResetTray(); - GlobalTray.InputTray.Fill(); - //TakeTrayFlow.Instance.Take(EStockType.Input, EStockType.Empty1, ELoadUnloadType.Unload); - //restoreFlowStep = EWorkFlowStep.到取料位上方; - //flowStep = EWorkFlowStep.等待Input料盘搬运完成; + //Msg.ShowInfo("tray has take over,please change tray"); + //GlobalTray.InputTray.ResetTray(); + //GlobalTray.InputTray.Fill(); + TakeTrayFlow.Instance.Take(EStockType.Input, EStockType.Empty1, ELoadUnloadType.Unload); + restoreFlowStep = EWorkFlowStep.到取料位上方; + flowStep = EWorkFlowStep.等待Input料盘搬运完成; } } if (curSlotPoint != null) @@ -554,6 +560,7 @@ namespace Rs.MotionPlat.Flow } else if (curNozzle.ToType == TurnoverType.Passed) { + //OK料仓切盘 downSlot = GlobalTray.OkTary.GetSlot(ESlotStatus.NotHave); if (downSlot != null) { @@ -561,10 +568,13 @@ namespace Rs.MotionPlat.Flow } else { - Msg.ShowInfo("tray has take over,please change tray"); - GlobalTray.OkTary.ResetTray(); - GlobalTray.OkTary.Clear(); - //Msg.ShowError("last slot"); + //Msg.ShowInfo("tray has take over,please change tray"); + //GlobalTray.OkTary.ResetTray(); + //GlobalTray.OkTary.Clear(); + //TakeTrayFlow.Instance.Take(EStockType.Input, EStockType.Empty1, ELoadUnloadType.Unload); + StockManager.Instance.UnLoad(EStockType.Ok); + restoreFlowStep = EWorkFlowStep.到放料位上方; + flowStep = EWorkFlowStep.等待Ok料仓收料完成; } } else if (curNozzle.ToType == TurnoverType.Failed) @@ -576,8 +586,11 @@ namespace Rs.MotionPlat.Flow } else { - GlobalTray.NgTray.ResetTray(); - GlobalTray.NgTray.Clear(); + //GlobalTray.NgTray.ResetTray(); + //GlobalTray.NgTray.Clear(); + StockManager.Instance.UnLoad(EStockType.Ng); + restoreFlowStep = EWorkFlowStep.到放料位上方; + flowStep = EWorkFlowStep.等待Ng料仓收料完成; } } else if (curNozzle.ToType == TurnoverType.Multifunction) @@ -589,8 +602,11 @@ namespace Rs.MotionPlat.Flow } else { - GlobalTray.MultiTray.ResetTray(); - GlobalTray.MultiTray.Clear(); + //GlobalTray.MultiTray.ResetTray(); + //GlobalTray.MultiTray.Clear(); + StockManager.Instance.UnLoad(EStockType.Multi); + restoreFlowStep = EWorkFlowStep.到放料位上方; + flowStep = EWorkFlowStep.等待Multi料仓收料完成; } } } @@ -866,6 +882,48 @@ namespace Rs.MotionPlat.Flow restoreFlowStep = EWorkFlowStep.IDLE; } break; + case EWorkFlowStep.等待Ok料仓收料完成: + if(StockManager.Instance.GetStockStatus( EStockType.Ok)== AutoDischarge.V3.Flow.ETrayStatus.Unloaded) + { + flowStep = EWorkFlowStep.等待Ok料盘搬运完成; + TakeTrayFlow.Instance.Take(EStockType.Empty2, EStockType.Ok); + } + break; + case EWorkFlowStep.等待Ok料盘搬运完成: + if(TakeTrayFlow.Instance.TakeStatus== ETakeStatus.TakeOK && StockManager.Instance.GetStockStatus( EStockType.Ok)== AutoDischarge.V3.Flow.ETrayStatus.Loaded) + { + flowStep = restoreFlowStep; + restoreFlowStep = EWorkFlowStep.IDLE; + } + break; + case EWorkFlowStep.等待Ng料仓收料完成: + if (StockManager.Instance.GetStockStatus(EStockType.Ng) == AutoDischarge.V3.Flow.ETrayStatus.Unloaded) + { + flowStep = EWorkFlowStep.等待Ng料盘搬运完成; + TakeTrayFlow.Instance.Take(EStockType.Empty2, EStockType.Ng); + } + break; + case EWorkFlowStep.等待Ng料盘搬运完成: + if (TakeTrayFlow.Instance.TakeStatus == ETakeStatus.TakeOK && StockManager.Instance.GetStockStatus(EStockType.Ng) == AutoDischarge.V3.Flow.ETrayStatus.Loaded) + { + flowStep = restoreFlowStep; + restoreFlowStep = EWorkFlowStep.IDLE; + } + break; + case EWorkFlowStep.等待Multi料仓收料完成: + if (StockManager.Instance.GetStockStatus(EStockType.Multi) == AutoDischarge.V3.Flow.ETrayStatus.Unloaded) + { + flowStep = EWorkFlowStep.等待Multi料盘搬运完成; + TakeTrayFlow.Instance.Take(EStockType.Empty2, EStockType.Multi); + } + break; + case EWorkFlowStep.等待Multi料盘搬运完成: + if (TakeTrayFlow.Instance.TakeStatus == ETakeStatus.TakeOK && StockManager.Instance.GetStockStatus(EStockType.Multi) == AutoDischarge.V3.Flow.ETrayStatus.Loaded) + { + flowStep = restoreFlowStep; + restoreFlowStep = EWorkFlowStep.IDLE; + } + break; default: break; }