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

master
lhiven 1 year ago
parent b6a8042efe
commit 7f516305dc

@ -2,6 +2,7 @@
using Rs.Motion; using Rs.Motion;
using Rs.MotionPlat.Entitys; using Rs.MotionPlat.Entitys;
using Rs.MotionPlat.Flow; using Rs.MotionPlat.Flow;
using Rs.MotionPlat.Flow.SafePosFlow;
using System; using System;
using System.Collections.Generic; using System.Collections.Generic;
using System.Linq; using System.Linq;
@ -11,8 +12,33 @@ using System.Threading.Tasks;
namespace Rs.MotionPlat.Commom namespace Rs.MotionPlat.Commom
{ {
public enum EGoWhichSide
{
/// <summary>
/// 料仓
/// </summary>
StockSide,
/// <summary>
/// 治具
/// </summary>
FixtureSide
}
public class GroupAxisMove public class GroupAxisMove
{ {
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) public static bool XY1Y2MovePos(TargetPosition pos, int speed)
{ {
AlarmEntity alarmEntity = new AlarmEntity(); AlarmEntity alarmEntity = new AlarmEntity();

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

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

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

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

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

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

@ -3,6 +3,7 @@ using Rs.Framework;
using Rs.MotionPlat.Commom; using Rs.MotionPlat.Commom;
using Rs.MotionPlat.Entitys; using Rs.MotionPlat.Entitys;
using Rs.MotionPlat.Flow.Common; using Rs.MotionPlat.Flow.Common;
using Rs.MotionPlat.Flow.SafePosFlow;
using Rs.MotionPlat.Vision; using Rs.MotionPlat.Vision;
using System; using System;
using System.Collections.Generic; using System.Collections.Generic;
@ -93,7 +94,8 @@ namespace Rs.MotionPlat.Flow.SubFlow
targetPosition.X = grabPoint.X; targetPosition.X = grabPoint.X;
targetPosition.Y1 = GlobalVar.StockSideY1; targetPosition.Y1 = GlobalVar.StockSideY1;
targetPosition.Y2 = grabPoint.Y; 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()); AxisPosPrint.PrintXY1Y2TargetPos("到拍照位上方,", targetPosition, GetClassName());
step = EFixedGrabProductFlowStep.; step = EFixedGrabProductFlowStep.;

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

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

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

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

@ -111,12 +111,12 @@ namespace Rs.MotionPlat.Flow.SubFlow
targetPosition.X += locaResult.OffsetX; targetPosition.X += locaResult.OffsetX;
targetPosition.Y2 += locaResult.OffsetY; targetPosition.Y2 += locaResult.OffsetY;
} }
double curLoadX = Ops.GetCurPosition(AxisControl.LoadX); //double curLoadX = Ops.GetCurPosition(AxisControl.LoadX);
if (curLoadX - GlobalVar.FixtureSafePosX > 50) //if (curLoadX - GlobalVar.FixtureSafePosX > 50)
{ //{
DischargeModuleGoSafePosFlow.Instance.GoSafePostion(ESafePosSide.PlaceToStock); // DischargeModuleGoSafePosFlow.Instance.GoSafePostion(ESafePosSide.PlaceToStock);
} //}
if (GroupAxisMove.XY1Y2MovePos(targetPosition, GlobalVar.WholeSpeed)) if (GroupAxisMove.XY1Y2MovePos(targetPosition, GlobalVar.WholeSpeed, EGoWhichSide.StockSide))
{ {
AxisPosPrint.PrintXY1Y2TargetPos($"{WhatNozzleIndex()}到料仓{WhatTraySlot()}取料位上方,", targetPosition, GetClassName()); AxisPosPrint.PrintXY1Y2TargetPos($"{WhatNozzleIndex()}到料仓{WhatTraySlot()}取料位上方,", targetPosition, GetClassName());
flowStep = EStockTakeFlowStep.; 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}?"); DialogResult dr = Msg.ShowQuestion($"Are you sure to move loadx to {targetX},loady to {targetY}?");
if(dr== DialogResult.OK) if(dr== DialogResult.OK)
{ {
double curLoadX = Ops.GetCurPosition(AxisControl.LoadX); //double curLoadX = Ops.GetCurPosition(AxisControl.LoadX);
if(curLoadX-GlobalVar.FixtureSafePosX>50) //if(curLoadX-GlobalVar.FixtureSafePosX>50)
{ //{
DischargeModuleGoSafePosFlow.Instance.GoSafePostion(ESafePosSide.PlaceToStock); // DischargeModuleGoSafePosFlow.Instance.GoSafePostion(ESafePosSide.PlaceToStock);
} //}
Motion.ErrorCode errCode = AxisControl.GetAxis("LoadX").MovePos(targetX,4);
if (errCode > Motion.ErrorCode.Ok) TargetPosition targetPos = new TargetPosition();
{ targetPos.X = targetX;
Msg.ShowError($"axis loadx move fail,ret={errCode}"); targetPos.Y1 = GlobalVar.StockSideY1;
return; targetPos.Y2 = targetY;
} GroupAxisMove.XY1Y2MovePos(targetPos, 4);
errCode = AxisControl.GetAxis("LoadY1").MovePos(GlobalVar.StockSideY1, 4); //Motion.ErrorCode errCode = AxisControl.GetAxis("LoadX").MovePos(targetX,4);
if (errCode > Motion.ErrorCode.Ok) //if (errCode > Motion.ErrorCode.Ok)
{ //{
Msg.ShowError($"axis loady1 move fail,ret={errCode}"); // Msg.ShowError($"axis loadx move fail,ret={errCode}");
return; // return;
} //}
errCode = AxisControl.GetAxis("LoadY2").MovePos(targetY,4); //errCode = AxisControl.GetAxis("LoadY1").MovePos(GlobalVar.StockSideY1, 4);
if (errCode > Motion.ErrorCode.Ok) //if (errCode > Motion.ErrorCode.Ok)
{ //{
Msg.ShowError($"axis loady2 move fail,ret={errCode}"); // Msg.ShowError($"axis loady1 move fail,ret={errCode}");
return; // 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) if (subMenu.Text.IndexOf("TakeProduct") >= 0)
{ {
TakeProduct(selectedSlot.Index, nozzleIndex); TakeProduct(selectedSlot.Index, nozzleIndex);

@ -34,11 +34,11 @@ namespace Rs.MotionPlat.SysConfig
{ {
targetPosition = NozzleManager.GetNozzleToFixturePos(fixtureIndex, nozzleIndex); 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}"); 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) //if (targetPosition.X - GlobalVar.FixtureSafePosX > 20)
{ //{
DischargeModuleGoSafePosFlow.Instance.GoSafePostion(ESafePosSide.PlaceToFixture); // DischargeModuleGoSafePosFlow.Instance.GoSafePostion(ESafePosSide.PlaceToFixture);
} //}
GroupAxisMove.XY1Y2MovePos(targetPosition, GlobalVar.WholeSpeed); GroupAxisMove.XY1Y2MovePos(targetPosition, GlobalVar.WholeSpeed, EGoWhichSide.FixtureSide);
} }
} }
@ -145,11 +145,11 @@ namespace Rs.MotionPlat.SysConfig
nozzleIndex = 4; nozzleIndex = 4;
Task.Run(() => { Task.Run(() => {
FixtureTakeFlow.Instance.Take(int.Parse(((Button)sender).Tag.ToString()), nozzleIndex,true); FixtureTakeFlow.Instance.Take(int.Parse(((Button)sender).Tag.ToString()), nozzleIndex,true);
double curLoadX = Ops.GetCurPosition(AxisControl.LoadX); //double curLoadX = Ops.GetCurPosition(AxisControl.LoadX);
if (curLoadX - GlobalVar.FixtureSafePosX > 50) //if (curLoadX - GlobalVar.FixtureSafePosX > 50)
{ //{
DischargeModuleGoSafePosFlow.Instance.GoSafePostion(ESafePosSide.PlaceToStock); // DischargeModuleGoSafePosFlow.Instance.GoSafePostion(ESafePosSide.PlaceToStock);
} //}
DischargeModuleGoSafePosFlow.Instance.GoSafePostion(); DischargeModuleGoSafePosFlow.Instance.GoSafePostion();
}); });
} }
@ -168,10 +168,10 @@ namespace Rs.MotionPlat.SysConfig
Task.Run(() => { Task.Run(() => {
FixturePlaceFlow.Instance.Place(int.Parse(((Button)sender).Tag.ToString()), nozzleIndex,true); FixturePlaceFlow.Instance.Place(int.Parse(((Button)sender).Tag.ToString()), nozzleIndex,true);
double curLoadX = Ops.GetCurPosition(AxisControl.LoadX); double curLoadX = Ops.GetCurPosition(AxisControl.LoadX);
if(curLoadX-GlobalVar.FixtureSafePosX>50) //if(curLoadX-GlobalVar.FixtureSafePosX>50)
{ //{
DischargeModuleGoSafePosFlow.Instance.GoSafePostion(ESafePosSide.PlaceToStock); // DischargeModuleGoSafePosFlow.Instance.GoSafePostion(ESafePosSide.PlaceToStock);
} //}
DischargeModuleGoSafePosFlow.Instance.GoSafePostion(); DischargeModuleGoSafePosFlow.Instance.GoSafePostion();
}); });
} }

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

Loading…
Cancel
Save