diff --git a/Rs.DeweyTester/Flow/SafePosFlow/DischargeModuleGoSafePosFlow.cs b/Rs.DeweyTester/Flow/SafePosFlow/DischargeModuleGoSafePosFlow.cs
index 62a4ad4..615fc5f 100644
--- a/Rs.DeweyTester/Flow/SafePosFlow/DischargeModuleGoSafePosFlow.cs
+++ b/Rs.DeweyTester/Flow/SafePosFlow/DischargeModuleGoSafePosFlow.cs
@@ -130,6 +130,96 @@ namespace Rs.MotionPlat.Flow.SafePosFlow
//taskFinishedEvent.WaitOne();
}
+ ///
+ /// 移动X到安全位
+ ///
+ 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);
+ }
+ }
+ }
+
+ ///
+ /// 移动Y1到治具侧
+ ///
+ 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);
+ }
+ }
+ }
+
///
/// 判断是否在安全位
///