movel()
기능
로봇이 작업 공간 안에서 목표 위치(pos)로 직선을 따라 이동합니다.
인수
인수명 | 자료형 | 기본값 | 설명 |
pos | posx | - | posx 또는 position list |
list (float[6]) | |||
vel (v) | float | None | velocity 또는 velocity1, velocity2 |
list (float[2]) | None | ||
acc (a) | float | None | acceleration 또는 acceleration1, acceleration2 |
list (float[2]) | None | ||
time (t) | float | None | 도달 시간 [sec]
|
radius (r) | float | None | blending시 radius |
ref | int | None | reference coordinate
|
mod | int | DR_MV_MOD_ABS | 이동 기준
|
ra | int | DR_MV_RA_DUPLICATE | Reactive motion mode
|
app_type | int | DR_MV_APP_NONE | 어플리케이션 연동 옵션
|
알아두기
단축 인수를 지원합니다. (v:vel, a:acc, t:time, r:radius)
vel가 None인 경우, _global_velx이 적용됩니다. (_global_velx 초깃값은 0.0이며, set_velx에 의해 설정 가능)
acc가 None인 경우, _global_accx이 적용됩니다. (_global_accx 초깃값은 0.0이며, set_accx에 의해 설정 가능)
vel에 하나의 인자를 입력한 경우(예를들어, vel=30) 입력된 인자는 모션의 선속도에 대응되며, 각속도는 선속도에 비례하여 결정됩니다.
acc에 하나의 인자를 입력한 경우(예를들어, acc=60) 입력된 인자는 모션의 선가속도에 대응되며, 각가속도는 선가속도에 비례하여 결정됩니다.
time 지정 시, vel, acc를 무시하고 time 기준으로 처리됩니다.
time이 None인 경우, 0으로 처리됩니다.
radius가 None이고 블렌딩 구간인 경우는 blending radius로 처리되고 아닌 경우는 0으로 처리됩니다.
ref가 None인 경우에는 _g_coord이 적용됩니다. (_g_coord 초깃값은 DR_BASE이며, set_ref_coord 명령에 의해 설정 가능)
app_type 이 DR_MV_APP_WELD인 경우에 이동속도는 vel인자의 입력값이 아닌 app_weld_set_weld_cond()에 입력된 속도설정으로 대체됩니다.
진행 중인 모션(선행모션)이 종료되지 않은 상태에서 새로운 모션명령(후행모션)이 실행되면 선행모션과 후행모션이 부드럽게 연결됩니다(모션 블렌딩 기능). 이 때 선행모션의 목표점을 유지하거나 취소할 수 있도록 결정하는 옵션 ra를 후행모션에 설정할 수 있습니다. (유지 : ra= DR_MV_RA_DUPLICATE / 취소 : ra= DR_MV_RA_OVERRIDE) 예를 들어 아래의 그림에서 목표점이 Target#1인 선행모션의 진행 중 ‘2nd motion event’ 지점에서 후행모션이 실행된 경우 후행모션의 옵션 ra= DR_MV_RA_DUPLICATE 이면 선행모션의 목표점을 유지하므로 주황색 궤적과 같이 움직이며 ra= DR_MV_RA_OVERRIDE 이면 선행모션의 목표점을 취소하므로 초록색 궤적과 같이 움직이게 됩니다.

주의
ra=DR_MV_RA_DUPLICATE 및 radius>0 조건으로 후속 모션이 블렌딩 될 경우 선행모션의 잔여거리, 속도, 가속도로 결정되는 잔여모션시간이 후행모션의 모션시간보다 큰 경우 후행모션이 먼저 종료된 후 선행모션이 종료될 수 있습니다. 관련한 사항은 아래 이미지를 잠고하십시오.

SW V2.8 미만의 버전에서는 블렌딩 반지름 크기가 총 이동 거리의 1/2을 넘을 경우, 블렌딩 이후 모션에 영향을 주기 때문에 모션이 수행되지 않으며, 블렌딩 에러 발생 시 실행 중인 태스크 프로그램이 종료됩니다.
SW V2.8 이상의 버전에서는 블렌딩 반지름 크기가 총 이동 거리의 1/2을 넘을 경우, 블렌딩 반지름 크기는 자동으로 총 이동 거리의 1/2로 변경되며, 변경 내역은 information log 메시지로 확인할 수 있습니다.
리턴
값 | 설명 |
---|---|
0 | 성공 |
음수값 | 실패 |
예외
예외 | 설명 |
---|---|
DR_Error (DR_ERROR_TYPE) | 인수들의 데이터형 오류 시 |
DR_Error (DR_ERROR_VALUE) | 인수의 값이 유효하지 않을 시 |
DR_Error (DR_ERROR_RUNTIME) | C Extension 모듈 에러 발생 시 |
DR_Error (DR_ERROR_STOP) | 프로그램 강제 종료 시 |
예제
P0 = posj(0,0,90,0,90,0)
movej(P0, v=30, a=30)
P1 = posx(400,500,800,0,180,0)
P2 = posx(400,500,500,0,180,0)
P3 = posx(30,30,30,0,0,0)
movel(P1, vel=30, acc=100)
# 속도 30(mm/sec), 가속도 100(mm/sec2)로 P1위치로 이동
movel(P2, time=5)
# P2위치로 5초의 도착시간을 가지고 이동
movel(P3, time=5, ref=DR_TOOL, mod=DR_MV_MOD_REL)
# 시작위치에서 Tool좌표계기준으로 P3만큼의 상대위치로 5초의 도착시간을
# 가지고 이동시킴
movel(P2, time=5, r=10)
# P2위치까지 5초의 도착시간을 가지고 이동시키며 P2 위치로부터 10mm의
# 거리가 될 때 다음 모션을 수행하도록 설정