Skip to main content
Skip table of contents

CDRFLEx.amoveb

Features

As an asynchronous moveb, it operates the same as the moveb() function except for the asynchronous process, and executes the next line by returning as soon as motion starts without waiting for the termination of motion. A new motion command generated before the motion is terminated by amovesj() function causes errors for security reasons. Therefore, the termination of the amoveb() motion must be confirmed using the mwait() function between amovesj() and the following motion command before the new motion command is executed.

Parameter

Parameter Name

Data Type

Default Value

Description

tTargetPos

struct 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

enum.MOVE_MODE

MOVE_MODE_

ABSOLUTE

Refer to the Definition of Constant and Enumeration Type

eMoveReference

enum.MOVE_REFERENCE

MOVE_REFERENCE_BASE

Refer to the Definition of Constant and Enumeration Type

Note

  • When fTargetTime is specified, values are processed based on fTargetTime ignoring fTargetVel and
  • When eMoveMode is MOVE_MODE_RELATIVE, each pos on the posb list is defined as a relative coordinate for the preceding pos.
  • This function does not support online blending of previous and subsequent motions.

Caution

  • A user input error is generated if the blending radius in tTargetPos is 0.
  • A user input error is generated due to the duplicated input of Line if contiguous Line-Line segments have the same direction.
  • If the blending condition causes a rapid change in direction, 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

PY
// D-Out 3 seconds after the motion through all paths of xb begins
MOVE_POSB xb[4];
memset(xb, 0x00, sizeof(xb));
int segNum = 4;
float tvel = { 50, 50 };
float tacc = { 100, 100 };
xb[0]._iBlendType = 0;	// line
xb[0]._fBlendRad  = 50;
xb[0]._fTargetPos[0][0] = 559; 
xb[0]._fTargetPos[0][1] = 234.5; 
xb[0]._fTargetPos[0][2] = 651.5;
xb[0]._fTargetPos[0][3] = 0; 
xb[0]._fTargetPos[0][4] = 180;  
xb[0]._fTargetPos[0][5] = 0;				
xb[1]._iBlendType = 1;	// circle
xb[1]._fBlendRad  = 50;
xb[1]._fTargetPos[0][0] = 559;
xb[1]._fTargetPos[0][1] = 234.5;
xb[1]._fTargetPos[0][2] = 451.5;
xb[1]._fTargetPos[0][3] = 0;
xb[1]._fTargetPos[0][4] = 180;
xb[1]._fTargetPos[0][5] = 0;
xb[1]._fTargetPos[1][0] = 559;
xb[1]._fTargetPos[1][1] = 434.5;
xb[1]._fTargetPos[1][2] = 451.5;
xb[1]._fTargetPos[1][3] = 0;
xb[1]._fTargetPos[1][4] = 180;
xb[1]._fTargetPos[1][5] = 0;				
xb[2]._iBlendType = 0;	// line
xb[2]._fBlendRad = 50;
xb[2]._fTargetPos[0][0] = 559;
xb[2]._fTargetPos[0][1] = 434.5;
xb[2]._fTargetPos[0][2] = 251.5;
xb[2]._fTargetPos[0][3] = 0;
xb[2]._fTargetPos[0][4] = 180;
xb[2]._fTargetPos[0][5] = 0;
xb[3]._iBlendType = 0;	// line
xb[3]._fBlendRad  = 50;
xb[3]._fTargetPos[0][0] = 559;
xb[3]._fTargetPos[0][1] = 234.5;
xb[3]._fTargetPos[0][2] = 251.5;
xb[3]._fTargetPos[0][3] = 0;
xb[3]._fTargetPos[0][4] = 180;
xb[3]._fTargetPos[0][5] = 0;
drfl.moveb(xb, segNum, tvel, tacc);
Sleep(3000);
drfl.set_digital_output(GPIO_CTRLBOX_DIGITAL_INDEX_1, 1);


JavaScript errors detected

Please note, these errors can depend on your browser setup.

If this problem persists, please contact our support.