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