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을 전달하면 에러 코드를 반환하지 않습니다.
REFERENCE¶
이 함수에 전달되는 파일은 아스키 텍스트 파일이며 그 내용은 아래와 같이 “기준위치, 실제모터데이터” 쌍을 세로로 나열하면 됩니다. RefPos1, ActMotorPos1 RefPos2, ActMotorPos2 … 예를 들어서 아래 그림과 같이 겐트리(Gantry) 구성되어 있는 구조가 있다고 가정하고, 마스터와 슬레이브가 완전히 정렬이 되는 위치의 관계가 아래와 같다고 가정합니다.
이런한 경우에 보정테이블 파일의 내용은 아래와 같이 구성합니다. 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
|