cemSxCorrection_Set¶
SYNOPSYS¶
t_i32 cemSxCorrection_Set(
LONG Axis,
LONG CorrMode,
DOUBLE CorrAmount,
DOUBLE CntrMask
)
DESCRIPTION¶
백래쉬(Backlash) 또는 슬립(Slip)에 대한 보정 환경을 설정합니다.
PARAMETER¶
Axis : 축 번호
CorrMode : 보정 모드를 설정 혹은 반환.
BIT No |
Meaning |
---|---|
0 (cemCORR_DIS) |
보정기능을 비활성화합니다. |
1 (cemCORR_BACK) |
보정모드를 백래쉬 보정모드로 설정합니다. |
2 (cemCORR_SLIP) |
보정모드를 슬립 보정모드로 설정합니다. |
CorrAmount : 보정 펄스의 수를 설정 혹은 반환합니다. 단, 이 값은 논리적 단위 거리로 설정해야 합니다. 따라서 “Unit distance”(Du)를 ‘1’이 아닌 값으로 설정한 경우에 실제 출력되는 보정 펄스 수(Nc)는 다음과 같습니다.
Nc = CorrAmount * Du
CorrVel : 보정펄스의 출력 주파수를 설정 혹은 반환. 단, 이 값은 논리적 속도 단위로 설정. 따라서 “Unit speed”(Vu)를 ‘1’이 아닌 값으로 설정한 경우에 실제 출력 주파수(Fc)는 다음과 같습니다.
Fc (PPS) = CorrVel * Vu
CntrMask : 보정펄스가 출력되는 동안에 각 카운터의 동작 여부를 아래의 표와 같이 각 비트 별로 설정 혹은 반환
Value |
Meaning |
---|---|
BIT0 |
1 : 보정펄스 출력 시에 Command Counter 가 동작하는 모드입니다. |
BIT1 |
1 : 보정펄스 출력 시에 Feedback Counter 가 동작하는 모드입니다. |
BIT2 |
1 : 보정펄스 출력 시에 Deviation Counter 가 동작하는 모드입니다. |
BIT3 |
1 : 보정펄스 출력 시에 General Counter 가 동작하는 모드입니다. |
EXAMPLE¶
1 2 3 4 5 6 7 8 9 10 11 12 13 | #include “ceSDK.h”
#include “ceSDKDef.h”
long nSerialChNo = 0; // 시리얼 채널(Port) 번호
// 0 번 시리얼 포트의 송신 버퍼를 비웁니다.
if ( cesTxReset ( nSerialChNo ) != ceERR_NONE )
{
OutputDebugString ( "cesTxReset has been failed" );
}
// 0 번 시리얼 포트의 수신 버퍼를 비웁니다.
if ( cesRxReset ( nSerialChNo ) != ceERR_NONE )
{
OutputDebugString ( "cesRxReset has been failed" );
}
|
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 | C/C++
#include “ceSDK.h”
#include “ceSDKDef.h”
long nAxisNo = 1; // 백래쉬 보정 설정 할 대상 축을 설정합니다.
void OnSetSxCorrection ()
{
// 해당 축에 대해 백래쉬 보정 모드를 설정 합니다.
// ( 보정 펄스 수 : 1000, 보정 펄스 출력 속도 : 1000 PPS )
cemSxCorrection_Set( nAxisNo, // 대상 축 설정.
cemCORR_BACK, // 보정 모드 선택.
1000, // 보정 펄스 수 설정.
1000, // 보정 펄스 출력 속도 설정
0x1 // 대상 카운터 설정.
);
}
void OnMove ()
{
// 이전에 (-)방향으로 이동을 수행하였다면 (+)방향으로 이동할 때 (방향이 바뀔 때) 백래쉬 보정을 수행합니다.
// 1000 PPS 의 속도로 (+)1000 펄스를 출력한 후에 지정한 SxMove()가 수행됩니다.
cemSxMove ( nAxisNo, 10000, CE_FALSE );
//이송 방향이 이전과 동일하므로 아래에서는 백래쉬 보정을 하지 않습니다.
cemSxMove ( nAxisNo, 10000, CE_FALSE );
// 이송 방향이 전환되므로 백래쉬 보정을 수행합니다.
// 1000PPS 의 속도로 (-)1000 펄스를 출력 한 후에 지정한 SxMove()가 수행됩니다.
cemSxMove ( nAxisNo, -10000, CE_FALSE );
|
}
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 | Visual Basic
Dim nAxisNo As Long ‘ 백래쉬 보정 설정 할 대상 축을 설정합니다.
nAxisNo = 1
Private Sub OnSetSxCorrection ()
‘ 해당 축에 대해 백래쉬 보정 모드를 설정 합니다.
‘ ( 보정 펄스 수 : 1000, 보정 펄스 출력 속도 : 1000 PPS )
Call cemSxCorrection_Set( nAxisNo, cemCORR_BACK, 1000, 1000, &H1 )
End Sub
Private Sub OnMove ()
‘ 이전에 (-)방향으로 이동을 수행하였다면 (+)방향으로 이동할 때 (방향이 바뀔 때) 백래쉬 보정을 수행합니다.
‘ 1000 PPS 의 속도로 (+)1000 펄스를 출력한 후에 지정한 SxMove()가 수행됩니다.
Call cemSxMove ( nAxisNo, 10000, CE_FALSE )
‘ 이송 방향이 이전과 동일하므로 아래에서는 백래쉬 보정을 하지 않습니다.
Call cemSxMove ( nAxisNo, 10000, CE_FALSE )
‘ 이송 방향이 전환되므로 백래쉬 보정을 수행합니다.
‘ 1000PPS 의 속도로 (-)1000 펄스를 출력 한 후에 지정한 SxMove()가 수행됩니다.
Call cemSxMove ( nAxisNo, -10000, CE_FALSE )
End Sub
|
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 | Delphi
procedure OnSetSxCorrection ();
begin
{ 해당 축에 대해 백래쉬 보정 모드를 설정 합니다.
( 보정 펄스 수 : 1000, 보정 펄스 출력 속도 : 1000 PPS ) }
cemSxCorrection_Set( cemX1, cemCORR_BACK, 1000, 1000, $1 );
end;
procedure OnMove ();
begin
{ 이전에 (-)방향으로 이동을 수행하였다면 (+)방향으로 이동할 때 (방향이 바뀔 때) 백래쉬 보정을 수행합니다.
1000 PPS 의 속도로 (+)1000 펄스를 출력한 후에 지정한 SxMove()가 수행됩니다. }
cemSxMove ( cemX1, 10000, CE_FALSE );
// 이송 방향이 이전과 동일하므로 아래에서는 백래쉬 보정을 하지 않습니다.
cemSxMove ( cemX1, 10000, CE_FALSE );
{ 이송 방향이 전환되므로 백래쉬 보정을 수행합니다.
1000PPS 의 속도로 (-)1000 펄스를 출력 한 후에 지정한 SxMove()가 수행됩니다. }
cemSxMove ( cemX1, -10000, CE_FALSE )
end;
|
See also