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 가 동작하는 모드입니다.

RETURN VALUE

  • 수행 여부를 반환합니다.

Value

Meaning

음수

수행 실패

0 (ceERR_NONE)

수행 성공

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;