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;