1、设备暂停后,手动移动轴后设备可以自动运行

2、增加版本号:2.20.24.25
master
lhiven 2 years ago
parent d61c42b76f
commit 16907982e8

@ -72,7 +72,7 @@ namespace Rs.MotionPlat.Commom
{
errNum++;
//MessageQueue.Instance.Warn(ceCode.ToString());
Msg.ShowError("Camera open fail!!!");
Msg.ShowError("Camera open fail!!!Please try again in 30 seconds");
System.Environment.Exit(0);
}
else

@ -351,9 +351,16 @@ namespace Rs.MotionPlat.Flow
case EDischargeFlowStep.:
if (Ops.IsStop("LoadX", "LoadY", $"NozzleR{curNozzle.NozzleIndex}") || GlobalVar.VirtualAxis)
{
logInfo = GetClassName()+$"已运动到{WitchTrayWitchSlot(curNozzle.FromType,curNozzle.FromIndex)}取料位上方";
MessageQueue.Instance.Insert(logInfo);
flowStep = EDischargeFlowStep.;
if(XYIsInTargetPos(targetX,targetY))
{
logInfo = GetClassName() + $"已运动到{WitchTrayWitchSlot(curNozzle.FromType, curNozzle.FromIndex)}取料位上方";
MessageQueue.Instance.Insert(logInfo);
flowStep = EDischargeFlowStep.;
}
else
{
flowStep = EDischargeFlowStep.;
}
}
break;
@ -398,9 +405,25 @@ namespace Rs.MotionPlat.Flow
case EDischargeFlowStep.:
if (Ops.IsStop($"NozzleZ{curNozzle.NozzleIndex}") || GlobalVar.VirtualAxis)
{
logInfo = GetClassName()+ $"已运动到{WitchTrayWitchSlot(curNozzle.FromType, curNozzle.FromIndex)}号穴位取料位下方";
MessageQueue.Instance.Insert(logInfo);
flowStep = EDischargeFlowStep.;
if (XYIsInTargetPos(targetX, targetY))
{
logInfo = GetClassName() + $"已运动到{WitchTrayWitchSlot(curNozzle.FromType, curNozzle.FromIndex)}号穴位取料位下方";
MessageQueue.Instance.Insert(logInfo);
if (curTask.FromType == TurnoverType.Turnover)
{
VacManager.TurnoverTrayVacBreak(EVacOperator.Open, true, curNozzle.FromIndex + 1);
}
else
{
VacManager.DischargeVacSuction(EVacOperator.Open, true, curNozzle.NozzleIndex);
}
flowStep = EDischargeFlowStep.;
//flowStep = EDischargeFlowStep.开真空;
}
else
{
flowStep = EDischargeFlowStep.;
}
}
break;
@ -703,10 +726,12 @@ namespace Rs.MotionPlat.Flow
if (NozzleManager.GetNozzlesByStatus(ENozzleStatus.ToUnload)[0].ToType == TurnoverType.Turnover)
{
needGrabNum = NozzleManager.GetNozzlesByStatus(ENozzleStatus.ToUnload).Count();
errCode = AxisControl.LoadX.MovePos(SysConfigParam.GetValue<double>($"Nozzle{needGrabNum}CenterX") - 30, GlobalVar.WholeSpeed);
targetX = SysConfigParam.GetValue<double>($"Nozzle{needGrabNum}CenterX") - 30;
targetY = SysConfigParam.GetValue<double>($"Nozzle8CenterY");
errCode = AxisControl.LoadX.MovePos(targetX, GlobalVar.WholeSpeed);
if (errCode == ErrorCode.Ok || GlobalVar.VirtualAxis)
{
errCode = AxisControl.LoadY.MovePos(SysConfigParam.GetValue<double>($"Nozzle8CenterY"), GlobalVar.WholeSpeed);
errCode = AxisControl.LoadY.MovePos(targetY, GlobalVar.WholeSpeed);
if (errCode == ErrorCode.Ok || GlobalVar.VirtualAxis)
{
flowStep = EDischargeFlowStep.;
@ -715,10 +740,12 @@ namespace Rs.MotionPlat.Flow
}
else
{
errCode = AxisControl.LoadX.MovePos(SysConfigParam.GetValue<double>("Nozzle1CenterX") + 30, GlobalVar.WholeSpeed);
targetX = SysConfigParam.GetValue<double>("Nozzle1CenterX") + 30;
targetY = SysConfigParam.GetValue<double>($"Nozzle1CenterY");
errCode = AxisControl.LoadX.MovePos(targetX, GlobalVar.WholeSpeed);
if (errCode == ErrorCode.Ok || GlobalVar.VirtualAxis)
{
errCode = AxisControl.LoadY.MovePos(SysConfigParam.GetValue<double>("Nozzle1CenterY"), GlobalVar.WholeSpeed);
errCode = AxisControl.LoadY.MovePos(targetY, GlobalVar.WholeSpeed);
if (errCode == ErrorCode.Ok || GlobalVar.VirtualAxis)
{
flowStep = EDischargeFlowStep.;
@ -770,7 +797,7 @@ namespace Rs.MotionPlat.Flow
grabPoints.Add(SysConfigParam.GetValue<double>($"Nozzle{i}CenterX"));
}
}
//LogHelper.Debug(GetClassName()+$"拍照点位:{grabPoints.ToJoinString(",")}");
errCode = AxisControl.LoadX.SetPosCompare(1, grabPoints.ToArray());
if(errCode== ErrorCode.Ok || GlobalVar.VirtualAxis)
{
@ -1206,15 +1233,22 @@ namespace Rs.MotionPlat.Flow
case EDischargeFlowStep.:
if (Ops.IsStop("LoadX", "LoadY",$"NozzleR{curNozzle.NozzleIndex}") || GlobalVar.VirtualAxis)
{
//当放料到tray盘区域时并且周转再盘已经没有要下料的穴位时通知周转模组可以运动了
if(curNozzle.ToType!= TurnoverType.Turnover && TurnoverTrayManager.Instance.GetSlots(ETurnoverTraySlotType.Tested, ETurnoverTraySlotStatus.Have).Count()==0)
if(XYIsInTargetPos(targetX, targetY))
{
LogHelper.Debug("通知周转模组可以运动");
TurnoverFlow.Instance.CanMoveFromTestTrayToTurnoverTray();
//当放料到tray盘区域时并且周转再盘已经没有要下料的穴位时通知周转模组可以运动了
if (curNozzle.ToType != TurnoverType.Turnover && TurnoverTrayManager.Instance.GetSlots(ETurnoverTraySlotType.Tested, ETurnoverTraySlotStatus.Have).Count() == 0)
{
LogHelper.Debug("通知周转模组可以运动");
TurnoverFlow.Instance.CanMoveFromTestTrayToTurnoverTray();
}
logInfo = GetClassName() + $"排料吸嘴{curNozzle.NozzleIndex}号已运动到{WitchTrayWitchSlot(curNozzle.ToType, curNozzle.ToIndex)}放料位上方";
MessageQueue.Instance.Insert(logInfo);
flowStep = EDischargeFlowStep.;
}
else
{
flowStep = EDischargeFlowStep.;
}
logInfo = GetClassName()+$"排料吸嘴{curNozzle.NozzleIndex}号已运动到{WitchTrayWitchSlot(curNozzle.ToType,curNozzle.ToIndex)}放料位上方";
MessageQueue.Instance.Insert(logInfo);
flowStep = EDischargeFlowStep.;
}
break;
case EDischargeFlowStep.:
@ -1366,46 +1400,53 @@ namespace Rs.MotionPlat.Flow
case EDischargeFlowStep.:
if (Ops.IsStop($"NozzleZ{curNozzle.NozzleIndex}") || GlobalVar.VirtualAxis)
{
logInfo = GetClassName()+ $"排料吸嘴{curNozzle.NozzleIndex}号已运动到{WitchTrayWitchSlot(curNozzle.ToType, curNozzle.ToIndex)}放料位下方";
MessageQueue.Instance.Insert(logInfo);
if (curNozzle.ToType == TurnoverType.Turnover)
if(XYIsInTargetPos(targetX,targetY))
{
/*关闭排料吸嘴真空吸*/
//logInfo = GetClassName() + $"关闭{curNozzle.NozzleIndex}号排料吸嘴真空吸";
//MessageQueue.Instance.Insert(logInfo);
//Ops.Off($"{curNozzle.NozzleIndex}号吸嘴真空吸电磁阀");//关闭真空
//Thread.Sleep(GlobalVar.LoadNozzleCloseVacSuctionDelaytime);
VacManager.DischargeVacSuction(EVacOperator.Close, true, curNozzle.NozzleIndex);
/*打开排料吸嘴真空破*/
//logInfo = GetClassName() + $"打开{curNozzle.NozzleIndex}号排料吸嘴真空破";
//MessageQueue.Instance.Insert(logInfo);
//Ops.On($"{curNozzle.NozzleIndex}号吸嘴真空破电磁阀");
//Thread.Sleep(GlobalVar.LoadNozzleOpenVacBreakDelaytime);
VacManager.DischargeVacBreak(EVacOperator.Open, true,curNozzle.NozzleIndex);
flowStep = EDischargeFlowStep.;
logInfo = GetClassName() + $"排料吸嘴{curNozzle.NozzleIndex}号已运动到{WitchTrayWitchSlot(curNozzle.ToType, curNozzle.ToIndex)}放料位下方";
MessageQueue.Instance.Insert(logInfo);
if (curNozzle.ToType == TurnoverType.Turnover)
{
/*关闭排料吸嘴真空吸*/
//logInfo = GetClassName() + $"关闭{curNozzle.NozzleIndex}号排料吸嘴真空吸";
//MessageQueue.Instance.Insert(logInfo);
//Ops.Off($"{curNozzle.NozzleIndex}号吸嘴真空吸电磁阀");//关闭真空
//Thread.Sleep(GlobalVar.LoadNozzleCloseVacSuctionDelaytime);
VacManager.DischargeVacSuction(EVacOperator.Close, true, curNozzle.NozzleIndex);
/*打开排料吸嘴真空破*/
//logInfo = GetClassName() + $"打开{curNozzle.NozzleIndex}号排料吸嘴真空破";
//MessageQueue.Instance.Insert(logInfo);
//Ops.On($"{curNozzle.NozzleIndex}号吸嘴真空破电磁阀");
//Thread.Sleep(GlobalVar.LoadNozzleOpenVacBreakDelaytime);
VacManager.DischargeVacBreak(EVacOperator.Open, true, curNozzle.NozzleIndex);
flowStep = EDischargeFlowStep.;
}
else
{
GlobalTray.DischargeNozzle.ChangeStatus(curNozzle.NozzleIndex, ESlotStatus.NotHave);
/*关闭排料吸嘴真空吸*/
//logInfo = GetClassName() + $"关闭{curNozzle.NozzleIndex}号排料吸嘴真空吸";
//MessageQueue.Instance.Insert(logInfo);
//Ops.Off($"{curNozzle.NozzleIndex}号吸嘴真空吸电磁阀");
//Thread.Sleep(GlobalVar.LoadNozzleCloseVacSuctionDelaytime);
VacManager.DischargeVacSuction(EVacOperator.Close, true, curNozzle.NozzleIndex);
/*打开排料吸嘴真空破*/
//logInfo = GetClassName() + $"打开{curNozzle.NozzleIndex}号排料吸嘴真空破";
//MessageQueue.Instance.Insert(logInfo);
//Ops.On($"{curNozzle.NozzleIndex}号吸嘴真空破电磁阀");
//Thread.Sleep(GlobalVar.LoadNozzleOpenVacBreakDelaytime);
VacManager.DischargeVacBreak(EVacOperator.Open, true, curNozzle.NozzleIndex);
/*关闭排料吸嘴真空破*/
//logInfo = GetClassName() + $"关闭{curNozzle.NozzleIndex}号排料吸嘴真空破";
//MessageQueue.Instance.Insert(logInfo);
//Ops.Off($"{curNozzle.NozzleIndex}号吸嘴真空破电磁阀");
//Thread.Sleep(GlobalVar.LoadNozzleCloseVacBreakDelaytime);
VacManager.DischargeVacBreak(EVacOperator.Close, false, curNozzle.NozzleIndex);
flowStep = EDischargeFlowStep.;
}
}
else
{
GlobalTray.DischargeNozzle.ChangeStatus(curNozzle.NozzleIndex, ESlotStatus.NotHave);
/*关闭排料吸嘴真空吸*/
//logInfo = GetClassName() + $"关闭{curNozzle.NozzleIndex}号排料吸嘴真空吸";
//MessageQueue.Instance.Insert(logInfo);
//Ops.Off($"{curNozzle.NozzleIndex}号吸嘴真空吸电磁阀");
//Thread.Sleep(GlobalVar.LoadNozzleCloseVacSuctionDelaytime);
VacManager.DischargeVacSuction(EVacOperator.Close, true, curNozzle.NozzleIndex);
/*打开排料吸嘴真空破*/
//logInfo = GetClassName() + $"打开{curNozzle.NozzleIndex}号排料吸嘴真空破";
//MessageQueue.Instance.Insert(logInfo);
//Ops.On($"{curNozzle.NozzleIndex}号吸嘴真空破电磁阀");
//Thread.Sleep(GlobalVar.LoadNozzleOpenVacBreakDelaytime);
VacManager.DischargeVacBreak(EVacOperator.Open,true, curNozzle.NozzleIndex);
/*关闭排料吸嘴真空破*/
//logInfo = GetClassName() + $"关闭{curNozzle.NozzleIndex}号排料吸嘴真空破";
//MessageQueue.Instance.Insert(logInfo);
//Ops.Off($"{curNozzle.NozzleIndex}号吸嘴真空破电磁阀");
//Thread.Sleep(GlobalVar.LoadNozzleCloseVacBreakDelaytime);
VacManager.DischargeVacBreak(EVacOperator.Close,false, curNozzle.NozzleIndex);
flowStep = EDischargeFlowStep.;
flowStep = EDischargeFlowStep.;
}
}
break;
@ -2248,6 +2289,23 @@ namespace Rs.MotionPlat.Flow
flowStep = EDischargeFlowStep.;
}
/// <summary>
/// 检测XY是否在目标位置上
/// </summary>
/// <param name="xTargetPos"></param>
/// <param name="yTargetPos"></param>
/// <returns></returns>
private bool XYIsInTargetPos(double xTargetPos, double yTargetPos)
{
double xCurPos = Ops.GetCurPosition(AxisControl.LoadX);
double yCurPos = Ops.GetCurPosition(AxisControl.LoadY);
if (Math.Abs(xTargetPos - xCurPos) < 1 && Math.Abs(yTargetPos - yCurPos) < 1)
{
return true;
}
return false;
}
}
}

@ -140,7 +140,7 @@ namespace Rs.MotionPlat.Flow
//List<int> slots = new List<int>();
List<int> ngList = new List<int>();
ETurnoverFlowStep Step = ETurnoverFlowStep.;
double targetPos = 0.0;
//double targetPos = 0.0;
Motion.ErrorCode errCode = Motion.ErrorCode.Ok;
List<TransitNozzle> hasProductNozzles = new List<TransitNozzle>();
/// <summary>
@ -159,6 +159,10 @@ namespace Rs.MotionPlat.Flow
bool bTakeFlag = false;
bool hasUnloadFlag = false;
int turnoverTrayToTestTrayNum = 1;
double targetTurnoverX = 0.0;
double targetTurnoverY = 0.0;
double targetTurnoverZ = 0.0;
double targetPressZ = 0.0;
/// <summary>
/// 可以下料到周转盘
/// </summary>
@ -211,12 +215,12 @@ namespace Rs.MotionPlat.Flow
case ETurnoverFlowStep.:
if(CanGoTurnoverTrayPos())
{
targetPos = SysConfigParam.GetValue<double>("TurnoverTakeX");
errCode = AxisControl.TurnoverX.MovePos(targetPos, GlobalVar.WholeSpeed);
targetTurnoverX = SysConfigParam.GetValue<double>("TurnoverTakeX");
errCode = AxisControl.TurnoverX.MovePos(targetTurnoverX, GlobalVar.WholeSpeed);
if (errCode == Motion.ErrorCode.Ok || GlobalVar.VirtualAxis)
{
targetPos = SysConfigParam.GetValue<double>("TurnoverTakeY");
errCode = AxisControl.TurnoverY.MovePos(targetPos, GlobalVar.WholeSpeed);
targetTurnoverY = SysConfigParam.GetValue<double>("TurnoverTakeY");
errCode = AxisControl.TurnoverY.MovePos(targetTurnoverY, GlobalVar.WholeSpeed);
if (errCode == Motion.ErrorCode.Ok || GlobalVar.VirtualAxis)
{
if (GlobalVar.VirtualAxis)
@ -245,7 +249,8 @@ namespace Rs.MotionPlat.Flow
case ETurnoverFlowStep.:
if (Ops.IsStop(AxisControl.TurnoverX,AxisControl.TurnoverY) || GlobalVar.VirtualAxis)
{
if(Ops.IsArrived(AxisControl.TurnoverX, AxisControl.TurnoverY) || GlobalVar.VirtualAxis)
//if(Ops.IsArrived(AxisControl.TurnoverX, AxisControl.TurnoverY) || GlobalVar.VirtualAxis)
if(TurnoverXYIsInTargetPos(targetTurnoverX,targetTurnoverY))
{
logInfo = GetClassName() + $"已运动到周转盘取料位上方";
MessageQueue.Instance.Insert(logInfo);
@ -261,6 +266,10 @@ namespace Rs.MotionPlat.Flow
Step = ETurnoverFlowStep.;
}
}
else
{
Step = ETurnoverFlowStep.;
}
}
break;
case ETurnoverFlowStep.:
@ -337,13 +346,13 @@ namespace Rs.MotionPlat.Flow
case ETurnoverFlowStep.1:
if(GlobalVar.EnableTwoSpeed)
{
targetPos = SysConfigParam.GetValue<double>("TurnoverTakeZ") + GlobalVar.PressLowSpeedOffset;
targetTurnoverZ = SysConfigParam.GetValue<double>("TurnoverTakeZ") + GlobalVar.PressLowSpeedOffset;
}
else
{
targetPos = SysConfigParam.GetValue<double>("TurnoverTakeZ");
targetTurnoverZ = SysConfigParam.GetValue<double>("TurnoverTakeZ");
}
errCode = AxisControl.TurnoverZ.MovePos(targetPos, GlobalVar.WholeSpeed);
errCode = AxisControl.TurnoverZ.MovePos(targetTurnoverZ, GlobalVar.WholeSpeed);
if (errCode == Motion.ErrorCode.Ok || GlobalVar.VirtualAxis)
{
undealTasks = LoadAndUnloadTask.Instance.GetTurnoverToTestTasks(ETaskDealStatus.Undeal);
@ -366,14 +375,21 @@ namespace Rs.MotionPlat.Flow
case ETurnoverFlowStep.1:
if (Ops.IsStop(AxisControl.TurnoverZ) || GlobalVar.VirtualAxis)
{
logInfo = GetClassName()+ $"已运动到周转盘下方取料位1 TurnoverZ at:{Ops.GetCurPosition(AxisAlias.TurnoverZ)}";
MessageQueue.Instance.Insert(logInfo);
Step = ETurnoverFlowStep.2;
if(TurnoverXYIsInTargetPos(targetTurnoverX,targetTurnoverY))
{
logInfo = GetClassName() + $"已运动到周转盘下方取料位1 TurnoverZ at:{Ops.GetCurPosition(AxisAlias.TurnoverZ)}";
MessageQueue.Instance.Insert(logInfo);
Step = ETurnoverFlowStep.2;
}
else
{
Step = ETurnoverFlowStep.;
}
}
break;
case ETurnoverFlowStep.2:
targetPos = SysConfigParam.GetValue<double>("TurnoverTakeZ");
errCode = AxisControl.TurnoverZ.MovePos(targetPos, GlobalVar.PressLowSpeed);
targetTurnoverZ = SysConfigParam.GetValue<double>("TurnoverTakeZ");
errCode = AxisControl.TurnoverZ.MovePos(targetTurnoverZ, GlobalVar.PressLowSpeed);
if (errCode == Motion.ErrorCode.Ok || GlobalVar.VirtualAxis)
{
if (GlobalVar.VirtualAxis)
@ -392,7 +408,8 @@ namespace Rs.MotionPlat.Flow
case ETurnoverFlowStep.2:
if (Ops.IsStop(AxisControl.TurnoverZ) || GlobalVar.VirtualAxis)
{
if(Ops.IsArrived(AxisControl.TurnoverZ) || GlobalVar.VirtualAxis)
//if(Ops.IsArrived(AxisControl.TurnoverZ) || GlobalVar.VirtualAxis)
if (TurnoverXYIsInTargetPos(targetTurnoverX, targetTurnoverY))
{
logInfo = GetClassName() + $"已运动到周转盘下方取料位2 TurnoverZ at:{Ops.GetCurPosition(AxisAlias.TurnoverZ)}";
MessageQueue.Instance.Insert(logInfo);
@ -403,18 +420,22 @@ namespace Rs.MotionPlat.Flow
VacManager.TurnoverTrayVacBreak(EVacOperator.Open, true, undealTasks.Select(t => t.FromIndex + 1).ToArray());
Step = ETurnoverFlowStep.;
}
else
{
Step = ETurnoverFlowStep.;
}
}
break;
case ETurnoverFlowStep.:
if(GlobalVar.EnableTwoSpeed)
{
targetPos = SysConfigParam.GetValue<double>("TurnoverTakeZ") + GlobalVar.CloseVacOffsetHeight;
errCode = AxisControl.TurnoverZ.MovePos(targetPos, GlobalVar.PressLowSpeed);
targetTurnoverZ = SysConfigParam.GetValue<double>("TurnoverTakeZ") + GlobalVar.CloseVacOffsetHeight;
errCode = AxisControl.TurnoverZ.MovePos(targetTurnoverZ, GlobalVar.PressLowSpeed);
}
else
{
targetPos = SysConfigParam.GetValue<double>("TurnoverSafeZ");
errCode = AxisControl.TurnoverZ.MovePos(targetPos, GlobalVar.WholeSpeed);
targetTurnoverZ = SysConfigParam.GetValue<double>("TurnoverSafeZ");
errCode = AxisControl.TurnoverZ.MovePos(targetTurnoverZ, GlobalVar.WholeSpeed);
}
if (errCode == Motion.ErrorCode.Ok || GlobalVar.VirtualAxis)
@ -444,8 +465,8 @@ namespace Rs.MotionPlat.Flow
}
break;
case ETurnoverFlowStep.:
targetPos = SysConfigParam.GetValue<double>("TurnoverSafeZ");
errCode = AxisControl.TurnoverZ.MovePos(targetPos, GlobalVar.WholeSpeed);
targetTurnoverZ = SysConfigParam.GetValue<double>("TurnoverSafeZ");
errCode = AxisControl.TurnoverZ.MovePos(targetTurnoverZ, GlobalVar.WholeSpeed);
if(errCode == Motion.ErrorCode.Ok || GlobalVar.VirtualAxis)
{
if (GlobalVar.VirtualAxis)
@ -511,12 +532,12 @@ namespace Rs.MotionPlat.Flow
}
break;
case ETurnoverFlowStep.:
targetPos = SysConfigParam.GetValue<double>("PressDumpX");
errCode = AxisControl.TurnoverX.MovePos(targetPos, GlobalVar.WholeSpeed);
targetTurnoverX = SysConfigParam.GetValue<double>("PressDumpX");
errCode = AxisControl.TurnoverX.MovePos(targetTurnoverX, GlobalVar.WholeSpeed);
if (errCode == Motion.ErrorCode.Ok || GlobalVar.VirtualAxis)
{
targetPos = SysConfigParam.GetValue<double>("PressDumpY");
errCode = AxisControl.TurnoverY.MovePos(targetPos, GlobalVar.WholeSpeed);
targetTurnoverY = SysConfigParam.GetValue<double>("PressDumpY");
errCode = AxisControl.TurnoverY.MovePos(targetTurnoverY, GlobalVar.WholeSpeed);
if (errCode == Motion.ErrorCode.Ok || GlobalVar.VirtualAxis)
{
if (GlobalVar.VirtualAxis)
@ -545,8 +566,10 @@ namespace Rs.MotionPlat.Flow
case ETurnoverFlowStep.:
if (Ops.IsStop(AxisControl.TurnoverX,AxisControl.TurnoverY) || GlobalVar.VirtualAxis)
{
if(Ops.IsArrived(AxisControl.TurnoverX, AxisControl.TurnoverY) || GlobalVar.VirtualAxis)
//if(Ops.IsArrived(AxisControl.TurnoverX, AxisControl.TurnoverY) || GlobalVar.VirtualAxis)
if(TurnoverXYIsInTargetPos(targetTurnoverX,targetTurnoverY))
{
LogHelper.Debug(GetClassName()+ $"turnoverxy in target curx={Ops.GetCurPosition(AxisControl.TurnoverX)}, x={targetTurnoverX},cury={Ops.GetCurPosition(AxisControl.TurnoverY)},y={targetTurnoverY}");
if (turnoverTrayToTestTrayNum == 1)
{
testTrayHasProductCheckEvent.WaitOne();
@ -613,6 +636,10 @@ namespace Rs.MotionPlat.Flow
}
Step = ETurnoverFlowStep.;
}
else
{
Step = ETurnoverFlowStep.;
}
}
break;
case ETurnoverFlowStep.:
@ -701,45 +728,59 @@ namespace Rs.MotionPlat.Flow
break;
case ETurnoverFlowStep.1:
if(GlobalVar.EnableTwoSpeed)
if(TurnoverXYIsInTargetPos(targetTurnoverX,targetTurnoverY))
{
targetPos = SysConfigParam.GetValue<double>("PressDumpZ") + GlobalVar.PressLowSpeedOffset;
}
else
{
targetPos = SysConfigParam.GetValue<double>("PressDumpZ");
}
errCode = AxisControl.TurnoverZ.MovePos(targetPos, GlobalVar.WholeSpeed);
if(errCode == Motion.ErrorCode.Ok || GlobalVar.VirtualAxis )
{
//获取需要放料的吸嘴
hasProductNozzles = TransitNozzleManager.Instance.GetHasProductNozzles();
/*打开测试穴位真空吸*/
VacManager.TestTrayVacSuction(EVacOperator.Open,false, hasProductNozzles.Select(n => n.NozzleIndex).ToArray());
if (GlobalVar.VirtualAxis)
if (GlobalVar.EnableTwoSpeed)
{
Thread.Sleep(GlobalVar.VirtualAxisMoveTime);
targetTurnoverZ = SysConfigParam.GetValue<double>("PressDumpZ") + GlobalVar.PressLowSpeedOffset;
}
else
{
targetTurnoverZ = SysConfigParam.GetValue<double>("PressDumpZ");
}
errCode = AxisControl.TurnoverZ.MovePos(targetTurnoverZ, GlobalVar.WholeSpeed);
if (errCode == Motion.ErrorCode.Ok || GlobalVar.VirtualAxis)
{
//获取需要放料的吸嘴
hasProductNozzles = TransitNozzleManager.Instance.GetHasProductNozzles();
/*打开测试穴位真空吸*/
VacManager.TestTrayVacSuction(EVacOperator.Open, false, hasProductNozzles.Select(n => n.NozzleIndex).ToArray());
if (GlobalVar.VirtualAxis)
{
Thread.Sleep(GlobalVar.VirtualAxisMoveTime);
}
logInfo = GetClassName() + $"到测试放料位下方1";
MessageQueue.Instance.Insert(logInfo);
Step = ETurnoverFlowStep.1;
}
else
{
MsgBox.ShowAxisAlarmDialog(AxisControl.TurnoverZ, errCode);
}
logInfo = GetClassName()+$"到测试放料位下方1";
MessageQueue.Instance.Insert(logInfo);
Step = ETurnoverFlowStep.1;
}
else
{
MsgBox.ShowAxisAlarmDialog(AxisControl.TurnoverZ, errCode);
Step = ETurnoverFlowStep.;
}
break;
case ETurnoverFlowStep.1:
if (Ops.IsStop(AxisControl.TurnoverZ) || GlobalVar.VirtualAxis)
{
logInfo =GetClassName()+ $"已运动到到测试放料位下方1 TurnoverZ at:{Ops.GetCurPosition(AxisAlias.TurnoverZ)}";
MessageQueue.Instance.Insert(logInfo);
Step = ETurnoverFlowStep.2;
if(TurnoverXYIsInTargetPos(targetTurnoverX,targetTurnoverY))
{
logInfo = GetClassName() + $"已运动到到测试放料位下方1 TurnoverZ at:{Ops.GetCurPosition(AxisAlias.TurnoverZ)}";
MessageQueue.Instance.Insert(logInfo);
Step = ETurnoverFlowStep.2;
}
else
{
Step = ETurnoverFlowStep.;
}
}
break;
case ETurnoverFlowStep.2:
targetPos = SysConfigParam.GetValue<double>("PressDumpZ");
errCode = AxisControl.TurnoverZ.MovePos(targetPos, GlobalVar.PressLowSpeed);
targetTurnoverZ = SysConfigParam.GetValue<double>("PressDumpZ");
errCode = AxisControl.TurnoverZ.MovePos(targetTurnoverZ, GlobalVar.PressLowSpeed);
if (errCode == Motion.ErrorCode.Ok || GlobalVar.VirtualAxis )
{
if (GlobalVar.VirtualAxis)
@ -758,7 +799,8 @@ namespace Rs.MotionPlat.Flow
case ETurnoverFlowStep.2:
if (Ops.IsStop(AxisControl.TurnoverZ) || GlobalVar.VirtualAxis)
{
if(Ops.IsArrived(AxisControl.TurnoverZ) || GlobalVar.VirtualAxis)
//if(Ops.IsArrived(AxisControl.TurnoverZ) || GlobalVar.VirtualAxis)
if (TurnoverXYIsInTargetPos(targetTurnoverX, targetTurnoverY))
{
//获取需要放料的吸嘴
hasProductNozzles = TransitNozzleManager.Instance.GetHasProductNozzles();
@ -777,18 +819,22 @@ namespace Rs.MotionPlat.Flow
//TransitNozzleManager.Instance.Transi
Step = ETurnoverFlowStep.1;
}
else
{
Step = ETurnoverFlowStep.;
}
}
break;
case ETurnoverFlowStep.1:
if(GlobalVar.EnableTwoSpeed)
{
targetPos = SysConfigParam.GetValue<double>("PressDumpZ") + GlobalVar.PressLowSpeedOffset;
targetTurnoverZ = SysConfigParam.GetValue<double>("PressDumpZ") + GlobalVar.PressLowSpeedOffset;
}
else
{
targetPos = SysConfigParam.GetValue<double>("PressSafeZ");
targetTurnoverZ = SysConfigParam.GetValue<double>("PressSafeZ");
}
errCode = AxisControl.TurnoverZ.MovePos(targetPos, GlobalVar.WholeSpeed);
errCode = AxisControl.TurnoverZ.MovePos(targetTurnoverZ, GlobalVar.WholeSpeed);
if(errCode == Motion.ErrorCode.Ok || GlobalVar.VirtualAxis)
{
if (GlobalVar.VirtualAxis)
@ -821,8 +867,8 @@ namespace Rs.MotionPlat.Flow
}
break;
case ETurnoverFlowStep.2:
targetPos = SysConfigParam.GetValue<double>("PressSafeZ");
errCode = AxisControl.TurnoverZ.MovePos(targetPos, GlobalVar.WholeSpeed);
targetTurnoverZ = SysConfigParam.GetValue<double>("PressSafeZ");
errCode = AxisControl.TurnoverZ.MovePos(targetTurnoverZ, GlobalVar.WholeSpeed);
if (errCode == Motion.ErrorCode.Ok || GlobalVar.VirtualAxis)
{
if (GlobalVar.VirtualAxis)
@ -1037,12 +1083,12 @@ namespace Rs.MotionPlat.Flow
break;
case ETurnoverFlowStep.:
targetPos = SysConfigParam.GetValue<double>("PressDumpX");
errCode = AxisControl.TurnoverX.MovePos(targetPos, GlobalVar.WholeSpeed);
targetTurnoverX = SysConfigParam.GetValue<double>("PressDumpX");
errCode = AxisControl.TurnoverX.MovePos(targetTurnoverX, GlobalVar.WholeSpeed);
if(errCode== Motion.ErrorCode.Ok|| GlobalVar.VirtualAxis)
{
targetPos = SysConfigParam.GetValue<double>("PressY");
errCode = AxisControl.TurnoverY.MovePos(targetPos, GlobalVar.WholeSpeed);
targetTurnoverY = SysConfigParam.GetValue<double>("PressY");
errCode = AxisControl.TurnoverY.MovePos(targetTurnoverY, GlobalVar.WholeSpeed);
if (errCode == Motion.ErrorCode.Ok || GlobalVar.VirtualAxis)
{
turnoverTrayToTestTrayNum = 1;
@ -1067,7 +1113,8 @@ namespace Rs.MotionPlat.Flow
case ETurnoverFlowStep.:
if (Ops.IsStop(AxisControl.TurnoverX, AxisControl.TurnoverY) || GlobalVar.VirtualAxis)
{
if(Ops.IsArrived(AxisControl.TurnoverX, AxisControl.TurnoverY) || GlobalVar.VirtualAxis)
//if(Ops.IsArrived(AxisControl.TurnoverX, AxisControl.TurnoverY) || GlobalVar.VirtualAxis)
if(TurnoverXYIsInTargetPos(targetTurnoverX,targetTurnoverY))
{
if (TestTrayManager.Instance.GetSlots(ETestTraySlotStatus.Have).Count > 0)
{
@ -1082,55 +1129,80 @@ namespace Rs.MotionPlat.Flow
Step = ETurnoverFlowStep.;
}
}
else
{
Step = ETurnoverFlowStep.;
}
}
break;
case ETurnoverFlowStep.1:
targetPos = SysConfigParam.GetValue<double>("PressZ");
if (GlobalVar.EnableTwoSpeed)
{
targetPos = targetPos + SysConfigParam.GetValue<double>("PressLowSpeedOffset");
}
errCode = AxisControl.PressZ.MovePos(targetPos, GlobalVar.WholeSpeed);
if(errCode == Motion.ErrorCode.Ok || GlobalVar.VirtualAxis )
if(TurnoverXYIsInTargetPos(targetTurnoverX,targetTurnoverY))
{
if (GlobalVar.VirtualAxis)
targetPressZ = SysConfigParam.GetValue<double>("PressZ");
if (GlobalVar.EnableTwoSpeed)
{
Thread.Sleep(GlobalVar.VirtualAxisMoveTime);
targetPressZ = targetPressZ + SysConfigParam.GetValue<double>("PressLowSpeedOffset");
}
errCode = AxisControl.PressZ.MovePos(targetPressZ, GlobalVar.WholeSpeed);
if (errCode == Motion.ErrorCode.Ok || GlobalVar.VirtualAxis)
{
if (GlobalVar.VirtualAxis)
{
Thread.Sleep(GlobalVar.VirtualAxisMoveTime);
}
logInfo = GetClassName() + $"到测试保压位下方1";
MessageQueue.Instance.Insert(logInfo);
Step = ETurnoverFlowStep.1;
}
else
{
MsgBox.ShowAxisAlarmDialog(AxisControl.PressZ, errCode);
}
logInfo = GetClassName() + $"到测试保压位下方1";
MessageQueue.Instance.Insert(logInfo);
Step = ETurnoverFlowStep.1;
}
else
{
MsgBox.ShowAxisAlarmDialog(AxisControl.PressZ, errCode);
Step = ETurnoverFlowStep.;
}
break;
case ETurnoverFlowStep.1:
if (Ops.IsStop(AxisControl.PressZ) || GlobalVar.VirtualAxis)
{
logInfo = GetClassName() + $"已到测试保压位下方1 PressZ at:{Ops.GetCurPosition(AxisAlias.PressZ)}";
MessageQueue.Instance.Insert(logInfo);
Step = ETurnoverFlowStep.2;
if (TurnoverXYIsInTargetPos(targetTurnoverX, targetTurnoverY))
{
logInfo = GetClassName() + $"已到测试保压位下方1 PressZ at:{Ops.GetCurPosition(AxisAlias.PressZ)}";
MessageQueue.Instance.Insert(logInfo);
Step = ETurnoverFlowStep.2;
}
else
{
Step = ETurnoverFlowStep.;
}
}
break;
case ETurnoverFlowStep.2:
targetPos = SysConfigParam.GetValue<double>("PressZ");
errCode = AxisControl.PressZ.MovePos(targetPos, GlobalVar.PressLowSpeed);
if (errCode == Motion.ErrorCode.Ok || GlobalVar.VirtualAxis)
if (TurnoverXYIsInTargetPos(targetTurnoverX, targetTurnoverY))
{
if (GlobalVar.VirtualAxis)
targetPressZ = SysConfigParam.GetValue<double>("PressZ");
errCode = AxisControl.PressZ.MovePos(targetPressZ, GlobalVar.PressLowSpeed);
if (errCode == Motion.ErrorCode.Ok || GlobalVar.VirtualAxis)
{
Thread.Sleep(GlobalVar.VirtualAxisMoveTime);
if (GlobalVar.VirtualAxis)
{
Thread.Sleep(GlobalVar.VirtualAxisMoveTime);
}
logInfo = GetClassName() + $"到测试保压位下方2";
MessageQueue.Instance.Insert(logInfo);
Step = ETurnoverFlowStep.2;
}
else
{
MsgBox.ShowAxisAlarmDialog(AxisControl.PressZ, errCode);
}
logInfo = GetClassName() + $"到测试保压位下方2";
MessageQueue.Instance.Insert(logInfo);
Step = ETurnoverFlowStep.2;
}
else
{
MsgBox.ShowAxisAlarmDialog(AxisControl.PressZ, errCode);
Step = ETurnoverFlowStep.;
}
break;
case ETurnoverFlowStep.2:
@ -1138,6 +1210,7 @@ namespace Rs.MotionPlat.Flow
{
Thread.Sleep(100);
//if(Ops.IsArrived(AxisControl.PressZ) || GlobalVar.VirtualAxis)
if(TurnoverXYIsInTargetPos(targetTurnoverX,targetTurnoverY))
{
logInfo = GetClassName() + $"已到测试保压位下方2 PressZ at:{Ops.GetCurPosition(AxisAlias.PressZ)}";
MessageQueue.Instance.Insert(logInfo);
@ -1146,6 +1219,10 @@ namespace Rs.MotionPlat.Flow
VacManager.TestTrayVacSuction(EVacOperator.Close, false, willTestSlot.Select(s => s.Index).ToArray());
Step = ETurnoverFlowStep.;
}
else
{
Step = ETurnoverFlowStep.;
}
}
break;
case ETurnoverFlowStep.:
@ -1179,7 +1256,7 @@ namespace Rs.MotionPlat.Flow
case ETurnoverFlowStep.:
double curPos = Ops.GetCurPosition(AxisAlias.PressZ);
if(Math.Abs(curPos-targetPos)<0.1)
if(Math.Abs(curPos- SysConfigParam.GetValue<double>("PressSafeZ")) <1)
{
Step = ETurnoverFlowStep.;
}
@ -1187,13 +1264,13 @@ namespace Rs.MotionPlat.Flow
{
if (GlobalVar.EnableTwoSpeed)
{
targetPos = SysConfigParam.GetValue<double>("PressZ") + GlobalVar.PressLowSpeedOffset;
errCode = AxisControl.PressZ.MovePos(targetPos, GlobalVar.PressLowSpeed);
targetPressZ = SysConfigParam.GetValue<double>("PressZ") + GlobalVar.PressLowSpeedOffset;
errCode = AxisControl.PressZ.MovePos(targetPressZ, GlobalVar.PressLowSpeed);
}
else
{
targetPos = SysConfigParam.GetValue<double>("PressSafeZ");
errCode = AxisControl.PressZ.MovePos(targetPos, GlobalVar.WholeSpeed);
targetPressZ = SysConfigParam.GetValue<double>("PressSafeZ");
errCode = AxisControl.PressZ.MovePos(targetPressZ, GlobalVar.WholeSpeed);
}
if (errCode == Motion.ErrorCode.Ok || GlobalVar.VirtualAxis)
{
@ -1220,8 +1297,8 @@ namespace Rs.MotionPlat.Flow
}
break;
case ETurnoverFlowStep.:
targetPos = SysConfigParam.GetValue<double>("PressSafeZ");
errCode = AxisControl.PressZ.MovePos(targetPos, GlobalVar.WholeSpeed);
targetPressZ = SysConfigParam.GetValue<double>("PressSafeZ");
errCode = AxisControl.PressZ.MovePos(targetPressZ, GlobalVar.WholeSpeed);
if(errCode == Motion.ErrorCode.Ok || GlobalVar.VirtualAxis)
{
if (GlobalVar.VirtualAxis)
@ -1294,12 +1371,12 @@ namespace Rs.MotionPlat.Flow
//-----------------------------------------------测试位下料---------------------------------------------------------------------------------------------------------
case ETurnoverFlowStep.:
targetPos = SysConfigParam.GetValue<double>("PressTakeX");
errCode = AxisControl.TurnoverX.MovePos(targetPos, GlobalVar.WholeSpeed);
targetTurnoverX = SysConfigParam.GetValue<double>("PressTakeX");
errCode = AxisControl.TurnoverX.MovePos(targetTurnoverX, GlobalVar.WholeSpeed);
if (errCode == Motion.ErrorCode.Ok || GlobalVar.VirtualAxis)
{
targetPos = SysConfigParam.GetValue<double>("PressTakeY");
errCode = AxisControl.TurnoverY.MovePos(targetPos, GlobalVar.WholeSpeed);
targetTurnoverY = SysConfigParam.GetValue<double>("PressTakeY");
errCode = AxisControl.TurnoverY.MovePos(targetTurnoverY, GlobalVar.WholeSpeed);
if (errCode == Motion.ErrorCode.Ok || GlobalVar.VirtualAxis)
{
if (GlobalVar.VirtualAxis)
@ -1323,7 +1400,8 @@ namespace Rs.MotionPlat.Flow
case ETurnoverFlowStep.:
if (Ops.IsStop(AxisControl.TurnoverX, AxisControl.TurnoverY) || GlobalVar.VirtualAxis)
{
if(Ops.IsArrived(AxisControl.TurnoverX, AxisControl.TurnoverY) || GlobalVar.VirtualAxis)
//if(Ops.IsArrived(AxisControl.TurnoverX, AxisControl.TurnoverY) || GlobalVar.VirtualAxis)
if(TurnoverXYIsInTargetPos(targetTurnoverX,targetTurnoverY))
{
logInfo = GetClassName() + $"已运动到测试取料位上方 TurnoverY at:{Ops.GetCurPosition(AxisAlias.TurnoverY)}";
MessageQueue.Instance.Insert(logInfo);
@ -1340,6 +1418,10 @@ namespace Rs.MotionPlat.Flow
Step = ETurnoverFlowStep.;
}
}
else
{
Step = ETurnoverFlowStep.;
}
}
break;
case ETurnoverFlowStep.:
@ -1418,12 +1500,12 @@ namespace Rs.MotionPlat.Flow
}
break;
case ETurnoverFlowStep.1:
targetPos = SysConfigParam.GetValue<double>("PressTakeZ");
targetTurnoverZ = SysConfigParam.GetValue<double>("PressTakeZ");
if (GlobalVar.EnableTwoSpeed)
{
targetPos = targetPos + GlobalVar.PressLowSpeedOffset;
targetTurnoverZ = targetTurnoverZ + GlobalVar.PressLowSpeedOffset;
}
errCode = AxisControl.TurnoverZ.MovePos(targetPos, GlobalVar.WholeSpeed);
errCode = AxisControl.TurnoverZ.MovePos(targetTurnoverZ, GlobalVar.WholeSpeed);
if (errCode == Motion.ErrorCode.Ok || GlobalVar.VirtualAxis)
{
undealTasks = LoadAndUnloadTask.Instance.GetTestToTurnoverTasks(ETaskDealStatus.Undeal);
@ -1445,14 +1527,21 @@ namespace Rs.MotionPlat.Flow
case ETurnoverFlowStep.1:
if (Ops.IsStop(AxisControl.TurnoverZ) || GlobalVar.VirtualAxis)
{
logInfo = GetClassName()+ $"已运动到到测试取料位下方1";
MessageQueue.Instance.Insert(logInfo);
Step = ETurnoverFlowStep.2;
if(TurnoverXYIsInTargetPos(targetTurnoverX,targetTurnoverY))
{
logInfo = GetClassName() + $"已运动到到测试取料位下方1";
MessageQueue.Instance.Insert(logInfo);
Step = ETurnoverFlowStep.2;
}
else
{
Step = ETurnoverFlowStep.;
}
}
break;
case ETurnoverFlowStep.2:
targetPos = SysConfigParam.GetValue<double>("PressTakeZ");
errCode = AxisControl.TurnoverZ.MovePos(targetPos, GlobalVar.PressLowSpeed);
targetTurnoverZ = SysConfigParam.GetValue<double>("PressTakeZ");
errCode = AxisControl.TurnoverZ.MovePos(targetTurnoverZ, GlobalVar.PressLowSpeed);
if(errCode == Motion.ErrorCode.Ok || GlobalVar.VirtualAxis)
{
if (GlobalVar.VirtualAxis)
@ -1472,7 +1561,8 @@ namespace Rs.MotionPlat.Flow
case ETurnoverFlowStep.2:
if (Ops.IsStop(AxisControl.TurnoverZ) || GlobalVar.VirtualAxis)
{
if(Ops.IsArrived(AxisControl.TurnoverZ) || GlobalVar.VirtualAxis)
//if(Ops.IsArrived(AxisControl.TurnoverZ) || GlobalVar.VirtualAxis)
if(TurnoverXYIsInTargetPos(targetTurnoverX,targetTurnoverY))
{
logInfo = GetClassName() + $"已运动到测试取料位下方2 TurnoverZ at:{Ops.GetCurPosition("TurnoverZ")}";
MessageQueue.Instance.Insert(logInfo);
@ -1486,18 +1576,22 @@ namespace Rs.MotionPlat.Flow
VacManager.TestTrayVacBreak(EVacOperator.Open, true, undealTasks.Select(t => t.FromIndex + 1).ToArray());
Step = ETurnoverFlowStep.;
}
else
{
Step = ETurnoverFlowStep.;
}
}
break;
case ETurnoverFlowStep.:
if(GlobalVar.EnableTwoSpeed)
{
targetPos = SysConfigParam.GetValue<double>("PressTakeZ") + GlobalVar.PressLowSpeedOffset;
errCode = AxisControl.TurnoverZ.MovePos(targetPos, GlobalVar.PressLowSpeed);
targetTurnoverZ = SysConfigParam.GetValue<double>("PressTakeZ") + GlobalVar.PressLowSpeedOffset;
errCode = AxisControl.TurnoverZ.MovePos(targetTurnoverZ, GlobalVar.PressLowSpeed);
}
else
{
targetPos = SysConfigParam.GetValue<double>("PressSafeZ");
errCode = AxisControl.TurnoverZ.MovePos(targetPos, GlobalVar.WholeSpeed);
targetTurnoverZ = SysConfigParam.GetValue<double>("PressSafeZ");
errCode = AxisControl.TurnoverZ.MovePos(targetTurnoverZ, GlobalVar.WholeSpeed);
}
if (errCode == Motion.ErrorCode.Ok || GlobalVar.VirtualAxis)
@ -1527,8 +1621,8 @@ namespace Rs.MotionPlat.Flow
}
break;
case ETurnoverFlowStep.:
targetPos = SysConfigParam.GetValue<double>("PressSafeZ");
errCode = AxisControl.TurnoverZ.MovePos(targetPos, GlobalVar.WholeSpeed);
targetTurnoverZ = SysConfigParam.GetValue<double>("PressSafeZ");
errCode = AxisControl.TurnoverZ.MovePos(targetTurnoverZ, GlobalVar.WholeSpeed);
if(errCode== Motion.ErrorCode.Ok || GlobalVar.VirtualAxis)
{
if (GlobalVar.VirtualAxis)
@ -1626,12 +1720,12 @@ namespace Rs.MotionPlat.Flow
case ETurnoverFlowStep.:
if (CanGoTurnoverTrayPos())
{
targetPos = SysConfigParam.GetValue<double>("TurnoverDumpX");
errCode = AxisControl.TurnoverX.MovePos(targetPos, GlobalVar.WholeSpeed);
targetTurnoverX = SysConfigParam.GetValue<double>("TurnoverDumpX");
errCode = AxisControl.TurnoverX.MovePos(targetTurnoverX, GlobalVar.WholeSpeed);
if (errCode == Motion.ErrorCode.Ok || GlobalVar.VirtualAxis)
{
targetPos = SysConfigParam.GetValue<double>("TurnoverDumpY");
errCode = AxisControl.TurnoverY.MovePos(targetPos, GlobalVar.WholeSpeed);
targetTurnoverY = SysConfigParam.GetValue<double>("TurnoverDumpY");
errCode = AxisControl.TurnoverY.MovePos(targetTurnoverY, GlobalVar.WholeSpeed);
if (errCode == Motion.ErrorCode.Ok || GlobalVar.VirtualAxis)
{
if (GlobalVar.VirtualAxis)
@ -1661,12 +1755,17 @@ namespace Rs.MotionPlat.Flow
case ETurnoverFlowStep.:
if (Ops.IsStop(AxisControl.TurnoverX, AxisControl.TurnoverY) || GlobalVar.VirtualAxis)
{
if(Ops.IsArrived(AxisControl.TurnoverX, AxisControl.TurnoverY) || GlobalVar.VirtualAxis)
//if(Ops.IsArrived(AxisControl.TurnoverX, AxisControl.TurnoverY) || GlobalVar.VirtualAxis)
if(TurnoverXYIsInTargetPos(targetTurnoverX,targetTurnoverY))
{
logInfo = GetClassName() + $"已运动到周转盘放料位上方";
MessageQueue.Instance.Insert(logInfo);
Step = ETurnoverFlowStep.;
}
else
{
Step = ETurnoverFlowStep.;
}
}
break;
case ETurnoverFlowStep.:
@ -1749,13 +1848,13 @@ namespace Rs.MotionPlat.Flow
case ETurnoverFlowStep.1:
if(GlobalVar.EnableTwoSpeed)
{
targetPos = SysConfigParam.GetValue<double>("TurnoverTakeZ") + GlobalVar.PressLowSpeedOffset;
targetTurnoverZ = SysConfigParam.GetValue<double>("TurnoverTakeZ") + GlobalVar.PressLowSpeedOffset;
}
else
{
targetPos = SysConfigParam.GetValue<double>("TurnoverTakeZ");
targetTurnoverZ = SysConfigParam.GetValue<double>("TurnoverTakeZ");
}
errCode = AxisControl.TurnoverZ.MovePos(targetPos+1, GlobalVar.WholeSpeed);
errCode = AxisControl.TurnoverZ.MovePos(targetTurnoverZ + 1, GlobalVar.WholeSpeed);
if(errCode == Motion.ErrorCode.Ok || GlobalVar.VirtualAxis)
{
hasProductNozzles = TransitNozzleManager.Instance.GetHasProductNozzles();
@ -1777,15 +1876,22 @@ namespace Rs.MotionPlat.Flow
case ETurnoverFlowStep.1:
if (Ops.IsStop(AxisControl.TurnoverZ) || GlobalVar.VirtualAxis)
{
logInfo = GetClassName() + $"已运动到周转盘放料位下方1";
MessageQueue.Instance.Insert(logInfo);
Step = ETurnoverFlowStep.2;
if(TurnoverXYIsInTargetPos(targetTurnoverX,targetTurnoverY))
{
logInfo = GetClassName() + $"已运动到周转盘放料位下方1";
MessageQueue.Instance.Insert(logInfo);
Step = ETurnoverFlowStep.2;
}
else
{
Step = ETurnoverFlowStep.;
}
}
break;
case ETurnoverFlowStep.2:
targetPos = SysConfigParam.GetValue<double>("TurnoverTakeZ");
errCode = AxisControl.TurnoverZ.MovePos(targetPos, GlobalVar.PressLowSpeed);
targetTurnoverZ = SysConfigParam.GetValue<double>("TurnoverTakeZ");
errCode = AxisControl.TurnoverZ.MovePos(targetTurnoverZ, GlobalVar.PressLowSpeed);
if (errCode == Motion.ErrorCode.Ok || GlobalVar.VirtualAxis)
{
if (GlobalVar.VirtualAxis)
@ -1804,7 +1910,8 @@ namespace Rs.MotionPlat.Flow
case ETurnoverFlowStep.2:
if (Ops.IsStop(AxisControl.TurnoverZ) || GlobalVar.VirtualAxis)
{
if(Ops.IsArrived(AxisControl.TurnoverZ) || GlobalVar.VirtualAxis)
//if(Ops.IsArrived(AxisControl.TurnoverZ) || GlobalVar.VirtualAxis)
if(TurnoverXYIsInTargetPos(targetTurnoverX,targetTurnoverY))
{
foreach (TransitNozzle nozzle in hasProductNozzles)
{
@ -1822,20 +1929,23 @@ namespace Rs.MotionPlat.Flow
VacManager.TransitNozzleVacBreak(EVacOperator.Close, true, hasProductNozzles.Select(n => n.FromIndex + 1).ToArray());
Step = ETurnoverFlowStep.1;
}
else
{
Step = ETurnoverFlowStep.;
}
}
break;
case ETurnoverFlowStep.1:
if(GlobalVar.EnableTwoSpeed)
{
targetPos = SysConfigParam.GetValue<double>("TurnoverTakeZ") + GlobalVar.PressLowSpeedOffset;
errCode = AxisControl.TurnoverZ.MovePos(targetPos, GlobalVar.PressLowSpeed);
targetTurnoverZ = SysConfigParam.GetValue<double>("TurnoverTakeZ") + GlobalVar.PressLowSpeedOffset;
errCode = AxisControl.TurnoverZ.MovePos(targetTurnoverZ, GlobalVar.PressLowSpeed);
}
else
{
targetPos = SysConfigParam.GetValue<double>("TurnoverSafeZ");
errCode = AxisControl.TurnoverZ.MovePos(targetPos, GlobalVar.WholeSpeed);
targetTurnoverZ = SysConfigParam.GetValue<double>("TurnoverSafeZ");
errCode = AxisControl.TurnoverZ.MovePos(targetTurnoverZ, GlobalVar.WholeSpeed);
}
if(errCode == Motion.ErrorCode.Ok || GlobalVar.VirtualAxis)
@ -1865,8 +1975,8 @@ namespace Rs.MotionPlat.Flow
}
break;
case ETurnoverFlowStep.2:
targetPos = SysConfigParam.GetValue<double>("TurnoverSafeZ");
errCode = AxisControl.TurnoverZ.MovePos(targetPos, GlobalVar.WholeSpeed);
targetTurnoverZ = SysConfigParam.GetValue<double>("TurnoverSafeZ");
errCode = AxisControl.TurnoverZ.MovePos(targetTurnoverZ, GlobalVar.WholeSpeed);
if (errCode == Motion.ErrorCode.Ok || GlobalVar.VirtualAxis)
{
if (GlobalVar.VirtualAxis)
@ -2124,12 +2234,12 @@ namespace Rs.MotionPlat.Flow
}
else
{
targetPos = SysConfigParam.GetValue<double>("PressTakeX");
errCode = AxisControl.TurnoverX.MovePos(targetPos, GlobalVar.WholeSpeed);
targetTurnoverX = SysConfigParam.GetValue<double>("PressTakeX");
errCode = AxisControl.TurnoverX.MovePos(targetTurnoverX, GlobalVar.WholeSpeed);
if (errCode == Motion.ErrorCode.Ok || GlobalVar.VirtualAxis)
{
targetPos = SysConfigParam.GetValue<double>("PressTakeY");
errCode = AxisControl.TurnoverY.MovePos(targetPos, GlobalVar.WholeSpeed);
targetTurnoverY = SysConfigParam.GetValue<double>("PressTakeY");
errCode = AxisControl.TurnoverY.MovePos(targetTurnoverY, GlobalVar.WholeSpeed);
if (errCode == Motion.ErrorCode.Ok || GlobalVar.VirtualAxis)
{
if (GlobalVar.VirtualAxis)
@ -2241,5 +2351,22 @@ namespace Rs.MotionPlat.Flow
testTrayHasProductCheckEvent.Set();
});
}
/// <summary>
/// 检测XY是否在目标位置上
/// </summary>
/// <param name="xTargetPos"></param>
/// <param name="yTargetPos"></param>
/// <returns></returns>
private bool TurnoverXYIsInTargetPos(double xTargetPos, double yTargetPos)
{
double xCurPos = Ops.GetCurPosition(AxisControl.TurnoverX);
double yCurPos = Ops.GetCurPosition(AxisControl.TurnoverY);
if (Math.Abs(xTargetPos - xCurPos) <1 && Math.Abs(yTargetPos - yCurPos) < 1)
{
return true;
}
return false;
}
}
}

@ -31,6 +31,6 @@ using System.Runtime.InteropServices;
//
//可以指定所有这些值,也可以使用“生成号”和“修订号”的默认值
//通过使用 "*",如下所示:
[assembly: AssemblyVersion("2.20.24.24")]
[assembly: AssemblyVersion("2.20.24.25")]
//[assembly: AssemblyVersion("1.0.0.0")]
//[assembly: AssemblyFileVersion("1.0.0.0")]

Loading…
Cancel
Save