|
|
@ -59,18 +59,18 @@ namespace Rs.MotionPlat.Flow
|
|
|
|
放料任务完成,
|
|
|
|
放料任务完成,
|
|
|
|
任务结束到安全位,
|
|
|
|
任务结束到安全位,
|
|
|
|
等待任务结束到安全位,
|
|
|
|
等待任务结束到安全位,
|
|
|
|
测试工位上料,
|
|
|
|
//测试工位上料,
|
|
|
|
等待测试工位上料完成,
|
|
|
|
//等待测试工位上料完成,
|
|
|
|
测试工位下料,
|
|
|
|
//测试工位下料,
|
|
|
|
等待测试工位下料完成,
|
|
|
|
//等待测试工位下料完成,
|
|
|
|
等待Input料盘搬运完成,
|
|
|
|
//等待Input料盘搬运完成,
|
|
|
|
等待Input料仓上料完成,
|
|
|
|
//等待Input料仓上料完成,
|
|
|
|
等待Ok料仓收料完成,
|
|
|
|
//等待Ok料仓收料完成,
|
|
|
|
等待Ok料盘搬运完成,
|
|
|
|
//等待Ok料盘搬运完成,
|
|
|
|
等待Ng料仓收料完成,
|
|
|
|
//等待Ng料仓收料完成,
|
|
|
|
等待Ng料盘搬运完成,
|
|
|
|
//等待Ng料盘搬运完成,
|
|
|
|
等待Multi料仓收料完成,
|
|
|
|
//等待Multi料仓收料完成,
|
|
|
|
等待Multi料盘搬运完成,
|
|
|
|
//等待Multi料盘搬运完成,
|
|
|
|
IDLE
|
|
|
|
IDLE
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
@ -190,11 +190,12 @@ namespace Rs.MotionPlat.Flow
|
|
|
|
if (XYCanMove() || GlobalVar.VirtualAxis)
|
|
|
|
if (XYCanMove() || GlobalVar.VirtualAxis)
|
|
|
|
{
|
|
|
|
{
|
|
|
|
curSlotPoint = null;
|
|
|
|
curSlotPoint = null;
|
|
|
|
|
|
|
|
curNozzle.FromType=curTask.FromType;
|
|
|
|
if (curTask.FromType == TurnoverType.Turnover)
|
|
|
|
if (curTask.FromType == TurnoverType.Turnover)
|
|
|
|
{
|
|
|
|
{
|
|
|
|
curSlotPoint = TrayPointManager.GetSlotPoint( ETrayType.Turnover, curTask.FromIndex + 1);
|
|
|
|
curSlotPoint = TrayPointManager.GetSlotPoint( ETrayType.Turnover, curTask.FromIndex + 1);
|
|
|
|
curNozzle.FromIndex = curTask.FromIndex + 1;
|
|
|
|
curNozzle.FromIndex = curTask.FromIndex;
|
|
|
|
logInfo = GetClassName()+ $"{curNozzle.NozzleIndex}号排料吸嘴到周转盘{curTask.FromIndex + 1}号穴位取料";
|
|
|
|
logInfo = GetClassName()+ $"排料吸嘴{curNozzle.NozzleIndex}号到周转盘{curNozzle.FromIndex + 1}号穴位取料";
|
|
|
|
MessageQueue.Instance.Insert(logInfo);
|
|
|
|
MessageQueue.Instance.Insert(logInfo);
|
|
|
|
}
|
|
|
|
}
|
|
|
|
else if (curTask.FromType == TurnoverType.ToBeTested)
|
|
|
|
else if (curTask.FromType == TurnoverType.ToBeTested)
|
|
|
@ -203,13 +204,13 @@ namespace Rs.MotionPlat.Flow
|
|
|
|
if (slot != null)
|
|
|
|
if (slot != null)
|
|
|
|
{
|
|
|
|
{
|
|
|
|
curSlotPoint = TrayPointManager.GetSlotPoint( ETrayType.Input, slot.Index);
|
|
|
|
curSlotPoint = TrayPointManager.GetSlotPoint( ETrayType.Input, slot.Index);
|
|
|
|
curNozzle.FromIndex= slot.Index;
|
|
|
|
curNozzle.FromIndex= slot.Index-1;
|
|
|
|
logInfo =GetClassName()+ $"{curNozzle.NozzleIndex}号吸排料嘴去Input盘{slot.Index}号穴位取料";
|
|
|
|
logInfo =GetClassName()+ $"排料吸嘴{curNozzle.NozzleIndex}号到Input盘{curNozzle.FromIndex+1}号穴位取料";
|
|
|
|
MessageQueue.Instance.Insert(logInfo);
|
|
|
|
MessageQueue.Instance.Insert(logInfo);
|
|
|
|
}
|
|
|
|
}
|
|
|
|
else
|
|
|
|
else
|
|
|
|
{
|
|
|
|
{
|
|
|
|
logInfo = GetClassName()+ $"检测到Input料盘无料,准备切盘";
|
|
|
|
logInfo = GetClassName()+ $"检测到Input料盘无料,准备切换料盘";
|
|
|
|
MessageQueue.Instance.Insert(logInfo);
|
|
|
|
MessageQueue.Instance.Insert(logInfo);
|
|
|
|
TakeTrayFlow.Instance.Take(ETrayType.Input, ETrayType.Empty1,
|
|
|
|
TakeTrayFlow.Instance.Take(ETrayType.Input, ETrayType.Empty1,
|
|
|
|
() =>
|
|
|
|
() =>
|
|
|
@ -286,7 +287,7 @@ namespace Rs.MotionPlat.Flow
|
|
|
|
case EDischargeFlowStep.等待到取料位上方:
|
|
|
|
case EDischargeFlowStep.等待到取料位上方:
|
|
|
|
if (Ops.IsStop("LoadX", "LoadY", $"NozzleR{curNozzle.NozzleIndex}") || GlobalVar.VirtualAxis)
|
|
|
|
if (Ops.IsStop("LoadX", "LoadY", $"NozzleR{curNozzle.NozzleIndex}") || GlobalVar.VirtualAxis)
|
|
|
|
{
|
|
|
|
{
|
|
|
|
logInfo = GetClassName()+$"已运动到取料位上方";
|
|
|
|
logInfo = GetClassName()+$"已运动到{WitchTrayWitchSlot(curNozzle.FromType,curNozzle.FromIndex)}取料位上方";
|
|
|
|
MessageQueue.Instance.Insert(logInfo);
|
|
|
|
MessageQueue.Instance.Insert(logInfo);
|
|
|
|
flowStep = EDischargeFlowStep.到取料位下方;
|
|
|
|
flowStep = EDischargeFlowStep.到取料位下方;
|
|
|
|
}
|
|
|
|
}
|
|
|
@ -306,7 +307,7 @@ namespace Rs.MotionPlat.Flow
|
|
|
|
errCode = AxisControl.GetAxis($"NozzleZ{curNozzle.NozzleIndex}").MovePos(targetPos, GlobalVar.WholeSpeed);
|
|
|
|
errCode = AxisControl.GetAxis($"NozzleZ{curNozzle.NozzleIndex}").MovePos(targetPos, GlobalVar.WholeSpeed);
|
|
|
|
if (errCode == ErrorCode.Ok || GlobalVar.VirtualAxis)
|
|
|
|
if (errCode == ErrorCode.Ok || GlobalVar.VirtualAxis)
|
|
|
|
{
|
|
|
|
{
|
|
|
|
logInfo = GetClassName() + $"到取料位下方";
|
|
|
|
logInfo = GetClassName() + $"到{WitchTrayWitchSlot(curNozzle.FromType, curNozzle.FromIndex)}号穴位取料位下方";
|
|
|
|
MessageQueue.Instance.Insert(logInfo);
|
|
|
|
MessageQueue.Instance.Insert(logInfo);
|
|
|
|
if (GlobalVar.VirtualAxis)
|
|
|
|
if (GlobalVar.VirtualAxis)
|
|
|
|
{
|
|
|
|
{
|
|
|
@ -331,7 +332,7 @@ namespace Rs.MotionPlat.Flow
|
|
|
|
case EDischargeFlowStep.等待到取料位下方:
|
|
|
|
case EDischargeFlowStep.等待到取料位下方:
|
|
|
|
if (Ops.IsStop($"NozzleZ{curNozzle.NozzleIndex}") || GlobalVar.VirtualAxis)
|
|
|
|
if (Ops.IsStop($"NozzleZ{curNozzle.NozzleIndex}") || GlobalVar.VirtualAxis)
|
|
|
|
{
|
|
|
|
{
|
|
|
|
logInfo = GetClassName()+ $"已运动到取料位下方";
|
|
|
|
logInfo = GetClassName()+ $"已运动到{WitchTrayWitchSlot(curNozzle.FromType, curNozzle.FromIndex)}号穴位取料位下方";
|
|
|
|
MessageQueue.Instance.Insert(logInfo);
|
|
|
|
MessageQueue.Instance.Insert(logInfo);
|
|
|
|
flowStep = EDischargeFlowStep.开真空;
|
|
|
|
flowStep = EDischargeFlowStep.开真空;
|
|
|
|
}
|
|
|
|
}
|
|
|
@ -376,7 +377,7 @@ namespace Rs.MotionPlat.Flow
|
|
|
|
{
|
|
|
|
{
|
|
|
|
Thread.Sleep(GlobalVar.VirtualAxisMoveTime);
|
|
|
|
Thread.Sleep(GlobalVar.VirtualAxisMoveTime);
|
|
|
|
}
|
|
|
|
}
|
|
|
|
logInfo = GetClassName()+ $"取料完成准备抬起";
|
|
|
|
logInfo = GetClassName()+ $"取{WitchTrayWitchSlot(curNozzle.FromType, curNozzle.FromIndex)}号穴位产品完成准备抬起";
|
|
|
|
MessageQueue.Instance.Insert(logInfo);
|
|
|
|
MessageQueue.Instance.Insert(logInfo);
|
|
|
|
flowStep = EDischargeFlowStep.等待取料完成抬起;
|
|
|
|
flowStep = EDischargeFlowStep.等待取料完成抬起;
|
|
|
|
}
|
|
|
|
}
|
|
|
@ -388,7 +389,7 @@ namespace Rs.MotionPlat.Flow
|
|
|
|
case EDischargeFlowStep.等待取料完成抬起:
|
|
|
|
case EDischargeFlowStep.等待取料完成抬起:
|
|
|
|
if (Ops.IsStop($"NozzleZ{curNozzle.NozzleIndex}") || GlobalVar.VirtualAxis)
|
|
|
|
if (Ops.IsStop($"NozzleZ{curNozzle.NozzleIndex}") || GlobalVar.VirtualAxis)
|
|
|
|
{
|
|
|
|
{
|
|
|
|
logInfo = GetClassName()+$"取料完成已抬起";
|
|
|
|
logInfo = GetClassName()+$"取{WitchTrayWitchSlot(curNozzle.FromType, curNozzle.FromIndex)}号穴位产品完成已抬起";
|
|
|
|
MessageQueue.Instance.Insert(logInfo);
|
|
|
|
MessageQueue.Instance.Insert(logInfo);
|
|
|
|
flowStep = EDischargeFlowStep.取料完成后真空检测;
|
|
|
|
flowStep = EDischargeFlowStep.取料完成后真空检测;
|
|
|
|
}
|
|
|
|
}
|
|
|
@ -397,7 +398,7 @@ namespace Rs.MotionPlat.Flow
|
|
|
|
if (Ops.IsOn($"{curNozzle.NozzleIndex}号吸嘴真空吸检测") || GlobalVar.RunSpace || GlobalVar.VirtualAxis)
|
|
|
|
if (Ops.IsOn($"{curNozzle.NozzleIndex}号吸嘴真空吸检测") || GlobalVar.RunSpace || GlobalVar.VirtualAxis)
|
|
|
|
{
|
|
|
|
{
|
|
|
|
reFetchNum = 0;
|
|
|
|
reFetchNum = 0;
|
|
|
|
logInfo = GetClassName()+$"{curNozzle.NozzleIndex}号排料吸嘴真空检测OK";
|
|
|
|
logInfo = GetClassName()+$"排料吸嘴{curNozzle.NozzleIndex}号真空检测OK";
|
|
|
|
MessageQueue.Instance.Insert(logInfo);
|
|
|
|
MessageQueue.Instance.Insert(logInfo);
|
|
|
|
UpdateNozzleStatus(curNozzle, curTask);
|
|
|
|
UpdateNozzleStatus(curNozzle, curTask);
|
|
|
|
undoTaskNum = LoadAndUnloadTask.Instance.GetTaskNum(curTask.taskMode);
|
|
|
|
undoTaskNum = LoadAndUnloadTask.Instance.GetTaskNum(curTask.taskMode);
|
|
|
@ -789,7 +790,7 @@ namespace Rs.MotionPlat.Flow
|
|
|
|
{
|
|
|
|
{
|
|
|
|
if (curNozzle.ToType == TurnoverType.Turnover)
|
|
|
|
if (curNozzle.ToType == TurnoverType.Turnover)
|
|
|
|
{
|
|
|
|
{
|
|
|
|
logInfo = GetClassName() + $"号排料吸嘴到周转盘{curNozzle.ToIndex + 1}号穴位上方";
|
|
|
|
logInfo = GetClassName() + $"排料吸嘴{curNozzle.NozzleIndex}号到{curNozzle.ToType}盘{curNozzle.ToIndex + 1}号穴位上方";
|
|
|
|
MessageQueue.Instance.Insert(logInfo);
|
|
|
|
MessageQueue.Instance.Insert(logInfo);
|
|
|
|
curSlotPoint = TrayPointManager.GetSlotPoint( ETrayType.Turnover, curNozzle.ToIndex + 1);
|
|
|
|
curSlotPoint = TrayPointManager.GetSlotPoint( ETrayType.Turnover, curNozzle.ToIndex + 1);
|
|
|
|
turnoverOffsetPoint = TurnoverSlotOffset.GetOffsetPoint(curNozzle.ToIndex + 1);
|
|
|
|
turnoverOffsetPoint = TurnoverSlotOffset.GetOffsetPoint(curNozzle.ToIndex + 1);
|
|
|
@ -811,10 +812,12 @@ namespace Rs.MotionPlat.Flow
|
|
|
|
else if (curNozzle.ToType == TurnoverType.Passed)
|
|
|
|
else if (curNozzle.ToType == TurnoverType.Passed)
|
|
|
|
{
|
|
|
|
{
|
|
|
|
downSlot = GlobalTray.OkTary.GetSlot(ESlotStatus.NotHave);
|
|
|
|
downSlot = GlobalTray.OkTary.GetSlot(ESlotStatus.NotHave);
|
|
|
|
|
|
|
|
|
|
|
|
if (downSlot != null)
|
|
|
|
if (downSlot != null)
|
|
|
|
{
|
|
|
|
{
|
|
|
|
|
|
|
|
curNozzle.ToIndex = downSlot.Index - 1;
|
|
|
|
curSlotPoint = TrayPointManager.GetSlotPoint( ETrayType.Ok, downSlot.Index);
|
|
|
|
curSlotPoint = TrayPointManager.GetSlotPoint( ETrayType.Ok, downSlot.Index);
|
|
|
|
logInfo = $"{nameof(DischargeFlow)}-{curNozzle.NozzleIndex}号排料吸嘴到OK盘{downSlot.Index}号穴位上方";
|
|
|
|
logInfo = GetClassName()+$"排料吸嘴{curNozzle.NozzleIndex}号到{curNozzle.ToType}盘{curNozzle.ToIndex+1}号穴位上方";
|
|
|
|
MessageQueue.Instance.Insert(logInfo);
|
|
|
|
MessageQueue.Instance.Insert(logInfo);
|
|
|
|
}
|
|
|
|
}
|
|
|
|
else
|
|
|
|
else
|
|
|
@ -824,8 +827,8 @@ namespace Rs.MotionPlat.Flow
|
|
|
|
() => { StockManager.Instance.GetStock(ETrayType.Empty2).Load(EStockTrayLoadMode.Whole, null); },
|
|
|
|
() => { StockManager.Instance.GetStock(ETrayType.Empty2).Load(EStockTrayLoadMode.Whole, null); },
|
|
|
|
null,
|
|
|
|
null,
|
|
|
|
() => { StockManager.Instance.GetStock(ETrayType.Ok).Load(EStockTrayLoadMode.AfterTakeTray, null);});
|
|
|
|
() => { StockManager.Instance.GetStock(ETrayType.Ok).Load(EStockTrayLoadMode.AfterTakeTray, null);});
|
|
|
|
restoreFlowStep = EDischargeFlowStep.到放料位上方;
|
|
|
|
//restoreFlowStep = EDischargeFlowStep.到放料位上方;
|
|
|
|
flowStep = EDischargeFlowStep.等待Ok料盘搬运完成;
|
|
|
|
//flowStep = EDischargeFlowStep.等待Ok料盘搬运完成;
|
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|
|
|
|
else if (curNozzle.ToType == TurnoverType.Failed)
|
|
|
|
else if (curNozzle.ToType == TurnoverType.Failed)
|
|
|
@ -833,8 +836,9 @@ namespace Rs.MotionPlat.Flow
|
|
|
|
downSlot = GlobalTray.NgTray.GetSlot(ESlotStatus.NotHave);
|
|
|
|
downSlot = GlobalTray.NgTray.GetSlot(ESlotStatus.NotHave);
|
|
|
|
if (downSlot != null)
|
|
|
|
if (downSlot != null)
|
|
|
|
{
|
|
|
|
{
|
|
|
|
|
|
|
|
curNozzle.ToIndex = downSlot.Index - 1;
|
|
|
|
curSlotPoint = TrayPointManager.GetSlotPoint( ETrayType.Ng, downSlot.Index);
|
|
|
|
curSlotPoint = TrayPointManager.GetSlotPoint( ETrayType.Ng, downSlot.Index);
|
|
|
|
logInfo = $"{nameof(DischargeFlow)}-{curNozzle.NozzleIndex}号排料吸嘴到NG盘{downSlot.Index}号穴位上方";
|
|
|
|
logInfo = GetClassName()+$"排料吸嘴{curNozzle.NozzleIndex}号到{curNozzle.ToType}盘{curNozzle.ToIndex+1}号穴位上方";
|
|
|
|
MessageQueue.Instance.Insert(logInfo);
|
|
|
|
MessageQueue.Instance.Insert(logInfo);
|
|
|
|
}
|
|
|
|
}
|
|
|
|
else
|
|
|
|
else
|
|
|
@ -844,8 +848,8 @@ namespace Rs.MotionPlat.Flow
|
|
|
|
() => { StockManager.Instance.GetStock(ETrayType.Empty2).Load(EStockTrayLoadMode.Whole, null); },
|
|
|
|
() => { StockManager.Instance.GetStock(ETrayType.Empty2).Load(EStockTrayLoadMode.Whole, null); },
|
|
|
|
null,
|
|
|
|
null,
|
|
|
|
() => { StockManager.Instance.GetStock(ETrayType.Ng).Load(EStockTrayLoadMode.AfterTakeTray, null); });
|
|
|
|
() => { StockManager.Instance.GetStock(ETrayType.Ng).Load(EStockTrayLoadMode.AfterTakeTray, null); });
|
|
|
|
restoreFlowStep = EDischargeFlowStep.到放料位上方;
|
|
|
|
//restoreFlowStep = EDischargeFlowStep.到放料位上方;
|
|
|
|
flowStep = EDischargeFlowStep.等待Ng料盘搬运完成;
|
|
|
|
//flowStep = EDischargeFlowStep.等待Ng料盘搬运完成;
|
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|
|
|
|
else if (curNozzle.ToType == TurnoverType.Multifunction)
|
|
|
|
else if (curNozzle.ToType == TurnoverType.Multifunction)
|
|
|
@ -853,8 +857,9 @@ namespace Rs.MotionPlat.Flow
|
|
|
|
downSlot = GlobalTray.MultiTray.GetSlot(ESlotStatus.NotHave);
|
|
|
|
downSlot = GlobalTray.MultiTray.GetSlot(ESlotStatus.NotHave);
|
|
|
|
if (downSlot != null)
|
|
|
|
if (downSlot != null)
|
|
|
|
{
|
|
|
|
{
|
|
|
|
|
|
|
|
curNozzle.ToIndex = downSlot.Index - 1;
|
|
|
|
curSlotPoint = TrayPointManager.GetSlotPoint( ETrayType.Multi, downSlot.Index);
|
|
|
|
curSlotPoint = TrayPointManager.GetSlotPoint( ETrayType.Multi, downSlot.Index);
|
|
|
|
logInfo = $"{nameof(DischargeFlow)}-{curNozzle.NozzleIndex}号排料吸嘴到Multi盘{downSlot.Index}号穴位上方";
|
|
|
|
logInfo =GetClassName()+ $"排料吸嘴{curNozzle.NozzleIndex}号到{curNozzle.ToType}盘{curNozzle.ToIndex+1}号穴位上方";
|
|
|
|
MessageQueue.Instance.Insert(logInfo);
|
|
|
|
MessageQueue.Instance.Insert(logInfo);
|
|
|
|
}
|
|
|
|
}
|
|
|
|
else
|
|
|
|
else
|
|
|
@ -864,8 +869,8 @@ namespace Rs.MotionPlat.Flow
|
|
|
|
() => { StockManager.Instance.GetStock(ETrayType.Empty2).Load(EStockTrayLoadMode.Whole, null); },
|
|
|
|
() => { StockManager.Instance.GetStock(ETrayType.Empty2).Load(EStockTrayLoadMode.Whole, null); },
|
|
|
|
null,
|
|
|
|
null,
|
|
|
|
() => { StockManager.Instance.GetStock(ETrayType.Multi).Load(EStockTrayLoadMode.AfterTakeTray, null); });
|
|
|
|
() => { StockManager.Instance.GetStock(ETrayType.Multi).Load(EStockTrayLoadMode.AfterTakeTray, null); });
|
|
|
|
restoreFlowStep = EDischargeFlowStep.到放料位上方;
|
|
|
|
//restoreFlowStep = EDischargeFlowStep.到放料位上方;
|
|
|
|
flowStep = EDischargeFlowStep.等待Multi料盘搬运完成;
|
|
|
|
//flowStep = EDischargeFlowStep.等待Multi料盘搬运完成;
|
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|
|
|
@ -924,7 +929,7 @@ namespace Rs.MotionPlat.Flow
|
|
|
|
case EDischargeFlowStep.等待到放料位上方:
|
|
|
|
case EDischargeFlowStep.等待到放料位上方:
|
|
|
|
if (Ops.IsStop("LoadX", "LoadY",$"NozzleR{curNozzle.NozzleIndex}") || GlobalVar.VirtualAxis)
|
|
|
|
if (Ops.IsStop("LoadX", "LoadY",$"NozzleR{curNozzle.NozzleIndex}") || GlobalVar.VirtualAxis)
|
|
|
|
{
|
|
|
|
{
|
|
|
|
logInfo = GetClassName()+$"{curNozzle.NozzleIndex}号排料吸嘴已运动到放料位上方";
|
|
|
|
logInfo = GetClassName()+$"排料吸嘴{curNozzle.NozzleIndex}号已运动到{WitchTrayWitchSlot(curNozzle.ToType,curNozzle.ToIndex)}放料位上方";
|
|
|
|
MessageQueue.Instance.Insert(logInfo);
|
|
|
|
MessageQueue.Instance.Insert(logInfo);
|
|
|
|
flowStep = EDischargeFlowStep.丢料检测;
|
|
|
|
flowStep = EDischargeFlowStep.丢料检测;
|
|
|
|
}
|
|
|
|
}
|
|
|
@ -973,9 +978,16 @@ namespace Rs.MotionPlat.Flow
|
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|
|
|
|
else
|
|
|
|
else
|
|
|
|
|
|
|
|
{
|
|
|
|
|
|
|
|
if (curNozzle.Status == ENozzleStatus.ToUnload)
|
|
|
|
{
|
|
|
|
{
|
|
|
|
flowStep = EDischargeFlowStep.到放料位下方;
|
|
|
|
flowStep = EDischargeFlowStep.到放料位下方;
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
else
|
|
|
|
|
|
|
|
{
|
|
|
|
|
|
|
|
flowStep = EDischargeFlowStep.放料任务完成;
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|
|
|
|
else
|
|
|
|
else
|
|
|
|
{
|
|
|
|
{
|
|
|
@ -1002,7 +1014,7 @@ namespace Rs.MotionPlat.Flow
|
|
|
|
errCode = AxisControl.GetAxis($"NozzleZ{curNozzle.NozzleIndex}").MovePos(targetPos, GlobalVar.WholeSpeed);
|
|
|
|
errCode = AxisControl.GetAxis($"NozzleZ{curNozzle.NozzleIndex}").MovePos(targetPos, GlobalVar.WholeSpeed);
|
|
|
|
if (errCode == ErrorCode.Ok || GlobalVar.VirtualAxis)
|
|
|
|
if (errCode == ErrorCode.Ok || GlobalVar.VirtualAxis)
|
|
|
|
{
|
|
|
|
{
|
|
|
|
logInfo = GetClassName() + $"{curNozzle.NozzleIndex}号排料吸嘴到放料位下方";
|
|
|
|
logInfo = GetClassName() + $"排料吸嘴{curNozzle.NozzleIndex}号到{WitchTrayWitchSlot(curNozzle.ToType, curNozzle.ToIndex)}放料位下方";
|
|
|
|
MessageQueue.Instance.Insert(logInfo);
|
|
|
|
MessageQueue.Instance.Insert(logInfo);
|
|
|
|
VirtualAxisSleep();
|
|
|
|
VirtualAxisSleep();
|
|
|
|
flowStep = EDischargeFlowStep.等待到放料位下方;
|
|
|
|
flowStep = EDischargeFlowStep.等待到放料位下方;
|
|
|
@ -1015,7 +1027,7 @@ namespace Rs.MotionPlat.Flow
|
|
|
|
case EDischargeFlowStep.等待到放料位下方:
|
|
|
|
case EDischargeFlowStep.等待到放料位下方:
|
|
|
|
if (Ops.IsStop($"NozzleZ{curNozzle.NozzleIndex}") || GlobalVar.VirtualAxis)
|
|
|
|
if (Ops.IsStop($"NozzleZ{curNozzle.NozzleIndex}") || GlobalVar.VirtualAxis)
|
|
|
|
{
|
|
|
|
{
|
|
|
|
logInfo = GetClassName()+ $"{curNozzle.NozzleIndex}号排料吸嘴已运动到放料位下方";
|
|
|
|
logInfo = GetClassName()+ $"排料吸嘴{curNozzle.NozzleIndex}号已运动到{WitchTrayWitchSlot(curNozzle.ToType, curNozzle.ToIndex)}放料位下方";
|
|
|
|
MessageQueue.Instance.Insert(logInfo);
|
|
|
|
MessageQueue.Instance.Insert(logInfo);
|
|
|
|
if (curNozzle.ToType == TurnoverType.Turnover)
|
|
|
|
if (curNozzle.ToType == TurnoverType.Turnover)
|
|
|
|
{
|
|
|
|
{
|
|
|
@ -1062,7 +1074,7 @@ namespace Rs.MotionPlat.Flow
|
|
|
|
errCode = AxisControl.GetAxis($"NozzleZ{curNozzle.NozzleIndex}").MovePos(targetPos, GlobalVar.WholeSpeed);
|
|
|
|
errCode = AxisControl.GetAxis($"NozzleZ{curNozzle.NozzleIndex}").MovePos(targetPos, GlobalVar.WholeSpeed);
|
|
|
|
if (errCode == ErrorCode.Ok || GlobalVar.VirtualAxis)
|
|
|
|
if (errCode == ErrorCode.Ok || GlobalVar.VirtualAxis)
|
|
|
|
{
|
|
|
|
{
|
|
|
|
logInfo = GetClassName() + $"{curNozzle.NozzleIndex}号排料吸嘴周转盘放料完成,准备抬起{GlobalVar.DischargeNozzleDumpTurnoverTrayOffset}mm后关闭破真空";
|
|
|
|
logInfo = GetClassName() + $"排料吸嘴{curNozzle.NozzleIndex}号周转盘放料完成,准备抬起{GlobalVar.DischargeNozzleDumpTurnoverTrayOffset}mm后关闭破真空";
|
|
|
|
MessageQueue.Instance.Insert(logInfo);
|
|
|
|
MessageQueue.Instance.Insert(logInfo);
|
|
|
|
flowStep = EDischargeFlowStep.等待到放料关破真空位;
|
|
|
|
flowStep = EDischargeFlowStep.等待到放料关破真空位;
|
|
|
|
}
|
|
|
|
}
|
|
|
@ -1077,7 +1089,7 @@ namespace Rs.MotionPlat.Flow
|
|
|
|
/*关闭排料吸嘴真空破*/
|
|
|
|
/*关闭排料吸嘴真空破*/
|
|
|
|
Ops.Off($"{curNozzle.NozzleIndex}号吸嘴真空破电磁阀");
|
|
|
|
Ops.Off($"{curNozzle.NozzleIndex}号吸嘴真空破电磁阀");
|
|
|
|
Thread.Sleep(GlobalVar.LoadNozzleCloseVacBreakDelaytime);
|
|
|
|
Thread.Sleep(GlobalVar.LoadNozzleCloseVacBreakDelaytime);
|
|
|
|
logInfo = GetClassName() + $"{curNozzle.NozzleIndex}号排料吸嘴抬起{GlobalVar.DischargeNozzleDumpTurnoverTrayOffset}mm后关闭破真空";
|
|
|
|
logInfo = GetClassName() + $"排料吸嘴{curNozzle.NozzleIndex}号抬起{GlobalVar.DischargeNozzleDumpTurnoverTrayOffset}mm后关闭破真空";
|
|
|
|
MessageQueue.Instance.Insert(logInfo);
|
|
|
|
MessageQueue.Instance.Insert(logInfo);
|
|
|
|
flowStep = EDischargeFlowStep.放料完成抬起;
|
|
|
|
flowStep = EDischargeFlowStep.放料完成抬起;
|
|
|
|
}
|
|
|
|
}
|
|
|
@ -1086,7 +1098,7 @@ namespace Rs.MotionPlat.Flow
|
|
|
|
errCode = AxisControl.GetAxis($"NozzleZ{curNozzle.NozzleIndex}").MovePos(0, GlobalVar.WholeSpeed);
|
|
|
|
errCode = AxisControl.GetAxis($"NozzleZ{curNozzle.NozzleIndex}").MovePos(0, GlobalVar.WholeSpeed);
|
|
|
|
if (errCode == ErrorCode.Ok || GlobalVar.VirtualAxis)
|
|
|
|
if (errCode == ErrorCode.Ok || GlobalVar.VirtualAxis)
|
|
|
|
{
|
|
|
|
{
|
|
|
|
logInfo = GetClassName() + $"{curNozzle.NozzleIndex}号排料吸嘴放料完成抬起";
|
|
|
|
logInfo = GetClassName() + $"排料吸嘴{curNozzle.NozzleIndex}号{WitchTrayWitchSlot(curNozzle.ToType, curNozzle.ToIndex)}放料完成抬起";
|
|
|
|
MessageQueue.Instance.Insert(logInfo);
|
|
|
|
MessageQueue.Instance.Insert(logInfo);
|
|
|
|
if (GlobalVar.VirtualAxis)
|
|
|
|
if (GlobalVar.VirtualAxis)
|
|
|
|
{
|
|
|
|
{
|
|
|
@ -1102,7 +1114,7 @@ namespace Rs.MotionPlat.Flow
|
|
|
|
case EDischargeFlowStep.等待放料完成抬起:
|
|
|
|
case EDischargeFlowStep.等待放料完成抬起:
|
|
|
|
if (Ops.IsStop($"NozzleZ{curNozzle.NozzleIndex}") || GlobalVar.VirtualAxis)
|
|
|
|
if (Ops.IsStop($"NozzleZ{curNozzle.NozzleIndex}") || GlobalVar.VirtualAxis)
|
|
|
|
{
|
|
|
|
{
|
|
|
|
logInfo = GetClassName()+$"{curNozzle.NozzleIndex}号排料吸嘴放料完成已起位,准备真空检测";
|
|
|
|
logInfo = GetClassName()+$"排料吸嘴{curNozzle.NozzleIndex}号{WitchTrayWitchSlot(curNozzle.ToType, curNozzle.ToIndex)}放料完成已起位,准备真空检测";
|
|
|
|
MessageQueue.Instance.Insert(logInfo);
|
|
|
|
MessageQueue.Instance.Insert(logInfo);
|
|
|
|
flowStep = EDischargeFlowStep.粘料检测;
|
|
|
|
flowStep = EDischargeFlowStep.粘料检测;
|
|
|
|
}
|
|
|
|
}
|
|
|
@ -1116,7 +1128,7 @@ namespace Rs.MotionPlat.Flow
|
|
|
|
while(!skip)
|
|
|
|
while(!skip)
|
|
|
|
{
|
|
|
|
{
|
|
|
|
//粘料报警,提示用户粘料,移动到安全位,或者点击跳过
|
|
|
|
//粘料报警,提示用户粘料,移动到安全位,或者点击跳过
|
|
|
|
alarmInfo = $"{curNozzle.NozzleIndex}号吸嘴可能粘料,请查看吸嘴状态后处理";
|
|
|
|
alarmInfo = $"排料吸嘴{curNozzle.NozzleIndex}号可能粘料,请查看吸嘴状态后处理";
|
|
|
|
TestCenterMessageBox.Show(AlarmConstID.NozzleTackinessAlarm, alarmInfo, MessageButtonManager.GetSkip_MoveToSafe_Button(), MessageButtonManager.GetSkip_MoveToSafe_ButtonText());
|
|
|
|
TestCenterMessageBox.Show(AlarmConstID.NozzleTackinessAlarm, alarmInfo, MessageButtonManager.GetSkip_MoveToSafe_Button(), MessageButtonManager.GetSkip_MoveToSafe_ButtonText());
|
|
|
|
msgBox = TestCenterMessageBox.WaitResult(AlarmConstID.NozzleTackinessAlarm);
|
|
|
|
msgBox = TestCenterMessageBox.WaitResult(AlarmConstID.NozzleTackinessAlarm);
|
|
|
|
switch (msgBox.Button)
|
|
|
|
switch (msgBox.Button)
|
|
|
@ -1224,13 +1236,14 @@ namespace Rs.MotionPlat.Flow
|
|
|
|
// break;
|
|
|
|
// break;
|
|
|
|
#endregion
|
|
|
|
#endregion
|
|
|
|
case EDischargeFlowStep.放料任务完成:
|
|
|
|
case EDischargeFlowStep.放料任务完成:
|
|
|
|
logInfo = GetClassName()+ $"{curNozzle.ToType}盘放料任务完成";
|
|
|
|
|
|
|
|
MessageQueue.Instance.Insert(logInfo);
|
|
|
|
|
|
|
|
//AxisControl.GetAxis($"NozzleZ{curNozzle.NozzleIndex}").Home();
|
|
|
|
//AxisControl.GetAxis($"NozzleZ{curNozzle.NozzleIndex}").Home();
|
|
|
|
//MessageQueue.Instance.Insert($"{curNozzle.NozzleIndex}号排料吸嘴回原");
|
|
|
|
//MessageQueue.Instance.Insert($"{curNozzle.NozzleIndex}号排料吸嘴回原");
|
|
|
|
//Ops.HomeAndGoStartPos($"NozzleR{NozzleIndex}");
|
|
|
|
//Ops.HomeAndGoStartPos($"NozzleR{NozzleIndex}");
|
|
|
|
if (curNozzle.Status == ENozzleStatus.ToUnload)
|
|
|
|
if (curNozzle.Status == ENozzleStatus.ToUnload)
|
|
|
|
{
|
|
|
|
{
|
|
|
|
|
|
|
|
logInfo = GetClassName() + $"排料吸嘴{curNozzle.NozzleIndex}号{WitchTrayWitchSlot(curNozzle.ToType, curNozzle.ToIndex)}放料任务完成";
|
|
|
|
|
|
|
|
MessageQueue.Instance.Insert(logInfo);
|
|
|
|
if (curNozzle.ToType == TurnoverType.Turnover)
|
|
|
|
if (curNozzle.ToType == TurnoverType.Turnover)
|
|
|
|
{
|
|
|
|
{
|
|
|
|
GlobalTray.TurnoverTray.ChangeStatus(curNozzle.ToIndex + 1, ESlotStatus.Have);
|
|
|
|
GlobalTray.TurnoverTray.ChangeStatus(curNozzle.ToIndex + 1, ESlotStatus.Have);
|
|
|
@ -1239,27 +1252,27 @@ namespace Rs.MotionPlat.Flow
|
|
|
|
}
|
|
|
|
}
|
|
|
|
else if (curNozzle.ToType == TurnoverType.ToBeTested)
|
|
|
|
else if (curNozzle.ToType == TurnoverType.ToBeTested)
|
|
|
|
{
|
|
|
|
{
|
|
|
|
curNozzle.ToIndex = downSlot.Index - 1;
|
|
|
|
//curNozzle.ToIndex = downSlot.Index - 1;
|
|
|
|
curNozzle.ToFloor = StockManager.Instance.GetStock(ETrayType.Input).GetFloor();
|
|
|
|
curNozzle.ToFloor = StockManager.Instance.GetStock(ETrayType.Input).GetFloor();
|
|
|
|
GlobalTray.InputTray.ChangeStatus(downSlot.Index, ESlotStatus.Have);
|
|
|
|
GlobalTray.InputTray.ChangeStatus(curNozzle.ToIndex+1, ESlotStatus.Have);
|
|
|
|
}
|
|
|
|
}
|
|
|
|
else if (curNozzle.ToType == TurnoverType.Passed)
|
|
|
|
else if (curNozzle.ToType == TurnoverType.Passed)
|
|
|
|
{
|
|
|
|
{
|
|
|
|
curNozzle.ToIndex = downSlot.Index - 1;
|
|
|
|
//curNozzle.ToIndex = downSlot.Index - 1;
|
|
|
|
curNozzle.ToFloor = StockManager.Instance.GetStock(ETrayType.Ok).GetFloor();
|
|
|
|
curNozzle.ToFloor = StockManager.Instance.GetStock(ETrayType.Ok).GetFloor();
|
|
|
|
GlobalTray.OkTary.ChangeStatus(downSlot.Index, ESlotStatus.Ok);
|
|
|
|
GlobalTray.OkTary.ChangeStatus(curNozzle.ToIndex + 1, ESlotStatus.Ok);
|
|
|
|
}
|
|
|
|
}
|
|
|
|
else if (curNozzle.ToType == TurnoverType.Failed)
|
|
|
|
else if (curNozzle.ToType == TurnoverType.Failed)
|
|
|
|
{
|
|
|
|
{
|
|
|
|
curNozzle.ToIndex = downSlot.Index - 1;
|
|
|
|
//curNozzle.ToIndex = downSlot.Index - 1;
|
|
|
|
curNozzle.ToFloor = StockManager.Instance.GetStock(ETrayType.Ng).GetFloor();
|
|
|
|
curNozzle.ToFloor = StockManager.Instance.GetStock(ETrayType.Ng).GetFloor();
|
|
|
|
GlobalTray.NgTray.ChangeStatus(downSlot.Index, ESlotStatus.Ng);
|
|
|
|
GlobalTray.NgTray.ChangeStatus(curNozzle.ToIndex + 1, ESlotStatus.Ng);
|
|
|
|
}
|
|
|
|
}
|
|
|
|
else if (curNozzle.ToType == TurnoverType.Multifunction)
|
|
|
|
else if (curNozzle.ToType == TurnoverType.Multifunction)
|
|
|
|
{
|
|
|
|
{
|
|
|
|
curNozzle.ToIndex = downSlot.Index - 1;
|
|
|
|
//curNozzle.ToIndex = downSlot.Index - 1;
|
|
|
|
curNozzle.ToFloor = StockManager.Instance.GetStock(ETrayType.Multi).GetFloor();
|
|
|
|
curNozzle.ToFloor = StockManager.Instance.GetStock(ETrayType.Multi).GetFloor();
|
|
|
|
GlobalTray.MultiTray.ChangeStatus(downSlot.Index, ESlotStatus.Have);
|
|
|
|
GlobalTray.MultiTray.ChangeStatus(curNozzle.ToIndex + 1, ESlotStatus.Have);
|
|
|
|
}
|
|
|
|
}
|
|
|
|
LoadAndUnloadTask.Instance.AddTurnoverResult(curNozzle);
|
|
|
|
LoadAndUnloadTask.Instance.AddTurnoverResult(curNozzle);
|
|
|
|
}
|
|
|
|
}
|
|
|
@ -1355,36 +1368,36 @@ namespace Rs.MotionPlat.Flow
|
|
|
|
flowStep = EDischargeFlowStep.等待任务;
|
|
|
|
flowStep = EDischargeFlowStep.等待任务;
|
|
|
|
}
|
|
|
|
}
|
|
|
|
break;
|
|
|
|
break;
|
|
|
|
case EDischargeFlowStep.测试工位上料:
|
|
|
|
//case EDischargeFlowStep.测试工位上料:
|
|
|
|
testLoadList = LoadAndUnloadTask.Instance.GetTurnoverToTestTasks();
|
|
|
|
// testLoadList = LoadAndUnloadTask.Instance.GetTurnoverToTestTasks();
|
|
|
|
TurnoverFlow.Instance.PressLoad(testLoadList);
|
|
|
|
// TurnoverFlow.Instance.PressLoad(testLoadList);
|
|
|
|
flowStep = EDischargeFlowStep.等待测试工位上料完成;
|
|
|
|
// flowStep = EDischargeFlowStep.等待测试工位上料完成;
|
|
|
|
break;
|
|
|
|
// break;
|
|
|
|
case EDischargeFlowStep.等待测试工位上料完成:
|
|
|
|
//case EDischargeFlowStep.等待测试工位上料完成:
|
|
|
|
if (TurnoverFlow.Instance.LoadFinished())
|
|
|
|
// if (TurnoverFlow.Instance.LoadFinished())
|
|
|
|
{
|
|
|
|
|
|
|
|
TestCenter.Instance.LoadTestLoadResult();
|
|
|
|
|
|
|
|
//切换穴位状态
|
|
|
|
|
|
|
|
foreach (TurnoverInfo turnoverInfo in testLoadList)
|
|
|
|
|
|
|
|
{
|
|
|
|
|
|
|
|
GlobalTray.TurnoverTray.ChangeStatus(turnoverInfo.FromIndex+1, ESlotStatus.NotHave);
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
LoadAndUnloadTask.Instance.Clear();
|
|
|
|
|
|
|
|
MachineManage.Instance.SetTesterState(ETesterState.Ready);
|
|
|
|
|
|
|
|
MessageQueue.Instance.Insert("通知中控测试位就绪,可以开始测试");
|
|
|
|
|
|
|
|
//MachineManage.Instance.SetLoadUnloadStatus(ERunState.Waiting);
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
//for (int i = 1; i < 9; i++)
|
|
|
|
|
|
|
|
// {
|
|
|
|
// {
|
|
|
|
// GlobalTray.TurnoverTray.ChangeStatus(i, ESlotStatus.NotHave);
|
|
|
|
// TestCenter.Instance.LoadTestLoadResult();
|
|
|
|
//}
|
|
|
|
// //切换穴位状态
|
|
|
|
//for (int i = 17; i < 25; i++)
|
|
|
|
// foreach (TurnoverInfo turnoverInfo in testLoadList)
|
|
|
|
// {
|
|
|
|
// {
|
|
|
|
// GlobalTray.TurnoverTray.ChangeStatus(i, ESlotStatus.NotHave);
|
|
|
|
// GlobalTray.TurnoverTray.ChangeStatus(turnoverInfo.FromIndex+1, ESlotStatus.NotHave);
|
|
|
|
// }
|
|
|
|
// }
|
|
|
|
flowStep = EDischargeFlowStep.等待任务;
|
|
|
|
// LoadAndUnloadTask.Instance.Clear();
|
|
|
|
}
|
|
|
|
// MachineManage.Instance.SetTesterState(ETesterState.Ready);
|
|
|
|
break;
|
|
|
|
// MessageQueue.Instance.Insert("通知中控测试位就绪,可以开始测试");
|
|
|
|
|
|
|
|
// //MachineManage.Instance.SetLoadUnloadStatus(ERunState.Waiting);
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
// //for (int i = 1; i < 9; i++)
|
|
|
|
|
|
|
|
// //{
|
|
|
|
|
|
|
|
// // GlobalTray.TurnoverTray.ChangeStatus(i, ESlotStatus.NotHave);
|
|
|
|
|
|
|
|
// //}
|
|
|
|
|
|
|
|
// //for (int i = 17; i < 25; i++)
|
|
|
|
|
|
|
|
// //{
|
|
|
|
|
|
|
|
// // GlobalTray.TurnoverTray.ChangeStatus(i, ESlotStatus.NotHave);
|
|
|
|
|
|
|
|
// //}
|
|
|
|
|
|
|
|
// flowStep = EDischargeFlowStep.等待任务;
|
|
|
|
|
|
|
|
// }
|
|
|
|
|
|
|
|
// break;
|
|
|
|
//case EDischargeFlowStep.等待Input料盘搬运完成:
|
|
|
|
//case EDischargeFlowStep.等待Input料盘搬运完成:
|
|
|
|
// if(TakeTrayFlow.Instance.TakeStatus== ETakeStatus.TakeOK)
|
|
|
|
// if(TakeTrayFlow.Instance.TakeStatus== ETakeStatus.TakeOK)
|
|
|
|
// {
|
|
|
|
// {
|
|
|
@ -1453,7 +1466,7 @@ namespace Rs.MotionPlat.Flow
|
|
|
|
private void UpdateNozzleStatus(Nozzle nozzle,TurnoverInfo turnoverInfo)
|
|
|
|
private void UpdateNozzleStatus(Nozzle nozzle,TurnoverInfo turnoverInfo)
|
|
|
|
{
|
|
|
|
{
|
|
|
|
nozzle.Status = ENozzleStatus.ToUnload;
|
|
|
|
nozzle.Status = ENozzleStatus.ToUnload;
|
|
|
|
nozzle.FromType = turnoverInfo.FromType;
|
|
|
|
//nozzle.FromType = turnoverInfo.FromType;
|
|
|
|
nozzle.ToType = turnoverInfo.ToType;
|
|
|
|
nozzle.ToType = turnoverInfo.ToType;
|
|
|
|
nozzle.ToIndex = turnoverInfo.ToIndex;
|
|
|
|
nozzle.ToIndex = turnoverInfo.ToIndex;
|
|
|
|
turnoverInfo.SuckerNo = nozzle.NozzleIndex;
|
|
|
|
turnoverInfo.SuckerNo = nozzle.NozzleIndex;
|
|
|
@ -1462,15 +1475,15 @@ namespace Rs.MotionPlat.Flow
|
|
|
|
{
|
|
|
|
{
|
|
|
|
nozzle.FromFloor = turnoverInfo.FromFloor;
|
|
|
|
nozzle.FromFloor = turnoverInfo.FromFloor;
|
|
|
|
nozzle.SN = turnoverInfo.SN;
|
|
|
|
nozzle.SN = turnoverInfo.SN;
|
|
|
|
nozzle.FromIndex = turnoverInfo.FromIndex;
|
|
|
|
//nozzle.FromIndex = turnoverInfo.FromIndex;
|
|
|
|
GlobalTray.TurnoverTray.ChangeStatus(turnoverInfo.FromIndex + 1, ESlotStatus.NotHave);
|
|
|
|
GlobalTray.TurnoverTray.ChangeStatus(nozzle.FromIndex + 1, ESlotStatus.NotHave);
|
|
|
|
}
|
|
|
|
}
|
|
|
|
else if (turnoverInfo.FromType == TurnoverType.ToBeTested)
|
|
|
|
else if (turnoverInfo.FromType == TurnoverType.ToBeTested)
|
|
|
|
{
|
|
|
|
{
|
|
|
|
nozzle.FromFloor = StockManager.Instance.GetStock(ETrayType.Input).GetFloor();
|
|
|
|
nozzle.FromFloor = StockManager.Instance.GetStock(ETrayType.Input).GetFloor();
|
|
|
|
nozzle.SN = "";
|
|
|
|
nozzle.SN = "";
|
|
|
|
nozzle.FromIndex = GlobalTray.InputTray.GetSlot(ESlotStatus.Have).Index - 1;
|
|
|
|
//nozzle.FromIndex = GlobalTray.InputTray.GetSlot(ESlotStatus.Have).Index - 1;
|
|
|
|
GlobalTray.InputTray.ChangeStatus(GlobalTray.InputTray.GetSlot(ESlotStatus.Have).Index, ESlotStatus.NotHave);
|
|
|
|
GlobalTray.InputTray.ChangeStatus(nozzle.FromIndex+1, ESlotStatus.NotHave);
|
|
|
|
}
|
|
|
|
}
|
|
|
|
nozzle.Update();
|
|
|
|
nozzle.Update();
|
|
|
|
turnoverInfo.Dealed = true;
|
|
|
|
turnoverInfo.Dealed = true;
|
|
|
@ -1543,5 +1556,16 @@ namespace Rs.MotionPlat.Flow
|
|
|
|
return flowStep.ToString();
|
|
|
|
return flowStep.ToString();
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
/// <summary>
|
|
|
|
|
|
|
|
/// 到哪个盘哪个穴位
|
|
|
|
|
|
|
|
/// </summary>
|
|
|
|
|
|
|
|
/// <param name="trayType"></param>
|
|
|
|
|
|
|
|
/// <param name="slotIndex"></param>
|
|
|
|
|
|
|
|
/// <returns></returns>
|
|
|
|
|
|
|
|
public string WitchTrayWitchSlot(TurnoverType trayType,int slotIndex)
|
|
|
|
|
|
|
|
{
|
|
|
|
|
|
|
|
return $"{trayType}盘{slotIndex}穴位";
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|
|
|
|