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;
|