添加一个方法直接移动X到安全位,一个方法直接移动Y1到治具侧

master
lhiven 10 months ago
parent 64bdbbb783
commit 31cbfc905f

@ -130,6 +130,96 @@ namespace Rs.MotionPlat.Flow.SafePosFlow
//taskFinishedEvent.WaitOne();
}
/// <summary>
/// 移动X到安全位
/// </summary>
public void MoveXToSafe()
{
bool arrivedSafePos = false;
EDischargeModuleGoSafePosFlowStep moveXStep = EDischargeModuleGoSafePosFlowStep.;
//判断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))
{
while (true && !arrivedSafePos)
{
switch (moveXStep)
{
case EDischargeModuleGoSafePosFlowStep.:
targetPos.X = GlobalVar.FixtureSafePosX;
targetPos.Y1 = Ops.GetCurPosition(AxisControl.LoadY1);
targetPos.Y2 = Ops.GetCurPosition(AxisControl.LoadY2);
if (GroupAxisMove.XY1Y2MovePos(targetPos, GlobalVar.WholeSpeed))
{
AxisPosPrint.PrintXY1Y2TargetPos("到安全位,", targetPos, GetClassName());
if (GlobalVar.VirtualAxis)
{
Thread.Sleep(GlobalVar.VirtualAxisMoveTime);
}
moveXStep = EDischargeModuleGoSafePosFlowStep.;
}
break;
case EDischargeModuleGoSafePosFlowStep.:
if (Ops.IsStop("LoadX", "LoadY1", "LoadY2") || GlobalVar.VirtualAxis)
{
AxisPosPrint.PrintXY1Y2CurrentPos("已运动到安全位,", GetClassName());
arrivedSafePos = true;
}
break;
default:
break;
}
Thread.Sleep(10);
}
}
}
/// <summary>
/// 移动Y1到治具侧
/// </summary>
public void MoveY1ToFixtureSide(double targetLoadX)
{
bool arrivedSafePos = false;
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))
{
while (true && !arrivedSafePos)
{
switch (moveY1Step)
{
case EDischargeModuleGoSafePosFlowStep.:
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());
if (GlobalVar.VirtualAxis)
{
Thread.Sleep(GlobalVar.VirtualAxisMoveTime);
}
moveY1Step = EDischargeModuleGoSafePosFlowStep.;
}
break;
case EDischargeModuleGoSafePosFlowStep.:
if (Ops.IsStop("LoadX", "LoadY1", "LoadY2") || GlobalVar.VirtualAxis)
{
AxisPosPrint.PrintXY1Y2CurrentPos("已运动到安全位,", GetClassName());
arrivedSafePos = true;
}
break;
default:
break;
}
Thread.Sleep(10);
}
}
}
/// <summary>
/// 判断是否在安全位
/// </summary>

Loading…
Cancel
Save