优化6号治具取放料避位逻辑

master
lhiven 1 year ago
parent b6a8042efe
commit 7f516305dc

@ -2,6 +2,7 @@
using Rs.Motion;
using Rs.MotionPlat.Entitys;
using Rs.MotionPlat.Flow;
using Rs.MotionPlat.Flow.SafePosFlow;
using System;
using System.Collections.Generic;
using System.Linq;
@ -11,9 +12,34 @@ using System.Threading.Tasks;
namespace Rs.MotionPlat.Commom
{
public enum EGoWhichSide
{
/// <summary>
/// 料仓
/// </summary>
StockSide,
/// <summary>
/// 治具
/// </summary>
FixtureSide
}
public class GroupAxisMove
{
public static bool XY1Y2MovePos(TargetPosition pos,int speed)
public static bool XY1Y2MovePos(TargetPosition pos,int speed, EGoWhichSide side)
{
if(side== EGoWhichSide.StockSide)
{
DischargeModuleGoSafePosFlow.Instance.MoveXToSafe();
}
else if(side== EGoWhichSide.FixtureSide)
{
DischargeModuleGoSafePosFlow.Instance.MoveY1ToFixtureSide(pos.X);
}
return XY1Y2MovePos(pos,speed);
}
public static bool XY1Y2MovePos(TargetPosition pos, int speed)
{
AlarmEntity alarmEntity = new AlarmEntity();
ErrorCode errCode = AxisControl.LoadX.MovePos(pos.X, speed);

@ -161,7 +161,7 @@ namespace Rs.MotionPlat.Flow.NormalFlow
targetPos.X = GlobalVar.TakeInkpadX;
targetPos.Y1 = GlobalVar.StockSideY1;
targetPos.Y2 = GlobalVar.TakeInkpadY2;
if(GroupAxisMove.XY1Y2MovePos(targetPos,GlobalVar.WholeSpeed))
if(GroupAxisMove.XY1Y2MovePos(targetPos,GlobalVar.WholeSpeed, EGoWhichSide.StockSide))
{
nozzleIndex = 1;
AxisPosPrint.PrintXY1Y2TargetPos("到取印尼位上方,", targetPos, GetClassName());
@ -251,7 +251,7 @@ namespace Rs.MotionPlat.Flow.NormalFlow
targetPos.X = GlobalVar.PressInkpadX + (calibNum - 1) * 10;
targetPos.Y1 = GlobalVar.StockSideY1;
targetPos.Y2 = GlobalVar.PressInkpadY2;
if(GroupAxisMove.XY1Y2MovePos(targetPos, GlobalVar.WholeSpeed))
if(GroupAxisMove.XY1Y2MovePos(targetPos, GlobalVar.WholeSpeed, EGoWhichSide.StockSide))
{
AxisPosPrint.PrintXY1Y2TargetPos("到压印尼位上方,", targetPos, GetClassName());
step = ECalibrationFlowStep.;
@ -328,7 +328,7 @@ namespace Rs.MotionPlat.Flow.NormalFlow
targetPos.X = GlobalVar.PressInkpadX + ((calibNum - 1) * xspace) + (-1 * (GlobalVar.Nozzle1ToCameraCenterOffsetX+ NozzleManager.GetNozzleOffsetX(nozzleIndex)));
targetPos.Y1 = GlobalVar.StockSideY1;
targetPos.Y2 = GlobalVar.PressInkpadY2 + (-1 * (GlobalVar.Nozzle1ToCameraCenterOffsetY2 + NozzleManager.GetNozzleOffsetY2(nozzleIndex)));
if(GroupAxisMove.XY1Y2MovePos(targetPos, GlobalVar.WholeSpeed))
if(GroupAxisMove.XY1Y2MovePos(targetPos, GlobalVar.WholeSpeed, EGoWhichSide.StockSide))
{
AxisPosPrint.PrintXY1Y2TargetPos("到拍照位,", targetPos, GetClassName());
step = ECalibrationFlowStep.;
@ -492,7 +492,7 @@ namespace Rs.MotionPlat.Flow.NormalFlow
targetPos.X = GlobalVar.PressInkpadX + ((calibNum - 1) * xspace) + (-1 * (GlobalVar.Nozzle1ToCameraCenterOffsetX + NozzleManager.GetNozzleOffsetX(nozzleIndex)));
targetPos.Y1 = GlobalVar.StockSideY1;
targetPos.Y2 = GlobalVar.PressInkpadY2 + (-1 * (GlobalVar.Nozzle1ToCameraCenterOffsetY2 + NozzleManager.GetNozzleOffsetY2(nozzleIndex)));
if (GroupAxisMove.XY1Y2MovePos(targetPos, GlobalVar.WholeSpeed))
if (GroupAxisMove.XY1Y2MovePos(targetPos, GlobalVar.WholeSpeed, EGoWhichSide.StockSide))
{
AxisPosPrint.PrintXY1Y2TargetPos("到拍照位,", targetPos, GetClassName());
checkStep = ECalibrationCheckFlowStep.;

@ -160,9 +160,21 @@ namespace Rs.MotionPlat.Flow
{
//lastFixtureIndex = TestFixtureManager.Instance.GetEnableFixtureList().Select(f => f.Index).Min() - 1;
CreateCheckFixtureQueue(6);
if(checkFixtureList!=null && checkFixtureList.Count>0)
{
TestFixtureManager.Instance.GetTestFixture(checkFixtureList[0]).IsFirstFixture = true;
for(int i=0;i<checkFixtureList.Count;i++)
{
if(i==0)
{
TestFixtureManager.Instance.GetTestFixture(checkFixtureList[i]).IsFirstFixture = true;
}
else
{
TestFixtureManager.Instance.GetTestFixture(checkFixtureList[i]).IsFirstFixture = false;
}
}
}
//lastFixtureIndex = checkFixtureList[0] - 1;
TestFixtureManager.Instance.GetTestFixture(1).ClearData();
@ -460,11 +472,11 @@ namespace Rs.MotionPlat.Flow
targetPosition.X += TestFixtureManager.Instance.GetTestFixture(checkFixtureList[0]).PlaceProductOffsetX;
targetPosition.Y2 += TestFixtureManager.Instance.GetTestFixture(checkFixtureList[0]).PlaceProductOffsetY;
}
if (targetPosition.X-GlobalVar.FixtureSafePosX>50)
{
DischargeModuleGoSafePosFlow.Instance.GoSafePostion(ESafePosSide.PlaceToFixture);
}
if(GroupAxisMove.XY1Y2MovePos(targetPosition, GlobalVar.WholeSpeed))
//if (targetPosition.X-GlobalVar.FixtureSafePosX>50)
//{
// DischargeModuleGoSafePosFlow.Instance.GoSafePostion(ESafePosSide.PlaceToFixture);
//}
if(GroupAxisMove.XY1Y2MovePos(targetPosition, GlobalVar.WholeSpeed, EGoWhichSide.FixtureSide))
{
AxisPosPrint.PrintXY1Y2TargetPos("到治具放料缓冲位,", targetPosition, GetClassName());
flowStep = EDischargeFlowStep.;
@ -696,11 +708,11 @@ namespace Rs.MotionPlat.Flow
else
{
//料盘放满了,更换料盘
double curLoadX = Ops.GetCurPosition(AxisControl.LoadX);
if (curLoadX - GlobalVar.FixtureSafePosX > 50)
{
DischargeModuleGoSafePosFlow.Instance.GoSafePostion(ESafePosSide.PlaceToStock);
}
//double curLoadX = Ops.GetCurPosition(AxisControl.LoadX);
//if (curLoadX - GlobalVar.FixtureSafePosX > 50)
//{
// DischargeModuleGoSafePosFlow.Instance.GoSafePostion(ESafePosSide.PlaceToStock);
//}
DischargeModuleGoSafePosFlow.Instance.GoSafePostion();
TakeTrayFlow.Instance.Take(ETrayType.Empty, ETrayType.Ok, true, true);
GlobalTray.OkTary.ChangeStatus(ESlotStatus.NotHave);
@ -764,12 +776,12 @@ namespace Rs.MotionPlat.Flow
{
if(TestFixtureManager.Instance.GetHaveProductFixtureList().Count()==0)
{
double curLoadX = Ops.GetCurPosition(AxisControl.LoadX);
if (curLoadX - GlobalVar.FixtureSafePosX > 50)
{
DischargeModuleGoSafePosFlow.Instance.GoSafePostion(ESafePosSide.PlaceToStock);
}
DischargeModuleGoSafePosFlow.Instance.GoSafePostion(ESafePosSide.Stock);
//double curLoadX = Ops.GetCurPosition(AxisControl.LoadX);
//if (curLoadX - GlobalVar.FixtureSafePosX > 50)
//{
// DischargeModuleGoSafePosFlow.Instance.GoSafePostion(ESafePosSide.PlaceToStock);
//}
DischargeModuleGoSafePosFlow.Instance.GoSafePostion();
flowStep = EDischargeFlowStep.;
}
else

@ -213,12 +213,12 @@ namespace Rs.MotionPlat.Flow
targetPosition.X = curTakeSlotPoint.X;
targetPosition.Y1 = GlobalVar.StockSideY1;
targetPosition.Y2 = curTakeSlotPoint.Y;
double curLoadX = Ops.GetCurPosition(AxisControl.LoadX);
if(curLoadX-GlobalVar.FixtureSafePosX>50)
{
DischargeModuleGoSafePosFlow.Instance.GoSafePostion(ESafePosSide.PlaceToStock);
}
if(GroupAxisMove.XY1Y2MovePos(targetPosition, GlobalVar.WholeSpeed))
//double curLoadX = Ops.GetCurPosition(AxisControl.LoadX);
//if(curLoadX-GlobalVar.FixtureSafePosX>50)
//{
// DischargeModuleGoSafePosFlow.Instance.GoSafePostion(ESafePosSide.PlaceToStock);
//}
if(GroupAxisMove.XY1Y2MovePos(targetPosition, GlobalVar.WholeSpeed, EGoWhichSide.StockSide))
{
AxisPosPrint.PrintXY1Y2TargetPos("轴loadx,loady1,loady2已停止运动,", targetPosition, GetClassName());
flowStep = EGrrFlowStep.;
@ -283,7 +283,7 @@ namespace Rs.MotionPlat.Flow
{
targetPosition.X += vProductResult.OffsetX;
targetPosition.Y2+= vProductResult.OffsetY;
if (GroupAxisMove.XY1Y2MovePos(targetPosition, GlobalVar.WholeSpeed))
if (GroupAxisMove.XY1Y2MovePos(targetPosition, GlobalVar.WholeSpeed, EGoWhichSide.StockSide))
{
AxisPosPrint.PrintXY1Y2TargetPos("到料仓取料位上方,", targetPosition, GetClassName());
flowStep = EGrrFlowStep.;
@ -412,11 +412,11 @@ namespace Rs.MotionPlat.Flow
targetPosition = NozzleManager.GetNozzleToFixturePos(curFixture.Index, curTakeNozzle.NozzleIndex);
targetPosition.X += curFixture.PlaceProductOffsetX;
targetPosition.Y2+= curFixture.PlaceProductOffsetY;
if(targetPosition.X-GlobalVar.FixtureSafePosX>50)
{
DischargeModuleGoSafePosFlow.Instance.GoSafePostion(ESafePosSide.PlaceToFixture);
}
if(GroupAxisMove.XY1Y2MovePos(targetPosition, GlobalVar.WholeSpeed))
//if(targetPosition.X-GlobalVar.FixtureSafePosX>50)
//{
// DischargeModuleGoSafePosFlow.Instance.GoSafePostion(ESafePosSide.PlaceToFixture);
//}
if(GroupAxisMove.XY1Y2MovePos(targetPosition, GlobalVar.WholeSpeed, EGoWhichSide.FixtureSide))
{
AxisPosPrint.PrintXY1Y2TargetPos("到治具取料位上方,", targetPosition, GetClassName());
flowStep = EGrrFlowStep.;
@ -573,11 +573,11 @@ namespace Rs.MotionPlat.Flow
if(curFixture!=null)
{
targetPosition = curFixture.GetGrabPos();
if(targetPosition.X-GlobalVar.FixtureSafePosX>50)
{
DischargeModuleGoSafePosFlow.Instance.GoSafePostion(ESafePosSide.PlaceToFixture);
}
if(GroupAxisMove.XY1Y2MovePos(targetPosition, GlobalVar.WholeSpeed))
//if(targetPosition.X-GlobalVar.FixtureSafePosX>50)
//{
// DischargeModuleGoSafePosFlow.Instance.GoSafePostion(ESafePosSide.PlaceToFixture);
//}
if(GroupAxisMove.XY1Y2MovePos(targetPosition, GlobalVar.WholeSpeed, EGoWhichSide.FixtureSide))
{
AxisPosPrint.PrintXY1Y2TargetPos("到治具拍照位,",targetPosition, GetClassName());
flowStep = EGrrFlowStep.;
@ -633,7 +633,7 @@ namespace Rs.MotionPlat.Flow
targetPosition.X += vResult.OffsetX;
targetPosition.Y2 += vResult.OffsetY;
MessageQueue.Instance.Insert($"相机偏移X:{vResult.OffsetX},相机偏移y:{vResult.OffsetY}");
if(GroupAxisMove.XY1Y2MovePos(targetPosition, GlobalVar.WholeSpeed))
if(GroupAxisMove.XY1Y2MovePos(targetPosition, GlobalVar.WholeSpeed, EGoWhichSide.FixtureSide))
{
AxisPosPrint.PrintXY1Y2TargetPos("到治具放料位上方,", targetPosition, GetClassName());
flowStep = EGrrFlowStep.;
@ -765,13 +765,13 @@ namespace Rs.MotionPlat.Flow
curDumpSlot = GlobalTray.GrrTray.GetSlot(curDumpNozzle.Product.FromSlotIndex);
if (curDumpSlot != null)
{
double curLoadX = Ops.GetCurPosition(AxisControl.LoadX);
if(curLoadX-GlobalVar.FixtureSafePosX>50)
{
DischargeModuleGoSafePosFlow.Instance.GoSafePostion(ESafePosSide.PlaceToStock);
}
//double curLoadX = Ops.GetCurPosition(AxisControl.LoadX);
//if(curLoadX-GlobalVar.FixtureSafePosX>50)
//{
// DischargeModuleGoSafePosFlow.Instance.GoSafePostion(ESafePosSide.PlaceToStock);
//}
targetPosition = NozzleManager.GetToTraySlot(ETrayType.Grr, curDumpSlot.Index, curDumpNozzle.NozzleIndex);
if(GroupAxisMove.XY1Y2MovePos(targetPosition, GlobalVar.WholeSpeed))
if(GroupAxisMove.XY1Y2MovePos(targetPosition, GlobalVar.WholeSpeed, EGoWhichSide.StockSide))
{
AxisPosPrint.PrintXY1Y2TargetPos("到料仓放料位上方,", targetPosition, GetClassName());
flowStep = EGrrFlowStep.;

@ -81,7 +81,7 @@ namespace Rs.MotionPlat.Flow.NormalFlow
targetPos.X = sp.X;
targetPos.Y1 = GlobalVar.StockSideY1;
targetPos.Y2 = sp.Y;
if (GroupAxisMove.XY1Y2MovePos(targetPos, GlobalVar.WholeSpeed))
if (GroupAxisMove.XY1Y2MovePos(targetPos, GlobalVar.WholeSpeed, EGoWhichSide.StockSide))
{
AxisPosPrint.PrintXY1Y2TargetPos("到拍照位,", targetPos, GetClassName());
step = EThreePointLocationFlowStep.;

@ -12,21 +12,21 @@ using System.Threading.Tasks;
namespace Rs.MotionPlat.Flow.SafePosFlow
{
public enum ESafePosSide
{
/// <summary>
/// 料仓侧安全位
/// </summary>
Stock,
/// <summary>
/// 放料到料仓时X先移动到安全位
/// </summary>
PlaceToStock,
/// <summary>
/// 放疗到治具时Y1先移动到料仓侧
/// </summary>
PlaceToFixture,
}
//public enum ESafePosSide
//{
// /// <summary>
// /// 料仓侧安全位
// /// </summary>
// Stock,
// /// <summary>
// /// 放料到料仓时X先移动到安全位
// /// </summary>
// PlaceToStock,
// /// <summary>
// /// 放疗到治具时Y1先移动到料仓侧
// /// </summary>
// PlaceToFixture,
//}
public enum EDischargeModuleGoSafePosFlowStep
{
,
@ -60,7 +60,7 @@ namespace Rs.MotionPlat.Flow.SafePosFlow
/// <summary>
/// 排料头回安全位
/// </summary>
public void GoSafePostion(ESafePosSide side = ESafePosSide.Stock)
public void GoSafePostion()
{
if (finished)
{
@ -82,25 +82,28 @@ namespace Rs.MotionPlat.Flow.SafePosFlow
switch (step)
{
case EDischargeModuleGoSafePosFlowStep.:
if(side== ESafePosSide.Stock)
{
targetPos.X = GlobalVar.DischargeSafePostionX;
targetPos.Y1 = GlobalVar.StockSideY1;
targetPos.Y2 = GlobalVar.DischargeSafePostionY2;
}
else if(side== ESafePosSide.PlaceToStock)
{
targetPos.X = GlobalVar.FixtureSafePosX;
targetPos.Y1 = Ops.GetCurPosition(AxisControl.LoadY1);
targetPos.Y2 = Ops.GetCurPosition(AxisControl.LoadY2);
}
else if(side== ESafePosSide.PlaceToFixture)
{
targetPos.X = Ops.GetCurPosition(AxisControl.LoadX);
targetPos.Y1 = GlobalVar.FixtureSideY1;
targetPos.Y2 = Ops.GetCurPosition(AxisControl.LoadY2);
}
if(GroupAxisMove.XY1Y2MovePos(targetPos, GlobalVar.WholeSpeed))
//if(side== ESafePosSide.Stock)
//{
// targetPos.X = GlobalVar.DischargeSafePostionX;
// targetPos.Y1 = GlobalVar.StockSideY1;
// targetPos.Y2 = GlobalVar.DischargeSafePostionY2;
//}
//else if(side== ESafePosSide.PlaceToStock)
//{
// targetPos.X = GlobalVar.FixtureSafePosX;
// targetPos.Y1 = Ops.GetCurPosition(AxisControl.LoadY1);
// targetPos.Y2 = Ops.GetCurPosition(AxisControl.LoadY2);
//}
//else if(side== ESafePosSide.PlaceToFixture)
//{
// targetPos.X = Ops.GetCurPosition(AxisControl.LoadX);
// targetPos.Y1 = GlobalVar.FixtureSideY1;
// targetPos.Y2 = Ops.GetCurPosition(AxisControl.LoadY2);
//}
targetPos.X = GlobalVar.DischargeSafePostionX;
targetPos.Y1 = GlobalVar.StockSideY1;
targetPos.Y2 = GlobalVar.DischargeSafePostionY2;
if (GroupAxisMove.XY1Y2MovePos(targetPos, GlobalVar.WholeSpeed, EGoWhichSide.StockSide))
{
AxisPosPrint.PrintXY1Y2TargetPos("到安全位,", targetPos, GetClassName());
//logInfo = GetClassName() + $"到安全位,tx:{targetPos.X},ty1:{targetPos.Y1},ty2:{targetPos.Y2}";
@ -140,8 +143,9 @@ namespace Rs.MotionPlat.Flow.SafePosFlow
//判断Y1当前在治具还是在料仓只有在治具侧才需要把X先移动到安全位
double curLoadY1 = Ops.GetCurPosition(AxisControl.LoadY1);
double curLoadX = Ops.GetCurPosition(AxisControl.LoadX);
if(Math.Abs(curLoadY1-GlobalVar.FixtureSideY1)>1 && (curLoadX-GlobalVar.FixtureSafePosX>50))
if(NearByFixture() && (curLoadX-GlobalVar.FixtureSafePosX>50))
{
MessageQueue.Instance.Insert(GetClassName()+$"当前X:{curLoadX}大于治具侧安全位:{GlobalVar.FixtureSafePosX}并且Y1在治具侧Y1:{curLoadY1},准备先把X移动到安全位");
while (true && !arrivedSafePos)
{
switch (moveXStep)
@ -152,7 +156,7 @@ namespace Rs.MotionPlat.Flow.SafePosFlow
targetPos.Y2 = Ops.GetCurPosition(AxisControl.LoadY2);
if (GroupAxisMove.XY1Y2MovePos(targetPos, GlobalVar.WholeSpeed))
{
AxisPosPrint.PrintXY1Y2TargetPos("到安全位,", targetPos, GetClassName());
AxisPosPrint.PrintXY1Y2TargetPos("移动X治具安全位,", targetPos, GetClassName());
if (GlobalVar.VirtualAxis)
{
Thread.Sleep(GlobalVar.VirtualAxisMoveTime);
@ -163,7 +167,7 @@ namespace Rs.MotionPlat.Flow.SafePosFlow
case EDischargeModuleGoSafePosFlowStep.:
if (Ops.IsStop("LoadX", "LoadY1", "LoadY2") || GlobalVar.VirtualAxis)
{
AxisPosPrint.PrintXY1Y2CurrentPos("已运动到安全位,", GetClassName());
AxisPosPrint.PrintXY1Y2CurrentPos("X已运动到治具安全位,", GetClassName());
arrivedSafePos = true;
}
break;
@ -184,9 +188,9 @@ namespace Rs.MotionPlat.Flow.SafePosFlow
EDischargeModuleGoSafePosFlowStep moveY1Step = EDischargeModuleGoSafePosFlowStep.;
//判断Y1当前在治具还是在料仓只有在料仓侧才需要把Y1先移动治具那边
double curLoadY1 = Ops.GetCurPosition(AxisControl.LoadY1);
double curLoadX = Ops.GetCurPosition(AxisControl.LoadX);
if (Math.Abs(curLoadY1 - GlobalVar.StockSideY1) > 1 && (targetLoadX - GlobalVar.FixtureSafePosX > 50))
if (NearByStock() && (targetLoadX - GlobalVar.FixtureSafePosX > 50))
{
MessageQueue.Instance.Insert(GetClassName()+$"当前Y1在料仓侧Y1:{curLoadY1},准备运动到治具侧");
while (true && !arrivedSafePos)
{
switch (moveY1Step)
@ -197,7 +201,7 @@ namespace Rs.MotionPlat.Flow.SafePosFlow
targetPos.Y2 = Ops.GetCurPosition(AxisControl.LoadY2);
if (GroupAxisMove.XY1Y2MovePos(targetPos, GlobalVar.WholeSpeed))
{
AxisPosPrint.PrintXY1Y2TargetPos("到安全位,", targetPos, GetClassName());
AxisPosPrint.PrintXY1Y2TargetPos("移动Y1到治具侧,", targetPos, GetClassName());
if (GlobalVar.VirtualAxis)
{
Thread.Sleep(GlobalVar.VirtualAxisMoveTime);
@ -208,7 +212,7 @@ namespace Rs.MotionPlat.Flow.SafePosFlow
case EDischargeModuleGoSafePosFlowStep.:
if (Ops.IsStop("LoadX", "LoadY1", "LoadY2") || GlobalVar.VirtualAxis)
{
AxisPosPrint.PrintXY1Y2CurrentPos("已运动到安全位,", GetClassName());
AxisPosPrint.PrintXY1Y2CurrentPos("Y1已运动治具侧,", GetClassName());
arrivedSafePos = true;
}
break;
@ -220,6 +224,26 @@ namespace Rs.MotionPlat.Flow.SafePosFlow
}
}
/// <summary>
/// Y1是否在料仓侧
/// </summary>
/// <returns></returns>
private bool NearByStock()
{
double curLoadY1 = Ops.GetCurPosition(AxisControl.LoadY1);
return Math.Abs(curLoadY1 - GlobalVar.StockSideY1) < 10;
}
/// <summary>
/// Y1是否在治具侧
/// </summary>
/// <returns></returns>
private bool NearByFixture()
{
double curLoadY1 = Ops.GetCurPosition(AxisControl.LoadY1);
return Math.Abs(curLoadY1 - GlobalVar.FixtureSideY1) < 10;
}
/// <summary>
/// 判断是否在安全位
/// </summary>

@ -163,12 +163,12 @@ namespace Rs.MotionPlat.Flow.SubFlow
targetPosition.X = curTakeSlotPoint.X;
targetPosition.Y1 = GlobalVar.StockSideY1;
targetPosition.Y2 = curTakeSlotPoint.Y;
double curLoadX = Ops.GetCurPosition(AxisControl.LoadX);
if (curLoadX - GlobalVar.FixtureSafePosX > 50)
{
DischargeModuleGoSafePosFlow.Instance.GoSafePostion(ESafePosSide.PlaceToStock);
}
if (GroupAxisMove.XY1Y2MovePos(targetPosition, GlobalVar.WholeSpeed))
//double curLoadX = Ops.GetCurPosition(AxisControl.LoadX);
//if (curLoadX - GlobalVar.FixtureSafePosX > 50)
//{
// DischargeModuleGoSafePosFlow.Instance.GoSafePostion(ESafePosSide.PlaceToStock);
//}
if (GroupAxisMove.XY1Y2MovePos(targetPosition, GlobalVar.WholeSpeed, EGoWhichSide.StockSide))
{
AxisPosPrint.PrintXY1Y2TargetPos("轴loadx,loady1,loady2已停止运动,", targetPosition, GetClassName());
flowStep = EFiveProductTestFlowStep.;
@ -234,7 +234,7 @@ namespace Rs.MotionPlat.Flow.SubFlow
{
targetPosition.X += vProductResult.OffsetX + offsetX;
targetPosition.Y2 += vProductResult.OffsetY + offsetY;
if (GroupAxisMove.XY1Y2MovePos(targetPosition, GlobalVar.WholeSpeed))
if (GroupAxisMove.XY1Y2MovePos(targetPosition, GlobalVar.WholeSpeed, EGoWhichSide.StockSide))
{
AxisPosPrint.PrintXY1Y2TargetPos("到料仓取料位上方,", targetPosition, GetClassName());
flowStep = EFiveProductTestFlowStep.;
@ -337,13 +337,13 @@ namespace Rs.MotionPlat.Flow.SubFlow
curDumpSlot = GlobalTray.OkTary.GetSlot(ESlotStatus.NotHave);
if (curDumpSlot != null)
{
double curLoadX = Ops.GetCurPosition(AxisControl.LoadX);
if (curLoadX - GlobalVar.FixtureSafePosX > 50)
{
DischargeModuleGoSafePosFlow.Instance.GoSafePostion(ESafePosSide.PlaceToStock);
}
//double curLoadX = Ops.GetCurPosition(AxisControl.LoadX);
//if (curLoadX - GlobalVar.FixtureSafePosX > 50)
//{
// DischargeModuleGoSafePosFlow.Instance.GoSafePostion(ESafePosSide.PlaceToStock);
//}
targetPosition = NozzleManager.GetToTraySlot(ETrayType.Ok, curDumpSlot.Index, curDumpNozzle.NozzleIndex);
if (GroupAxisMove.XY1Y2MovePos(targetPosition, GlobalVar.WholeSpeed))
if (GroupAxisMove.XY1Y2MovePos(targetPosition, GlobalVar.WholeSpeed, EGoWhichSide.StockSide))
{
AxisPosPrint.PrintXY1Y2TargetPos("到料仓放料位上方,", targetPosition, GetClassName());
flowStep = EFiveProductTestFlowStep.;
@ -420,7 +420,7 @@ namespace Rs.MotionPlat.Flow.SubFlow
}
else
{
DischargeModuleGoSafePosFlow.Instance.GoSafePostion(ESafePosSide.Stock);
DischargeModuleGoSafePosFlow.Instance.GoSafePostion();
stop = true;
}
}

@ -3,6 +3,7 @@ using Rs.Framework;
using Rs.MotionPlat.Commom;
using Rs.MotionPlat.Entitys;
using Rs.MotionPlat.Flow.Common;
using Rs.MotionPlat.Flow.SafePosFlow;
using Rs.MotionPlat.Vision;
using System;
using System.Collections.Generic;
@ -93,7 +94,8 @@ namespace Rs.MotionPlat.Flow.SubFlow
targetPosition.X = grabPoint.X;
targetPosition.Y1 = GlobalVar.StockSideY1;
targetPosition.Y2 = grabPoint.Y;
if (GroupAxisMove.XY1Y2MovePos(targetPosition, GlobalVar.WholeSpeed))
DischargeModuleGoSafePosFlow.Instance.MoveXToSafe();
if (GroupAxisMove.XY1Y2MovePos(targetPosition, GlobalVar.WholeSpeed, EGoWhichSide.StockSide))
{
AxisPosPrint.PrintXY1Y2TargetPos("到拍照位上方,", targetPosition, GetClassName());
step = EFixedGrabProductFlowStep.;

@ -83,11 +83,12 @@ namespace Rs.MotionPlat.Flow.SubFlow
break;
case EFixturePlaceFlowStep.:
targetPosition = curFixture.GetGrabPos();
if(targetPosition.X-GlobalVar.FixtureSafePosX>50)
{
DischargeModuleGoSafePosFlow.Instance.GoSafePostion(ESafePosSide.PlaceToFixture);
}
if (GroupAxisMove.XY1Y2MovePos(targetPosition, GlobalVar.WholeSpeed))
//if(targetPosition.X-GlobalVar.FixtureSafePosX>50)
//{
// DischargeModuleGoSafePosFlow.Instance.GoSafePostion(ESafePosSide.PlaceToFixture);
//}
//DischargeModuleGoSafePosFlow.Instance.MoveY1ToFixtureSide(targetPosition.X);
if (GroupAxisMove.XY1Y2MovePos(targetPosition, GlobalVar.WholeSpeed, EGoWhichSide.FixtureSide))
{
AxisPosPrint.PrintXY1Y2TargetPos($"到治具{curFixture.Index}拍照位,", targetPosition, GetClassName());
flowStep = EFixturePlaceFlowStep.;
@ -145,17 +146,17 @@ namespace Rs.MotionPlat.Flow.SubFlow
if (curNozzle != null)
{
targetPosition = NozzleManager.GetNozzleToFixturePos(curFixture.Index, curNozzle.NozzleIndex);
if (targetPosition.X - GlobalVar.FixtureSafePosX > 50)
{
DischargeModuleGoSafePosFlow.Instance.GoSafePostion(ESafePosSide.PlaceToFixture);
}
//if (targetPosition.X - GlobalVar.FixtureSafePosX > 50)
//{
// DischargeModuleGoSafePosFlow.Instance.GoSafePostion(ESafePosSide.PlaceToFixture);
//}
if (!GlobalVar.RunSpace)
{
targetPosition.X += vr.OffsetX;
targetPosition.Y2 += vr.OffsetY;
MessageQueue.Instance.Insert($"相机偏移X:{vr.OffsetX},相机偏移y:{vr.OffsetY}");
}
if (GroupAxisMove.XY1Y2MovePos(targetPosition, GlobalVar.WholeSpeed))
if (GroupAxisMove.XY1Y2MovePos(targetPosition, GlobalVar.WholeSpeed, EGoWhichSide.FixtureSide))
{
AxisPosPrint.PrintXY1Y2TargetPos($"到治具{curFixture.Index}放料位上方", targetPosition, GetClassName());
flowStep = EFixturePlaceFlowStep.;

@ -95,11 +95,11 @@ namespace Rs.MotionPlat.Flow.SubFlow
targetPosition = NozzleManager.GetNozzleToFixturePos(curFixture.Index, curNozzle.NozzleIndex);
targetPosition.X += curFixture.PlaceProductOffsetX;
targetPosition.Y2 += curFixture.PlaceProductOffsetY;
if (targetPosition.X - GlobalVar.FixtureSafePosX > 50)
{
DischargeModuleGoSafePosFlow.Instance.GoSafePostion(ESafePosSide.PlaceToFixture);
}
if (GroupAxisMove.XY1Y2MovePos(targetPosition, GlobalVar.WholeSpeed))
//if (targetPosition.X - GlobalVar.FixtureSafePosX > 50)
//{
// DischargeModuleGoSafePosFlow.Instance.GoSafePostion(ESafePosSide.PlaceToFixture);
//}
if (GroupAxisMove.XY1Y2MovePos(targetPosition, GlobalVar.WholeSpeed, EGoWhichSide.FixtureSide))
{
AxisPosPrint.PrintXY1Y2TargetPos($"到治具{curFixture.Index}取料位上方", targetPosition, GetClassName());
flowStep = EFixtureTakeFlowStep.;

@ -83,12 +83,12 @@ namespace Rs.MotionPlat.Flow.SubFlow
targetPosition.X = sp.X;
targetPosition.Y1 = GlobalVar.StockSideY1;
targetPosition.Y2 = sp.Y - 30;
double curLoadX = Ops.GetCurPosition(AxisControl.LoadX);
if(curLoadX-GlobalVar.FixtureSafePosX>50)
{
DischargeModuleGoSafePosFlow.Instance.GoSafePostion(ESafePosSide.PlaceToStock);
}
if (GroupAxisMove.XY1Y2MovePos(targetPosition,GlobalVar.WholeSpeed))
//double curLoadX = Ops.GetCurPosition(AxisControl.LoadX);
//if(curLoadX-GlobalVar.FixtureSafePosX>50)
//{
// DischargeModuleGoSafePosFlow.Instance.GoSafePostion(ESafePosSide.PlaceToStock);
//}
if (GroupAxisMove.XY1Y2MovePos(targetPosition,GlobalVar.WholeSpeed, EGoWhichSide.StockSide))
{
AxisPosPrint.PrintXY1Y2TargetPos("到料仓拍照位上方", targetPosition, GetClassName());
flowStep = EProductLocationFlowStep.;
@ -132,7 +132,7 @@ namespace Rs.MotionPlat.Flow.SubFlow
targetPosition.X = sp.X;
targetPosition.Y1 = GlobalVar.StockSideY1;
targetPosition.Y2 = sp.Y + 2;
if (GroupAxisMove.XY1Y2MovePos(targetPosition,GlobalVar.FlyCameraSpeed))
if (GroupAxisMove.XY1Y2MovePos(targetPosition,GlobalVar.FlyCameraSpeed, EGoWhichSide.StockSide))
{
AxisPosPrint.PrintXY1Y2TargetPos("到料仓拍照结束位,", targetPosition, GetClassName());
flowStep = EProductLocationFlowStep.;

@ -128,12 +128,12 @@ namespace Rs.MotionPlat.Flow.SubFlow
targetPosition.X = sp.X;
targetPosition.Y1 = GlobalVar.StockSideY1;
targetPosition.Y2 = sp.Y;
double curLoadX = Ops.GetCurPosition(AxisControl.LoadX);
if (curLoadX - GlobalVar.FixtureSafePosX > 50)
{
DischargeModuleGoSafePosFlow.Instance.GoSafePostion(ESafePosSide.PlaceToStock);
}
if (GroupAxisMove.XY1Y2MovePos(targetPosition, GlobalVar.WholeSpeed))
//double curLoadX = Ops.GetCurPosition(AxisControl.LoadX);
//if (curLoadX - GlobalVar.FixtureSafePosX > 50)
//{
// DischargeModuleGoSafePosFlow.Instance.GoSafePostion(ESafePosSide.PlaceToStock);
//}
if (GroupAxisMove.XY1Y2MovePos(targetPosition, GlobalVar.WholeSpeed, EGoWhichSide.StockSide))
{
AxisPosPrint.PrintXY1Y2TargetPos("到料仓拍照位上方,", targetPosition, GetClassName());
flowStep = EStockPlaceFlowStep.;
@ -180,12 +180,12 @@ namespace Rs.MotionPlat.Flow.SubFlow
targetPosition = NozzleManager.GetToTraySlot(trayType, curPlaceSlot.Index, curNozzle.NozzleIndex);
targetPosition.X += slotOffsetX;
targetPosition.Y2+= slotOffsetY;
double curLoadX = Ops.GetCurPosition(AxisControl.LoadX);
if (curLoadX - GlobalVar.FixtureSafePosX > 50)
{
DischargeModuleGoSafePosFlow.Instance.GoSafePostion(ESafePosSide.PlaceToStock);
}
if (GroupAxisMove.XY1Y2MovePos(targetPosition, GlobalVar.WholeSpeed))
//double curLoadX = Ops.GetCurPosition(AxisControl.LoadX);
//if (curLoadX - GlobalVar.FixtureSafePosX > 50)
//{
// DischargeModuleGoSafePosFlow.Instance.GoSafePostion(ESafePosSide.PlaceToStock);
//}
if (GroupAxisMove.XY1Y2MovePos(targetPosition, GlobalVar.WholeSpeed, EGoWhichSide.StockSide))
{
AxisPosPrint.PrintXY1Y2TargetPos("到料仓放料位上方,", targetPosition, GetClassName());
flowStep = EStockPlaceFlowStep.;

@ -111,12 +111,12 @@ namespace Rs.MotionPlat.Flow.SubFlow
targetPosition.X += locaResult.OffsetX;
targetPosition.Y2 += locaResult.OffsetY;
}
double curLoadX = Ops.GetCurPosition(AxisControl.LoadX);
if (curLoadX - GlobalVar.FixtureSafePosX > 50)
{
DischargeModuleGoSafePosFlow.Instance.GoSafePostion(ESafePosSide.PlaceToStock);
}
if (GroupAxisMove.XY1Y2MovePos(targetPosition, GlobalVar.WholeSpeed))
//double curLoadX = Ops.GetCurPosition(AxisControl.LoadX);
//if (curLoadX - GlobalVar.FixtureSafePosX > 50)
//{
// DischargeModuleGoSafePosFlow.Instance.GoSafePostion(ESafePosSide.PlaceToStock);
//}
if (GroupAxisMove.XY1Y2MovePos(targetPosition, GlobalVar.WholeSpeed, EGoWhichSide.StockSide))
{
AxisPosPrint.PrintXY1Y2TargetPos($"{WhatNozzleIndex()}到料仓{WhatTraySlot()}取料位上方,", targetPosition, GetClassName());
flowStep = EStockTakeFlowStep.;

@ -205,29 +205,35 @@ namespace Rs.MotionPlat.Recipe
DialogResult dr = Msg.ShowQuestion($"Are you sure to move loadx to {targetX},loady to {targetY}?");
if(dr== DialogResult.OK)
{
double curLoadX = Ops.GetCurPosition(AxisControl.LoadX);
if(curLoadX-GlobalVar.FixtureSafePosX>50)
{
DischargeModuleGoSafePosFlow.Instance.GoSafePostion(ESafePosSide.PlaceToStock);
}
Motion.ErrorCode errCode = AxisControl.GetAxis("LoadX").MovePos(targetX,4);
if (errCode > Motion.ErrorCode.Ok)
{
Msg.ShowError($"axis loadx move fail,ret={errCode}");
return;
}
errCode = AxisControl.GetAxis("LoadY1").MovePos(GlobalVar.StockSideY1, 4);
if (errCode > Motion.ErrorCode.Ok)
{
Msg.ShowError($"axis loady1 move fail,ret={errCode}");
return;
}
errCode = AxisControl.GetAxis("LoadY2").MovePos(targetY,4);
if (errCode > Motion.ErrorCode.Ok)
{
Msg.ShowError($"axis loady2 move fail,ret={errCode}");
return;
}
//double curLoadX = Ops.GetCurPosition(AxisControl.LoadX);
//if(curLoadX-GlobalVar.FixtureSafePosX>50)
//{
// DischargeModuleGoSafePosFlow.Instance.GoSafePostion(ESafePosSide.PlaceToStock);
//}
TargetPosition targetPos = new TargetPosition();
targetPos.X = targetX;
targetPos.Y1 = GlobalVar.StockSideY1;
targetPos.Y2 = targetY;
GroupAxisMove.XY1Y2MovePos(targetPos, 4);
//Motion.ErrorCode errCode = AxisControl.GetAxis("LoadX").MovePos(targetX,4);
//if (errCode > Motion.ErrorCode.Ok)
//{
// Msg.ShowError($"axis loadx move fail,ret={errCode}");
// return;
//}
//errCode = AxisControl.GetAxis("LoadY1").MovePos(GlobalVar.StockSideY1, 4);
//if (errCode > Motion.ErrorCode.Ok)
//{
// Msg.ShowError($"axis loady1 move fail,ret={errCode}");
// return;
//}
//errCode = AxisControl.GetAxis("LoadY2").MovePos(targetY,4);
//if (errCode > Motion.ErrorCode.Ok)
//{
// Msg.ShowError($"axis loady2 move fail,ret={errCode}");
// return;
//}
if (subMenu.Text.IndexOf("TakeProduct") >= 0)
{
TakeProduct(selectedSlot.Index, nozzleIndex);

@ -34,11 +34,11 @@ namespace Rs.MotionPlat.SysConfig
{
targetPosition = NozzleManager.GetNozzleToFixturePos(fixtureIndex, nozzleIndex);
EButtonType btnType = Msgbox.ShowTipDialog(EButtonType.Ok | EButtonType.Cancel, $"Are you sure to move loadx:{targetPosition.X},loady1:{targetPosition.Y1},loady2:{targetPosition.Y2}");
if (targetPosition.X - GlobalVar.FixtureSafePosX > 20)
{
DischargeModuleGoSafePosFlow.Instance.GoSafePostion(ESafePosSide.PlaceToFixture);
}
GroupAxisMove.XY1Y2MovePos(targetPosition, GlobalVar.WholeSpeed);
//if (targetPosition.X - GlobalVar.FixtureSafePosX > 20)
//{
// DischargeModuleGoSafePosFlow.Instance.GoSafePostion(ESafePosSide.PlaceToFixture);
//}
GroupAxisMove.XY1Y2MovePos(targetPosition, GlobalVar.WholeSpeed, EGoWhichSide.FixtureSide);
}
}
@ -145,11 +145,11 @@ namespace Rs.MotionPlat.SysConfig
nozzleIndex = 4;
Task.Run(() => {
FixtureTakeFlow.Instance.Take(int.Parse(((Button)sender).Tag.ToString()), nozzleIndex,true);
double curLoadX = Ops.GetCurPosition(AxisControl.LoadX);
if (curLoadX - GlobalVar.FixtureSafePosX > 50)
{
DischargeModuleGoSafePosFlow.Instance.GoSafePostion(ESafePosSide.PlaceToStock);
}
//double curLoadX = Ops.GetCurPosition(AxisControl.LoadX);
//if (curLoadX - GlobalVar.FixtureSafePosX > 50)
//{
// DischargeModuleGoSafePosFlow.Instance.GoSafePostion(ESafePosSide.PlaceToStock);
//}
DischargeModuleGoSafePosFlow.Instance.GoSafePostion();
});
}
@ -168,10 +168,10 @@ namespace Rs.MotionPlat.SysConfig
Task.Run(() => {
FixturePlaceFlow.Instance.Place(int.Parse(((Button)sender).Tag.ToString()), nozzleIndex,true);
double curLoadX = Ops.GetCurPosition(AxisControl.LoadX);
if(curLoadX-GlobalVar.FixtureSafePosX>50)
{
DischargeModuleGoSafePosFlow.Instance.GoSafePostion(ESafePosSide.PlaceToStock);
}
//if(curLoadX-GlobalVar.FixtureSafePosX>50)
//{
// DischargeModuleGoSafePosFlow.Instance.GoSafePostion(ESafePosSide.PlaceToStock);
//}
DischargeModuleGoSafePosFlow.Instance.GoSafePostion();
});
}

@ -127,7 +127,7 @@ namespace Rs.MotionPlat
targetPos.Y1 = GlobalVar.FixtureSideY1;
targetPos.Y2 = -329.256;
}
if (GroupAxisMove.XY1Y2MovePos(targetPos, GlobalVar.WholeSpeed))
if (GroupAxisMove.XY1Y2MovePos(targetPos, GlobalVar.WholeSpeed, EGoWhichSide.FixtureSide))
{
step++;
}
@ -142,7 +142,7 @@ namespace Rs.MotionPlat
targetPos.X = GlobalVar.Fixture5GrabImageX;
targetPos.Y1 = GlobalVar.FixtureSideY1;
targetPos.Y2 = GlobalVar.Fixture5GrabImageY2;
if (GroupAxisMove.XY1Y2MovePos(targetPos, GlobalVar.WholeSpeed))
if (GroupAxisMove.XY1Y2MovePos(targetPos, GlobalVar.WholeSpeed, EGoWhichSide.FixtureSide))
{
step++;
}
@ -301,7 +301,7 @@ namespace Rs.MotionPlat
for (int i = 1; i < 6; i++)
{
StockTakeFlow.Instance.Take(ETrayType.Input, i, 1);
DischargeModuleGoSafePosFlow.Instance.GoSafePostion(ESafePosSide.Stock);
DischargeModuleGoSafePosFlow.Instance.GoSafePostion();
StockPlaceFlow.Instance.Place(ETrayType.Input, i, 1);
}
}

Loading…
Cancel
Save