cmmSxVMoveStart


SYNOPSYS

VT_I4 cmmSxVMoveStart(
    [in] VT_I4 Axis, [in] VT_I4 Dir
    )

DESCRIPTION

  • 작업속도까지 가속한 후에 작업속도를 유지하며 정지함수가 호출될 때까지 지정한 방향으로의 모션을 계속 수행합니다. 이 함수는 모션을 시작시킨 후에 바로 반환됩니다.

PARAMETER

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

  • Dir : 모션의 방향을 설정합니다.

Value

Meaning

0 또는 cmDIR_N

(-) 방향 => Negative direction

1 또는 cmDIR_P

(+) 방향 => Positive direction

RETURN VALUE

Value

Meaning

음수

수행 실패

cmERR_NONE

수행 성공

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
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
C/C++ :

/***************************************************************
다음의 예제는 “Jog 이동”을 하는 예입니다. 본 예제에서의
“Jog 이동”은 버튼이 눌려진 상태에서는 Axis0 축의 이동을
수행하다가, 버튼이 풀리면 이동을 멈추는 예입니다.
**************************************************************/

#include "Cmmsdk.h"
#include "CmmsdkDef.h"

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

void OnProgramInitial()
{
   long m_nNumAxes;
   cmmLoadDll();
   if(cmmGnDeviceLoad(cmTRUE, &m_nNumAxes) != cmERR_NONE)
   {
       //Handle 은 사용자가 생성한 폼의 핸들 값입니다.
       cmmErrShowLast(Handle);
       return;
   }
}

/**************************************************************
* OnSetSpeed(): 이 함수는 속도설정의 변경이 필요할 때 호출되는 가상의 함수입니다.
* 이때 m_fVwork, m_fAcc, m_fDec 변수를 통하여 속도, 가속도, 감속도 값이
* 적절하게 전달된다고 가정합니다.
**************************************************************/

void OnSetSpeed()
{
   //첫 번째 축(Axis)의 기본 속도를 설정 합니다.
   cmmCfgSetSpeedPattern(cmX1, cmSMODE_S, m_fVwork, m_fAcc, m_fDec );
}

/**************************************************************
* OnPlusButtonDown() : (+)Move 버튼이 눌렸을 때 호출되는 가상의 함수
* 이 함수에서 (+)방향으로 V-Move 를 시작합니다.
**************************************************************/

void OnPlusButtonDown ()
{
   cmmSxVMoveStart(cmX1, cmDIR_P);//Positive dir V-MOVE
}

/**************************************************************
* OnPlusButtonUp() : (-)Move 버튼이 올라올 때 호출되는 가상의 함수
* 이 함수에서는 V-Move 를 종료합니다.
**************************************************************/

void OnPlusButtonUp ()
{
   cmmSxStop(cmX1, cmFALSE, cmFALSE);
}

/**************************************************************
* OnMinusButtonDown(): (-)Move 버튼이 눌렸을 때 호출되는 가상의 함수
* 이 함수에서 (+)방향으로 V-Move 를 시작합니다.
**************************************************************/

void OnMinusButtonDown()
{
   cmmSxVMoveStart(cmX1, cmDIR_N); // Negative dir V-MOVE
}

/**************************************************************
* OnMinusButtonUp() : (-)Move 버튼이 올라올 때 호출되는 가상의 함수
* 이 함수에서는 V-Move 를 종료합니다.
**************************************************************/

void OnMinusButtonUp()
{
   cmmSxStop(cmX1, cmFALSE, cmFALSE);
}
 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
Visual Basic

‘=============================================================
‘cmmGnDeviceLoad 함수로 장치를 초기화 합니다.
‘=============================================================
Private Sub Form_Load()
   Dim nTotalAxis As Long
   Dim IRetVal As Long
   Dim Hwnd As Long
'=============================================================
' cmmGnDeviceLoad 함수로 장치를 초기화합니다.
IRetVal = cmmGnDeviceLoad(True, nTotalAxis)

If IRetVal <> cmERR_NONE Then
   MsgBox ("cmmGnDeviceLoad has been failed")

End If
'=============================================================
End Sub

Private Sub CfgSpeed(nTotalAxis As Long)
   ‘=============================================================
‘ 이 함수에서 cmmCfgSetSpeedPattern 함수로 속도를 설정하는 것은
   ‘ 모든 모션의 기준속도(Standard Speed) 가 됩니다.
‘ 단축 구동을 비롯한 대부분의 모션 동작은 이 기준 속도의 비율로 동작되게
   ‘ 됩니다.
