For information on the latest version, please have a look at GL013301.
amove_periodic (Auto Mode)
As an asynchronous move_periodic(), this function operates the same way as move_periodic()
except that it executes the next line immediately after the motion starts, without waiting for termination.
A new motion command generated before the previous one ends must be separated by mwait() for safety.
This command performs a cyclic motion based on the sine function of each axis (parallel or rotation)
in the specified reference coordinate (eMoveReference).
The attributes of the motion (amplitude, period, acceleration/deceleration time, and total repetitions)
are defined by the respective input parameters.
Definition
DRFLEx.h within class CDRFLEx, public section (line 809)
bool amove_periodic(float fAmplitude[NUM_TASK],
float fPeriodic[NUM_TASK],
float fAccelTime,
unsigned int nRepeat,
MOVE_REFERENCE eMoveReference = MOVE_REFERENCE_TOOL) {
return _amove_periodic(_rbtCtrl, fAmplitude, fPeriodic, fAccelTime, nRepeat, eMoveReference);
};
Parameter
Parameter Name |
Data Type |
Default Value |
Range |
Description |
|---|---|---|---|---|
fAmplitude |
float[6] |
≥ 0 |
Amplitude (motion between -fAmplitude and +fAmplitude) [mm] or [deg] |
|
fPeriodic |
float[6] |
≥ 0 |
Period (time for one cycle) [sec] |
|
fAccelTime |
float |
≥ 0 |
Acceleration/Deceleration time [sec] |
|
nRepeat |
unsigned char |
> 0 |
Repetition count |
|
eMoveReference |
|
Refer to the Definition of Enumeration Type |
Note
fAmplitudedefines the amplitude for each axis (x, y, z, rx, ry, rz). Axes with no periodic motion must have an amplitude of0.fPeriodicdefines the time to complete one full motion cycle for each axis. Each value corresponds to the same order as the axes (x, y, z, rx, ry, rz).fAccelTimespecifies the acceleration/deceleration time at both the beginning and end of the periodic motion. The maximum of (period * 1/4) is applied. Errors occur if acceleration/deceleration time exceeds ½ of the total motion time.nRepeatdetermines how many full cycles are repeated. The axis with the largest period determines total motion time.If the motion ends normally, the remaining axes may stop before the reference axis terminates to maintain return to the start position. If not, the deceleration path may slightly deviate.
eMoveReferencespecifies whether the periodic motion is executed in TOOL or BASE coordinates.To adjust excessive velocity, use:
velocity = Amplitude(fAmplitude) * 2 * π(3.14) / Period(fPeriodic)
e.g., Max velocity = 62.83 mm/s if amp=10 mm, period=1 sThis function does not support online blending between previous and next motions.
Return
Value |
Description |
|---|---|
0 |
Error |
1 |
Success |
Example
// Repeats the X-axis (10 mm amplitude, 1 sec period) motion and
// Y-axis rotation (0.5 deg amplitude, 1 sec period), repeated 5 times.
// Sets the Digital Output channel 1 after 1 second.
float fAmplitude[NUM_TASK] = {10, 0, 0, 0, 0.5, 0};
float fPeriod[NUM_TASK] = {1, 1, 1, 1, 1, 1};
drfl.amove_periodic(fAmplitude, fPeriod, 0.5, 5, MOVE_REFERENCE_TOOL);
Sleep(1000);
drfl.set_digital_output(GPIO_CTRLBOX_DIGITAL_INDEX_1, 1);
drfl.mwait();
This example generates a sinusoidal periodic motion on X and rotation-Y axes within the TOOL coordinate frame. After 1 second, Digital Output 1 is triggered while the robot continues its periodic trajectory.