cmmOverrideSpeedSetAll


SYNOPSIS

VT_I4 cmmOverrideSpeedSetAll(
    [in] VT_I4 NumAxes, [in] VT_PI4 AxisList
    )

DESCRIPTION

  • 이 함수는 cmmOverrideSpeedSet()과 같이 각 축의 속도를 오버라이딩하는 함수이지만 여러 축을 동시에 오버라이딩할 수 있다는 것이 차이점입니다.

PARAMETER

  • nNumAxes : 동시에 작업을 수행할 대상 축의 수

  • AxisList : 동시에 작업을 수행할 대상 축의 배열 주소값. 이 배열의 크기는 NumAxes 값과 일치해야 합니다.

RETURN VALUE

Value

Meaning

음수

수행 실패

cmERR_NONE

수행 성공

EXAMPLE

  • 본 예제는 cmmOverrideSpeedSetAll()함수를 사용하여 속도를 오버라이딩하는 것을 예로 보여주는 코드입니다. 본 예제는 “HIGH” 와 “LOW” 로 이름지어진 두 개의 버튼이 있다고 가정하고 “HIGH” 버튼이 눌리면 X1 축과 Y1 축의 속도를 20000 으로 설정하고 “LOW” 버튼이 눌리면 속도를 10000 으로 설정하는 예입니다.

 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
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
Visual Basic

'/**************************************************************
'* OnStart() : 이 함수는 가상의 함수로서 X 축에 대하여
'* V-MOVE 모션을 시작합니다.
'**************************************************************/
Private Sub OnStart()

   Dim nIsDone As Long
   '해당축이 작업중이면 정지(停止)하고 다시 시작

   Call cmmSxIsDone(cmX1, nIsDone)
   If nIsDone <> cmTRUE Then
     Call cmmSxStopEmg(cmX1)
   End If

   Call cmmSxIsDone(cmY1, nIsDone)
   If nIsDone <> cmTRUE Then
     Call cmmSxStopEmg(cmY1)
   End If

   '시작은 LOW 속도로 시작
   Call cmmCfgSetSpeedPattern(cmX1, cmSMODE_S, 10000, 50000, 50000)
   Call cmmCfgSetSpeedPattern(cmY1, cmSMODE_S, 10000, 50000, 50000)

   'V-Move Start ( X, Y )
   If (Not (cmmMxVMoveStart(2, nAxisList(0), nDirList(0)))) Then
     Call cmmErrShowLast(thisform.Hwnd)
   End If

End Sub

'/**************************************************************
'* OnHighButtonClick() : "HIGH" 버튼 콜백함수 (가상함수)
'* "HIGH"버튼이 클릭되면 속도를 V_HIGH 속도로 오버라이드한다.
'**************************************************************/
Private Sub OnHighButtonClick()

   '// V_HIGH 속도로 오버라이딩 //
   Call cmmSxSetSpeedRatio(cmX1, cmSMODE_S, 200, 100, 100)
   Call cmmSxSetSpeedRatio(cmY1, cmSMODE_S, 200, 100, 100)

   '//아래 코드로 대체가 가능합니다.
   '//Call cmmCfgSetSpeedPattern(cmX1, cmSMODE_S, 20000, 50000, 50000)
   '//Call cmmCfgSetSpeedPattern(cmY1, cmSMODE_S, 20000, 50000, 50000)
   '//

   If cmmOverrideSpeedSetAll(2, nAxisList(0)) <> cmERR_NONE Then
     Call cmmErrShowLast(thisform.Hwnd)
   End If

End Sub

'/**************************************************************
'* OnLowButtonClick() : "LOW" 버튼 콜백함수 (가상함수)
'* "LOW"버튼이 클릭되면 속도를 V_LOW 속도로 오버라이드한다.
'**************************************************************/
Private Sub OnLowButtonClick()

   '// V_LOW 속도로 오버라이딩 //
   Call cmmSxSetSpeedRatio(cmX1, cmSMODE_S, 100, 100, 100)
   Call cmmSxSetSpeedRatio(cmY1, cmSMODE_S, 100, 100, 100)

   '//아래 코드로 대체가 가능합니다.
   '//Call cmmCfgSetSpeedPattern(cmX1, cmSMODE_S, 10000, 50000, 50000)
   '//Call cmmCfgSetSpeedPattern(cmY1, cmSMODE_S, 10000, 50000, 50000)
   '//

   If cmmOverrideSpeedSetAll(2, nAxisList(0)) <> cmERR_NONE Then
     Call cmmErrShowLast(thisform.Hwnd)
   End If

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
 53
 54
 55
 56
 57
 58
 59
 60
 61
 62
 63
 64
 65
 66
 67
 68
 69
 70
 71
 72
 73
 74
 75
 76
 77
 78
 79
 80
 81
 82
 83
 84
 85
 86
 87
 88
 89
 90
 91
 92
 93
 94
 95
 96
 97
 98
 99
