|
|
|
@ -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>
|
|
|
|
|