11.1.21. ecmSxMot_VMoveStart¶
Hint
FAST FUNCTION 모드 사용 가능
SYNOPSIS¶
t_cmdidx ecmSxMot_VMoveStart(_FF)(
t_i32 NetID,
t_i32 Axis,
t_i32 Dir,
t_i32 *ErrCode
)
DESCRIPTION¶
작업속도까지 가속한 후에 작업속도를 유지하며 정지 함수가 호출될 때까지 지정한 방향으로의 모션을 계속 수행합니다.
이 함수는 모션을 시작시킨 후에 바로 반환됩니다.
PARAMETER¶
NetID : Network 번호
Axis : 대상 축 번호.
Dir : 모션 이송 방향을 설정합니다.
ErrCode : 이 매개 변수를 통하여 현재의 에러 코드를 반환합니다. 단, 이 매개 변수에 NULL을 전달하면 에러 코드를 반환하지 않습니다.
RETURN VALUE¶
이 함수는 CmdIdx를 반환합니다. CmdIdx는 ComiECAT SDK라이브러리에서 발생시킨 명령들의 일련 번호입니다. 단, 이 값이 0이면 함수의 수행이 실패했음을 의 미합니다.의미합니다.
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 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 | // 다음의 예제는 "Jog 이동"을 하는 예입니다. 본 예제에서의
//"Jog 이동"은 버튼이 눌려진 상태에서는 Axis0축의 이동을
//수행하다가, 버튼이 풀리면 이동을 멈추는 예입니다.
#include "ComiEcatSdk_Api.h"
#define AXIS0 0
t_32 Error_Num = 0;//함수 별 에러 코드 저장 변수
/***************************************************************
* OnProgramInitial : 이 함수는 가상의 함수로서 프로그램 초기화 루틴이
* 적용되는 부분을 의미합니다. //5~9장 사이 내용 참고
***************************************************************/
void OnProgramInitial()
{
TEcDevInfo Device_Info; //디바이스 정보 저장 할 구조체
t_i32 Device_Num = 0;
t_success nIsLoaded = ecDll_Load ();
if(!ecGn_LoadDevices(&Error_Num)){ //장치 로드
//로드 실패시 예외 처리
}
if(!ecGn_GetDevInfo(Device_Num,&Device_Info, &Error_Num)){
//디바이스 정보 로드 실패 시 예외 처리
}
ecNet_SetAlState(Device_Info.NetIdx, ecAL_STATE_OP, &Error_Num);
//ALState OP모드로 전환
ecmSxCtl_SetSvon(Device_Info.NetIdx, AXIS0, &Error_Num);
} //OnProgramInitial 함수 끝
/********************************************************************
* OnMoveSetting : 이 함수는 이동을 위한 준비 단계 함수
* ecmSxCfg_SetMioProp, ecmSxCfg_SetSpeedPatt, ecmSxCfg_SetJerkRatio
ecmSxCfg_SetUnitDist, ecmSxCfg_SetUnitSpeed 를 이용하여 세팅
* 많은 세팅 관련 함수가 있지만 경우에 따라 사용자가 선택해서 사용
*********************************************************************/
void OnMoveSetting ()
{
ecmSxCfg_SetMioProp(Device_Info.NetIdx, AXIS0, propID, propID, &Error_Num)
//모션 입출력 신호 환경설정 (관련 함수 설명 참고)
t_i64 UnitDist = //논리적 거리를 1 을 이동하기 위해 출력되어져하는 펄수 수 지정
ecmSxCfg_SetUnitDist( Device_Info.NetIdx, AXIS0, UnitDist , &Error_Num);
t_f64 UnitSpeed = //단위 속도에 대한 펄스 출력 소도 설정 값
ecmSxCfg_SetUnitSpeed([Device_Info.NetIdx, AXIS0, UnitSpeed, &Error_Num);
/* t_f64 VIni = 0//초기 속도 설정 및 반환 값
t_f64 Vend = 0// 종료 속도 설정 및 반환 값
t_f64 VWork = 40000//작업 속도에 대한 설정 및 반환 값
t_f64 Acc = 10000//가속도에 대한 설정 및 반환 값
t_f64 Dec – 10000//감속도에 대한 설정 및 반환값
Speed 설정 관련 매개 변수 값 */
ecmSxCfg_SetSpeedPatt(Device_Info.NetIdx, AXIS0, 0, 0, 40000, 10000, 10000, &Error_Num );
t_f64 JerkTimeRatio = 1.0 //Jeck 값
ecmSxCfg_SetJerkRatio (Device_Info.NetIdx, AXIS0, JerkTimeRatio, &Error_Num);
}
/**************************************************************
* OnPlusButtonDown() : (+)Move 버튼이 눌렸을 때 호출되는 가상의 함수
* 이 함수에서 (+)방향으로 V-Move 를 시작합니다.
**************************************************************/
void OnPlusButtonDown ()
{
ecmSxMot_VMoveStart(Device_Info.NetIdx, AXIS0, ecmDIR_P, &Error_Num);
//Positive dir V-MOVE
}
/**************************************************************
* OnPlusButtonUp() : (-)Move 버튼이 올라올 때 호출되는 가상의 함수
* 이 함수에서는 V-Move 를 종료합니다.
**************************************************************/
void OnPlusButtonUp ()
{
ecmSxMot_Stop(Device_Info.NetIdx, AXIS0, 0, 0, &Error_Num);
}
/**************************************************************
* OnMinusButtonDown(): (-)Move 버튼이 눌렸을 때 호출되는 가상의 함수
* 이 함수에서 (+)방향으로 V-Move 를 시작합니다.
**************************************************************/
void OnMinusButtonDown()
{
ecmSxMot_VMoveStart(Device_Info.NetIdx, AXIS0, ecmDIR_N, &Error_Num);
//Negative dir V-MOVE
}
/**************************************************************
* OnMinusButtonUp() : (-)Move 버튼이 올라올 때 호출되는 가상의 함수
* 이 함수에서는 V-Move 를 종료합니다.
**************************************************************/
void OnMinusButtonUp()
{
ecmSxMot_Stop(Device_Info.NetIdx, AXIS0, 0, 0, &Error_Num);
}
|