4.1.37. cmmCfgSetUnitSpeed¶
DESCRIPTION¶
논리적 단위 속도에 대한 실제 펄스 출력속도(PPS)를 설정합니다.
PARAMETER¶
Axis: 축번호. 축번호는 상수값으로 [cmX1] 부터 0 번째 축을 기준 축으로 임의의 축을 설정할 수 있습니다.
UnitSpeed : cmmCfgSetUnitSpeed 함수의 인자이며, 단위 속도에 대한 펄스 출력 속도(PPS)를 설정합니다.
REFERENCE¶
사용자의 특성에 따라 속도에 대한 단위가 다를 수 있습니다. 즉, 어떤 사용자는 속도 단위를 RPM 으로 표현하는 것이 용이할 수 있고 어떤 사용자는 m/sec 로 표현하는 것이 용이할 수 있습니다.
EXAMPLE 1
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 | C/C++
1 회전에 필요한 펄스수가 3600 펄스일 때 거리의 단위를 각도(1˚)로, 속도의 단위를 rpm 으로 설정하는 예제입니다.
#include “Cmmsdk.h”
#include “CmmsdkDef.h”
void StartProgram()
{
long nNumAxes = 0;
if ( cmmLoadDll() != TRUE ) {
/* OutputDebugString API 는 GUI 프로그램에서 문자열을 디버거에 보낼 수 있습니다. Borland C++ Builder 에서는
DebugWindows 에 Event Log 를 확인할 수 있으며, MS VC++ 에서는 Debug 윈도우에서 확인할 수
있습니다. */
OutputDebugString(“DLL 로드에 실패하였습니다”);
// 이후 적절한 에러처리를 해주시기 바랍니다.
}
if ( cmmGnDeviceLoad(cmTRUE, &nNumAxes) != cmERR_NONE ){
// MS VC++ 에서는 아래와 같이 에러 원인을 화면에 표시할 수 있습니다.
cmmErrShowLast(Handle); //사용자 작성 윈도우의 핸들값입니다.
// Borland C++ 계열에서는 아래와 같이 에러 원인을 화면에 표시할 수
// 있습니다.
//cmmErrShowLast(Form1->Handle);
}
}
// 실제 이동 동작을 수행하는 가상 함수입니다.
void OnMove(void)
{
// Set 10 pulses for unit distance
// 이 예제에서는 1 회전에 필요한 펄스 수를 3600 펄스로
// 가정하고 단위 거리를 1˚로 설정한 것입니다.
cmmCfgSetUnitDist(cmX1, 10);
// Set 3600/60(=60) PPS for unit speed
// 이 예제에서는 1 회전에 필요한 펄스 수를 3600 펄스로
// 가정하고 단위 속도를 1rpm 으로 설정한 것입니다.
cmmCfgSetUnitSpeed(cmX1, 3600./60);
// Set trapezoidal speed mode //
// Set speed as 100 rpm //
//가속도와 감속도를 각각 200rpm/s 로 설정합니다. 이렇게 하면 작업속도가 100rpm 이므로 가속 및 감속
시간은 각각 0.5 초가 걸립니다.
cmmCfgSetSpeedPattern(cmX1, cmSMODE_T, 100,200,200);
// 모터를 720˚회전한다. 실제로는 720*10 펄스가 출력됩니다. //
cmmSxMove(cmX1, 720,cmFALSE);
}
void EndProgram(void)
{
cmmGnDeviceUnload();
cmmUnloadDll();
}
|
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 | Visual Basic
'1 회전에 필요한 펄스수가 3600 펄스일 때 거리의 단위를 각도(1˚)로,
'속도의 단위를 rpm 으로 설정하는 예제입니다.
Private Sub StartProgram()
Dim nTotalAxis As Long
Dim IRetVal As Long
Dim IsLoaded As Long
'==================================================================
' cmmGnDeviceLoad 함수를 장치를 초기화합니다.
IRetVal = cmmGnDeviceLoad(True, nTotalAxis)
If IRetVal <> cmERR_NONE Then
MsgBox ("cmmGnDeviceLoad has been failed")
End If
'==================================================================
'==================================================================
' cmmGnDeviceIsLoaded 함수로 장치가 올바르게 불려졌는지를 확인할 수 있습니다.
Call cmmGnDeviceIsLoaded(IsLoaded)
If IsLoaded <> cmTRUE Then
MsgBox ("디바이스 로드를 실패하였습니다")
End
End If
'==================================================================
End Sub
'// 실제 이동 동작을 수행하는 가상 함수입니다.
Private Sub OnMove(void)
'// Set 10 pulses for unit distance
'// 이 예제에서는 1 회전에 필요한 펄스 수를 3600 펄스로
'// 가정하고 단위 거리를 1˚로 설정한 것입니다.
Call cmmCfgSetUnitDist(cmX1, 10)
'// Set 3600/60(=60) PPS for unit speed
'// 이 예제에서는 1 회전에 필요한 펄스 수를 3600 펄스로
'// 가정하고 단위 속도를 1rpm 으로 설정한 것입니다.
Call cmmCfgSetUnitSpeed(cmX1, 3600# / 60)
'// Set trapezoidal speed mode
'// Set speed as 100 rpm
'//가속도와 감속도를 각각 200rpm/s 로 설정합니다. 이렇게 하면 작업속도가
‘//100rpm 이므로 가속 및 감속 시간은 각각 0.5 초 걸립니다.
Call cmmCfgSetSpeedPattern(cmX1, cmSMODE_T, 100, 200, 200)
'// 모터를 720˚회전한다. 실제로는 720*10 펄스가 출력됩니다.
Call cmmSxMove(cmX1, 720, cmFALSE)
End Sub
Private Sub EndProgram()
Call cmmGnDeviceUnload
Call cmmUnloadDll
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 | Delphi
procedure OnSetUnitSpeed ();
begin
{ 1 회전에 필요한 펄스수가 3600 펄스일 때
거리의 단위를 각도 (1˚)로, 속도의 단위를 RPM 으로 설정합니다. }
// 1 회전에 3600 펄스가 필요하므로 1˚ 회전을 하기 위해서는 10 펄스가 필요합니다.
cmmCfgSetUnitDist (cmX1, 10 );
// 단위 속도를 1rpm 으로 설정합니다. 3600(pulse) / 60(sec) = 60(pps)
cmmCfgSetUnitSpeed (cmX1, 60 );
end;
procedure OnMove ();
begin
{ 가속도와 감속도를 각각 200rpm/s 로 설정합니다. 이렇게 하면 작업 속도가 100rpm 이므로
가속 및 감속에는 0.5sec 가 소요됩니다. }
cmmCfgSetSpeedPattern (cmX1, cmSMODE_T, 100, 200, 200 );
// 모터를 720˚ 회전 시킵니다. 실제로는 720 * 10 pulse 가 출력됩니다.
cmmSxMoveStart (cmX1, 720 );
end;
|
EXAMPLE 2
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 | C/C++
1cm 이동하는데 필요한 펄스수가 1000 펄스일 때 거리의 단위를 cm 로, 속도의 단위를 cm/sec 로 설정하는
예제입니다.
#include “Cmmsdk.h”
#include “CmmsdkDef.h”
void StartProgram()
{
long nNumAxes = 0;
if ( cmmLoadDll() != TRUE ) {
* OutputDebugString API 는 GUI 프로그램에서 문자열을 디버거에 보낼 수 있습니다. Borland C++ Builder
에서는 DebugWindows 에 Event Log 를 확인할 수 있으며, MS VC++ 에서는 Debug 윈도우에서
확인할 수 있습니다. */
OutputDebugString(“DLL 로드에 실패하였습니다”);
// 이후 적절한 에러처리를 해주시기 바랍니다.
}
if ( cmmGnDeviceLoad(cmTRUE, &nNumAxes) != cmERR_NONE ){
// MS VC++ 에서는 아래와 같이 에러 원인을 화면에 표시할 수 있습니다.
cmmErrShowLast(Handle); //사용자가 제작 윈도우의 핸들입니다.
// Borland C++ 계열에서는 아래와 같이 에러 원인을 화면에 표시할 수
// 있습니다.
// cmmErrShowLast(Form1->Handle);
}
} /* void StartProgram() */
// 실제 이동 동작을 수행하는 가상 함수입니다.
void OnMove(void)
{
// Set 1000 pulses for unit distance
// 이 예제에서는 1cm 이동에 필요한 펄스 수를 1000 펄스로
// 가정하고 단위 거리를 1cm 로 설정한 것입니다.
cmmCfgSetUnitDist(cmX1, 1000);
// Set 1000 PPS for unit speed
// 이 예제에서는 1cm 이동에 필요한 펄스 수를 1000 펄스로
// 펄스로 가정하고 단위 속도를 1rpm 로 설정한 것입니다.
cmmCfgSetUnitSpeed(cmX1, 1000);
// Set speed as 50 cm/sec/
// Set constant speed mode
cmmCfgSetSpeedPattern(cmX1, cmSMODE_C, 50,0,0);
cmmSxMove(cmX1, 10); // 50 cm/sec 의 속도로 10cm 이동 . 실제로는 10*1000=10000 펄스가 출력됩니다.
}
void EndProgram(void)
{
cmmGnDeviceUnload();
cmmUnloadDll();
}
|
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 | Visual Basic
'1cm 이동하는데 필요한 펄스수가 1000 펄스일 때 거리의 단위를 cm 로,
'속도의 단위를 cm/sec 로 설정하는 예제입니다.
Private Sub StartProgram()
Dim nTotalAxis As Long
Dim IRetVal As Long
Dim IsLoaded As Long
'==================================================================
' cmmGnDeviceLoad 함수를 장치를 초기화합니다.
IRetVal = cmmGnDeviceLoad(True, nTotalAxis)
If IRetVal <> cmERR_NONE Then
MsgBox ("cmmGnDeviceLoad has been failed")
End If
'==================================================================
'==================================================================
' cmmGnDeviceIsLoaded 함수로 장치가 올바르게 불려졌는지를 확인할 수 있습니다.
Call cmmGnDeviceIsLoaded(IsLoaded)
If IsLoaded <> cmTRUE Then
MsgBox ("디바이스 로드를 실패하였습니다")
End
End If
'==================================================================
End Sub
'// 실제 이동 동작을 수행하는 가상 함수입니다.
Private Sub OnMove()
'// Set 1000 pulses for unit distance
'// 이 예제에서는 1cm 이동에 필요한 펄스 수를 1000 펄스로
'// 가정하고 단위 거리를 1cm 로 설정한 것입니다.
Call cmmCfgSetUnitDist(cmX1, 1000)
'// Set 1000 PPS for unit speed
'// 이 예제에서는 1cm 이동에 필요한 펄스 수를 1000 펄스로
'// 펄스로 가정하고 단위 속도를 1rpm 로 설정한 것입니다.
Call cmmCfgSetUnitSpeed(cmX1, 1000)
'// Set speed as 50 cm/sec/ //
'// Set constant speed mode //
Call cmmCfgSetSpeedPattern(cmX1, cmSMODE_C, 50, 0, 0)
Call cmmSxMove(cmX1, 10)
'50 cm/sec 의 속도로 10cm 이동
'실제로는 10*1000=10000 펄스가 출력됩니다.
End Sub
Private Sub EndProgram()
Call cmmGnDeviceUnload
Call cmmUnloadDll
End Sub
|
See also