Circular moves can be programmed using absolute or relative positions using the following function blocks:
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 the following examples, two circular moves will be performed. The first move is an absolute circular move that goes from (0, 0) to (90, 90). CircMode specifies that the aux point (0, 180) will be crossed during the paths start to end. The second move is a relative circular move whose end point is (90, 90) from the end of the first move. In this move, CircMode specifies that the aux point (0, 90) is the relative center of the circle. The BufferMode input is set to 'Buffered', meaning this move will wait for the first move to complete before it begins executing.
To perform an Absolute Circular Move:
Call MC_MoveCircAbs (Execute, AxesGroup, CircMode, AuxPoint[], EndPoint[], PathChoice, Velocity, Acceleration, Deceleration, JerkIn physics, jerk is the rate of change of acceleration; more precisely, the derivative of acceleration with respect to time, CoordSystem, BufferMode, TransitionMode, TransitionParameter).
In this example, PosCircAuxAbs[0] and PosCircEndAbs[0] represent the x-axis. PosCircAuxAbs[1] and PosCircEndAbs[1] represent the y-axis.
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, MC_CIRC_MODE_BORDER, PosCircAuxAbs, PosCircEndAbs, MC_CIRC_PATHCHOICE_CLOCKWISE, MaxVel, MaxAcc, MaxDec, 0, MC_COORDINATE_SYSTEM_ACS, MC_BUFFER_MODE_BUFFERED, MC_TRANSITION_MODE_NONE, TransParam);
In the example a circular move will be performed on axis group 'Group1_ref'.
To perform a Relative Circular Move:
Call MC_MoveCircRel (Execute, AxesGroup, CircMode, AuxPoint[], EndPoint[], PathChoice, Velocity, Acceleration, Deceleration, Jerk, CoordSystem, BufferMode, TransitionMode, TransitionParameter).
In this example, PosCircAuxRel[0] and PosCircEndRel[0] represent the x-axis. PosCircAuxRel[1] and PosCircEndRel[1] represent the y-axis.
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, MC_CIRC_MODE_CENTER, PosCircAuxRel, PosCircEndRel, MC_CIRC_PATHCHOICE_CLOCKWISE, MaxVel, MaxAcc, MaxDec, 0, MC_COORDINATE_SYSTEM_ACS, MC_BUFFER_MODE_BUFFERED, MC_TRANSITION_MODE_NONE, TransParam);
In the example all the variables have the same meaning as the circular absolute example except:
|
Copyright © 2015 Kollmorgen™ |
|