cmlPmIxGetSpeedPattern


SYNOPSYS

VT_I4 cmlPmIxGetSpeedPattern([in] VT_I4 BoardID,  [in] VT_I4 NodeId, [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

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

  • 이 함수의 사용과 호출에 있어, 제공된 ㈜커미조아의 함수 헤더 Visual Basic 에서는 함수의 첨두어 cml 가 붙지 않습니다.

PARAMETER

▶ BoardID : 사용자가 설정한 디바이스(보드) ID.

▶ 사용자가 제어하고자 하는 노드 번호.

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

▶ IsVectorSpeed : 벡터 속도 또는 마스터 속도 모드를 설정 혹은 반환합니다.

Value

Meaning

0(cmlFALSE)

마스터 속도 모드. (Master Speed Mode)

1(cmlTRUE)

벡터 속도 모드. (Vector Speed Mode)

▶ SpeedMode : cmlPmIxSetSpeedPattern 함수의 인자이며, 속도모드를 설정합니다. 설정값은 다음과 같습니다.

Value

Meaning

0 (cmlMODE_C)

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

1 (cmlMODE_T)

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

2 (cmlMODE_S)

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

▶ Vel : 마스터 속도 모드 일 때는 작업속도 비율(%)을 설정 혹은 반환합니다. 벡터 속도 모드 일 때는 PPS단위를 사용하여 설정 혹은 반환합니다.

▶ Acc : 마스터 속도 모드 일 때는 가속도 비율(%)을 설정 혹은 반환합니다. 벡터 속도 모드 일 때는 PPS단위를 사용하여 가속도를 설정 혹은 반환합니다.

▶ Dec : 마스터 속도 모드 일 때는 감속도 비율(%)을 설정 혹은 반환합니다. 벡터 속도 모드 일 때는 PPS단위를 사용하여 감속도를 설정 혹은 반환합니다.

RETURN VALUE

Value

Meaning

음수

수행 실패

ERR_NONE

수행 성공

REFERENCE

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

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

비에 따라서 자동으로 설정됩니다.

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

../../../../_images/15-13.jpg ../../../../_images/15-21.jpg
 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
 C/C++
 #include “ComiMLink2_SDK.h”
 #include “ComiMLink2_SDK_Def.h”
 #define MAP0 0
 // 보간 맵 0
 #define NODE_ID 1 // 노드 ID 1
 long BoardID = 0;
 cmlPmIxMapAxes(BoardID, 0, MAP0, ccmlX1_MASK | ccmlY1_MASK );
 /*MAP0로 설정된 축들을 벡터 스피드로
 가속도 10000, 감속도 10000, 등속도 2000으로 설정합니다.*/
 cmlPmIxSetSpeedPattern(BoardID, 0, MAP0, cmlTRUE, cmlMODE_T, 2000, 10000, 10000 );
 long nSpeedMode = 0, nIsVectorSpeed = 0;
 double fVel = 0.0f, fAcc = 0.0f, fDec = 0.0f;
 //MAP0에 설정된 속도 패턴 값들을 반환합니다.
 cmlPmIxGetSpeedPattern (BoardID, 0, MAP0, &nIsVectorSpeed, &nSpeedMode, &fVel, &fAcc, &fDec );