cmmStReadMioStatuses


SYNOPSIS

VT_I4 cmmStReadMioStatuses(
    [in] VT_I4 Axis, [out] VT_PI4 MioStates
    )

DESCRIPTION

  • 이 함수는 현재 모션과 관련된 여러가지 MIO 상태를 반환합니다. 각 비트별로 할당된 MIO 의 상태를 표시하므로 사용자는 비트마스크를 수행하여 원하는 I/O 의 상태를 확인하여야 합니다. 범용적인 모션 응용프로그램에서는 MIO(Machine I/O) 상태를 표현하기 위한 용도로 본 함수의 사용 빈도가 매우 높습니다.

PARAMETER

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

  • MioStates : Machine I/O 상태

Bit No.

Name

Meaning

0 (cmIOST_RDY)

RDY

Servo ready signal input status(1=ON)

1 (cmIOST_ALM)

ALM

Alarm signal status(1=ON)

2 (cmIOST_ELP)

+EL

Positive limit switch status(1=ON)

3 (cmIOST_ELN)

-EL

Negative limit switch status(1=ON)

4 (cmIOST_ORG)

ORG

Origin switch status(1=ON)

5 (cmIOST_DIR)

DIR

Operating direction status(1=ON)

6 (cmIOST_RSV1)

Reserved

7 (cmIOST_PCS)

PCS

PCS signal input status(1=ON)

8 (cmIOST_ERC)

ERC

ERC pin output status(1=ON)

9 (cmIOST_EZ)

EZ

Index signal status(1=ON)

10 (cmIOST_CLR)

CLR

Clear input status(1=ON)

11 (cmIOST_LTC)

Latch

Latch signal input status(1=ON)

12 (cmIOST_SD)

SD

Slow Down signal input status(1=ON)

13 (cmIOST_INP)

INP

In-Position signal input status(1=ON)

14 (cmIOST_DRP)

DRP

+DR input signal status(1=ON)

15 (cmIOST_DRN)

DRN

-DR input signal status(1=ON)

16 (cmIOST_STA)

STA

STA input signal status(1=ON)

17 (cmIOST_STP)

STP

STP input signal status(1=ON)

18 ~31

Reserved

RETURN VALUE

Value

Meaning

음수

수행 실패

cmERR_NONE

수행 성공

REFERENCE

  • 논리적 거리 단위는 cmmCfgSetUnitDist() 함수에 의해 결정됩니다.

EXAMPLE

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
C/C++

   long dwMioState = 0;
   cmmStReadMioStatuses(cmX1, &dwMioState);
   // dwMioState 의 값을 오른쪽으로 쉬프트 연산(Shift Operation) 하여, 해당 상태 값을 얻습니다.
   BOOL RDY_State = (dwMioState >> cmIOST_RDY) & 0x1;
   BOOL ALM_State = (dwMioState >> cmIOST_ALM) & 0x1;
   BOOL ELP_State = (dwMioState >> cmIOST_ELP) & 0x1;
   BOOL ELN_State = (dwMioState >> cmIOST_ELN) & 0x1;
   ………
   ………
 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
Visual Basic

Dim dwMioState As Long
Dim RDY_State, ALM_State, ELP_State, ELN_State As Boolean

   ‘ dwMioState 의 값을 오른쪽으로 쉬프트 연산(Shift Operation) 하여, 해당 상태 값을 얻습니다. CMMSDK 는
   ‘ 비쥬얼 베이직 사용자를 위해서 편리한 비트 연산 함수를 제공합니다. 아래의 예제에서는 cmmGnBitShift
   ‘함수 를 이용해 비트연산을 용이하게 수행하고 있습니다.

   Call cmmStReadMioStatuses(cmX1, dwMioState)
   Call cmmGnBitShift(dwMioState,-cmIOST_RDY, RDY_State) And 1
   Call cmmGnBitShift(dwMioState,-cmIOST_ALM, ALM_State) And 1
   Call cmmGnBitShift(dwMioState,-cmIOST_ELP, ELP_State) And 1
   Call cmmGnBitShift(dwMioState,-cmIOST_ELN, ELN_State) And 1

   RDY_State = ((RDY_State) And &H1)
   ALM_State = ((ALM_State) And &H1)
   ELP_State = ((ELP_State) And &H1)
   ELN_State = ((ELN_State) And &H1)
   ………
   ………
 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
Delphi

Var
   dwMioState : LongInt;
   RDY_State : Boolean;
   ALM_State : Boolean;
   ELP_State : Boolean;
   ELN_State : Boolean;

begin
   cmmStReadMioStatuses(cmX1,@dwMioState);

   // dwMioState 의 값을 오른쪽으로 쉬프트 연산(Shift Operation) 하여, 해당 상태 값을 얻습니다.
   RDY_State := Boolean((dwMioState shr cmIOST_RDY) and $1);
   ALM_State := Boolean((dwMioState shr cmIOST_ALM) and $1);
   ELP_State := Boolean((dwMioState shr cmIOST_ELP) and $1);
   ELN_State := Boolean((dwMioState shr cmIOST_ELN) and $1);
   ………
   ………

end;