Untitled
unknown
plain_text
a year ago
11 kB
8
Indexable
//------------------------------------- 200 Place ------------------------------------------------------- //--- ET_MotionState._0210_MoveToPlacePositionSpl: ------------------------------------------------------ ET_MotionState._0210_MoveToPlacePositionSpl: IF fbTimerPick.Q OR (iq_stRobotModule_Ad.stApplication.xVacuumActive AND iq_stRobotModule_Ad.stApplication.xVacuumSensor) THEN AddMotionStateToAPL(i_sMessage:= '_0210_MoveToPlacePositionSpl'); xStartTimerPick := FALSE; SetRobotExecute(i_xExecute := FALSE); iq_stRobotModule_Ad.stApplication.xBlow := FALSE;//Thang iq_stRobotModule_Ad.stApplication.xVacuum := TRUE;// Lat IF iq_stRobotModule_Ad.stApplication.xRobotStart THEN // Intelligent Tracking IF ((iPlacePos > 0) OR (iNextPossiblePlacePos > 0 AND iq_stRobotModule_Ad.stApplication.xIntelligentTracking)) OR iq_stRobotModule_Ad.stApplication.xPlace THEN // OutfeedBelt active ------------------------------------------------------------------------------------------- IF iq_stRobotModule_Ad.stTracking.xOutFeedBeltActive THEN // Intelligent Tracking IF iq_stRobotModule_Ad.stApplication.xIntelligentTracking THEN IF iPlacePos > 0 THEN iPlacePos_tmp := iPlacePos; xFlagIntTrack := FALSE; ELSE iPlacePos_tmp := iNextPossiblePlacePos; xFlagIntTrack := TRUE; END_IF ELSE iPlacePos_tmp := iPlacePos; END_IF //Spline XYDistance aendern //iq_stRobotModule_Ad.stApplication.lrXYDistanceStartToObstacle; //iq_stRobotModule_Ad.stApplication.lrXYDistanceEndToObstacle; SetMotionParameterPlace(); // Path Number = 210 _0210_MoveToPlacePositionSpl( i_xChangeCOS := TRUE, //i_udiToolId:= i_udiToolId := iq_stRobotModule_Ad.stTool.udiCurrentToolId, i_etCoordinateSystem := iq_etOutfeedBelt, i_lrStartOffsetBT := iq_stRobotModule_Ad.stMechanicPos.lrLinearMovementPick, i_lrEndOffsetBT := -iq_stRobotModule_Ad.stMechanicPos.lrLinearMovementPlace); IF iq_stRobotModule_Ad.stApplication.xAuxAx1 THEN // Rotate only if AuxAx1 configured _2000_RotateAuxAx1( i_udiMovementId := ET_MotionState._0210_MoveToPlacePositionSpl+c_udiRotationOffset, i_udiStartSegmentId := ET_MotionState._0210_MoveToPlacePositionSpl, i_udiEndSegmentId := ET_MotionState._0210_MoveToPlacePositionSpl, i_lrTarget := -93.37, // iq_astPlacePositions[iPlacePos_tmp].lrRotation, i_lrStartOffset := iq_stRobotModule_Ad.stMechanicPos.lrLinearMovementPick, i_lrEndOffset := -iq_stRobotModule_Ad.stMechanicPos.lrLinearMovementPlace); END_IF IF iq_stRobotModule_Ad.stApplication.xAuxAx2 THEN // Rotate only if AuxAx2 configured _3000_RotateAuxAx2( i_udiMovementId := ET_MotionState._0210_MoveToPlacePositionSpl+c_udiTiltingOffset, i_udiStartSegmentId := ET_MotionState._0210_MoveToPlacePositionSpl, i_udiEndSegmentId := ET_MotionState._0210_MoveToPlacePositionSpl, i_lrTarget := iq_astPlacePositions[iPlacePos_tmp].lrTilting, i_lrStartOffset := iq_stRobotModule_Ad.stMechanicPos.lrLinearMovementPick, i_lrEndOffset := -iq_stRobotModule_Ad.stMechanicPos.lrLinearMovementPlace); END_IF IF iq_stRobotModule_Ad.stTracking.xOutfeedBelt_XDirection THEN stPlaceForMaxSyncPos.lrX := iq_astPlacePositions[iPlacePos_tmp].lrActPos; ELSE stPlaceForMaxSyncPos.lrY := iq_astPlacePositions[iPlacePos_tmp].lrActPos; END_IF // Set Stop Pos SetPathStop(i_udiStopSegmentId := ET_MotionState._0210_MoveToPlacePositionSpl, i_lrStopOffset := -iq_stRobotModule_Ad.stMechanicPos.lrLinearMovementPlace); IF xSuccess THEN SetRobotExecute(i_xExecute := TRUE); // Intelligent Tracking IF iq_stRobotModule_Ad.stApplication.xIntelligentTracking THEN etMotionState := ET_MotionState._0212_IntelligentTracking; ELSE etMotionState := ET_MotionState._0215_ResetStopOnPath; END_IF AddLastTargetToAPL(); END_IF ELSE // OutfeedBelt NOT active --------------------------------------------------------------------------------------- iPlacePos_tmp := 0; //Spline XYDistance aendern //iq_stRobotModule_Ad.stApplication.lrXYDistanceStartToObstacle; //iq_stRobotModule_Ad.stApplication.lrXYDistanceEndToObstacle; SetMotionParameterPlace(); // Path Number = 210 _0210_MoveToPlacePositionSpl( i_xChangeCOS := TRUE, i_udiToolId := iq_stRobotModule_Ad.stTool.udiCurrentToolId, i_etCoordinateSystem := ROB.ET_CoordinateSystem.CSR, i_lrStartOffsetBT := iq_stRobotModule_Ad.stMechanicPos.lrLinearMovementPick, i_lrEndOffsetBT := -iq_stRobotModule_Ad.stMechanicPos.lrLinearMovementPlace); IF iq_stRobotModule_Ad.stApplication.xAuxAx1 THEN // Rotate only if AuxAx1 configured _2000_RotateAuxAx1( i_udiMovementId := ET_MotionState._0210_MoveToPlacePositionSpl+c_udiRotationOffset, i_udiStartSegmentId := ET_MotionState._0210_MoveToPlacePositionSpl, i_udiEndSegmentId := ET_MotionState._0210_MoveToPlacePositionSpl, i_lrTarget := iq_stRobotModule_Ad.stMechanicPos.stPlacePos.stOrientation.lrZ, i_lrStartOffset := iq_stRobotModule_Ad.stMechanicPos.lrLinearMovementPick, i_lrEndOffset := -iq_stRobotModule_Ad.stMechanicPos.lrLinearMovementPlace); END_IF IF iq_stRobotModule_Ad.stApplication.xAuxAx2 THEN // Rotate only if AuxAx2 configured _3000_RotateAuxAx2( i_udiMovementId := ET_MotionState._0210_MoveToPlacePositionSpl+c_udiTiltingOffset, i_udiStartSegmentId := ET_MotionState._0210_MoveToPlacePositionSpl, i_udiEndSegmentId := ET_MotionState._0210_MoveToPlacePositionSpl, i_lrTarget := iq_stRobotModule_Ad.stMechanicPos.stPlacePos.stOrientation.lrX, i_lrStartOffset := iq_stRobotModule_Ad.stMechanicPos.lrLinearMovementPick, i_lrEndOffset := -iq_stRobotModule_Ad.stMechanicPos.lrLinearMovementPlace); END_IF // Set Stop Pos SetPathStop(i_udiStopSegmentId := ET_MotionState._0210_MoveToPlacePositionSpl, i_lrStopOffset := -iq_stRobotModule_Ad.stMechanicPos.lrLinearMovementPlace); IF xSuccess THEN SetRobotExecute(i_xExecute := TRUE); etMotionState := ET_MotionState._0215_ResetStopOnPath; AddLastTargetToAPL(); END_IF END_IF ELSE //Place position available, move to wait //Spline XYDistance aendern //iq_stRobotModule_Ad.stApplication.lrXYDistanceStartToObstacle; //iq_stRobotModule_Ad.stApplication.lrXYDistanceEndToObstacle; SetMotionParameterPlace(); // Path Number = 211 _0211_MoveToWaitPosHalfSpl( i_xChangeCOS := TRUE, i_etCoordinateSystem := ROB.ET_CoordinateSystem.CSR, i_lrStartOffsetBT := iq_stRobotModule_Ad.stMechanicPos.lrLinearMovementPick, i_lrEndOffsetBT := 0.0); IF iq_stRobotModule_Ad.stApplication.xAuxAx1 THEN // Rotate only if AuxAx1 configured _2000_RotateAuxAx1( i_udiMovementId := ET_MotionState._0211_MoveToWaitPosHalfSpl+c_udiRotationOffset, i_udiStartSegmentId := ET_MotionState._0211_MoveToWaitPosHalfSpl, i_udiEndSegmentId := ET_MotionState._0211_MoveToWaitPosHalfSpl, i_lrTarget := iq_stRobotModule_Ad.stMechanicPos.stPlacePos.stOrientation.lrZ, i_lrStartOffset := iq_stRobotModule_Ad.stMechanicPos.lrLinearMovementPick, i_lrEndOffset := 0.0); END_IF IF iq_stRobotModule_Ad.stApplication.xAuxAx2 THEN // Rotate only if AuxAx2 configured _3000_RotateAuxAx2( i_udiMovementId := ET_MotionState._0210_MoveToPlacePositionSpl+c_udiTiltingOffset, i_udiStartSegmentId := ET_MotionState._0210_MoveToPlacePositionSpl, i_udiEndSegmentId := ET_MotionState._0210_MoveToPlacePositionSpl, i_lrTarget := iq_stRobotModule_Ad.stMechanicPos.stPlacePos.stOrientation.lrX, i_lrStartOffset := iq_stRobotModule_Ad.stMechanicPos.lrLinearMovementPick, i_lrEndOffset := 0.0); END_IF IF xSuccess THEN SetRobotExecute(i_xExecute := TRUE); etMotionState := ET_MotionState._0221_WaitMoveToPlacePosHalfSpl; AddLastTargetToAPL(); END_IF END_IF ELSE // Roboter Stop "End of Cycle" //Spline XYDistance aendern //iq_stRobotModule_Ad.stApplication.lrXYDistanceStartToObstacle; //iq_stRobotModule_Ad.stApplication.lrXYDistanceEndToObstacle; SetMotionParameterPlace(); _1005_MoveToWaitPosSpl( i_xChangeCOS := TRUE, i_etCoordinateSystem := ROB.ET_CoordinateSystem.CSR, i_lrStartOffsetBT := 0.0, i_lrEndOffsetBT := 0.0); IF iq_stRobotModule_Ad.stApplication.xAuxAx1 THEN // Rotate only if AuxAx1 configured _2000_RotateAuxAx1( i_udiMovementId := ET_MotionState._1005_MoveToWaitPosSpl+c_udiRotationOffset, i_udiStartSegmentId := ET_MotionState._1005_MoveToWaitPosSpl, i_udiEndSegmentId := ET_MotionState._1005_MoveToWaitPosSpl, i_lrTarget := iq_stRobotModule_Ad.stMechanicPos.stPickPos.stOrientation.lrZ, i_lrStartOffset := iq_stRobotModule_Ad.stMechanicPos.lrLinearMovementPlace, i_lrEndOffset := 0.0); END_IF IF iq_stRobotModule_Ad.stApplication.xAuxAx2 THEN // Rotate only if AuxAx2 configured _3000_RotateAuxAx2( i_udiMovementId := ET_MotionState._1005_MoveToWaitPosSpl+c_udiTiltingOffset, i_udiStartSegmentId := ET_MotionState._1005_MoveToWaitPosSpl, i_udiEndSegmentId := ET_MotionState._1005_MoveToWaitPosSpl, i_lrTarget := iq_stRobotModule_Ad.stMechanicPos.stPickPos.stOrientation.lrX, i_lrStartOffset := iq_stRobotModule_Ad.stMechanicPos.lrLinearMovementPlace, i_lrEndOffset := 0.0); END_IF IF xSuccess THEN SetRobotExecute(i_xExecute := TRUE); etMotionState := ET_MotionState._0000_Wait; AddMotionStateToAPL(i_sMessage:='Stop_End_Of_Cycle'); AddLastTargetToAPL(); END_IF END_IF END_IF
Editor is loading...
Leave a Comment