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.

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. 
  • 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.