4.1.30. cmmCfgSetRingCntr


SYNOPSYS

VT_I4 cmmCfgSetRingCntr(
    [in] VT_I4 Axis, [in] VT_I4 TargCntr, [in] VT_I4 IsEnable, [in] VT_R8 CntMax
    )

DESCRIPTION

  • cmmCfgSetRingCntr 함수는 링 카운터 기능의 활성/비활성 상태 설정 및 링 카운터 범위를 설정합니다. 해당 모션 축(Axis) 의 Command 또는 Feedback 카운터를 대상으로 링 카운터를 설정합니다.

PARAMETER

  • Axis : 축(채널) 번호. 축 번호는 0 부터 시작합니다.

  • TargCntr : 링 카운터 기능 대상 카운터를 설정합니다.

value

Meaning

0 (cmCNT_COMM)

Command Counter

1 (cmCNT_FEED)

Feedback Counter

  • IsEnable : cmmCfgSetRingCntr 함수의 인자이며, 링 카운터 기능 활성/비활성 상태를 설정합니다.

value

Meaning

0 (cmFALSE)

링 카운터 기능을 사용하지 않습니다.

1 (cmTRUE)

링 카운터 기능을 사용합니다.

  • CntMax : cmmCfgSetRingCntr 함수의 인자이며, 링 카운터 범위를 설정합니다. 링 카운터 기능이 활성화되면 지정한 카운터는 0~CntMax 사이의 값에서만 카운트 됩니다. 지정하는 카운터 값의 단위는 “Unit distance”에 의해 정의되는 논리적 거리 단위입니다.

RETURN VALUE

Value

Meaning

음수

수행 실패

cmERR_NONE

수행 성공

REFERENCE

../../../_images/4장_10.png

EXAMPLE

 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
31
C/C++

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

long nAxisNo = 1; // 링 카운터 기능을 설정할 축을 선택합니다.

void OnSetRingCounter ()
{
   long nIsEnable; // 링 카운터 설정 정보.
   double fCntMax;

   /* 커맨드 카운터를 대상으로 링카운터 기능을 활성화합니다.
   40000 펄스가 되면 커맨드 카운터가 다시 ‘0’부터 카운트 됩니다.*/
   cmmCfgSetRingCntr ( nAxisNo, // 대상 축 설정
       cmCNT_COMM, // 링 카운터 대상 카운터 설정
       cmTRUE, // 링 카운터 기능 활성/비활성 설정
       40000 // 링 카운터 범위 설정
       );

   // 해당 축의 링카운터 설정 상태를 반환합니다.
   cmmCfgGetRingCntr ( nAxis, cmCNT_COMM, &nIsEnable, &fCntMax );
}

void OnMove ()
{
   /* 링 카운터 범위가 ‘0 ~ 40000’으로 설정되어 있으므로 Command Count 값이 40000 이 되면
   자동으로 0 에서 Command Count 를 계수 합니다. */

cmmSxVMoveStart ( nAxisNo,1 );
}
 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 OnSetRingCounter ()

   Dim nIsEnable As Long ‘ 링 카운터 설정 정보.
   Dim fCntMax As Double

   ‘ 커맨드 카운터를 대상으로 링카운터 기능을 활성화합니다.
   ‘ 40000 펄스가 되면 커맨드 카운터가 다시 ‘0’부터 카운트 됩니다.
   Call cmmCfgSetRingCntr ( nAxisNo, cmCNT_COMM, cmTRUE, 40000 )

   ‘ 해당 축의 링카운터 설정 상태를 반환합니다.
   Call cmmCfgGetRingCntr ( nAxis, cmCNT_COMM, nIsEnable, fCntMax )

End Sub

Private Sub OnMove ()

   ‘ 링 카운터 범위가 ‘0 ~ 40000’으로 설정되어 있으므로 Command Count 값이 40000 이 되면
   ‘ 자동으로 0 에서 Command Count 를 계수 합니다.

   Call cmmSxVMoveStart ( nAxisNo ,1)

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
Delphi

procedure OnSetRingCounter ();
var
   nIsEnable : LongInt; // 링 카운터 설정 정보.
   fCntMax : Double;

begin
   { 커맨드 카운터를 대상으로 링카운터 기능을 활성화합니다.
   40000 펄스가 되면 커맨드 카운터가 다시 ‘0’부터 카운트 됩니다. }
   cmmCfgSetRingCntr (cmX1, cmCNT_COMM, cmTRUE, 40000 );

   // 해당 축의 링카운터 설정 상태를 반환합니다.
   cmmCfgGetRingCntr (cmX1, cmCNT_COMM, @nIsEnable, @fCntMax );

end;

procedure OnMove ();
begin
   { 링 카운터 범위가 ‘0 ~ 40000’으로 설정되어 있으므로 Command Count 값이 40000 이 되면
   자동으로 0 에서 Command Count 를 계수 합니다. }

   cmmSxVMoveStart (cmX1,1 );

end;