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); + } + } + } + /// /// 判断是否在安全位 ///