cmmIxGetSpeedPattern


SYNOPSIS

VT_I4 cmmIxGetSpeedPattern(
    [in] VT_I4 MapIndex, [out] VT_PI4 IsVectorSpeed, [out] VT_PI4 SpeedMode, [out] VT_PR8 Vel, [out] VT_PR8 Acc, [out] VT_PR8 Dec
    )

DESCRIPTION

  • cmmIxGetSpeedPattern()은 “기본보간제어”의 이송속도에 대한 설정된 값을 반환합니다.

PARAMETER

  • MapIndex: 맵번호(Map index), 이 맵번호를 사용하기전에 먼저 cmmIxMapAxes() 함수를 통하여 해당 맵번호에 유효한 축들이 맵핑되어 있어야 합니다.

  • IsVertorSpeed : cmmIxGetSpeedPattern 함수의 인자이며, 스피드 모드를 반환합니다. TRUE 일 경우엔 벡터스피드 모드, FALSE 일 경우엔 마스터스피드 모드입니다.

  • SpeedMode : cmmIxGetSpeedPattern 함수의 인자이며, 속도모드를 반환합니다. 반환값은 다음과 같습니다.

Value

Meaning

0 또는 cmSMODE_C

CONSTANT 속도모드 => 가감속을 수행하지 않습니다.

1 또는 cmSMODE_T

TRAPEZOIDAL 속도모드 => 사다리꼴 가감속을 수행합니다.

2 또는 cmSMODE_S

S-CURVE 속도모드 => S-CURVE 가감속을 수행합니다.

  • VelRatio : cmmIxGetSpeedPattern 함수의 인자이며, 마스터스피드모드 일 때는 작업속도 비율을 반환합니다. 벡터스피드모드 일 때의 반환값은 PPS 단위입니다.

  • AccRatio : cmmIxGetSpeedPattern 함수의 인자이며, 마스터스피드모드 일 때는 가속도 비율을 반환합니다. 벡터스피드모드 일 때의 반환값은 PPS 단위입니다.

  • DecRatio : cmmIxGetSpeedPattern 함수의 인자이며, 마스터스피드모드 일 때는 감속도 비율을 반환합니다. 벡터스피드모드 일 때의 반환값은 PPS 단위입니다.

RETURN VALUE

Value

Meaning

음수

수행 실패

cmERR_NONE

수행 성공

REFERENCE

Warning

보간 제어의 속도에는 마스터 속도 모드와 백터 속도 모드가 존재합니다. 본 함수의 설명을 잘 읽고, 보간 속도 설정에 주의를 기울여 주시기 바랍니다. 특히 서로 다른 속성을 가지고 있는 서보드라이브나 스탭 드라이버에서는 보간 속도 설정에 반드시 주의를 요합니다.

  • 직선 보간 이동시에 작업속도의 적용

    마스터 속도 모드(Master Speed Mode)로 보간 작업시에는 각 축의 속도가 각 축의 이동거리에 비례하여 자동으로 설정됩니다. 이때 cmmIxSetSpeedPattern() 함수의 WorkSpeed 매개 변수를 통하여 지정되는 보간 작업속도는 마스터속도로 적용됩니다. 각 보간 이동시에 이동거리가 가장 큰 축을 “마스터축”이라고 하며 마스터축의 속도를 “마스터속도”라 합니다. 각 보간 이동시에 마스터축의 속도는 사용자가 지정한 보간 작업속도로 설정되며, 마스터축 이외의 다른 축의 속도는 마스터축과 해당 축의 이동 거리 비에 따라서 자동으로 설정됩니다.

    보간 작업속도의 적용 예 cmmIxSetSpeedPattern() 함수의 WorkSpeed 를 10000 으로 설정하고 X,Y,Z 축의 보간 작업을 수행하는 경우에 이동 거리에 따른 각 축의 속도 관계는 아래와 같습니다(표에서 배경이 회색으로 되어 있는 것은 마스터축임을 의미하는 것입니다).

../../../../_images/5장_1.jpg
  • 직선 보간 이동시의 벡터 속도 X, Y 축간의 직선 보간 이송은 2 축(편의상 X, Y 축으로 가정) 직선 보간 이동을 그래프로 나타낸 것입니다.

../../../../_images/5장_2.jpg

예제 코드를 예를 들어 설명하면 다음과 같습니다.

#define MAP_IDX 0 // 맵번호 => 0

// 코드의 간결성을 위하여 앞에서 행해져야할 초기화 루틴은 모두 생략 // ……

// X1 축과 Y1 축을 0 번 맵번호로 맵핑 // cmmIxMapAxes (MAP_IDX, cmX1_MASK | cmY1_MASK, 0);

// 속도패턴 설정 : 벡터속도 1000 PPS, 벡터가속도 10000 PPS/sec (가속시간 0.1 초) // // 여기서 2 번째 인자가 cmTRUE 이면, Vector 속도 모드를 의미한다. cmmIxSetSpeedPattern(MAP_IDX, ,cmTRUE, cmSMODE_S, 1000, 10000, 10000);

// 직선보간이동 수행 : (3000, 4000) 만큼 이동 // double fDistList[2]={3000, 4000}; cmmIxLine (MAP_IDX, fDistList, cmFALSE);


위의 코드는 현재 위치가 (0,0) 이라고 가정할 때 (3000, 4000)의 좌표로 직선 보간 이동을 수행합니다. 벡터 속도를 1000 으로 지정하였으므로 각 축의 속도 계산식은 다음과 같습니다.

../../../../_images/5장_3.jpg

EXAMPLE

  • 예제는 cmmIxSetSpeedPattern을 참고해주세요.