Skip to main content
Skip table of contents

amoveb()

Features

The asynchronous moveb motion operates in the same way as moveb() except for the asynchronous processing and executes the next line after the command is executed.

Generating a new command for the motion before the amoveb() motion results in an error for safety reasons. Therefore, the termination of the amoveb() motion must be confirmed using mwait() or check_motion() between amoveb() and the following motion command.


Note

  • moveb(seg_list): The next command is executed after the robot starts from the current position and reaches (stops at) the end point of seg_list.
  • amoveb(seg_list): The next command is executed regardless of whether the robot starts from the current position and reaches (stops at) the end point of seg_list.

Parameters

Parameter Name

Data Type

Default Value

Description

pos_list

list (posb)

-

posb list

vel (v)

float

None

velocity or

velocity1, velocity2

list (float[2])

acc (a)

float

None

acceleration or

acceleration1, acceleration2

list (float[2])

time (t)

float

None

Reach time [sec]

  • If the time is specified, values are processed based on time, ignoring vel and acc.

ref

int

None

reference coordinate

  • DR_BASE: base coordinate
  • DR_WORLD: world coordinate
  • DR_TOOL: tool coordinate
  • user coordinate: User defined

mod

int

DR_MV_MOD_ABS

Movement basis

  • DR_MV_MOD_ABS: Absolute
  • DR_MV_MOD_REL: Relative

app_type

int

DR_MV_APP_NONE

Application mode

  • DR_MV_APP_NONE: No application related
  • DR_MV_APP_WELD: Welding application related

Note

  • Abbreviated parameter names are supported. (v:vel, a:acc, t:time)
  • Up to 50 arguments can be entered in posb_list.
  • _global_velx is applied if vel is None. (The initial value of _global_velx is 0.0 and can be set by set_velx.)
  • _global_accj is applied if acc is None. (The initial value of _global_accx is 0.0 and can be set by set_accx.)
  • If an argument is inputted to vel (e.g., vel=30), the input argument corresponds to the linear velocity of the motion while the angular velocity is determined proportionally to the linear velocity.
  • If an argument is inputted to acc (e.g., acc=60), the input argument corresponds to the linear acceleration of the motion while the angular acceleration is determined proportionally to the linear acceleration.
  • If the time is specified, values are processed based on time, ignoring vel and acc.
  • If the time is None, it is set to 0.
  • _g_coord is applied if the ref is None. (The initial value of _g_coord is DR_BASE, and it can be set by the set_ref_coord command.)
  • If the mod is DR_MV_MOD_REL, each pos in the pos_list is defined in the relative coordinate of the previous pos.
  • This function does not support online blending of previous and subsequent motions.
  • If ‘app_type’ is ‘DR_MV_APP_WELD’, parameter ‘vel’ is internally replaced by the speed setting entered in app_weld_set_weld_cond(), not the input value of ‘vel’.

Caution

  • A user input error is generated if the blending radius in posb is 0.
  • A user input error is generated due to the duplicated input of Line if contiguous Line-Line segments have the same direction.
  • A user input error is generated to prevent a sudden acceleration if the blending condition causes a rapid change in direction.
  • This function does not support online blending of previous and subsequent motions.

Return

ValueDescription

0

Success

Negative value

Error

Exception

ExceptionDescription

DR_Error (DR_ERROR_TYPE)

Parameter data type error occurred

DR_Error (DR_ERROR_VALUE)

Parameter value is invalid

DR_Error (DR_ERROR_RUNTIME)

C extension module error occurred

DR_Error (DR_ERROR_STOP)

Program terminated forcefully

Example

PY
#Example 1. D-Out 3 seconds after the motion through the path of seg11 - seg16 begins
# Init Pose @ Jx1
Jx1 = posj(45,0,90,0,90,45)               # initial joint position
X0 = posx(370, 420, 650, 0, 180, 0)       # initial task position

# CASE#1) ABSOLUTE
# Absolute Goal Poses
X1 = posx(370, 670, 650, 0, 180, 0)
X1a = posx(370, 670, 400, 0, 180, 0)
X1a2= posx(370, 545, 400, 0, 180, 0)
X1b = posx(370, 595, 400, 0, 180, 0)
X1b2= posx(370, 670, 400, 0, 180, 0)
X1c = posx(370, 420, 150, 0, 180, 0)
X1c2= posx(370, 545, 150, 0, 180, 0)
X1d = posx(370, 670, 275, 0, 180, 0)
X1d2= posx(370, 795, 150, 0, 180, 0)

seg11 = posb(DR_LINE, X1, radius=20)
seg12 = posb(DR_CIRCLE, X1a, X1a2, radius=20)
seg14 = posb(DR_LINE, X1b2, radius=20)
seg15 = posb(DR_CIRCLE, X1c, X1c2, radius=20)
seg16 = posb(DR_CIRCLE, X1d, X1d2, radius=20)
b_list1 = [seg11, seg12, seg14, seg15, seg16] 
	# The blending radius of the last waypoint (seg16) is ignored.
movej(Jx1, vel=30, acc=60, mod=DR_MV_MOD_ABS) 
	# Joint motion to the initial angle (Jx1)
movel(X0, vel=150, acc=250, ref=DR_BASE, mod=DR_MV_MOD_ABS) 
	# Line motion to the initial position (X0)
amoveb(b_list1, vel=150, acc=250, ref=DR_BASE, mod=DR_MV_MOD_ABS)
	# Moves the robot from the current position through a trajectory consisting of seg11(LINE), seg12(CIRCLE), seg14(LINE), 
	# seg15(CIRCLE), and seg16(CIRCLE) with a constant velocity of 150(mm/sec) with the exception of accelerating and decelerating sections. 
	# (The final point is X1d2.) 
	# Blending to the next segment begins when the distance of 20mm from the end point (X1, X1a2, X1b2, X1c2, and X1d2) 
	# of each segment is reached.
wait(3)                              # Temporarily suspends the program execution for 3 seconds (while the motion continues).
set_digital_output(1, 1)            # D-Out (no. 1 channel) ON
mwait(0)                            # Temporarily suspends the program execution until the motion is terminated.

Related commands

JavaScript errors detected

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

If this problem persists, please contact our support.