fromindex and toindex和中控保持一致

master
lhiven 2 years ago
parent fd901f4685
commit 6bdb8552eb

@ -44,14 +44,14 @@ namespace Rs.MotionPlat.Commom
public int FromFloor { get; set; } public int FromFloor { get; set; }
/// <summary> /// <summary>
/// 周转信息 /// 周转信息(和中控保持一致)
/// </summary> /// </summary>
public int FromIndex { get; set; } public int FromIndex { get; set; }
public TurnoverType ToType { get; set; } public TurnoverType ToType { get; set; }
public int ToFloor { get; set; } public int ToFloor { get; set; }
/// <summary> /// <summary>
/// 周转信息 /// 周转信息(和中控保持一致)
/// </summary> /// </summary>
public int ToIndex { get; set; } public int ToIndex { get; set; }

@ -149,7 +149,11 @@ namespace Rs.MotionPlat.Commom
DischargeFlow.Instance.Start(); DischargeFlow.Instance.Start();
TurnoverFlow.Instance.Start(); TurnoverFlow.Instance.Start();
MachineManage.Instance.SetCenterMachineStatus(ERunStatus.Started); MachineManage.Instance.SetCenterMachineStatus(ERunStatus.Started);
MachineManage.Instance.SetLoadUnloadStatus(ERunState.Waiting); var status = MachineManage.Instance.GetLoadUnloadStatus();
if(status!= ERunState.Busying && status!= ERunState.Unloading)
{
MachineManage.Instance.SetLoadUnloadStatus(ERunState.Waiting);
}
MachineManage.Instance.SetLocalMachineStatus(EMachineStatus.Working); MachineManage.Instance.SetLocalMachineStatus(EMachineStatus.Working);
} }
}); });

@ -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.;
} }
@ -974,7 +979,14 @@ namespace Rs.MotionPlat.Flow
} }
else else
{ {
flowStep = EDischargeFlowStep.; if (curNozzle.Status == ENozzleStatus.ToUnload)
{
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(); // TestCenter.Instance.LoadTestLoadResult();
//切换穴位状态 // //切换穴位状态
foreach (TurnoverInfo turnoverInfo in testLoadList) // foreach (TurnoverInfo turnoverInfo in testLoadList)
{ // {
GlobalTray.TurnoverTray.ChangeStatus(turnoverInfo.FromIndex+1, ESlotStatus.NotHave); // GlobalTray.TurnoverTray.ChangeStatus(turnoverInfo.FromIndex+1, ESlotStatus.NotHave);
} // }
LoadAndUnloadTask.Instance.Clear(); // LoadAndUnloadTask.Instance.Clear();
MachineManage.Instance.SetTesterState(ETesterState.Ready); // MachineManage.Instance.SetTesterState(ETesterState.Ready);
MessageQueue.Instance.Insert("通知中控测试位就绪,可以开始测试"); // MessageQueue.Instance.Insert("通知中控测试位就绪,可以开始测试");
//MachineManage.Instance.SetLoadUnloadStatus(ERunState.Waiting); // //MachineManage.Instance.SetLoadUnloadStatus(ERunState.Waiting);
//for (int i = 1; i < 9; i++) // //for (int i = 1; i < 9; i++)
//{ // //{
// GlobalTray.TurnoverTray.ChangeStatus(i, ESlotStatus.NotHave); // // GlobalTray.TurnoverTray.ChangeStatus(i, ESlotStatus.NotHave);
//} // //}
//for (int i = 17; i < 25; i++) // //for (int i = 17; i < 25; i++)
//{ // //{
// GlobalTray.TurnoverTray.ChangeStatus(i, ESlotStatus.NotHave); // // GlobalTray.TurnoverTray.ChangeStatus(i, ESlotStatus.NotHave);
//} // //}
flowStep = EDischargeFlowStep.; // flowStep = EDischargeFlowStep.等待任务;
} // }
break; // 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}穴位";
}
} }
} }

Loading…
Cancel
Save