cmlSxGetCorrection¶
SYNOPSYS¶
VT_I4 cmlSxGetCorrection([in] VT_I4 BoardID, [in] VT_I4 Axis, [in] VT_I4 CorrMode,
[in] VT_R8 CorrAmount, [in] VT_R8 CorrVel, [in] VT_I4 CntrMask)
DESCRIPTION¶
cmlSxGetCorrection() 함수는 백래쉬/슬립 보정에 대한 현재 설정값을 읽어들이는 함수입니다.
이 함수의 사용과 호출에 있어, 제공된 ㈜커미조아의 함수 헤더 Visual Basic 에서는 함수의 첨두어 cml 가 붙지 않습니다.
PARAMETER¶
▶ BoardID: 사용자가 설정한 디바이스(보드) ID.
▶ Axis: 사용자가 제어하고자 하는 축 번호.
▶ CorrMode : cmlSxGetCorrection함수의 인자이며, 반환값은 다음과 같습니다.
BIT No.
Meaning
0 (cmlCORR_DISABLE)
보정기능을 비활성화합니다.
1 (cmlCORR_BACKLASH)
보정모드를 백래쉬 보정모드로 동작중입니다.
2 (cmlCORR_SLIP)
보정모드를 슬립 보정모드로 동작중입니다.
▶ CorrAmount : cmlSxGetCorrection 함수의 인자이며, 보정 펄스의 수를 반환합니다.
▶ CorrVel : cmlSxGetCorrection 함수의 인자이며, 보정펄스의 주파수를 반환합니다.
▶ CntrMask : cmlSxGetCorrection 함수의 인자이며, 보정펄스가 출력되는 동안에 각 카운터의 동작여부를 비트별로 반환합니다. 각 비트가 나타내는 값은 아래 표를 참고 하십시오.
Value |
Meaning |
---|---|
BIT0 |
1: 보정펄스 출력시에 Command Counter 가 동작하는 모드입니다. |
BIT1 |
1 : 보정펄스 출력시에 Feedback Counter가 동작하는 모드입니다. |
RETURN VALUE¶
Value |
Meaning |
---|---|
음수 |
수행 실패 |
ERR_NONE |
수행 성공 |
EXAMPLE¶
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 | C/C++
long BoardID = 0;
다음의 예제는 백래쉬 보정을 적용할 때의 동작에 대한 설명입니다. 본 예에서는 “Unit
distance”와 “Unit speed”가 각각 1로 설정되었음을 가정합니다.
// 백래쉬보정 모드로 설정 (보정펄스수:1000, 보정펄스출력속도:1000 PPS) //
cmlSxGetCorrection (BoardID, 0, cmlORR_BACK, 1000, 1000, 0x0);
////////////////////////////////////////////////////////////////
// 이전에 (-)방향 이동을 수행하였다면 아래에서 백래쉬 보정을 수행합니다.
// 1000 PPS의 속도로 (+)1000펄스를 출력한 후에 지정한 SxMove()가 수행됩니다.
cmlSxMove(BoardID, 0, 10000);
// 이동방향이 이전과 동일하므로 아래에서는 백래쉬보정을 하지 않습니다.
cmlSxMove(BoardID, 0, 10000);
// 이동방향이 이전과 동일하므로 아래에서는 백래쉬보정을 하지 않습니다.
cmlSxMove(BoardID, 0, 10000);
////////////////////////////////////////////////////////////////
// 이동방향이 전환되므로 아래에서 백래쉬 보정을 수행합니다. 1000 PPS의 속도로 (
)1000 펄스를 출력한
// 후에 지정한 SxMove()가 수행됩니다.
cmlSxMove(BoardID, 0, -10000);
// 이동방향이 이전과 동일하므로 아래에서는 백래쉬보정을 하지 않습니다.
cmlSxMove(BoardID, 0, -10000);
|
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 | Visual Basic
'다음의 예제는 백래쉬 보정을 적용할 때의 동작에 대한 설명입니다.
'본 예에서는 "Unit distance"와 "Unit speed"가 각각 1로 설정되었음을 가정합니다.
„BoardID 는 0으로 가정합니다.
'// 백래쉬보정 모드로 설정 (보정펄스수:1000, 보정펄스출력속도:1000 PPS)
Call SxSetCorrection(BoardID, 0, cmlCORR_BACK, 1000, 1000, 0)
'///////////////////////////////////////////////////////////////
'// 이전에 (-)방향 이동을 수행하였다면 아래에서 백래쉬 보정을 수행합니다.
'// 1000 PPS의 속도로 (+)1000펄스를 출력한 후에 지정한 SxMove()가
‘// 수행됩니다.
Call SxMove(BoardID, 0, 10000)
'// 이동방향이 이전과 동일하므로 아래에서는 백래쉬보정을 하지 않습니다.
Call SxMove(BoardID, 0, 10000)
'// 이동방향이 이전과 동일하므로 아래에서는 백래쉬보정을 하지 않습니다.
Call SxMove(BoardID, 0, 10000)
'///////////////////////////////////////////////////////////////
'// 이동방향이 전환되므로 아래에서 백래쉬 보정을 수행합니다. 1000 PPS의
'속도로(-)1000펄스를 출력한 후에 지정한 SxMove()가 수행됩니다.
Call SxMove(BoardID, 0, -10000)
'// 이동방향이 이전과 동일하므로 아래에서는 백래쉬보정을 하지 않습니다.
Call SxMove(BoardID, 0, -10000)
|
EXAMPLE2¶
다음의 예제는 슬립보정을 적용할 때의 동작에 대한 설명입니다. 본 예에서는 “Unit distance”와 “Unit speed”가 각각 1 로 설정되었음을 가정합니다.
1 2 3 4 5 6 7 8 9 10 11 | C/C++
//BoardID는 0으로 가정합니다.
// 슬립보정 모드로 설정 (보정펄스수:1000, 보정펄스출력속도:1000 PPS) //
// (+)1000 펄스의 보정펄스가 출력된 후에 SxMove()가 수행됩니다
cmlSxMove(BoardID, 0, 10000);
// (+)1000 펄스의 보정펄스가 출력된 후에 SxMove()가 수행됩니다
cmlSxMove(BoardID, 0, 10000);
// (-)1000 펄스의 보정펄스가 출력된 후에 SxMove()가 수행됩니다
cmlSxMove(BoardID, 0, -10000);
// (-)1000 펄스의 보정펄스가 출력된 후에 SxMove()가 수행됩니다
cmlSxMove(BoardID, 0, -10000);
|
1 2 3 4 5 6 7 8 9 10 11 12 13 | Visual Basic
„BoardID 는 0으로 가정합니다.
'// 슬립보정 모드로 설정 (보정펄스수:1000, 보정펄스출력속도:1000 PPS)
Call cmlSxGetCorrection(BoardID, 0, cmlORR_SLIP, 1000, 1000, 0)
'// (+)1000 펄스의 보정펄스가 출력된 후에 SxMove()가 수행됩니다
Call cmlSxMove(BoardID, 0, 10000)
'// (+)1000 펄스의 보정펄스가 출력된 후에 SxMove()가 수행됩니다
Call cmlSxMove(BoardID, 0, 10000)
'// (-)1000 펄스의 보정펄스가 출력된 후에 SxMove()가 수행됩니다
Call cmlSxMove(BoardID, 0, -10000)
'// (-)1000 펄스의 보정펄스가 출력된 후에 SxMove()가 수행됩니다
Call cmlSxMove(BoardID, 0, -10000)
|