amoveb (Auto Mode)

As an asynchronous moveb, this function operates the same as the moveb function except for the asynchronous process, and executes the next line immediately after motion starts without waiting for its termination.

A new motion command generated before the current asynchronous motion ends (for example, terminated by amovesj()) may cause an error for safety reasons. Therefore, the termination of the amoveb() motion must be confirmed using the mwait() function between amoveb() and the next motion command before the new motion is executed.

Definition
DRFLEx.h within class CDRFLEx, public section (line 788)

bool amoveb(MOVE_POSB tTargetPos[MAX_MOVEB_POINT],
            unsigned char nPosCount,
            float fTargetVel[2],
            float fTargetAcc[2],
            float fTargetTime = 0.f,
            MOVE_MODE eMoveMode = MOVE_MODE_ABSOLUTE,
            MOVE_REFERENCE eMoveReference = MOVE_REFERENCE_BASE,
            DR_MV_APP eAppType = DR_MV_APP_NONE) {
    return _amoveb(_rbtCtrl, tTargetPos, nPosCount, fTargetVel, fTargetAcc,
                   fTargetTime, eMoveMode, eMoveReference, eAppType);
};

Parameter

Parameter Name

Data Type

Default Value

Description

tTargetPos

MOVE_POSB [MAX_MOVEB_POINT]

Maximum 25 path information

nPosCount

unsigned char

Number of valid paths

fTargetVel

float[2]

Linear Velocity, Angular Velocity

fTargetAcc

float[2]

Linear Acceleration, Angular Acceleration

fTargetTime

float

0.f

Reach Time [sec]

eMoveMode

MOVE_MODE

MOVE_MODE_ABSOLUTE

Refer to the Definition of Enumeration Type

eMoveReference

MOVE_REFERENCE

MOVE_REFERENCE_BASE

Refer to the Definition of Enumeration Type

eAppType

DR_MV_APP

DR_MV_APP_NONE

Refer to the Definition of Enumeration Type

Note

  • When fTargetTime is specified, motion is processed based on fTargetTime while ignoring fTargetVel.

  • When eMoveMode is MOVE_MODE_RELATIVE, each position in tTargetPos is defined as a relative coordinate for the preceding path.

  • This function does not support online blending of previous and subsequent motions.

Caution

  • A user input error occurs if the blending radius in tTargetPos is 0.

  • A user input error occurs when duplicated Line segments are defined in the same direction.

  • If blending conditions cause rapid directional change, a user input error is generated to prevent sudden acceleration.

  • This function does not support online blending of previous and subsequent motions.

Return

Value

Description

0

Error

1

Success

Example

// Example: Execute an asynchronous multi-segment motion with blending.
// Digital output 1 turns ON 3 seconds after motion starts.
   MOVE_POSB xb[4];
   memset(xb, 0, sizeof(xb));
   int seqNum = 4;
   float tVel[2] = { 50, 50 };   // Linear / Angular Velocity
   float tAcc[2] = { 100, 100 }; // Linear / Angular Acceleration

   xb[0]._blendType = 0;  // Line
   xb[0]._fBlendRad = 50;
   xb[0]._fTargetPos[0] = 559;
   xb[0]._fTargetPos[1] = 234.5;
   xb[0]._fTargetPos[2] = 651.5;
   xb[0]._fTargetPos[3] = 0;
   xb[0]._fTargetPos[4] = 180;
   xb[0]._fTargetPos[5] = 0;

   xb[1]._blendType = 1;  // Circle
   xb[1]._fBlendRad = 50;
   xb[1]._fTargetPos[0] = 559;
   xb[1]._fTargetPos[1] = 234.5;
   xb[1]._fTargetPos[2] = 651.5;
   xb[1]._fTargetPos[3] = 0;
   xb[1]._fTargetPos[4] = 180;
   xb[1]._fTargetPos[5] = 0;

   xb[2]._blendType = 0;  // Line
   xb[2]._fBlendRad = 50;
   xb[2]._fTargetPos[0] = 559;
   xb[2]._fTargetPos[1] = 434.5;
   xb[2]._fTargetPos[2] = 451.5;
   xb[2]._fTargetPos[3] = 0;
   xb[2]._fTargetPos[4] = 180;
   xb[2]._fTargetPos[5] = 0;

   xb[3]._blendType = 0;  // Line
   xb[3]._fBlendRad = 50;
   xb[3]._fTargetPos[0] = 559;
   xb[3]._fTargetPos[1] = 234.5;
   xb[3]._fTargetPos[2] = 451.5;
   xb[3]._fTargetPos[3] = 0;
   xb[3]._fTargetPos[4] = 180;
   xb[3]._fTargetPos[5] = 0;

   // Execute asynchronous motion
   drfl.amoveb(xb, seqNum, tVel, tAcc);

   // Trigger output after 3 seconds
   Sleep(3000);
   drfl.set_digital_output(GPIO_CTRLBOX_DIGITAL_INDEX_1, 1);

   return 0;
}

This example performs an asynchronous blended multi-segment motion composed of lines and circular paths. After motion begins, digital output 1 is turned on after 3 seconds while the robot continues its movement.