12.1.4. ecmMxMot_VMoveStart

Hint

FAST FUNCTION 모드 사용 가능

SYNOPSIS

t_cmdidx  ecmMxMot_VMoveStart(_FF)(
  t_i32  NetID,
  t_i32  NumAxes,
  t_i32  AxisList[],
  t_i32  DirList[],
  t_i32  *ErrCode
)

DESCRIPTION

  • 여러 개의 축에 대하여 Velocity Move작업을 동시에 시작합니다.

  • Velocity Move는 작업속도까지 가속한 후에 작업속도를 유지하며 정지 함수가 호출될 때까지지정한 방향으로의 모션을 계속 수행합니다.

PARAMETER

  • NetID : Network 번호

  • NumAxes : 동시에 작업을 수행할 대상 축 개수

  • AxisList : 동시에 작업을 수행할 대상 축 배열 주소값. 이 배열의 크기는 NumAxes값과 일치하거나 커야 합니다.

  • DirList : 방향을 지시하는 값의 배열 주소값. 이 배열의 크기는 NumAxes값과 일치하거나 커야 합니다. 모션의 방향을 지시하는 값은 다음과 같습니다.

  • 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
 84
 85
 86
 87
 88
 89
 90
 91
 92
 93
 94
 95
 96
 97
 98
 99
100
101
102
103
104
// 다음의 예제는2축을 "Jog 이동"을 하는 예입니다. 본 예제에서의 "Jog 이동"은 버튼이 눌려진 상태에서는 Axis0,1축의 이동을 행하다가, 버튼이 풀리면 이동을 멈추는 예입니다.
#include "ComiEcatSdk_Api.h"
#define AXIS0   0
#define AXIS1   1

t_32 Error_Num =  0;//함수 별  에러 코드 저장 변수

/***************************************************************
* MulitProgramInitial : 이 함수는 가상의 함수로서 프로그램 초기화 루틴이
* 적용되는 부분을 의미합니다.      //5~9장 사이 내용 참고
***************************************************************/
void MulitProgramInitial()
{
       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);
ecmSxCtl_SetSvon(Device_Info.NetIdx, AXIS1, &Error_Num);

} //MulitProgramInitial 함수 끝

/********************************************************************
* MulitMoveSetting : //이 함수는 다축 이동을 위한 준비 단계 함수
* ecmSxCfg_SetMioProp, ecmSxCfg_SetSpeedPatt, ecmSxCfg_SetJerkRatio
 ecmSxCfg_SetUnitDist,  ecmSxCfg_SetUnitSpeed 를 이용하여 세팅
* //많은 세팅 관련 함수가 있지만 경우에 따라 사용자가 선택해서 사용
*********************************************************************/


void MulitMoveSetting ()
{

       ecmSxCfg_SetMioProp(Device_Info.NetIdx, AXIS0, propID, propID, &Error_Num)
       ecmSxCfg_SetUnitDist( Device_Info.NetIdx, AXIS0, UnitDist , &Error_Num);
       ecmSxCfg_SetUnitSpeed([Device_Info.NetIdx, AXIS0, UnitSpeed, &Error_Num);
       ecmSxCfg_SetSpeedPatt(Device_Info.NetIdx, AXIS0, 0, 0, 40000, 10000, 10000, &Error_Num );
       ecmSxCfg_SetJerkRatio (Device_Info.NetIdx, AXIS0, JerkTimeRatio, &Error_Num);

       ecmSxCfg_SetMioProp(Device_Info.NetIdx, AXIS1, propID, propID, &Error_Num)
       ecmSxCfg_SetUnitDist( Device_Info.NetIdx, AXIS1, UnitDist , &Error_Num);
       ecmSxCfg_SetUnitSpeed([Device_Info.NetIdx, AXIS1, UnitSpeed, &Error_Num);
       ecmSxCfg_SetSpeedPatt(Device_Info.NetIdx, AXIS1, 0, 0, 40000, 10000, 10000, &Error_Num );
       ecmSxCfg_SetJerkRatio (Device_Info.NetIdx, AXIS1, JerkTimeRatio, &Error_Num);
}

/**************************************************************
* MulitPlusButtonDown() : (+)Move 버튼이 눌렸을 때 호출되는 가상의 함수
* 이 함수에서 (+)방향으로 V-Move 를 시작합니다.
**************************************************************/
void MulitPlusButtonDown ()
{
       t_i32 AxisList[2] = {0,1};
       t_i32 DirList[2] = { ecmDIR_P, ecmDIR_P}

       ecmMxMot_VMoveStart(Device_Info.NetIdx, 2, AxisList DirList, &Error_Num)
       //Positive dir V-MOVE
}

/**************************************************************
* MulitPlusButtonUp() : (-)Move 버튼이 올라올 때 호출되는 가상의 함수
* 이 함수에서는 V-Move 를 종료합니다.
**************************************************************/
void MulitPlusButtonUp ()
{
       t_i32 AxisList[2] = {0,1};

       ecmMxMot_Stop(Device_Info.NetIdx,  2, AxisList , 0, 0, &Error_Num);
       // 두 축 정지
}

/**************************************************************
* MulitMinusButtonDown(): (-)Move 버튼이 눌렸을 때 호출되는 가상의 함수
* 이 함수에서 (+)방향으로 V-Move 를 시작합니다.
**************************************************************/
void MulitMinusButtonDown()
{
       t_i32 AxisList[2] = {0,1};
       t_i32 DirList[2] = { ecmDIR_N, ecmDIR_N}

       ecmMxMot_VMoveStart(Device_Info.NetIdx, 2, AxisList DirList, &Error_Num)
       //Negative dir V-MOVE
}
/**************************************************************
* MulitMinusButtonUp() : (-)Move 버튼이 올라올 때 호출되는 가상의 함수
* //이 함수에서는 V-Move 를 종료합니다.
**************************************************************/
void MulitMinusButtonUp()
{
       ecmMxMot_Stop(Device_Info.NetIdx,  2, AxisList , 0, 0, &Error_Num);
       // 두 축 정지
}