cmmHomeSetPosClrMode


SYNOPSIS

VT_I4 cmmHomeSetPosClrMode(
    [in] VT_I4 Axis, [in] VT_I4 PosClrMode
    )

DESCRIPTION

  • 원점복귀가 완료된 후에 Command 및 Feedback 위치에 대한 처리 모드를 설정하는 함수입니다.

PARAMETER

  • Axis: 축번호. 축번호는 상수값으로 [cmX1] 부터 0 번째 축을 기준 축으로 임의의 축을 설정할 수 있습니다.

  • PosClrMode : cmmHomeSetPosClrMode 함수의 인자이며, 원점복귀가 완료된 후에 Command 및 Feedback 위치가 클리어되는 모드를 결정하는 매개 변수입니다. PosClrMode 는 다음과 같이 3 가지를 설정할 수 있습니다.

Value

Meaning

cmHPCM_M0

최종 완료 조건에 해당하는 외부 하드웨어 신호가 입력되는 순간에 Command 및
Feedback 의 위치가 0 으로 소거됩니다. 일정량의 Feedback 위치 편차를 보입니다.

cmHPCM_M1

원점복귀 모드에 상관없이 하드웨어 신호의 입력 상태와 더불어 소프트웨어 적인 모션
완료 확인 동작을 포함한 전체적인 원점복귀 작업이 모두 완료된 후에 Command 와
Feedback 위치가 모두 자동으로 0 으로 소거됩니다. 일정량의 Feedback 위치 편차를
보입니다.

cmHPCM_M2

1 차적으로는 cmHPCM_M0 일 때와 동일하게 동작합니다. 단, 원점복귀가 완료된 후에
Feedback 위치와 동일한 값으로 Command 위치를 셋팅하므로써 Command 와 Feedback 을
일치하도록 동작 합니다. 이를 통해 서보드라이브에서 실제 이송한 위치에 대한 양을
Command 위치에 반영시켜서 다음 모션 동작을 수행할 수 있도록 합니다.

RETURN Value

Value

Meaning

음수

수행 실패

cmERR_NONE

수행 성공

REFERENCE

  • PosClrMode 가 0 또는 2 로 하면 최종 단계에서 감속 없이 정지하는 원점복귀 모드(1, 2, 4, 6, 7)에서는

Command 위치가 0 인 상태에서 원점복귀가 완료되고, 나머지 모드에서는 감속을 시작 할때 위치가 0 으로 클리어되며, 감속 하는 동안에 이송한 양만큼 위치가 증가 또는 감소하게 됩니다. 아래의 두 그림은 최종 단계에서 감속을 하는 원점복귀 모드 0 번과 즉시 정지를 하는 모드 1 번에서의 동작을 예로 든 것입니다.

../../../../_images/5장_14.jpg
  • 서보모터를 사용하는 경우에는 서보드라이버의 제어 지연 시간 때문에 원점복귀완료 후 모터의 실제 위치는 약간씩 편차가 발생할 수 있습니다. 이는 원점복귀의 오차를 유발하게 됩니다. 그런데 cmHPCM_M0 또는 cmHPCM_M2 인 경우에는 모션제어기의 Feedback 카운터에 해당 편차가 그대로 반영됩니다. 따라서 Command 위치를 Feedback 위치와 일치시킨 후에 절대좌표 이송을 수행하면 이러한 편차에 의한 제어 오차를 제거할 수 있습니다. 이의 원리를 적용한 것이 cmHPCM_M2 입니다.

  • 스텝모터를 사용하는 경우에는 cmHPCM_M2 를 사용하면 안됩니다.

Note

서보모터를 사용하는 경우에는 cmHPCM_M2 로 하였을 때 가장 정확한 원점복귀 작업 결과를 얻을 수 있습니다. 단, 이때 다음과 같은 사항에 주의하여야 합니다.

  • Command 방향과 Feedback 방향이 반드시 일치하여야 합니다.

  • Command 분해능과 Feedback 분해능이 반드시 일치하여야 합니다.

  • 원점복귀가 완료된 후에 Command 와 Feedback 좌표는 일치하지만 0 이 되지는 않습니다.

따라서 경우에 따라서는 원점복귀 완료후에 절대좌표 0 으로 이송하는 명령이 필요할 수도 있습니다.

EXAMPLE

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
C/C++

#include “Cmmsdk.h”
#include “CmmsdkDef.h”

void OnSetHomePosClrMode ()
{
long nPosClrMode = 0; // 원점 복귀 위치 소거 모드 정보.

/* 원점 복귀 완료 후 위치 소거 모드 */
// 0 (cmHPCM_M0) : 원점 복귀 완료 HW 신호 ON 시 위치 소거.
// 1 (cmHPCM_M1) : HW 신호를 포함한 전체 원점 복귀 작업 완료 후 위치 소거.
// 2 (cmHPCM_M2) : 0 번 모드로 동작 후 원점 복귀 완료 후 Command 위치를 Feedback 위치로 설정.

// 설정된 위치 소거 모드를 확인 후, 위치 소거 모드 2 번 모드로 설정합니다.
if (cmmHomeGetPosClrMode (cmX1, &nPosClrMode ) == cmERR_NONE )
{
       if ( nPosClrMode != cmHPCM_M2 )
       {
           cmmHomeSetPosClrMode (cmX1, cmHPCM_M2 );
       }
   }
}
 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
Visual Basic

Private Sub OnSetHomePosClrMode ()

   Dim nPosClrMode As Long ‘ 원점 복귀 위치 소거 모드 정보

   ‘ 설정된 위치 소거 모드를 확인 후, 위치 소거 모드 2 번 모드로 설정합니다.
   If cmmHomeGetPosClrMode (cmX1, nPosClrMode ) = cmERR_NONE Then

       If nPosClrMode <> cmHPCM_M2 Then
           Call cmmHomeSetPosClrMode (cmX1, cmHPCM_M2 )
       End If
   End If

End Sub
 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
Delphi

procedure OnSetHomePosClrMode ();
var

   nPosClrMode : LongInt;          // 원점 복귀 위치 소거 모드 정보

begin
   // 설정된 위치 소거 모드를 확인 후, 위치 소거 모드 2 번 모드로 설정합니다.
   if cmmHomeGetPosClrMode (cmX1, @nPosClrMode ) = cmERR_NONE then

   begin
       if nPosClrMode <> cmHPCM_M2 then
   begin
           cmmHomeSetPosClrMode (cmX1, cmHPCM_M2 );
       end;
   end;

end;