优化丢料检测

修改周转盘初始化时序号错误的问题
master
lhiven 2 years ago
parent ca92b46256
commit fd901f4685

@ -54,20 +54,22 @@ namespace Rs.MotionPlat.Entitys.Trays
private TurnoverTrayManager() { private TurnoverTrayManager() {
slots = new TurnoverTraySlot[32]; slots = new TurnoverTraySlot[32];
int index = 0;
for(int row=1;row<=4;row++) for(int row=1;row<=4;row++)
{ {
for(int col=1;col<=8;col++) for(int col=1;col<=8;col++)
{ {
slots[row*col-1] = new TurnoverTraySlot() slots[index] = new TurnoverTraySlot()
{ {
Row = row, Row = row,
Index = row * col, Index = index+1,
IsHasProduct = false, IsHasProduct = false,
SN = "", SN = "",
FromIndex = 0, FromIndex = 0,
SuckerNo = 0, SuckerNo = 0,
SlotType = (row%2==0) ? ETurnoverTraySlotType.Tested : ETurnoverTraySlotType.WaitTest SlotType = (row%2==0) ? ETurnoverTraySlotType.Tested : ETurnoverTraySlotType.WaitTest
}; };
index++;
} }
} }
} }

@ -924,15 +924,24 @@ 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 = $"{nameof(DischargeFlow)}-{curNozzle.NozzleIndex}号排料吸嘴已运动到放料位上方"; logInfo = GetClassName()+$"{curNozzle.NozzleIndex}号排料吸嘴已运动到放料位上方";
MessageQueue.Instance.Insert(logInfo); MessageQueue.Instance.Insert(logInfo);
flowStep = EDischargeFlowStep.; flowStep = EDischargeFlowStep.;
} }
break; break;
case EDischargeFlowStep.: case EDischargeFlowStep.:
if (GlobalVar.RunSpace || GlobalVar.VirtualAxis)
{
flowStep = EDischargeFlowStep.;
}
else
{
//获取所有需要放料的吸嘴,检测真空是否还在,如果真空异常则报警 //获取所有需要放料的吸嘴,检测真空是否还在,如果真空异常则报警
List<Nozzle> lostNozzles = new List<Nozzle>(); List<Nozzle> lostNozzles = new List<Nozzle>();
List<Nozzle> toUnloadNozzles = NozzleManager.GetNozzlesByStatus(ENozzleStatus.ToUnload); List<Nozzle> toUnloadNozzles = NozzleManager.GetNozzlesByStatus(ENozzleStatus.ToUnload);
if (toUnloadNozzles.Count > 0)
{
foreach (var nozzle in toUnloadNozzles) foreach (var nozzle in toUnloadNozzles)
{ {
if (!nozzle.HasProduct()) if (!nozzle.HasProduct())
@ -941,14 +950,18 @@ namespace Rs.MotionPlat.Flow
} }
} }
if (lostNozzles.Count > 0) if (lostNozzles.Count > 0)
{
bool bSkip = false;
while (!bSkip)
{ {
//弹框报警 //弹框报警
alarmInfo = $"{lostNozzles.Select(ln=>ln.NozzleIndex).ToJoinString()}丢料报警"; alarmInfo = $"检测到{lostNozzles.Select(ln => ln.NozzleIndex).ToJoinString()}吸嘴真空吸异常,可能丢料,请检查吸嘴的状态";
TestCenterMessageBox.Show(AlarmConstID.DischargeNozzleLostProductAlarm, alarmInfo, MessageButtonManager.GetSkip_MoveToSafe_Button(), MessageButtonManager.GetSkip_MoveToSafe_ButtonText()); TestCenterMessageBox.Show(AlarmConstID.DischargeNozzleLostProductAlarm, alarmInfo, MessageButtonManager.GetSkip_MoveToSafe_Button(), MessageButtonManager.GetSkip_MoveToSafe_ButtonText());
msgBox = TestCenterMessageBox.WaitResult(AlarmConstID.DischargeNozzleLostProductAlarm); msgBox = TestCenterMessageBox.WaitResult(AlarmConstID.DischargeNozzleLostProductAlarm);
switch (msgBox.Button) switch (msgBox.Button)
{ {
case ETipButton.Skip: case ETipButton.Skip:
bSkip = true;
lostNozzles.ForEach(ln => ln.Reset()); lostNozzles.ForEach(ln => ln.Reset());
break; break;
case ETipButton.Yes: case ETipButton.Yes:
@ -958,10 +971,19 @@ namespace Rs.MotionPlat.Flow
break; break;
} }
} }
}
else else
{ {
flowStep = EDischargeFlowStep.; flowStep = EDischargeFlowStep.;
} }
}
else
{
flowStep = EDischargeFlowStep.;
}
}
break; break;
//case EDischargeFlowStep.到放料位下方: //case EDischargeFlowStep.到放料位下方:
// DischargeDumpFlow.Instance.Start(curNozzle.ToType, curNozzle.NozzleIndex, curNozzle.ToIndex); // DischargeDumpFlow.Instance.Start(curNozzle.ToType, curNozzle.NozzleIndex, curNozzle.ToIndex);
@ -1089,6 +1111,9 @@ namespace Rs.MotionPlat.Flow
//打开真空吸 //打开真空吸
curNozzle.VacSuction(EIoOperate.Open); curNozzle.VacSuction(EIoOperate.Open);
if(curNozzle.HasProduct()) if(curNozzle.HasProduct())
{
bool skip = false;
while(!skip)
{ {
//粘料报警,提示用户粘料,移动到安全位,或者点击跳过 //粘料报警,提示用户粘料,移动到安全位,或者点击跳过
alarmInfo = $"{curNozzle.NozzleIndex}号吸嘴可能粘料,请查看吸嘴状态后处理"; alarmInfo = $"{curNozzle.NozzleIndex}号吸嘴可能粘料,请查看吸嘴状态后处理";
@ -1097,6 +1122,8 @@ namespace Rs.MotionPlat.Flow
switch (msgBox.Button) switch (msgBox.Button)
{ {
case ETipButton.Skip: case ETipButton.Skip:
curNozzle.Reset();
skip = true;
logInfo = GetClassName() + "选择了跳过按钮"; logInfo = GetClassName() + "选择了跳过按钮";
MessageQueue.Instance.Insert(logInfo); MessageQueue.Instance.Insert(logInfo);
break; break;
@ -1104,11 +1131,11 @@ namespace Rs.MotionPlat.Flow
logInfo = GetClassName() + "选择了移动到安全位按钮"; logInfo = GetClassName() + "选择了移动到安全位按钮";
MessageQueue.Instance.Insert(logInfo); MessageQueue.Instance.Insert(logInfo);
DischargeModuleGoSafePosFlow.Instance.GoSafePostion(); DischargeModuleGoSafePosFlow.Instance.GoSafePostion();
TestCenterMessageBox.Show(AlarmConstID.NozzleTackinessAlarm, alarmInfo, MessageButtonManager.GetSkip_MoveToSafe_Button(), MessageButtonManager.GetSkip_MoveToSafe_ButtonText());
msgBox = TestCenterMessageBox.WaitResult(AlarmConstID.NozzleTackinessAlarm);
break; break;
} }
} }
}
else else
{ {
curNozzle.VacSuction(EIoOperate.Close); curNozzle.VacSuction(EIoOperate.Close);
@ -1202,10 +1229,13 @@ namespace Rs.MotionPlat.Flow
//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.ToType == TurnoverType.Turnover) if (curNozzle.ToType == TurnoverType.Turnover)
{ {
GlobalTray.TurnoverTray.ChangeStatus(curNozzle.ToIndex + 1, ESlotStatus.Have); GlobalTray.TurnoverTray.ChangeStatus(curNozzle.ToIndex + 1, ESlotStatus.Have);
TurnoverTrayManager.Instance.Slot(curNozzle.ToIndex + 1).AddProduct(curNozzle); TurnoverTrayManager.Instance.Slot(curNozzle.ToIndex + 1).AddProduct(curNozzle);
} }
else if (curNozzle.ToType == TurnoverType.ToBeTested) else if (curNozzle.ToType == TurnoverType.ToBeTested)
{ {
@ -1231,8 +1261,9 @@ namespace Rs.MotionPlat.Flow
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(downSlot.Index, ESlotStatus.Have);
} }
curNozzle.Reset();
LoadAndUnloadTask.Instance.AddTurnoverResult(curNozzle); LoadAndUnloadTask.Instance.AddTurnoverResult(curNozzle);
}
curNozzle.Reset();
if (NozzleManager.GetNozzlesByStatus(ENozzleStatus.ToUnload).Count > 0) if (NozzleManager.GetNozzlesByStatus(ENozzleStatus.ToUnload).Count > 0)
{ {
flowStep = EDischargeFlowStep.; flowStep = EDischargeFlowStep.;
@ -1310,14 +1341,14 @@ namespace Rs.MotionPlat.Flow
case EDischargeFlowStep.: case EDischargeFlowStep.:
if(Ops.IsStop("LoadX", "LoadY") || GlobalVar.VirtualAxis) if(Ops.IsStop("LoadX", "LoadY") || GlobalVar.VirtualAxis)
{ {
logInfo = $"{nameof(DischargeFlow)}-任务结束已回到安全位"; logInfo = GetClassName()+ $"任务结束已回到安全位";
MessageQueue.Instance.Insert(logInfo); MessageQueue.Instance.Insert(logInfo);
if (TestCenter.Instance.LoadResult()) if (TestCenter.Instance.LoadResult())
{ {
logInfo = $"{nameof(DischargeFlow)}-通知中控任务完成"; logInfo = GetClassName()+ $"通知中控任务完成";
MessageQueue.Instance.Insert(logInfo); MessageQueue.Instance.Insert(logInfo);
LoadAndUnloadTask.Instance.Clear(); LoadAndUnloadTask.Instance.Clear();
logInfo = $"{nameof(DischargeFlow)}-任务完成,清除任务"; logInfo = GetClassName()+$"任务完成,清除任务";
MessageQueue.Instance.Insert(logInfo); MessageQueue.Instance.Insert(logInfo);
} }
MachineManage.Instance.SetLoadUnloadStatus(ERunState.Waiting); MachineManage.Instance.SetLoadUnloadStatus(ERunState.Waiting);

@ -453,6 +453,12 @@ namespace Rs.MotionPlat.Flow
} }
break; break;
case ETurnoverFlowStep.: case ETurnoverFlowStep.:
if(GlobalVar.VirtualAxis || GlobalVar.RunSpace)
{
Step = ETurnoverFlowStep.1;
}
else
{
loseSlots.Clear(); loseSlots.Clear();
//检测是否丢料 //检测是否丢料
foreach (var nozzle in TransitNozzleManager.Instance.GetHasProductNozzles()) foreach (var nozzle in TransitNozzleManager.Instance.GetHasProductNozzles())
@ -486,6 +492,7 @@ namespace Rs.MotionPlat.Flow
MessageQueue.Instance.Insert(logInfo); MessageQueue.Instance.Insert(logInfo);
Step = ETurnoverFlowStep.1; Step = ETurnoverFlowStep.1;
} }
}
break; break;
case ETurnoverFlowStep.1: case ETurnoverFlowStep.1:
@ -1063,6 +1070,12 @@ namespace Rs.MotionPlat.Flow
} }
break; break;
case ETurnoverFlowStep.: case ETurnoverFlowStep.:
{
if(GlobalVar.VirtualAxis|| GlobalVar.RunSpace)
{
Step = ETurnoverFlowStep.1;
}
else
{ {
loseSlots.Clear(); loseSlots.Clear();
List<TransitNozzle> hasProductNozzles = TransitNozzleManager.Instance.GetHasProductNozzles(); List<TransitNozzle> hasProductNozzles = TransitNozzleManager.Instance.GetHasProductNozzles();
@ -1099,7 +1112,8 @@ namespace Rs.MotionPlat.Flow
} }
else else
{ {
Step = ETurnoverFlowStep.1; Step = ETurnoverFlowStep.1;
}
} }
} }
break; break;

Loading…
Cancel
Save