|
|
|
@ -40,8 +40,9 @@ namespace Rs.MotionPlat.Flow
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
public class RearrangeFlow:BaseFlow
|
|
|
|
|
public class RearrangeFlow
|
|
|
|
|
{
|
|
|
|
|
private string logInfo = string.Empty;
|
|
|
|
|
private static RearrangeFlow instance;
|
|
|
|
|
public static RearrangeFlow Instance
|
|
|
|
|
{
|
|
|
|
@ -63,7 +64,11 @@ namespace Rs.MotionPlat.Flow
|
|
|
|
|
double targetY = 0.0;
|
|
|
|
|
int FetchNum = 0;//取料次数
|
|
|
|
|
ErrorCode errCode = ErrorCode.Ok;
|
|
|
|
|
public override void Run()
|
|
|
|
|
public void Rearrange()
|
|
|
|
|
{
|
|
|
|
|
bool finished = false;
|
|
|
|
|
flowStep = ERearrangeFlowStep.等待任务;
|
|
|
|
|
while (!finished)
|
|
|
|
|
{
|
|
|
|
|
switch (flowStep)
|
|
|
|
|
{
|
|
|
|
@ -79,7 +84,7 @@ namespace Rs.MotionPlat.Flow
|
|
|
|
|
break;
|
|
|
|
|
case ERearrangeFlowStep.到取料位上方:
|
|
|
|
|
curTask = RearrangeTask.GetTask();
|
|
|
|
|
curNozzle = NozzleManager.GetIdelNozzle();
|
|
|
|
|
curNozzle = NozzleManager.GetIdelNozzle(true);
|
|
|
|
|
if (curTask != null && curNozzle != null)
|
|
|
|
|
{
|
|
|
|
|
if (SafeControl.Instance.XYCanMove() || GlobalVar.VirtualAxis)
|
|
|
|
@ -100,8 +105,8 @@ namespace Rs.MotionPlat.Flow
|
|
|
|
|
default:
|
|
|
|
|
break;
|
|
|
|
|
}
|
|
|
|
|
logInfo = $"吸嘴{curNozzle.NozzleIndex} 去{traytype}盘 {curTask.FromIndex+1} 号穴位取料";
|
|
|
|
|
curSlotPoint = TrayPointManager.GetSlotPoint( traytype, curTask.FromIndex+1);
|
|
|
|
|
logInfo = $"吸嘴{curNozzle.NozzleIndex} 去{traytype}盘 {curTask.FromIndex + 1} 号穴位取料";
|
|
|
|
|
curSlotPoint = TrayPointManager.GetSlotPoint(traytype, curTask.FromIndex + 1);
|
|
|
|
|
MessageQueue.Instance.Insert(logInfo);
|
|
|
|
|
LogHelper.Debug(logInfo);
|
|
|
|
|
if (curSlotPoint != null)
|
|
|
|
@ -232,17 +237,24 @@ namespace Rs.MotionPlat.Flow
|
|
|
|
|
if (curTask.FromType == TurnoverType.Passed)
|
|
|
|
|
{
|
|
|
|
|
curNozzle.FromFloor = StockManager.Instance.GetStock(ETrayType.Ok).GetFloor();// StockManager.Instance.GetTray(EStockType.Ok).GetFloor();
|
|
|
|
|
curNozzle.SN = "";
|
|
|
|
|
curNozzle.SN = GlobalTray.OkTary.GetSlot(curTask.FromIndex+1).SN;
|
|
|
|
|
curNozzle.FromIndex = curTask.FromIndex;
|
|
|
|
|
GlobalTray.OkTary.ChangeStatus(curNozzle.FromIndex+1, ESlotStatus.NotHave);
|
|
|
|
|
GlobalTray.OkTary.ChangeStatus(curNozzle.FromIndex + 1, ESlotStatus.NotHave);
|
|
|
|
|
}
|
|
|
|
|
else if (curTask.FromType == TurnoverType.Failed)
|
|
|
|
|
{
|
|
|
|
|
curNozzle.FromFloor = StockManager.Instance.GetStock(ETrayType.Ng).GetFloor();//StockManager.Instance.GetTray(EStockType.Ng).GetFloor();
|
|
|
|
|
curNozzle.SN = "";
|
|
|
|
|
curNozzle.SN = GlobalTray.NgTray.GetSlot(curTask.FromIndex + 1).SN;
|
|
|
|
|
curNozzle.FromIndex = curTask.FromIndex;
|
|
|
|
|
GlobalTray.NgTray.ChangeStatus(curNozzle.FromIndex + 1, ESlotStatus.NotHave);
|
|
|
|
|
}
|
|
|
|
|
else if (curTask.FromType == TurnoverType.Multifunction)
|
|
|
|
|
{
|
|
|
|
|
curNozzle.FromFloor = StockManager.Instance.GetStock(ETrayType.Multi).GetFloor();//StockManager.Instance.GetTray(EStockType.Ng).GetFloor();
|
|
|
|
|
curNozzle.SN = GlobalTray.MultiTray.GetSlot(curTask.FromIndex + 1).SN;
|
|
|
|
|
curNozzle.FromIndex = curTask.FromIndex;
|
|
|
|
|
GlobalTray.MultiTray.ChangeStatus(curNozzle.FromIndex + 1, ESlotStatus.NotHave);
|
|
|
|
|
}
|
|
|
|
|
curNozzle.Update();
|
|
|
|
|
curTask.Dealed = true;
|
|
|
|
|
if (RearrangeTask.HasTask() && NozzleManager.GetNozzlesByStatus(ENozzleStatus.IDLE).Count > 0)
|
|
|
|
@ -465,7 +477,7 @@ namespace Rs.MotionPlat.Flow
|
|
|
|
|
AxisControl.GetAxis($"NozzleZ{curNozzle.NozzleIndex}").Home();
|
|
|
|
|
if (curNozzle.ToType == TurnoverType.Passed)
|
|
|
|
|
{
|
|
|
|
|
GlobalTray.OkTary.ChangeStatus(curNozzle.ToIndex+1, ESlotStatus.Have);
|
|
|
|
|
GlobalTray.OkTary.ChangeStatus(curNozzle.ToIndex + 1, ESlotStatus.Have);
|
|
|
|
|
}
|
|
|
|
|
else if (curNozzle.ToType == TurnoverType.Failed)
|
|
|
|
|
{
|
|
|
|
@ -515,7 +527,7 @@ namespace Rs.MotionPlat.Flow
|
|
|
|
|
logInfo = "任务结束已回到安全位";
|
|
|
|
|
MessageQueue.Instance.Insert(logInfo);
|
|
|
|
|
LogHelper.Debug(logInfo);
|
|
|
|
|
if (RearrangeTask.ReportCenter()>0)
|
|
|
|
|
if (RearrangeTask.ReportCenter() > 0)
|
|
|
|
|
{
|
|
|
|
|
logInfo = "通知中控任务完成";
|
|
|
|
|
MessageQueue.Instance.Insert(logInfo);
|
|
|
|
@ -527,13 +539,14 @@ namespace Rs.MotionPlat.Flow
|
|
|
|
|
LogHelper.Debug(logInfo);
|
|
|
|
|
}
|
|
|
|
|
MachineManage.Instance.SetLoadUnloadStatus(ERunState.Waiting);
|
|
|
|
|
flowStep = ERearrangeFlowStep.等待任务;
|
|
|
|
|
finished = true;
|
|
|
|
|
}
|
|
|
|
|
break;
|
|
|
|
|
default:
|
|
|
|
|
break;
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
private double GetVacOffsetHeight(int fetchNum)
|
|
|
|
|
{
|
|
|
|
|