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