11.1.12. ecmSxCtl_SetSvon¶
Hint
FAST FUNCTION 모드 사용 가능
SYNOPSIS¶
t_cmdidx ecmSxCtl_SetSvon(_FF)(
t_i32 NetID,
t_i32 Axis,
t_i32 SvonVal,
t_i32 *ErrCode
)
DESCRIPTION¶
지정한 축의 서보온(Servo-on) 상태를 제어합니다.
PARAMETER¶
NetID : Network 번호
Axis : 대상 축 번호.
SvonVal : 지정한 축의 서보온(Servo-on) 상태
ErrCode : 이 매개 변수를 통하여 현재의 에러 코드를 반환합니다. 단, 이 매개 변수에 NULL을 전달하면 에러 코드를 반환하지 않습니다.
RETURN VALUE¶
cmdidx를 반환합니다. CmdIdx는 ComiECAT SDK라이브러리에서 발생시킨 명령들의 일련 번호입니다. 단, 이 값이 0이면 함수 의 수행이 실패했음을 의미합니다.
REFERENCE¶
ecmSxCtl_SetSvon 함수는 서보드라이버에게 서보온 명령을 하달하고 실제 서보온 상태가 변경되는 것을 확인한 후에 반환됩니다. 서보드라이버가 서보온 명령 을 받고 실제로 서보온이 완료되기까지는 일정한 시간이 소요되므로 ecmSxCtl_SetSvon 함수의 수행 시간은 서보드라이버 제품의 특성에 따라서 수백 msec 또는 그 이상의 시간이 걸릴 수 있습니다.
만일 많은 수의 서보드라이버의 서보온 상태를 일괄적으로 제어하기 위해서 ecmSxCtl_SetSvon 함수를 순차적으로 실행한다면 시간이 많이 소요될 수 있습니다. 이러한 경우에 ecmSxCtl_SetSvon 함수의 Fast Function 모드인 ecmSxCtl_SetSvon _FF 함수를 사용하면 많은 수의 서보온을 일괄적으로 실행할 때에 빠르게 진행시킬 수 있습니다.
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 | #define NETID 0
#define NUM_AXES 32
// Axis0의 서보온 버튼 이벤트핸들러
void CMyDlg::OnClick_ServoOn_Axis0()
{
ecmSxCtl_SetSvon(NETID, 0, true, NULL)
}
// Axis0의 서보오프 버튼 이벤트핸들러
void CMyDlg::OnClick_ServoOff_Axis0()
{
ecmSxCtl_SetSvon(NETID, 0, false, NULL)
}
// 모든축의 서보온
void CMyDlg::OnClick_SevoOn_All()
{
for(int i=0; i<NUM_AXES; i++){
if(ecmSxSt_IsConnected (NETID, i, NULL, NULL)){
ecmSxCtl_SetSvon_FF (NETID, i, TRUE, NULL); // FF 함수 사용
}
}
// 모든 축의 서보온 상태가 바뀔 때까지 대기
BOOL IsAllON = FALSE;
ULONG dwStartT = timeGetTime();
while(!ecUtl_IsTimeOut (dwStartT, 2000) && !IsAllON){
IsAllON = TRUE;
for(i=0; i<ecMAX_NUM_AXES_PER_NET; i++){
if(ecmSxSt_IsConnected(NETID, i, NULL, NULL)){
if(!ecmSxCtl_GetSvon(NETID, i, NULL)){
IsAllON = FALSE;
}
}
}
}
if(!IsAllON){
ShowError("일부 축이 서보온 되지 않았습니다\n다시 시도하십시오.");
}
}
|