‘ 아래 함수는 전체 축에 대해서 임의의 기준 속도를 설정하고 있습니다.
   ‘============================================================

   Call cmmCfgSetSpeedPattern(cmX1, cmSMODE_S, 1000, 2000, 2000)

End Sub

Private Sub btnStart_Click()
   ' 지정된 방향으로 연속적 속도 이동을 시작합니다. 이 이동은
‘ 속도 이동이기 때문에, 정지(停止) 함수가 호출될때까지 계속 이송합니다.
Call cmmSxVMoveStart(cmX1, cmDIR_N)

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
Delphi

// *  함수는 폼이 생성될때 이벤트에 의해 불려지며 , 장치를 로드하는 함수입니다.

procedure OnCreate();
var
   g_nAxis : LongInt;
begin

   // Load CMMSDK(DLL) Library
   if ( cmmGnDeviceLoad(cmTRUE,@g_nAxis) <> cmERR_NONE ) then
   begin

       // 마지막에 발생한 에러를 화면에 표시합니다.
       // 함수 인자로는 Form  Handle  전달됩니다.
       cmmErrShowLast(Form1.Handle);
       exit;

   end
end;

// * Description : 속도를 설정 하는 함수
procedure btnSetSpeedClick();
var
   fAccelSpeed : Double;
   fDecelSpeed : Double;
   fWorkSpeed : Double;
   nSMODE : LongInt;

begin
   // 변수들의 값을 설정 합니다.
   fWorkSpeed := 50000;
   fAccelSpeed := 100000;
   fDecelSpeed := 100000;
   nSMODE := cmSMODE_S;
   // 설정된 기준 속도를 실제 SDK 함수에 전달합니다.

cmmCfgSetSpeedPattern(
       cmX1, // 현재 활성화 되어 있는 채널을 선택합니다.
       nSMODE, // 가감속이 없는 모드와 선형 가감속, S-CURVE 가감속을 설정합니다.
       fWorkSpeed, // 작업 속도를 설정합니다.
       fAccelSpeed, // 가속도를 설정합니다.
       fDecelSpeed); // 감속도를 설정합니다.

end;

// * Description :

// *  함수는 버튼 이벤트에 의해 + 방향으로 설정된 거리만큼 [절대좌표]
// * 이동하는 함수입니다.

Procedure btnPositiveClick();
var
   fWorkSpeedRatio : Double;
   fAccelSpeedRatio : Double;
   fDecelSpeedRatio : Double;

begin

       //////////////////////////////////////////////////////////////
       // 저희 COMIZOA 에서는 다음과 같은 형태의 함수를 제공합니다.
       // ) 지령 펄스 출력과 위치 검출기를 통한 펄스  입력의 일치를 위한 제어
       // 설명 :  함수는 지정된 지령 위치의 펄스 출력을 내보내고,
       // 위치 검출기를 통해 지령된 위치까지 이송 후에 함수가 반환됩니다.
       // cmmSxMove [상대좌표]
       // cmmSxMoveTo [절대좌표]
       // ) 지령 펄스 출력  바로 종료를 위한 함수
       // 설명 :  함수는 지정된 지령 위치의 펄스 출력을 내보내고,
       //      함수가 반환됩니다.
       //       함수를 사용 했을 경우 사용자가 직접 위치 검출기를 통한
       //      모션 종료를 판단할  있는 함수는
       //      cmmSxIsDone 혹은 cmmSxWaitDone 함수가 있습니다.
       // cmmSxMoveStart [상대좌표]
       // cmmSxMoveToStart [절대좌표]
       //////////////////////////////////////////////////////////////

       //cmmSxSetSpeedRation  통하여서 기준 속도와의 비에 따른 실제 구동
       // 속도를 설정 합니다.
       // 여기서 기준 속도란 cmmCfgSetSpeedPattern 함수를 통해 설정된
       // 속도를 의미하며, 아래의 cmmSxSetSpeedRatio 함수는
       // 단축(Single Axis) 대상으로 축의 속도를
       // 기준 속도 대비 Percent(%) 단위로 입력 받아 설정하는 함수입니다.
   fAccelSpeedRatio := 100;
    fDecelSpeedRatio := 100;
   fWorkSpeedRatio := 100;

cmmSxSetSpeedRatio(cmX1 ,cmSMODE_KEEP, fWorkSpeedRatio, fAccelSpeedRatio, fDecelSpeedRatio);

cmmSxVMoveStart
(
   cmX1,
   cmDIR_N
);

end;