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 축의 보간 작업을 수행하는 경우에 이동 거리에 따른 각 축의 속도 관계는 아래와 같습니다(표에서 배경이 회색으로 되어 있는 것은 마스터축임을 의미하는 것입니다).
직선 보간 이동시의 벡터 속도 X, Y 축간의 직선 보간 이송은 2 축(편의상 X, Y 축으로 가정) 직선 보간 이동을 그래프로 나타낸 것입니다.
예제 코드를 예를 들어 설명하면 다음과 같습니다.¶
#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 으로 지정하였으므로 각 축의 속도 계산식은 다음과 같습니다.