cmmOverrideSpeedSet¶
SYNOPSIS¶
VT_I4 cmmOverrideSpeedSet(
[in] VT_I4 Axis
)
DESCRIPTION¶
이 함수는 단축 모션이 진행되고 있는 중에 속도를 오버라이딩하고자할 때 사용하는 함수입니다. 속도를 오버라이딩하기 위해서는 먼저 cmmCfgSetSpeedPattern() 속도 패턴 설정 함수를 통하여 변경하고자 하는 속도 또는 가속도값을 설정하고나서 이 함수를 수행해야합니다.
PARAMETER¶
Axis: 축번호. 축번호는 상수값으로 [cmX1] 부터 0 번째 축을 기준 축으로 임의의 축을 설정할 수 있습니다.
RETURN VALUE¶
Value |
Meaning |
---|---|
음수 |
수행 실패 |
cmERR_NONE |
수행 성공 |
REFERENCE¶
여러축을 동시에 속도 오버라이딩(Overriding)하고자 한다면 이 함수 대신에 cmmOverrideSpeedSetAll() 함수를 사용하십시오.
직선, 원호, 헬리컬 보간작업을 수행하는 경우에는 속도 오버라이딩을 사용할 수 없습니다.
EXAMPLE¶
본 예제는 cmmOverrideSpeedSet()함수를 사용하여 속도를 오버라이딩하는 것을 예로 보여주는 코드입니다. 본 예제는 “HIGH” 와 “LOW” 로 이름지어진 두 개의 버튼이 있다고 가정하고 “HIGH” 버튼이 눌리면 X1 축의 속도를 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 74 75 76 77 78 79 80 81 82 83 | C/C++
#include "Cmmsdk.h"
#include "CmmsdkDef.h"
#define V_LOW 10000 // 저속모드 속도
#define V_HIGH 20000 // 고속모드 속도
/***************************************************************
* OnProgramInitial : 이 함수는 가상의 함수로서 프로그램 초기화 루틴이
* 적용되는 부분을 의미합니다.
***************************************************************/
void OnProgramInitial()
{
long m_nNumAxes;
cmmLoadDll();
if(cmmGnDeviceLoad(cmTRUE, &m_nNumAxes) != cmERR_NONE)
{
//Handle 은 사용자가 생성한 폼의 핸들 값입니다.
cmmErrShowLast(Handle);
return;
}
}
/**************************************************************
* OnStart() : 이 함수는 가상의 함수로서 X 축에 대하여 V-MOVE 모션을 시작합니다.
**************************************************************/
void OnStart()
{
long nIsDone;
// 해당축이 작업중이면 정지하고 다시 시작 //
cmmSxIsDone(cmX1, &nIsDone);
if(nIsDone != cmTRUE) cmmSxStopEmg(cmX1);
// 속도설정 => 시작은 LOW 속도로 시작 //
cmmCfgSetSpeedPattern(cmX1, cmSMODE_S, V_LOW, 50000, 50000);
// V-Move start //
if(cmmSxVMoveStart(cmX1, cmDIR_P)){
cmmErrShowLast(Handle);
return;
}
}
/**************************************************************
* OnHighButtonClick() : “HIGH” 버튼 콜백함수 (가상함수)
* “HIGH”버튼이 클릭되면 속도를 V_HIGH 속도로 오버라이드한다.
**************************************************************/
void OnHighButtonClick()
{
// V_HIGH 속도로 오버라이딩 //
cmmSxSetSpeedRatio(cmX1, cmSMODE_S, , 200, 100, 100);
//아래 코드로 대체가 가능합니다.
//cmmCfgSetSpeedPattern(cmX1, cmSMODE_S, V_HIGH, 50000, 50000);
if(cmmOverrideSpeedSet (cmX1) != cmERR_NONE){
cmmErrShowLast(Handle);
return;
}
}
/**************************************************************
* OnLowButtonClick() : “LOW” 버튼 콜백함수 (가상함수)
* “LOW”버튼이 클릭되면 속도를 V_LOW 속도로 오버라이드한다.
**************************************************************/
void OnLowButtonClick()
{
// V_LOW 속도로 오버라이딩 //
cmmSxSetSpeedRatio(cmX1, cmSMODE_S, , 100, 100, 100);
//아래 코드로 대체가 가능합니다.
//cmmCfgSetSpeedPattern(cmX1, cmSMODE_S, V_LOW, 50000, 50000);
if(cmmOverrideSpeedSet (cmX1) != cmERR_NONE){
cmmErrShowLast(Handle);
return;
}
}
/**************************************************************
* OnStop() : “Stop”명령시에 호출되는 가상의 함수
**************************************************************/
void OnStop()
{
cmmSxStopEmg(cmX1);
}
|
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 | Visual Basic
'/**************************************************************
'* OnStart() : 이 함수는 가상의 함수로서 X 축에 대하여 V-MOVE 모션을
‘*시작합니다.
'**************************************************************/
Private Sub OnStart()
Dim nIsDone As Long
'해당축이 작업중이면 정지하고 다시 시작
Call cmmSxIsDone(cmX1, nIsDone)
If (nIsDone <> cmTRUE) Then
cmmSxStopEmg (cmX1)
End If
'시작은 LOW 속도로 시작
Call cmmCfgSetSpeedPattern(cmX1, cmSMODE_S, 10000, 50000, 50000)
If (cmmSxVMoveStart(cmX1, cmDIR_P)) 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 cmmCfgSetSpeedPattern(cmX1, cmSMODE_S, 20000, 50000, 50000)
If (cmmOverrideSpeedSet(cmX1) <> cmERR_NONE) Then
Call cmmErrShowLast(thisform.Hwnd)
End If
End Sub
'/**************************************************************
'* OnLowButtonClick() : "LOW" 버튼 콜백함수 (가상함수)
'* "LOW"버튼이 클릭되면 속도를 V_LOW 속도로 오버라이드한다.
'**************************************************************/
Private Sub OnLowButtonClick()
'V_LOW 속도로 오버라이딩
Call cmmCfgSetSpeedPattern(cmX1, cmSMODE_S, 10000, 50000, 50000)
If (cmmOverrideSpeedSet(cmX1) <> cmERR_NONE) Then
Call cmmErrShowLast(thisform.Hwnd)
End Sub
`/**************************************************************
`* OnStop() : “Stop”명령시에 호출되는 가상의 함수
`**************************************************************/
Private Sub OnStop()
Call cmmSxStopEmg(cmX1)
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 | Delphi
{ 다음 예제는 단축 속도 이송 수행 중에 속도 오버라이드 함수를 통해
속도를 변경하는 예제 입니다. }
procedure OnMove ();
begin
// 속도 환경을 설정합니다.
cmmCfgSetSpeedPattern (cmX1, cmSMODE_S, 1000, 10000, 10000 );
// 단축 속도 이송을 수행합니다.
cmmSxMoveStart (cmX1, cmDIR_P );
end;
procedure OnOverrideSpeedHigh ()
begin
// 속도 오버라이드 할 축 및 속도를 지정합니다.
cmmCfgSetSpeedPattern (cmX1, cmSMODE_KEEP, 2000, 10000, 10000 );
// 또는 cmmCfgSetSpeedPattern (cmX1, cmSMODE_KEEP, 200, 100, 100 );
// 진행 중인 이송 작업에 대해 속도를 오버라이드 합니다.
cmmOverrideSpeedSet (cmX1 );
end;
procedure OnOverrideSpeedLow ();
begin
// 속도 오버라이드 할 축 및 속도를 지정합니다.
cmmCfgSetSpeedPattern (cmX1, cmSMODE_KEEP, 500, 10000, 10000 );
// 또는 cmmCfgSetSpeedPattern (cmX1, cmSMODE_KEEP, 50, 100, 100 );
//진행 중인 이송 작업에 대해 속도를 오버라이드 합니다.
cmmOverrideSpeedSet (cmX1 );
end;
|