11.2.22. ecmSxCfg_GetMastInp


SYNOPSIS

t_success  ecmSxCfg_GetMastInp(
  t_i32  NetID,
  t_i32  Axis,
  t_bool  *IsEnable,
  t_f64  *InpRange,
  t_i32  *ErrCode
)

DESCRIPTION

  • 마스터 인포지션(Master Inposition) 기능과 관련하여 현재 설정되어 있는 환경 설정 값들을 읽는 함수입니다.

PARAMETER

  • NetID : Network 번호

  • Axis : 대상 축 번호

  • IsEnable : 인포지션 범위를 설정합니다. 이 값은 논리적 거리 단위로 설정합니다.

  • InpRange : 인포지션 범위를 설정합니다. 이 값은 논리적 거리 단위로 설정합니다.

  • ErrCode : 이 매개 변수를 통하여 현재의 에러 코드를 반환합니다. 단, 이 매개 변수에 NULL을 전달하면 에러 코드를 반환하지 않습니다.

RETURN VALUE

  • 함수 수행의 성공 여부를 반환합니다.

Value

Meaning

0

함수 수행에 실패하였음을 의미합니다.

1

함수 수행에 성공하였음을 의미합니다.

REFERENCE

인포지션(Inpostion) 이란? 인포지션이란 모터의 지령위치(Command Position)와 궤환위치(Feedback Position) 간의 편차가 사용자가 설정한 특정 범위 안에 들어와 있는 상태를 말합니다. 그리고 인포지션 기능을 활성화 한다는 것은 인포지션 상태를 이송의 완료 조건에 포함시킨다는 것입니다. 다시 말해서 인포지션이 비활성화된 상태에서는 지령 위치 기준으로 이송의 완료를 판단합니다. 그러나 인포지션 기능을 활성화하면 지령 위치 기준으로 이송이 완료되었어도 Command – Feedback 위치 편차가 인포 지션 범위 안에 들어올 때까지 이송이 완료되지 않은 상태로 간주됩니다(이때 ecmSxSt_GetMotState 함수의 반환 값은 5(ecmMST_IN_WAIT_INP)가 됩니다. 인포지션 기능이 활성화된 상태에서는 지령위치가 모두 출력되고, 인포지션 상태가 만족되면 이송은 완료된 것으로 처리되는데, 그 이후에는 다시 이송을 시작 하기 전까지 인포지션 범위를 벗어났더라도 이송 상태에는 영향을 주지 않습니다.

마스터 인포지션(Master Inpostion) 이란? 인포지션 상태를 마스터 제어기에서 직접 판단하여 적용하는 것을 말합니다. 일반적으로 서보드라이버에서도 인포지션 관리 기능을 제공하는데 이와 구분하기 위해서 마스터 인포지션이라는 용어를 사용합니다. 서보드라이버에서 제공하는 인포지션 기능을 사용하려면 서보드라이버에서 제공하는 PDO데이터에 INP 신호가 포함되어 있어야 하는데, 모든 서보드라이버가 INP 신호를 PDO 데이터로 제공하는 것은 아니라서 서보드라이버 인포지션 기능을 사용하려면 INP 신호의 PDO 포함 여부를 잘 살펴보고 사용하여야 합니다. 이에 반해서 마스터 인포지션 기능은 모든 서보드라이버에서 사용 가능하므로 마스터 인포지션 기능을 사용하는 것이 바람직합니다.

EXAMPLE

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
#define NET    0
#define AXIS   0

// 논리거리 단위를 mm 단위로 설정 (1mm이송에 2000펄스 필요한 것으로 가정)
ecmSxCfg_SetUnitDist (NET, AXIS, 2000, NULL);
ecmSxCfg_SetUnitSpeed (NET, AXIS, 2000, NULL);

// 마스터인포지션 범위 설정 및 활성화 //
ecmSxCfg_SetMastInp ((NET, AXIS, true, 0.5, NULL);

// 속도=100(mm/s), 가/감속도=1000(mm/s^2) 으로 설정한다.
ecmSxCfg_SetSpeedPatt (NET, AXIS, ecmSMODE_TRAPE, 0, 0, 100, 1000, 1000);

// 이송 : 지령이 완료되어도 커맨드-피드백 편차가 0.5mm 이내가 될 때까지 함수 반환되지 않음
ecmSxMot_Move (NET, AXIS, 20, NULL);