.. _cemSxCorrection_Set: cemSxCorrection_Set ==================== -------------------- SYNOPSYS ````````````` .. code-block:: none 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 ````````````` .. code-block:: cpp :linenos: :emphasize-lines: 5 #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" ); } .. code-block:: none :linenos: 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 ); } .. code-block:: none :linenos: 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 .. code-block:: none :linenos: 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; .. seealso:: :ref:`cemSxCorrection_Get`