11.2.47. ecmSxCfg_PosCorr_SetTableFromFile


SYNOPSIS

t_i32  ecmSxCfg_PosCorr_SetTableFromFile(
  t_i32  NetID,
  t_i32  Axis,
  char  *szFilePath,
  t_i32  *ErrCode
)

DESCRIPTION

  • 이 함수는 파일에 저장 되어 있는 테이블 데이터 값을 로드하여 테이블에 저장하는 함수 입니다.

  • 이 함수를 사용하면 사용자는 ecmSxCfg_PosCorr_SetTableSize 함수와 ecmSxCfg_PosCorr_SetTableData 함수를 따로 사용할 필요가 없습니다.

PARAMETER

  • NetID : Network 번호

  • Axis : 대상 축 번호

  • szFilePath : 파일 경로

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

RETURN VALUE

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

Value

Meaning

0

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

1

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

REFERENCE

이 함수에 전달되는 파일은 아스키 텍스트 파일이며 그 내용은 아래와 같이 “기준위치, 실제모터데이터” 쌍을 세로로 나열하면 됩니다. RefPos1, ActMotorPos1 RefPos2, ActMotorPos2 … 예를 들어서 아래 그림과 같이 겐트리(Gantry) 구성되어 있는 구조가 있다고 가정하고, 마스터와 슬레이브가 완전히 정렬이 되는 위치의 관계가 아래와 같다고 가정합니다.

../../../_images/ecmSxCfg_PosCorr_SetTableFromFile_00.jpg

이런한 경우에 보정테이블 파일의 내용은 아래와 같이 구성합니다. 0, 0 1000, 999 2000, 1988 3000, 2953 4000, 4010 5000, 5024

위와 같이 구성하면 ecmSxCfg_PosCorr_SetTableFromFile 함수 안에서는 유효한 위치 데이터쌍의 라인을 카운트하여 테이블 크기를 자동으로 설정하므로 테이블 크기 설정을 따로 할 필요 없습니다.

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
 < 예제 설명 >
 위의 REFERENCE에서 예시한 보정테이블 파일을 "C:\ PosCorr.txt" 파일로 저장했다고 가정하고 이를 적용하는 예제입니다.

 #define NETID       0
 #define AXIS                0

 // 1차원위치보정테이블을 파일을 통해서 설정 //
 ecmSxCfg_PosCorr2D_SetTableFromFile (NETID, AXIS, "c:\\PosCorr.txt", NULL);

 // 2차원보정 기능 활성화 //
 ecmSxCfg_PosCorr2D_SetEnable(NETID, TARGET_AXIS, true, NULL);

 // 이후에 AXIS가 이송(단축, 보간, 마스터-슬레이브 등 어떤 이송이든 모두 적요)될 때는 보정테이블이 적용되어서 논리좌표에 대응되는 보정좌표로 모터가 이송되게 됨//
 …

 ecmSxMot_MoveTo (NETID, AXIS, 5000, NULL);


 t_f64 fLogicPos = ecmSxSt_GetPosition (NETID, AXIS, ecmCNT_COMM, NULL);
 t_f64 fActualPos = ecmSxSt_GetPosition (NETID, AXIS, ecmCNT_COMM_CORR, NULL);

 printf("Logical Commnd Position = %.0f\n Actual Motor Command Position = %.0f\n", fLogicPos fActualPos);

 < 실행 결과 >
 Logical Commnd Position = 5000
 Actual Motor Command Position = 5024