2.12.4 2.12.3 2.12.2 2.12.1 2.12 2.11.2 2.11.0.1 Korean English Chinese Czech Dutch French German Hungarian Italian Japanese Polish Portuguese Spanish
2.12.4 2.12.3 2.12.2 2.12.1 2.12 2.11.2 2.11.0.1 Korean English Chinese Czech Dutch French German Hungarian Italian Japanese Polish Portuguese Spanish

enable_alter_motion()

정의

enable_alter_motion(n,mode,ref,limit_dPOS,limit_dPOS_per)

기능

경로 수정 기능을 활성화합니다. 경로 생성의 단위 주기는 10msec이며 입력 인자 n을 설정하여 경로 생성 주기(n*10msec)를 변경할 수 있습니다. 입력 인자 mode를 통해 alter_motion()의 입력값의 의미를 2가지 모드(누적량 모드, 증분량 모드) 중 하나로 선택하여 사용할 수 있습니다.

  • 누적량 모드 : 현재의 모션 경로에 대한 절대적 증분 위치/자세만큼 경로 수정량이 반영됩니다.

  • 증분량 모드 : 현재의 절대적 증분 위치/자세에 입력된 증분 위치/자세만큼 경로 수정량이 추가되어 반영됩니다.

입력 인자 ref를 통해 기준 좌표계를 설정할 수 있습니다. 입력 인자 limit_dPOS, limit_dPOS_per를 통해 각각 누적량, 증분량의 한계치를 설정할 수 있습니다. 한계치를 벗어나는 위치 값의 한계치에 수렴된 값으로 경로 수정량이 재조정됩니다.

인수

인수명

자료형

기본값

설명

n

int

None

경로 생성 주기

mode

int

None

경로 수정 모드

  • DR_DPOS : 누적량

  • DR_DVEL : 증분량

ref

int

None

reference coordinate

  • DR_BASE: base coordinate

  • DR_WORLD: world coordinate

  • DR_TOOL: tool coordinate

  • user coordinate: 사용자 정의

limit_dPOS

list(float[2])

None

첫번째 값 : 이동량 제한 값[mm]

두번째 값 : 회전량 제한 값[deg]

limit_dPOS_per

list(float[2])

None

첫번째 값 : 이동량 제한 값[mm]

두번째 값 : 회전량 제한 값[deg]

알아두기

  • alter_motion()은 사용자 thread 내에서만 동작합니다.

  • ref가 None인 경우, _g_coord 적용(_g_coord 초기값은 DR_BASE이며, set_ref_coord 명령에 의해 설정 가능)

  • limit_dPOS, limit_dPOS_per를 설정하지 않을 시 누적량, 증분량의 한계를 제한하지 않습니다.

예외

예외

설명

DR_Error (DR_ERROR_TYPE)

인수들의 데이터형 오류 시

DR_Error (DR_ERROR_VALUE)

인수의 값이 유효하지 않을 시

DR_Error (DR_ERROR_RUNTIME)

C Extension 모듈 에러 발생 시

DR_Error (DR_ERROR_STOP)

프로그램 강제 종료 시

예제

Python
def alter_thread():
    global dir_a, wait_time
    alter_motion(dX) #dX : amount of alter motion

    if dX[0] > 9.9:
        dir_a = -10
    elif dX[0] < -9.9:
        dir_a = 10

    dX[0] = dX[0] + dir_a
    dX[3] = dX[3] + dir_a

    wait(wait_time)

dX = [10,0,0,10,0,0]

J00 = posj(30,45,45,0,90,0)
movej(J00,vel=100,acc=100)

X1,sol = get_current_posx(DR_BASE)

J01 = posj(-30,45, 45,0,90,0)
movej(J01,vel=100,acc=100)

X2,sol = get_current_posx(DR_BASE)

# Alter motion is executed during the cycle time
cycle_time = 0.6

n_period = int(cycle_time * 1000 / 50)
wait_time = cycle_time

# 경로 수정 기능 활성화
# 생성주기:(n_period * 10)msec, 모드:누적량, 기준좌표계:베이스
# 누적량 제한:50mm, 90deg, 증분량 제한:60mm, 60deg
# alter motion 이동량에 비해 cycle time이 너무 짧은 경우 Limit 알람이 발생할 수 있습니다.
enable_alter_motion(n=n_period,mode=DR_DPOS, ref=DR_BASE, limit_dPOS=[50,90], limit_dPOS_per=[60,60])

th_id = thread_run(alter_thread, loop=True)

movel(pos=X1,vel=10,acc=100)
movel(pos=X2,vel=10,acc=100)

thread_stop(th_id)
disable_alter_motion() # 경로 수정 기능 비활성화

관련 명령어

Keyword

enable / alter / motion / enable_ / enable_alter / enable_alter_