cmlSxVMoveStart


SYNOPSYS

VT_I4 cmlSxVMoveStart ([in] VT_I4 BoardID, [in] VT_I4 Axis, [in] VT_I4 Dir)

DESCRIPTION

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

  • 이 함수의 사용과 호출에 있어, 제공된 ㈜커미조아의 함수 헤더 Visual Basic 에서는 함수의 첨두어 cms 가 붙지 않습니다.

PARAMETER

▶ BoardID: 사용자가 설정한 디바이스(보드) ID.

▶ Axis: 사용자가 제어하고자 하는 축 번호.

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

Value

Meaning

0 또는 cmDIR_N

(-) 방향 => Negative direction

1 또는 cmDIR_P

(+) 방향 => Positive direction

RETURN VALUE

Value

Meaning

음수

수행 실패

ERR_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
 C/C++ :
 /***************************************************************
 다음의 예제는 “Jog 이동”을 하는 예입니다. 본 예제에서의
 “Jog 이동”은 버튼이 눌려진 상태에서는 Axis0 축의 이동을
 수행하다가, 버튼이 풀리면 이동을 멈추는 예입니다.
 **************************************************************/
 #include "ComiMLink2_SDK.h"
 #include "ComiMLink2_SDK_Def.h"
 /***************************************************************
 * onprograminitial : 이 함수는 가상의 함수로서 프로그램 초기화 루틴이
 * 적용되는 부분을 의미합니다.
 ***************************************************************/
 Long BoardID = 0;
 void OnProgramInitial()
 {
 long m_nNumDevices;
 long m_nNumAxes;
 long m_DeviceList[16];
 cmlLoadDll();
 if(cmlGnLoadDevice (&m_nNumDevices, m_DeviceList, &m_nNumAxes) != ERR_NONE)
 {
 //Handle 은 사용자가 생성한 폼의 핸들 값입니다.
 // 에러메시지 출력
 return;
 }
 }
 /**************************************************************
 * OnSetSpeed(): 이 함수는 속도설정의 변경이 필요할 때 호출되는 가상의 함수입니다.
 * 이때 m_fVwork, m_fAcc, m_fDec 변수를 통하여 속도, 가속도, 감속도 값이
 * 적절하게 전달된다고 가정합니다.
 **************************************************************/
 void OnSetSpeed()
 {
 }
 //첫 번째 축(Axis)의 기본 속도를 설정 합니다.
 cmlCfgSetSpeedPattern(BoardID, 3, cmlMODE_S, m_fVwork, m_fAcc, m_fDec, 0,0);
 /**************************************************************
 * OnPlusButtonDown() : (+)Move 버튼이 눌렸을 때 호출되는 가상의 함수
 * 이 함수에서 (+)방향으로 V-Move 를 시작합니다.
 **************************************************************/
 void OnPlusButtonDown ()
 {
 cmlSxVMoveStart(BoardID, 3, cmDIR_P);//Positive dir V-MOVE
 }
 /**************************************************************
 * OnPlusButtonUp() : (-)Move 버튼이 올라올 때 호출되는 가상의 함수
 * 이 함수에서는 V-Move 를 종료합니다.
 **************************************************************/
 void OnPlusButtonUp ()
 {
 }
 cmlSxStop(BoardID, 3, cmlFALSE, cmlFALSE);
 /**************************************************************
 * OnMinusButtonDown(): (-)Move 버튼이 눌렸을 때 호출되는 가상의 함수
 * 이 함수에서 (+)방향으로 V-Move 를 시작합니다.
 **************************************************************/
 void OnMinusButtonDown()
 {
 cmlSxVMoveStart(BoardID, 3, cmDIR_N); // Negative dir V-MOVE
 }
 /**************************************************************
 * OnMinusButtonUp() : (-)Move 버튼이 올라올 때 호출되는 가상의 함수
 * 이 함수에서는 V-Move 를 종료합니다.
 **************************************************************/
 void OnMinusButtonUp()
 {
 }
 cmlSxStop(BoardID, 3, cmlFALSE, cmlFALSE);
 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
 Visual Basic
 ‘============================================================
 ‘GnLoadDevice 함수로 장치를 초기화 합니다.
 ‘============================================================
 Private Sub Form_Load()
 Dim BoardID As Long
 Dim nTotalDevices As Long
 Dim DeviceList(16) As Long
 Dim nTotalAxis As Long
 Dim IRetVal As Long
 Dim Hwnd As Long
 '============================================================
 ' GnLoadDevice 함수로 장치를 초기화합니다.
 BoardID = 0;
 IRetVal = GnLoadDevice(nTotalDevices, DeviceList(0), nTotalAxis)
 If IRetVal <> ERR_NONE Then
 MsgBox ("GnLoadDevice  has been failed")
 End If
 '============================================================
 End Sub
 Private Sub CfgSpeed(nTotalAxis As Long)
 „==========================================================
 „ 이 함수에서 CfgSetSpeedPattern 함수로 속도를 설정하는 것은
 ‘ 모든 모션의 기준속도(Standard Speed) 가 됩니다.
 „ 단축 구동을 비롯한 대부분의 모션 동작은 이 기준 속도의 비율로 동작되게
 „  됩니다.
 „ 아래 함수는 전체 축에 대해서 임의의 기준 속도를 설정하고 있습니다.
 „==========================================================
 Call CfgSetSpeedPattern(BoardID, 3, cmlMODE_S, 1000, 2000, 2000,0,0)
 End Sub
 Private Sub btnStart_Click()
 ' 지정된 방향으로 연속적 속도 이동을 시작합니다. 이 이동은
 ‘ 속도 이동이기 때문에, 정지(停止) 함수가 호출될때까지 계속 이송합니다.
 Call SxVMoveStart(BoardID, 0, 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
 Delphi

 // * 이 함수는 폼이 생성될때 이벤트에 의해 불려지며 , 장치를 로드하는 함수입
 // * 니다.
 procedure OnCreate();
 var
 g_nDevs : LongInt;
 BoardID : LongInt;
 DevList : Array[0..15] of LongInt
 g_nAxis : LongInt;
 begin
 BoardID := 0;
 // Load ComiMLink2(DLL) Library
 if ( cmlGnLoadDevice(@g_nDevs, @DevList, @g_nAxis) <> ERR_NONE ) then
 begin
   // 마지막에 발생한 에러를 화면에 표시합니다.
   // 함수 인자로는 Form 의 Handle 이 전달됩니다.
   // 에러메시지 출력
   exit;
 end
 end;

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

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

           cmlCfgSetSpeedPattern(
 0,  // 현재 Board의 ID를 입력합니다.
   0,  // 현재 활성화 되어 있는 채널을 선택합니다.
   nSMODE, // 가감속이 없는 모드와 선형 가감속,
     //S-CURVE 가감속을 설정합니다.
   fWorkSpeed,        // 작업 속도를 설정합니다.
   fAccelSpeed,         // 가속도를 설정합니다.
   fDecelSpeed,        // 감속도를 설정합니다.
   0,                   //초기속도를 설정합니다.
   0) ;                  //최종속도를 설정합니다.
 end;

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

 Procedure btnPositiveClick();
 var
 fWorkSpeedRatio : Double;
 fAccelSpeedRatio : Double;
 fDecelSpeedRatio : Double;
 begin
 //////////////////////////////////////////////////////////////
 // 저희 COMIZOA 에서는 다음과 같은 형태의 함수를 제공합니다.
 // 지령 펄스 출력 후 바로 종료를 위한 함수
 // 설명 : 위 함수는 지정된 지령 위치의 펄스 출력을 내보내고,
 //
 함수가 반환됩니다.
 //
 //
 //
 본 함수를 사용 했을 경우 사용자가 직접 위치 검출기를 통한
 모션 종료를 판단할 수 있는 함수는
 cmlSxIsDone 혹은 cmlSxWaitDone 함수가 있습니다.
 // cmlSxMoveStart [상대좌표]
 // cmlSxMoveToStart [절대좌표]
 //////////////////////////////////////////////////////////////
 cmlSxVMoveStart
 (BoardID,
 0,
 cmDIR_N
 );
 end;