14.1.6. ecmHomeMot_MoveStart¶
SYNOPSIS¶
t_cmdidx ecmHomeMot_MoveStart(_FF)(
t_i32 NetID,
t_i32 Axis,
t_i32 Direction,
t_i32 *ErrCode
)
Hint
Fast Function(_FF) 사용 가능
DESCRIPTION¶
이 함수는 원점복귀 작업을 수행합니다.
ecmHomeMot_MoveStart, ecmHomeMot_MoveStart_FF 함수는 모션을 시작 시킨 후 바로 반환됩니다.
PARAMETER¶
NetID : Network 번호
Axis : 대상 축 번호
Direction : 원점 복귀 모션을 수행할 방향을 지정합니다.
ErrCode : 이 매개 변수를 통하여 현재의 에러 코드를 반환합니다. 단, 이 매개 변수에 NULL을 전달하면 에러 코드를 반환하지 않습니다.
RETURN VALUE¶
이 리턴값은 함수의 cmdidx가 반환됩니다.
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 | //본 예제는 ecmHomeMot_MoveStart() 함수를 이용하여 x,y축 의 원점복귀를 수행하는 함수입니다. 단 원점복귀에 대한 환경설정은 이미 이루어진 것으로 가정합니다.
#include "ComiEcatSdk_Api.h"
#define AXISX 0
#define AXISY 1
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, AXISX, &Error_Num);
ecmSxCtl_SetSvon(Device_Info.NetIdx, AXISY, &Error_Num);
} //OnProgramInitial 함수 끝
/***************************************************************
* OnHomeSetSpeed : 이 함수는 속도설정의 변경이 필요할 때
* 호출되는 가상의 함수 입니다. 이때 m_fVwork, m_fAcc, m_fDec, m_sPecVel변수를
* 통하여 속도, 가속도 , 감속도, 홈리턴 속도 값이 적절하게 전달된다고 가정합니다.
***************************************************************/
void OnHomeSetSpeed()
{
ecmHomeCfg_SetMode(Device_Info.NetIdx, AXISX, 7,&Error_Num);
//X축의 홈복귀 모드를 설정합니다. (함수 설명에 Rererence 참고)
ecmHomeCfg_SetMode(Device_Info.NetIdx, AXISY, 7,&Error_Num);
//Y축의 홈복귀 모드를 설정합니다. (함수 설명에 Rererence 참고)
ecmHomeCfg_SetOffset(Device_Info.NetIdx, AXISX, 1000, &Error_Num);
//X축의 홈복귀 추가 이동 거리를 설정합니다.
ecmHomeCfg_SetOffset(Device_Info.NetIdx, AXISY, 1000, &Error_Num);
//Y축의 홈복귀 추가 이동 거리를 설정합니다.
ecmHomeCfg_SetSpeedPatt(Device_Info.NetIdx, AXISX, ecmSMODE_SCURVE, m_fVworkx, m_fAccx, m_fDecx, m_sPecVel , &Error_Num );
//X축 가감속을 수행 모드로 설정 하고 속도, 가속도, 감속도 설정
ecmHomeCfg_SetSpeedPatt(Device_Info.NetIdx, AXISY, ecmSMODE_SCURVE, m_fVworky m_fAccy, m_fDecy, m_sPecVel, &Error_Num );
//Y축 가감속을 수행 모드로 설정 하고 속도, 가속도, 감속도 설정
}
/***************************************************************
* OnHomeReturn : 이 함수는 가상의 함수로서 원점복귀를 실행합니다.
****************************************************************/
void OnHomeRetrun()
{
t_i32 Direction = ecmDIR_P; // +방향으로 원점 복귀 실행
ecmHomeMot_MoveStart(Device_Info.NetIdx, AXISX, Direction, &Error_Num) ;
// X축 원점복귀 시작
ecmHomeMot_MoveStart(Device_Info.NetIdx, AXISY, Direction, &Error_Num) ;
// Y축 원점복귀 시작
if(!ecmHomeSt_WaitCompt (Device_Info.NetIdx, AXISX, &Error_Num)){
//X축이 원점 복귀 하는 동안 블로킹하는 함수
// 복귀 완료 대기 실패 예외 처리
return;
}
if(!ecmHomeSt_WaitCompt (Device_Info.NetIdx, AXISY, &Error_Num)){
//Y축이 원점 복귀 하는동안 블로킹하는 함수
// 복귀 완료 대기 실패 예외 처리
return;
}
}
|