Perform a Circular Move
Circular moves can be programmed using absolute or relative positions using the following function blocks:
- MC_MoveCircAbs which commands interpolated circular movement on an axes group to the specified absolute positions.
- MC_MoveCircRel which commands interpolated circular movement on an axes group to the specified relative positions.
Prior to performing any coordinated moves, some setup is needed.
- See Create a Linear or Circular Coordinated Motion Application.
- Once these steps have been performed, a circular move can be performed.
In these examples, two circular moves are performed:
Absolute Circular Move
In this move, an absolute circular move goes from (0, 0) to (90, 90).
- CircMode specifies that the aux point (0, 180) is crossed during the paths start to end.
- Call MC_MoveCircAbs.
PosCircAuxAbs[0] := 0; // A point on the circle that is crossed on the
PosCircAuxAbs[1] := 180; // path from start to end point.
PosCircEndAbs[0] := 90; // Absolute end point.
PosCircEndAbs[1] := 90;
Inst_MC_MoveCircAbs(TRUE, Group1_ref, CIRC_MODE_BORDER, PosCircAuxAbs, PosCircEndAbs, CIRC_PATH_CLKWISE, MaxVel, MaxAcc, MaxDec, 0, CS_ACS, BM_BUFFERED, TM_NONE, TransParam);
In the example, a circular move is performed on axis group Group1_ref.
- CircMode is defined as CIRC_MODE_BORDER.
- This mode indicates that the AuxPoint array input indicates a point on the circle which is crossed on the path from the starting point to the end point.
- See Circular Moves Diagrams about CircMode movement options.
- The AuxPoint array, PosCircAuxAbs, defines an absolute point on the circle which is crossed on the path from the starting point to the end point.
- The contents of this array are determined by the CircMode variable CIRC_MODE_BORDER.
- The EndPoint array, PosCircEndAbs, contains the absolute end point for each axis in the group.
- The absolute end point of the axis stored in position 0 (IdentInGroup) of the group is 90.0.
- The absolute end point of the axis stored in position 1 of the group is 90.0.
- PathChoice is only relevant when CircMode is set to CIRC_MODE_CENTER.
- In this case, this parameter is not used.
- The maximum velocity is specified by variable MaxVel and is specified in User unit/sec.
- The maximum acceleration and deceleration are specified by variables MaxAcc and MaxDec and are specified in User unit/sec2.
- The maximum jerk is not supported and can be set to a value of 0.
- The coordinate system is ACS.
- The BufferMode is set to BM_BUFFERED, indicating the move is buffered.
- See Buffer Modes.
- The TransitionMode is set to TM_NONE, indicating no transition mode is used.
- The TransParam array is required.
- The contents can be set to 0 because the transition mode is not being used.
- The TransParam array is a 2-element array containing the corner distance and velocity for the transition.
Relative Circular Move
This is a relative circular move whose end point is (90, 90) from the end of the first move.
- CircMode specifies that the aux point (0, 90) is the relative center of the circle.
- The BufferMode input is set to Buffered; this move waits for the first move to complete before it begins executing.
- Call MC_MoveCircRel.
PosCircAuxRel[0] := 0; // Relative center of the circle.
PosCircAuxRel[1] := 90;
PosCircEndRel[0] := 90; // Relative end point.
PosCircEndRel[1] := 90; // Start pt 90,90 + rel 90,90 -> 180,180 absolute end pt
Inst_MC_MoveCircRel(TRUE, Group1_ref, CIRC_MODE_CENTER, PosCircAuxRel, PosCircEndRel, CIRC_PATH_CLKWISE, MaxVel, MaxAcc, MaxDec, 0, CS_ACS, BM_BUFFERED, TM_NONE, TransParam);
In the example, all the variables have the same meaning as the circular absolute example except:
- CircMode is defined as CIRC_MODE_CENTER.
- This mode indicates that the AuxPoint array input indicates the center point of the circle.
- See Circular Moves Diagrams about CircMode movement options.
- The AuxPoint array, PosCircAuxRel, defines the relative center point of the circle.
- The contents of this array are determined by the CircMode variable, CIRC_MODE_CENTER.
- The EndPoint array, PosCircEndRel, contains the relative end point for each axis in the group.
- The relative end point of the axis stored in position 0 (IdentInGroup) of the group is 90.0.
- The relative end point of the axis stored in position 1 of the group will be 90.0.
- PathChoice is relevant when CircMode is set to CIRC_MODE_CENTER.
- In this case, PathChoice is CIRC_PATH_CLKWISE which specifies the direction of the path.