cmmStReadMotionState


SYNOPSIS

VT_I4 cmmStReadMotionState(
    [in] VT_I4 Axis, [out] VT_PI4 MotStates
    )

DESCRIPTION

  • 이 함수는 현재 모션의 동작 상태를 반환합니다.

PARAMETER

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

  • MotStates : 모션 상태.

Value

Meaning

음수

모션작업 도중 에러 발생 => 에러코드 참조.

0 또는 cmMST_STOP

Stop

1 또는 cmMST_WAIT_DR

Waiting for DR input signal

2 또는 cmMST_WAIT_STA

Waiting for STA input signal

3 또는 cmMST_WAIT_INSYNC

Waiting for internal sync. signal

4 또는 cmMST_WAIT_OTHER

Waiting other axis

5 또는 cmMST_WAIT_ERC

Waiting for ERC output finished

6 또는 cmMST_WAIT_DIR

Waiting for DIR change (DIR 은 외부입력 신호가 아닌 내부적인 신호임)

7 또는 cmMST_RESERVED1

Reserved

8 또는 cmMST_WAIT_PLSR

Waiting for PA/PB input signal

9 또는 cmMST_IN_RVSSPD

In home special speed (reverse speed)

10 또는 cmMST_IN_INISPD

In start velocity motion

11 또는 cmMST_IN_ACC

In acceleration

12 또는 cmMST_IN_WORKSPD

In working velocity

13 또는 cmMST_IN_DEC

In deceleration

14 또는 cmMST_WAIT_INP

Waiting for INP input signal

15 또는 cmMST_SPARE0

Reserved

  • Position : 대상 카운터에 설정될 값. 단, 이 값은 논리적 거리 단위로 설정하여야 합니다.

RETURN VALUE

Value

Meaning

음수

수행 실패

cmERR_NONE

수행 성공

REFERENCE

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

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

char szMstList[16][20] = {
   "Stop",
   "Wait DR",
   "Wait STA",
   "Wait INSYNC",
   "Wait other axis",
   "Wait ERC",
   "Wait DIR",
   "Reserved1",
   "Wait PA/PB",
   "On reverse speed",
   "On initial speed",
   "On acceleration",
   "On work speed",
   "On deceleration",
   "Wait INP",
   ""};

   long nMST;

   cmmStReadMotionState(cmX1, &nMST);

   if(nMST < 0){ // Status 가 0 보다 작으면 마지막 모션에서 에러 발생한 상태
       cmmErrShowLast(Handle);
   }
   //////////////////////////////////////////////////////////////
   // DisplayStatus() 함수는 MessageBox 와 같이 화면에 상태를 표시하는 가상의 함수입니다.
   CString sMsg = “Current Motion State : “ + szMstList[nMST];
   DisplayStatus(sMsg)
}
 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
33
34
35
Visual Basic

Private Sub Timer1_Timer()

Dim state As Long

   If (cmmStReadMotionState(cmX1, state) <> cmERR_NONE) Then
    Call cmmErrShowLast(Handle)
   End If

Select Case state

Case cmMST_STOP: lblState.Caption = "Stop"
Case cmMST_WAIT_DR: lblState.Caption = "Waiting for DR input signal"
Case cmMST_WAIT_STA: lblState.Caption = "Waiting for STA input signal"
Case cmMST_WAIT_INSYNC: lblState.Caption = "Waiting for internal sync, signal"
Case cmMST_WAIT_OTHER: lblState.Caption = "Waiting other axis"
Case cmMST_WAIT_ERC: lblState.Caption = "Waiting for ERC output finished"
Case cmMST_WAIT_DIR: lblState.Caption = "Waiting for DIR change"

' 아래 cmMST_RESERVED1 은 내부적으로 예약되었기 때문에 사용하지 않습니다.
'Case cmMST_RESERVED1 : lblState.Caption = "RESERVED1"
Case cmMST_WAIT_PLSR: lblState.Caption = "Waiting for PA/PB input signal"
Case cmMST_IN_RVSSPD: lblState.Caption = "In home special speed (reverse speed)"
Case cmMST_IN_INISPD: lblState.Caption = "In start velocity motion"
Case cmMST_IN_ACC: lblState.Caption = "In Acceleration"
Case cmMST_IN_WORKSPD: lblState.Caption = "In Working Velocity"
Case cmMST_IN_DEC: lblState.Caption = "In Deceleration"

Case cmMST_WAIT_INP: lblState.Caption = "Waiting for INP input signal
' 아래 cmMST_SPARE0 는 내부적으로 예약되었습니다. 사용하지 않습니다.
' Case cmMST_SPARE0 : lblState.Caption = "RESERVED2"
End Select

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
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
Delphi

function GetMitonStateString( i : Integer ) : String;
begin
   Case i of

   cmMST_STOP : Result := 'Stop';
   cmMST_WAIT_DR : Result := 'Waiting for DR input signal';
   cmMST_WAIT_STA : Result := 'Waiting for STA input signal';
   cmMST_WAIT_INSYNC : Result := 'Waiting for internal sync, signal';
   cmMST_WAIT_OTHER : Result := 'Waiting other axis';
   cmMST_WAIT_ERC : Result := 'Waiting for ERC output finished';
   cmMST_WAIT_DIR : Result := 'Waiting for DIR change';

   // cmMST_RESERVED1 은 내부적으로 예약되었습니다. 사용하지 않습니다.
   //cmMST_RESERVED1 : Result := 'RESERVED1';
   cmMST_WAIT_PLSR : Result := 'Waiting for PA/PB input signal';
   cmMST_IN_RVSSPD : Result := 'In home special speed (reverse speed)';
   cmMST_IN_INISPD : Result := 'In start velocity motion';
   cmMST_IN_ACC : Result := 'In Acceleration';
   cmMST_IN_WORKSPD : Result := 'In Working Velocity';
   cmMST_IN_DEC : Result := 'In Deceleration';
   cmMST_WAIT_INP : Result := 'Waiting for INP input signal';

   // cmMST_SPARE0 는 내부적으로 예약되었습니다. 사용하지 않습니다.
   //cmMST_SPARE0 : Result := 'RESERVED2';
 end;
end;

procedure OnEvent();
var
 stateus : LongInt;
 i : Integer;
begin

 // 에러 발생하면, 에러 메시지를 화면에 나타냅니다.
 if ( cmmStReadMotionState(cmX1, @stateus) <> cmERR_NONE ) then
 begin
   ShowMessage('cmmStReadMotionState has been failed');
   // 또는 cmmErrShowLast(self.Handle);
  exit;
 end;

if ( stateus < 0 ) then
begin

 ShowMessage('모션 동작 상태에 에러가 발생하였습니다.');
 // 또는 cmmErrShowLast(self.Handle);
 // OnEvent procedure 를 종료합니다.
 exit;
 end;
end;