|
|
|
@ -43,12 +43,10 @@ namespace Rs.MotionPlat.Flow
|
|
|
|
|
到料仓拍照位上方,
|
|
|
|
|
等待到料仓拍照位上方,
|
|
|
|
|
料仓取料拍照,
|
|
|
|
|
料仓取料拍照结果处理,
|
|
|
|
|
到料仓取料位上方,
|
|
|
|
|
等待到料仓取料位上方,
|
|
|
|
|
到料仓取料位下方,
|
|
|
|
|
等待到料仓取料位下方,
|
|
|
|
|
料仓取料打开真空吸,
|
|
|
|
|
料仓取料完成抬起,
|
|
|
|
|
等待料仓取料完成抬起,
|
|
|
|
|
料仓取料真空吸检测,
|
|
|
|
@ -275,18 +273,17 @@ namespace Rs.MotionPlat.Flow
|
|
|
|
|
List<VisionResult> vResult = VisionHelper.OneGrabFour();
|
|
|
|
|
if(vResult!=null &&vResult.Count==4)
|
|
|
|
|
{
|
|
|
|
|
|
|
|
|
|
for (int i = 0; i < vResult.Count; i++)
|
|
|
|
|
{
|
|
|
|
|
OneGrabFourManager.Instance.DealGrabResult(slot.Index, i + 1, vResult[i]);
|
|
|
|
|
}
|
|
|
|
|
GlobalTray.GrabTray.ChangeStatus(slot.Index, ESlotStatus.NotHave);
|
|
|
|
|
flowStep = EDischargeFlowStep.到料仓取料位上方;
|
|
|
|
|
}
|
|
|
|
|
for(int i=0;i<vResult.Count;i++)
|
|
|
|
|
else
|
|
|
|
|
{
|
|
|
|
|
OneGrabFourManager.Instance.DealGrabResult(slot.Index, i + 1, vResult[i]);
|
|
|
|
|
Msgbox.ShowDialog(EButtonType.Retry, "料盘拍照失败,请处理后点击重试");
|
|
|
|
|
}
|
|
|
|
|
GlobalTray.GrabTray.ChangeStatus(slot.Index, ESlotStatus.NotHave);
|
|
|
|
|
flowStep = EDischargeFlowStep.料仓取料拍照结果处理;
|
|
|
|
|
break;
|
|
|
|
|
case EDischargeFlowStep.料仓取料拍照结果处理:
|
|
|
|
|
|
|
|
|
|
flowStep = EDischargeFlowStep.到料仓取料位上方;
|
|
|
|
|
break;
|
|
|
|
|
case EDischargeFlowStep.到料仓取料位上方:
|
|
|
|
|
//获取空闲吸嘴
|
|
|
|
@ -299,31 +296,9 @@ namespace Rs.MotionPlat.Flow
|
|
|
|
|
targetPosition.X = re.LoadX + GlobalVar.Nozzle1ToCameraCenterOffsetX + NozzleManager.GetNozzleOffsetX(curNozzle.NozzleIndex);
|
|
|
|
|
targetPosition.Y1 = GlobalVar.StockSideY1;
|
|
|
|
|
targetPosition.Y2 = re.LoadY + GlobalVar.Nozzle1ToCameraCenterOffsetY2 + NozzleManager.GetNozzleOffsetY2(curNozzle.NozzleIndex);
|
|
|
|
|
errCode = AxisControl.LoadX.MovePos(targetPosition.X, GlobalVar.WholeSpeed);
|
|
|
|
|
if (errCode == ErrorCode.Ok)
|
|
|
|
|
if(GroupAxisMove.XY1Y2MovePos(targetPosition))
|
|
|
|
|
{
|
|
|
|
|
errCode = AxisControl.LoadY1.MovePos(targetPosition.Y1, GlobalVar.WholeSpeed);
|
|
|
|
|
if (errCode == ErrorCode.Ok)
|
|
|
|
|
{
|
|
|
|
|
errCode = AxisControl.LoadY2.MovePos(targetPosition.Y2, GlobalVar.WholeSpeed);
|
|
|
|
|
if (errCode == ErrorCode.Ok)
|
|
|
|
|
{
|
|
|
|
|
flowStep = EDischargeFlowStep.等待到料仓取料位上方;
|
|
|
|
|
|
|
|
|
|
}
|
|
|
|
|
else
|
|
|
|
|
{
|
|
|
|
|
Msg.ShowError($"轴LoadY2运动异常");
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
else
|
|
|
|
|
{
|
|
|
|
|
Msg.ShowError($"轴LoadY1运动异常");
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
else
|
|
|
|
|
{
|
|
|
|
|
Msg.ShowError($"轴Loadx运动异常");
|
|
|
|
|
flowStep = EDischargeFlowStep.等待到料仓取料位上方;
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
@ -345,8 +320,8 @@ namespace Rs.MotionPlat.Flow
|
|
|
|
|
}
|
|
|
|
|
break;
|
|
|
|
|
case EDischargeFlowStep.到料仓取料位下方:
|
|
|
|
|
errCode=AxisControl.GetAxis($"NozzleZ{curNozzle.NozzleIndex}").MovePos(36,GlobalVar.WholeSpeed);
|
|
|
|
|
if(errCode== ErrorCode.Ok)
|
|
|
|
|
targetPosition.StockZ = NozzleManager.GetNozzleToTrayTakeProductPos(ETrayType.Input, curNozzle.NozzleIndex);
|
|
|
|
|
if(NozzleManager.Go(curNozzle, targetPosition.StockZ, GlobalVar.WholeSpeed))
|
|
|
|
|
{
|
|
|
|
|
flowStep = EDischargeFlowStep.等待到料仓取料位下方;
|
|
|
|
|
}
|
|
|
|
@ -354,25 +329,12 @@ namespace Rs.MotionPlat.Flow
|
|
|
|
|
case EDischargeFlowStep.等待到料仓取料位下方:
|
|
|
|
|
if(Ops.IsStop($"NozzleZ{curNozzle.NozzleIndex}"))
|
|
|
|
|
{
|
|
|
|
|
flowStep = EDischargeFlowStep.料仓取料打开真空吸;
|
|
|
|
|
}
|
|
|
|
|
break;
|
|
|
|
|
case EDischargeFlowStep.料仓取料打开真空吸:
|
|
|
|
|
if(GlobalVar.RunSpace)
|
|
|
|
|
{
|
|
|
|
|
flowStep = EDischargeFlowStep.料仓取料完成抬起;
|
|
|
|
|
}
|
|
|
|
|
else
|
|
|
|
|
{
|
|
|
|
|
Ops.On($"吸料真空{curNozzle.NozzleIndex}吸");
|
|
|
|
|
Thread.Sleep(100);
|
|
|
|
|
curNozzle.VacSuction(EIoOperate.Open);
|
|
|
|
|
flowStep = EDischargeFlowStep.料仓取料完成抬起;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
break;
|
|
|
|
|
case EDischargeFlowStep.料仓取料完成抬起:
|
|
|
|
|
errCode = AxisControl.GetAxis($"NozzleZ{curNozzle.NozzleIndex}").MovePos(0, GlobalVar.WholeSpeed);
|
|
|
|
|
if (errCode == ErrorCode.Ok)
|
|
|
|
|
if(NozzleManager.Go(curNozzle,0,GlobalVar.WholeSpeed))
|
|
|
|
|
{
|
|
|
|
|
flowStep = EDischargeFlowStep.等待料仓取料完成抬起;
|
|
|
|
|
}
|
|
|
|
@ -384,13 +346,35 @@ namespace Rs.MotionPlat.Flow
|
|
|
|
|
}
|
|
|
|
|
break;
|
|
|
|
|
case EDischargeFlowStep.料仓取料真空吸检测:
|
|
|
|
|
if(true)
|
|
|
|
|
if (Ops.IsOn($"吸料真空{curNozzle.NozzleIndex}检测"))
|
|
|
|
|
{
|
|
|
|
|
curNozzle.Product = new TestProduct() { SN = VirtualBarCode.Code, TestNum = 0 };
|
|
|
|
|
curNozzle.Status = ENozzleStatus.ToTest;
|
|
|
|
|
GlobalTray.NozzleTray.ChangeStatus(curNozzle.NozzleIndex, ESlotStatus.Have);
|
|
|
|
|
flowStep = EDischargeFlowStep.判断是否需要从料仓取料;
|
|
|
|
|
}
|
|
|
|
|
else
|
|
|
|
|
{
|
|
|
|
|
EButtonType btnSelect = Msgbox.ShowDialog(EButtonType.EndInput | EButtonType.Retry | EButtonType.Skip, "料仓取料失败");
|
|
|
|
|
switch (btnSelect)
|
|
|
|
|
{
|
|
|
|
|
case EButtonType.EndInput:
|
|
|
|
|
|
|
|
|
|
break;
|
|
|
|
|
case EButtonType.Retry:
|
|
|
|
|
logInfo = GetClassName() + $"选择了重试";
|
|
|
|
|
MessageQueue.Instance.Insert(logInfo);
|
|
|
|
|
//关闭真空吸
|
|
|
|
|
curNozzle.VacSuction(EIoOperate.Close);
|
|
|
|
|
flowStep = EDischargeFlowStep.到料仓取料位下方;
|
|
|
|
|
break;
|
|
|
|
|
case EButtonType.Skip:
|
|
|
|
|
logInfo = GetClassName() + $"选择了跳过";
|
|
|
|
|
MessageQueue.Instance.Insert(logInfo);
|
|
|
|
|
flowStep = EDischargeFlowStep.到料仓取料位上方;
|
|
|
|
|
break;
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
break;
|
|
|
|
|
|
|
|
|
|
|
|
|
|
@ -401,36 +385,12 @@ namespace Rs.MotionPlat.Flow
|
|
|
|
|
//治具换料
|
|
|
|
|
case EDischargeFlowStep.到治具取料等待位:
|
|
|
|
|
//先去第一个治具拍照位上方等待
|
|
|
|
|
targetPosition.X = GetFixtureGrabPosX(lastFixtureIndex + 1);
|
|
|
|
|
targetPosition.Y1 = GlobalVar.FixtureSideY1;
|
|
|
|
|
targetPosition.Y2 = GetFixtureGrabPosY2(lastFixtureIndex + 1);
|
|
|
|
|
errCode = AxisControl.LoadX.MovePos(targetPosition.X, GlobalVar.WholeSpeed);
|
|
|
|
|
if (errCode == ErrorCode.Ok)
|
|
|
|
|
{
|
|
|
|
|
errCode = AxisControl.LoadY1.MovePos(targetPosition.Y1, GlobalVar.WholeSpeed);
|
|
|
|
|
if (errCode == ErrorCode.Ok)
|
|
|
|
|
{
|
|
|
|
|
errCode = AxisControl.LoadY2.MovePos(targetPosition.Y2, GlobalVar.WholeSpeed);
|
|
|
|
|
if (errCode == ErrorCode.Ok)
|
|
|
|
|
{
|
|
|
|
|
logInfo = $"到治具放料缓冲位,tloadx={targetPosition.X},tloady1={targetPosition.Y1},tloady2={targetPosition.Y2}";
|
|
|
|
|
MessageQueue.Instance.Insert(logInfo);
|
|
|
|
|
flowStep = EDischargeFlowStep.等待到治具取料等待位;
|
|
|
|
|
|
|
|
|
|
}
|
|
|
|
|
else
|
|
|
|
|
{
|
|
|
|
|
Msg.ShowError($"轴LoadY2运动异常,ret={errCode}");
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
else
|
|
|
|
|
{
|
|
|
|
|
Msg.ShowError($"轴LoadY1运动异常,ret={errCode}");
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
else
|
|
|
|
|
targetPosition =FixtureManager.GetFixtureGrabPos(lastFixtureIndex + 1);
|
|
|
|
|
if(GroupAxisMove.XY1Y2MovePos(targetPosition))
|
|
|
|
|
{
|
|
|
|
|
Msg.ShowError($"轴LoadX运动异常,ret={errCode}");
|
|
|
|
|
logInfo = $"到治具放料缓冲位,tloadx={targetPosition.X},tloady1={targetPosition.Y1},tloady2={targetPosition.Y2}";
|
|
|
|
|
MessageQueue.Instance.Insert(logInfo);
|
|
|
|
|
flowStep = EDischargeFlowStep.等待到治具取料等待位;
|
|
|
|
|
}
|
|
|
|
|
break;
|
|
|
|
|
case EDischargeFlowStep.等待到治具取料等待位:
|
|
|
|
@ -477,36 +437,12 @@ namespace Rs.MotionPlat.Flow
|
|
|
|
|
curNozzle = NozzleManager.GetIdelNozzle();
|
|
|
|
|
if(curNozzle!=null)
|
|
|
|
|
{
|
|
|
|
|
targetPosition.X = GetFixtureGrabPosX(curFixture.Index) + GlobalVar.Nozzle1ToCameraCenterOffsetX + NozzleManager.GetNozzleOffsetX(curNozzle.NozzleIndex);
|
|
|
|
|
targetPosition.Y1 = GlobalVar.FixtureSideY1;
|
|
|
|
|
targetPosition.Y2 = GetFixtureGrabPosY2(curFixture.Index) + GlobalVar.Nozzle1ToCameraCenterOffsetY2 + NozzleManager.GetNozzleOffsetY2(curNozzle.NozzleIndex);
|
|
|
|
|
errCode = AxisControl.LoadX.MovePos(targetPosition.X, GlobalVar.WholeSpeed);
|
|
|
|
|
if (errCode == ErrorCode.Ok)
|
|
|
|
|
targetPosition = NozzleManager.GetNozzleToFixturePos(curFixture.Index, curNozzle.NozzleIndex);
|
|
|
|
|
if (GroupAxisMove.XY1Y2MovePos(targetPosition))
|
|
|
|
|
{
|
|
|
|
|
errCode = AxisControl.LoadY1.MovePos(targetPosition.Y1, GlobalVar.WholeSpeed);
|
|
|
|
|
if (errCode == ErrorCode.Ok)
|
|
|
|
|
{
|
|
|
|
|
errCode = AxisControl.LoadY2.MovePos(targetPosition.Y2, GlobalVar.WholeSpeed);
|
|
|
|
|
if (errCode == ErrorCode.Ok)
|
|
|
|
|
{
|
|
|
|
|
logInfo = $"到治具取料位上方,tloadx={targetPosition.X},tloady1={targetPosition.Y1},tloady2={targetPosition.Y2}";
|
|
|
|
|
MessageQueue.Instance.Insert(logInfo);
|
|
|
|
|
flowStep = EDischargeFlowStep.等待到治具取料位上方;
|
|
|
|
|
|
|
|
|
|
}
|
|
|
|
|
else
|
|
|
|
|
{
|
|
|
|
|
Msg.ShowError("轴LoadY2运动异常");
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
else
|
|
|
|
|
{
|
|
|
|
|
Msg.ShowError("轴LoadY1运动异常");
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
else
|
|
|
|
|
{
|
|
|
|
|
Msg.ShowError("轴LoadX运动异常");
|
|
|
|
|
logInfo = GetClassName() + $"到治具取料位上方,tloadx={targetPosition.X},tloady1={targetPosition.Y1},tloady2={targetPosition.Y2}";
|
|
|
|
|
MessageQueue.Instance.Insert(logInfo);
|
|
|
|
|
flowStep = EDischargeFlowStep.等待到治具取料位上方;
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
break;
|
|
|
|
@ -527,15 +463,11 @@ namespace Rs.MotionPlat.Flow
|
|
|
|
|
}
|
|
|
|
|
break;
|
|
|
|
|
case EDischargeFlowStep.到治具取料位下方1:
|
|
|
|
|
errCode = AxisControl.GetAxis($"NozzleZ{curNozzle.NozzleIndex}").MovePos(10, GlobalVar.WholeSpeed);
|
|
|
|
|
if(errCode== ErrorCode.Ok)
|
|
|
|
|
targetPosition.NozzleZ = NozzleManager.GetFixtureTakeProductPos(curFixture.Index, curNozzle.NozzleIndex);
|
|
|
|
|
if(NozzleManager.Go(curNozzle, targetPosition.NozzleZ, GlobalVar.WholeSpeed))
|
|
|
|
|
{
|
|
|
|
|
flowStep = EDischargeFlowStep.等待到治具取料位下方1;
|
|
|
|
|
}
|
|
|
|
|
else
|
|
|
|
|
{
|
|
|
|
|
Msg.ShowError($"轴NozzleZ{curNozzle.NozzleIndex}运动异常");
|
|
|
|
|
}
|
|
|
|
|
break;
|
|
|
|
|
case EDischargeFlowStep.等待到治具取料位下方1:
|
|
|
|
|
if(Ops.IsStop($"NozzleZ{curNozzle.NozzleIndex}"))
|
|
|
|
@ -544,15 +476,11 @@ namespace Rs.MotionPlat.Flow
|
|
|
|
|
}
|
|
|
|
|
break;
|
|
|
|
|
case EDischargeFlowStep.到治具取料位下方2:
|
|
|
|
|
errCode = AxisControl.GetAxis($"NozzleZ{curNozzle.NozzleIndex}").MovePos(10, GlobalVar.WholeSpeed);
|
|
|
|
|
if (errCode == ErrorCode.Ok)
|
|
|
|
|
targetPosition.NozzleZ = NozzleManager.GetFixtureTakeProductPos(curFixture.Index, curNozzle.NozzleIndex);
|
|
|
|
|
if (NozzleManager.Go(curNozzle, targetPosition.NozzleZ, GlobalVar.WholeSpeed))
|
|
|
|
|
{
|
|
|
|
|
flowStep = EDischargeFlowStep.等待到治具取料位下方2;
|
|
|
|
|
}
|
|
|
|
|
else
|
|
|
|
|
{
|
|
|
|
|
Msg.ShowError($"轴NozzleZ{curNozzle.NozzleIndex}运动异常");
|
|
|
|
|
}
|
|
|
|
|
break;
|
|
|
|
|
case EDischargeFlowStep.等待到治具取料位下方2:
|
|
|
|
|
if (Ops.IsStop($"NozzleZ{curNozzle.NozzleIndex}"))
|
|
|
|
@ -563,16 +491,18 @@ namespace Rs.MotionPlat.Flow
|
|
|
|
|
}
|
|
|
|
|
else
|
|
|
|
|
{
|
|
|
|
|
Ops.On($"吸料真空{curNozzle.NozzleIndex}吸");
|
|
|
|
|
Thread.Sleep(100);
|
|
|
|
|
Ops.Off($"治具夹{curFixture.Index}");
|
|
|
|
|
Thread.Sleep(100);
|
|
|
|
|
curNozzle.VacSuction(EIoOperate.Open);
|
|
|
|
|
curFixture.ColletOff();
|
|
|
|
|
flowStep = EDischargeFlowStep.治具取料完成抬起1;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
}
|
|
|
|
|
break;
|
|
|
|
|
case EDischargeFlowStep.治具取料完成抬起1:
|
|
|
|
|
if(NozzleManager.Go(curNozzle,0, GlobalVar.WholeSpeed))
|
|
|
|
|
{
|
|
|
|
|
|
|
|
|
|
}
|
|
|
|
|
errCode = AxisControl.GetAxis($"NozzleZ{curNozzle.NozzleIndex}").MovePos(0, GlobalVar.WholeSpeed);
|
|
|
|
|
if (errCode == ErrorCode.Ok)
|
|
|
|
|
{
|
|
|
|
|