아진 모션 보드 라이브러리에는 기본적으로 위치 보정(보상) 기능이 없습니다.
업체에서 요청시 기능이 추가된 라이브러리를 보내주어서 위치 제어시 보정된 위치로 이동할 수 있도록 지원을 해주고 있습니다.
그나마 이런 기능이라도 없다면 보정 테이블 계산 기능을 직접 만들어야 하는 것인데.. 라이브러리 수준에서 만들어 놓은것을 보내주니까 모션 제어 개발자가 할 일이 훨씬 줄어들것 같습니다.
이 글에서는 아래에 FS모듈용 헤더파일에 있는 함수들과 헤더파일 자체에 있는 설명들만 소개합니다.
( QI 모듈용 라이브러리가 별도로 AXL이라고 있으니 그 쪽은 다른 함수와 라이브러리를 사용해야 합니다. )
AxtCAMCFS20.h 헤더파일에 있는 내용을 그대로 긁어서 붙였습니다.
이것만 봐도 사용 설명이 필요 없을듯하네요
//========= 위치보상테이블 관련함수 ================================================================ // 보상테이블을 생성하는 함수 // > axis: 보상테이블을 적용할 축 번호 // > start_pos: 보상테이블의 시작 위치(기구에서 위치보상영역의 하한위치) ※ end_pos보다 작은값이어야됨. // > end_pos: 보상테이블의 종료 위치(기구에서 위치보상영역의 상한위치) ※ start_pos보다 큰값이어야됨. // > interval: 보상테이블의 간격을 설정(기구의 절대 위치정도나 관리하고자 하는 위치절대 정도에 따라 조절함) // > *comp_table: 보상테이블의 위치보상값 배열 포인트(배열의 갯수는 nTableCnt = (fabs(end_pos - start_pos) / interval) + 1이됨) // ※ NOTANDUM // - 보상테이블의 앞/뒤 위치에 대한 에러양이 보상테이블의 간격(Interval)을 초과해서는 안됨. // - 보상테이블 배열의 개수는 반드시 nTableCnt값과 같거나 커야하며 작을 시 메모리 참조에러가 발생할 수 있음. // < *nTableCnt: 보상테이블이 생성된 갯수를 반환(값 반환을 원하지않을 때 0입력하면 됨) // { RETURN VALUE } // - [0] -> 축번호가 유효하지 않을 때 // - [0] -> start_pos > end_pos일 때 // - [0] -> interval이 0일 때 // - [0] -> *comp_table 포인트가 NULL일 때 BOOL PASCAL EXPORT CFS20set_comp_table(INT16 axis, double start_pos, double end_pos, double interval, double *comp_table, int *nTableCnt); // 설정한 보상테이블의 사용유무를 지정 // > axis: 보상테이블의 사용유무를 지정할 축 번호 // > use: 보상테이블의 사용유무를 지정 // - [0]DISABLE -> 보상테이블 사용안함 // - [1]ENABLE -> 보상테이블 사용함 BOOL PASCAL EXPORT CFS20set_comp_table_use(INT16 axis, BOOL use); BOOL PASCAL EXPORT CFS20get_comp_table_use(INT16 axis); // 설정된 보상테이블의 값을 읽어오는 함수 // > axis: 보상테이블의 값을 읽을 축 번호 // > real_pos: 보상테이블 값을 확인 할 실제 위치 // < *comp_data: 실제 위치에 대한 보상테이블을 이용한 위치에러 보상값 // { RETURN VALUE } // - [-1] -> 보상테이블이 생성되지않았을 때 // - [-1] -> 입력한 real_pos값이 보상테이블 하한값과 상한값사이에 존재하지않을 때 // - [**] -> 입력한 real_pos값에 해당되는 보상테이블의 시작 Index값을 반환함 int PASCAL EXPORT CFS20get_comp_table_data(INT16 axis, double real_pos, double *comp_data); // 지정한 위치에대한 보상값이 반영된 위치를 반환함 // > axis: 보상값이 적용 될 위치를 확인할 축 번호 // > real_pos: 보상값이 적용 될 위치값을 확인 할 위치 // < *comp_pos: 지정한 위치값에 대한 에러보정값이 반영된 위치 // { RETURN VALUE } // - [-1] -> 보상테이블이 생성되지않았을 때 // - [-1] -> 입력한 real_pos값이 보상테이블 하한값과 상한값사이에 존재하지않을 때 // - [**] -> 입력한 real_pos값에 해당되는 보상테이블의 시작 Index값을 반환함 int PASCAL EXPORT CFS20get_real_to_comp_pos(INT16 axis, double real_pos, double *comp_pos); // 지정한 보상위치에 대한 실제위치값을 반환함(사용자가 지정하는 위치) // > axis: 보상위치에 대한 실제 위치값을 확인할 축 번호 // > comp_pos: 실제 위치값을 확인 할 보상위치 // < *real_pos: 지정한 보상위치에 대한 실제 위치 // { RETURN VALUE } // - [-1] -> 보상테이블이 생성되지않았을 때 // - [-1] -> 입력한 comp_pos값이 보상테이블 하한값과 상한값사이에 존재하지않을 때 // - [**] -> 입력한 comp_pos값에 해당되는 보상테이블의 시작 Index값을 반환함 int PASCAL EXPORT CFS20get_comp_to_real_pos(INT16 axis, double comp_pos, double *real_pos); // 보상값과 상관없이 실제 모션보드에서 출력되고 있는 지령위치 // > axis: 모션보드에서 출력되고 있는 위치값을 확인할 축 번호 // { RETURN VALUE } // - [**] -> 모터드라이브로 출력한 실제 위치값 double PASCAL EXPORT CFS20get_real_command_position(INT16 axis); // 보상값과 상관없이 실제 모터에서 반환된 엔코더위치 // > axis: 모션보드에 입력된 엔코더값을 확인할 축 번호 // { RETURN VALUE } // - [**] -> 모터드라이브에서 입력된 실제 엔코더 값 double PASCAL EXPORT CFS20get_real_actual_position(INT16 axis); |
'장비&모션제어' 카테고리의 다른 글
아진엑스텍 모션 라이브러리의 보정 테이블 기능 사용 #3/3 (0) | 2012.01.11 |
---|---|
아진엑스텍 모션 라이브러리의 보정 테이블 기능 사용 #2/3 (0) | 2012.01.11 |
장비 PC의 원격 제어 방법 (3) | 2010.11.05 |
파이어버드 DB 데이터 크기 LIMIT 정보 (0) | 2009.09.25 |
FAT32 , NTFS 파일 크기 제한 (1) | 2009.09.25 |