|
|
@ -40,8 +40,9 @@ namespace Rs.MotionPlat.Flow
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
public class RearrangeFlow:BaseFlow
|
|
|
|
public class RearrangeFlow
|
|
|
|
{
|
|
|
|
{
|
|
|
|
|
|
|
|
private string logInfo = string.Empty;
|
|
|
|
private static RearrangeFlow instance;
|
|
|
|
private static RearrangeFlow instance;
|
|
|
|
public static RearrangeFlow Instance
|
|
|
|
public static RearrangeFlow Instance
|
|
|
|
{
|
|
|
|
{
|
|
|
@ -63,7 +64,11 @@ namespace Rs.MotionPlat.Flow
|
|
|
|
double targetY = 0.0;
|
|
|
|
double targetY = 0.0;
|
|
|
|
int FetchNum = 0;//取料次数
|
|
|
|
int FetchNum = 0;//取料次数
|
|
|
|
ErrorCode errCode = ErrorCode.Ok;
|
|
|
|
ErrorCode errCode = ErrorCode.Ok;
|
|
|
|
public override void Run()
|
|
|
|
public void Rearrange()
|
|
|
|
|
|
|
|
{
|
|
|
|
|
|
|
|
bool finished = false;
|
|
|
|
|
|
|
|
flowStep = ERearrangeFlowStep.等待任务;
|
|
|
|
|
|
|
|
while (!finished)
|
|
|
|
{
|
|
|
|
{
|
|
|
|
switch (flowStep)
|
|
|
|
switch (flowStep)
|
|
|
|
{
|
|
|
|
{
|
|
|
@ -79,7 +84,7 @@ namespace Rs.MotionPlat.Flow
|
|
|
|
break;
|
|
|
|
break;
|
|
|
|
case ERearrangeFlowStep.到取料位上方:
|
|
|
|
case ERearrangeFlowStep.到取料位上方:
|
|
|
|
curTask = RearrangeTask.GetTask();
|
|
|
|
curTask = RearrangeTask.GetTask();
|
|
|
|
curNozzle = NozzleManager.GetIdelNozzle();
|
|
|
|
curNozzle = NozzleManager.GetIdelNozzle(true);
|
|
|
|
if (curTask != null && curNozzle != null)
|
|
|
|
if (curTask != null && curNozzle != null)
|
|
|
|
{
|
|
|
|
{
|
|
|
|
if (SafeControl.Instance.XYCanMove() || GlobalVar.VirtualAxis)
|
|
|
|
if (SafeControl.Instance.XYCanMove() || GlobalVar.VirtualAxis)
|
|
|
@ -232,17 +237,24 @@ namespace Rs.MotionPlat.Flow
|
|
|
|
if (curTask.FromType == TurnoverType.Passed)
|
|
|
|
if (curTask.FromType == TurnoverType.Passed)
|
|
|
|
{
|
|
|
|
{
|
|
|
|
curNozzle.FromFloor = StockManager.Instance.GetStock(ETrayType.Ok).GetFloor();// StockManager.Instance.GetTray(EStockType.Ok).GetFloor();
|
|
|
|
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;
|
|
|
|
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)
|
|
|
|
else if (curTask.FromType == TurnoverType.Failed)
|
|
|
|
{
|
|
|
|
{
|
|
|
|
curNozzle.FromFloor = StockManager.Instance.GetStock(ETrayType.Ng).GetFloor();//StockManager.Instance.GetTray(EStockType.Ng).GetFloor();
|
|
|
|
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;
|
|
|
|
curNozzle.FromIndex = curTask.FromIndex;
|
|
|
|
GlobalTray.NgTray.ChangeStatus(curNozzle.FromIndex + 1, ESlotStatus.NotHave);
|
|
|
|
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();
|
|
|
|
curNozzle.Update();
|
|
|
|
curTask.Dealed = true;
|
|
|
|
curTask.Dealed = true;
|
|
|
|
if (RearrangeTask.HasTask() && NozzleManager.GetNozzlesByStatus(ENozzleStatus.IDLE).Count > 0)
|
|
|
|
if (RearrangeTask.HasTask() && NozzleManager.GetNozzlesByStatus(ENozzleStatus.IDLE).Count > 0)
|
|
|
@ -527,13 +539,14 @@ namespace Rs.MotionPlat.Flow
|
|
|
|
LogHelper.Debug(logInfo);
|
|
|
|
LogHelper.Debug(logInfo);
|
|
|
|
}
|
|
|
|
}
|
|
|
|
MachineManage.Instance.SetLoadUnloadStatus(ERunState.Waiting);
|
|
|
|
MachineManage.Instance.SetLoadUnloadStatus(ERunState.Waiting);
|
|
|
|
flowStep = ERearrangeFlowStep.等待任务;
|
|
|
|
finished = true;
|
|
|
|
}
|
|
|
|
}
|
|
|
|
break;
|
|
|
|
break;
|
|
|
|
default:
|
|
|
|
default:
|
|
|
|
break;
|
|
|
|
break;
|
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
private double GetVacOffsetHeight(int fetchNum)
|
|
|
|
private double GetVacOffsetHeight(int fetchNum)
|
|
|
|
{
|
|
|
|
{
|
|
|
|