4.1.36. cmmCfgSetUnitDist


SYNOPSYS

VT_I4 cmmCfgSetUnitDist(
    [in] VT_I4 Axis, [in] VT_R8 UnitDist
    )

DESCRIPTION

  • cmmCfgSetUnitDist() 함수는 논리적 단위 거리에 대한 펄스 수를 설정합니다. 여기서 논리적 단위 거리라 함은 Move 함수에서 사용하는 거리 또는 위치에 대한 단위량을 의미합니다. 이 함수를 사용하여 특별히 지정하지 않는 경우에는 논리적 단위 거리에 대한 펄스 수는 초기 값인 ‘1’ 로 사용됩니다.

PARAMETER

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

  • UnitDist : cmmCfgSetUnitDist 함수의 인자이며, 논리적거리 1 을 이동하기 위해서 출력되어져야 하는 펄스 수를 지정합니다.

RETURN VALUE

  • cmmCfgSetUnitDist() 및 cmmCfgGetUnitDist() 함수의 반환값

Value

Meaning

음수

수행 실패

cmERR_NONE

수행 성공

SEE ALSO

alternate text alternate text

Warning

Unit distance 값이 무한소수(나누어 떨어지지 않음)이면 소수점 오차가 누적될 수 있습니다. 따라서 이러한 경우에는 Unit distance 를 1 로 하고 사용자가 논리적거리 단위를 처리하는 것이 바람직합니다.

alternate text
 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
 Unit distance (Du) = Pr/Lr = 10000/5 = 2000
 Unit speed (Vu) = 2000

 //따라서, Unit distance"와 "Unit speed"를 2000 으로 설정하면 다음과 같이 모든 이동함수에서 거리의 단위를
 //mm 단위에 해당하는 값을 입력할 수 있습니다.

 // 속도=100(mm/s), 가/감속도=1000(mm/s^2) 으로 설정한다. //
 cmmCfgSetSpeedPattern(cmX1, cmSMODE_T, 100, 1000, 1000);

 // (+)방향으로 20mm 이송한다 (실제는 20*2000 = 40000 펄스가 출력됨) //
 cmmSxMove (0, 20);

 // (-)방향으로 20mm 이송한다 (실제는 20*2000 = 40000 펄스가 출력됨) //
 cmmSxMove (0, -20);

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

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

long nAxisNo = 1; // Unit Distance 를 설정할 축을 선택합니다.

void OnSetUnitDist ()
{
   /*
   모터 1 회전 시 이동거리 (Lr) = 5mm, 모터 Command 분해능(Pr) = 10000 pulse/rev 인 기구물이 있다면

   Unit distance(Du) = Pr/Lr = 10000/5 = 2000
   Unit speed(Vu) = 2000

   따라서, ‘Unit Distance’ 와 ‘Unit Speed’ 를 2000 으로 설정하면 모든 이송 함수에서 mm 거리단위에 대응하는
   값을 입력할 수 있습니다.
   */

   cmmCfgSetUnitDist ( nAxisNo, 2000 ); // Unit Distance 를 2000 으로 설정
   cmmCfgSetUnitSpeed ( nAxisNo, 2000 ); // Unit Speed 를 2000 으로 설정

}

void OnMove ()
{
   // 속도 = 100(mm/s), 가/감속도 = 1000(mm/s^2)으로 설정합니다.
   cmmCfgSetSpeedPattern ( nAxisNo, cmSMODE_T, 100, 1000, 1000 );

   // (+)방향으로 20mm 이송합니다. (실제는 20 * 2000 = 40000 펄스가 출력됩니다.)
   cmmSxMove ( nAxis, 20 );
}
 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
Visual Basic

Dim nAxisNo As Long ‘ Unit Distance 를 설정할 축을 선택합니다.
nAxisNo = 1

Private Sub OnSetUnitDist ()

   ‘ 모터 1 회전 시 이동거리 (Lr) = 5mm, 모터 Command 분해능(Pr) = 10000 pulse/rev 인 기구물이 있다면
   ‘ Unit distance(Du) = Pr/Lr = 10000/5 = 2000
   ‘ Unit speed(Vu) = 2000

   ‘ 따라서, ‘Unit Distance’ 와 ‘Unit Speed’ 를 2000 으로 설정하면 모든 이송 함수에서 mm 거리단위에 대응하는
   ‘ 값을 입력할 수 있습니다.

   Call cmmCfgSetUnitDist ( nAxisNo, 2000 ) ‘ Unit Distance 를 2000 으로 설정
   Call cmmCfgSetUnitSpeed ( nAxisNo, 2000 ) ‘ Unit Speed 를 2000 으로 설정

End Sub

Private Sub OnMove ()

   ‘ 속도 = 100(mm/s), 가/감속도 = 1000(mm/s^2)으로 설정합니다.
   Call cmmCfgSetSpeedPattern ( nAxisNo, cmSMODE_T, 100, 1000, 1000 )

   ‘ (+)방향으로 20mm 이송합니다. (실제는 20 * 2000 = 40000 펄스가 출력됩니다.)
   Call cmmSxMove ( nAxis, 20 )

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 OnSetUnitDist ();
begin

   { 모터 1 회전 시 이동거리 (Lr) = 5mm, 모터 Command 분해능(Pr) = 10000 pulse/rev 인 기구물이 있다면
   Unit distance(Du) = Pr/Lr = 10000/5 = 2000
   Unit speed(Vu) = 2000

   따라서, ‘Unit Distance’ 와 ‘Unit Speed’ 를 2000 으로 설정하면 모든 이송 함수에서 mm 거리단위에 대응하는
   값을 입력할 수 있습니다. }

   cmmCfgSetUnitDist (cmX1, 2000 ); // Unit Distance 를 2000 으로 설정
   cmmCfgSetUnitSpeed (cmX1, 2000 ); // Unit Speed 를 2000 으로 설정

end;

procedure OnMove ();
begin
       // 속도 = 100(mm/s), 가/감속도 = 1000(mm/s^2)으로 설정합니다.
       cmmCfgSetSpeedPattern ( cmX1, cmSMODE_T, 100, 1000, 1000 );

   // (+)방향으로 20mm 이송합니다. (실제는 20 * 2000 = 40000 펄스가 출력됩니다.)
   cmmSxMove ( cmX1, 20,0 );

end;