100
101
102
103
104
105
106
107
Delphi

Const V_LOW = 10000; // 저속모드 속도
Const V_HIGH = 20000; // 고속모드 속도
Const N_AXES = 2; // 2 축
Const Handle = 1;

var

   nAxisList : Array[0..2] of LongInt;
   nDirList : Array[0..2] of LongInt;

//***************************************************************
// OnProgramInitial : 이 함수는 가상의 함수로서 프로그램 초기화 루틴이
// 적용되는 부분을 의미합니다.
//***************************************************************/

procedure OnProgramInitial();
var
   m_nNumAxes : LongInt;
begin
   if(cmmGnDeviceLoad(cmTRUE, @m_nNumAxes) <> cmERR_NONE) then
   begin
       //Handle 은 사용자가 생성한 폼의 핸들 값입니다.
       cmmErrShowLast(Handle);
       exit;
   end;
end;

//**************************************************************
// OnStart() : 이 함수는 가상의 함수로서 X 축에 대하여
// V-MOVE 모션을 시작합니다.
//**************************************************************/
procedure OnStart();
var
   nIsDone : LongInt;
begin
   // 해당축이 작업중이면 정지(停止)하고 다시 시작 //
   cmmSxIsDone(cmX1, @nIsDone);
   if(nIsDone <> cmTRUE) then
   begin
cmmSxStopEmg(cmX1);
   end;

   cmmSxIsDone(cmY1, @nIsDone);

   if(nIsDone <> cmTRUE) then
   begin
cmmSxStopEmg(cmY1);
   end;

   // 속도설정 => 시작은 LOW 속도로 시작 //
   cmmCfgSetSpeedPattern(cmX1, cmSMODE_S, V_LOW, 50000, 50000);
   cmmCfgSetSpeedPattern(cmY1, cmSMODE_S, V_LOW, 50000, 50000);
   // V-Move start (X & Y)//
   if(cmmMxVMoveStart(N_AXES, @nAxisList, @nDirList)<>cmFALSE)then
   begin
       cmmErrShowLast(Handle);
       exit;
   end;
end;

//**************************************************************
//OnHighButtonClick() : "HIGH" 버튼 콜백함수 (가상함수)
//"HIGH"버튼이 클릭되면 속도를 V_HIGH 속도로 오버라이드한다.
//**************************************************************/
procedure OnHighButtonClick();
begin
   // V_HIGH 속도로 오버라이딩 //
   cmmSxSetSpeedRatio(cmX1, cmSMODE_S, 200, 100, 100);
   cmmSxSetSpeedRatio(cmY1, cmSMODE_S, 200, 100, 100);
   //아래 코드로 대체가 가능합니다.
   //cmmCfgSetSpeedPattern(cmX1, cmSMODE_S, V_HIGH, 50000, 50000);
   //cmmCfgSetSpeedPattern(cmY1, cmSMODE_S, V_HIGH, 50000, 50000);

   if(cmmOverrideSpeedSetAll (N_AXES, @nAxisList) <> cmERR_NONE)then
   begin
       cmmErrShowLast(Handle);
   end;
end;

//**************************************************************
//OnLowButtonClick() : "LOW" 버튼 콜백함수 (가상함수)
//"LOW"버튼이 클릭되면 속도를 V_LOW 속도로 오버라이드한다.
//**************************************************************/
procedure OnLowButtonClick();
begin
   // V_LOW 속도로 오버라이딩 //
   cmmSxSetSpeedRatio(cmX1, cmSMODE_S, 100, 100, 100);
   cmmSxSetSpeedRatio(cmY1, cmSMODE_S, 100, 100, 100);
   //아래 코드로 대체가 가능합니다.
   //cmmCfgSetSpeedPattern(cmX1, cmSMODE_S, V_LOW, 50000, 50000);
   //cmmCfgSetSpeedPattern(cmY1, cmSMODE_S, V_LOW, 50000, 50000);

   if(cmmOverrideSpeedSetAll (N_AXES, @nAxisList) <> cmERR_NONE) then
   begin
       cmmErrShowLast(Handle);
   end;
end;

//**************************************************************
// OnStop() : "Stop"명령시에 호출되는 가상의 함수
//**************************************************************/
procedure OnStop();
begin
   cmmMxStopEmg(N_AXES, @nAxisList);
end;