2018년 11월 6일

syncAXIS 개발환경 설정하기



https://scanlab.de/en/download/syncaxissoftware 에서 예제 프로그램, 라이브러리 메뉴얼 및 최신 버전의 DLL (작성일 기준 1.0.7.2) 을 배포하고 있습니다.

1. 메뉴얼 상에 주의할 내용으로는
"이 패키지에는 RTC6 파일 (RTC6DLL, RTC6Dat.dat, RTC6Out.out, RTC6Dat.dat)이 포함되어 있습니다. 이 파일들은 RTC6 보드 자체와 함께 제공되거나 SCANLAB 웹 사이트에서 다운로드 된 RTC6 파일로 대체되어서는 안됩니다."
2. syncAXIS-1.0.7.2-win32\configuration 폴더안의 XML 파일을 열어 필요한 설정내용을 변경합니다. 시뮬레이션 모드로 일단 시작하도록 합니다.
  • syncAXISConfig.Template.xml 파일
    • <cfg:SysConfigFilePath>sysconfig xml 파일의 절대경로</cfg:SysConfigFilePath>
    • <cfg:ACSController>ACS 제어기의 IP 주소</cfg:ACSController> 
    • <cfg:SimulationMode>true</cfg:SimulationMode> 시뮬레이션 모드로 테스트함
    • <cfg:SimOutputFileDirectory>시뮬레이션 모드의 결과가 저장될 파일의 절대 경로</cfg:SimOutputFileDirectory>
    •  <cfg:LogfilePath>로그파일의 절대 경로</cfg:LogfilePath>
    • <cfg:CorrectionFilePath CalibrationFactor="bit/mm 값"> 보정파일의 절대 경로 </cfg:CorrectionFilePath>
    • <cfg:ProgramFileDirectory>작업디렉토리 경로</cfg:ProgramFileDirectory>
    • <cfg:SerialNumber>USB 동글에 적힌 시리얼 번호</cfg:SerialNumber>
  • SysConfig.Template.xml 파일
    • <cfg:Bandwidth Unit="Hz">로우 패스 필터 주파수</cfg:Bandwidth>
    • <cfg:ReducedStageDynamicFactor>스테이지 다이나믹 팩터값</cfg:ReducedStageDynamicFactor>
3. syncAXIS-1.0.1-win32\example\Installation_Project 에 Visual Studio 용 예제 프로젝트가 있습니다. 이를 개방한 후
  • const std::string ConfigFilePath = "syncAXISConfig.Template.xml 파일의 절대경로";

위와 같이 설정한후 예제 프로그램을 빌드후 실행하면 됩니다.
slsc_cfg_initialize_from_file 함수가 정상적으로 리턴(0 값) 되는지가 중요합니다.


4. https://scanlab.de/en/download/syncaxissoftware 사이트에서 TrajectoryViewer 를 배포하고 있는데, 이 툴은 시뮬레이션 모드 사용시 생성되는 출력 파일을 지정해 보시면 그 사용방법을 알수 있습니다.

시뮬레이션 출력 파일 (상당한 크기의 파일이 생성됩니다)

시뮬레이션 출력파일을 TrajectoryViewer 에서 불러들인 모습


2018년 3월 13일

excelliSCAN + syncAXIS 조합의 컨셉

3개의 조합 (RTC6 + excelliSCAN + ACS) 을 통해 MOTF(marking on the fly) 를 구성하는 방법의 개략도를 보면 아래와 같습니다.



사용자 프로그램에서는 syncAXIS DLL 이라는 라이브러리를 사용하여 speed/delay 등의 파라메터를 설정하게 되어 있고, mark/jump/arc/circle 등의 가공정보를 예전 리스트 명령어들 처럼 버퍼에 삽입하고 실행하게 되는 구조입니다. (이를 내부에서는 JOB 을 생성하여 버퍼에 넣는 방식으로 처리되고 있습니다.)
또한 Secondary Head 쪽에서 모션제어기(SLEC converter)쪽으로 연결이 되는 구조입니다.

그외도 기존 RTC 관련 라이브러리 방식과는 사뭇 달라진것이, 콜백함수를 등록해서 이벤트를 받는다던가, xml 파일을 사용해 설정을 변경한다던가 하는 소소한 변화도 있습니다.


사용자는 list_begin/list_end 사이에 jump/mark/arc 등의 명령어들을 삽입하게 되고 (이를 잡(JOB)이라고 부르고 있습니다), 이 JOB 은 위와 같은 내부 처리 프로세스를 거치게 됩니다. 내부를 보시면 각 단계가 있고 각각 처리시간의 차이가 있기 때문에 내부 버퍼를 가지고 있으며, 버퍼 역시 크기 제한이 있기 때문에 항상 버퍼가 실행중인지, 가득찼는지 등의 상태를 확인한후 명령을 삽입해 사용하게 되어 있습니다.

2017년 10월 13일

RTC6 소개


최근 새롭게 출시된 스캔랩(Scanlab)사의 RTC6를 소개해 드리겠습니다. 관련 메뉴얼을 파악해 본바에 따르면 다음과 같은 기술들이 변경되었네요,




1. 외형을 보면 알수있듯이 PCI express 방식과 함께 Ethernet 통신 타입이 발매됨 (더이상 PCI 슬롯 모델은 지원않함)
2. 윈도우 7,8,10 지원. x64 지원 포함 (비스타, XP는 미지원)
3. RTC6 카드를 최대 255개까지 지원
4. excelliSCAN 지원 (해당 기능은 옵션으로 구매)
5. 리스트 버퍼가 RTC5에 비해 8배 증가함. 즉 2^23(8,388,608)개 명령 버퍼 지원
6. Raster operation 사용시 pixel 출력이 최대 800KHz 지원 (옵션사항으로 UFPM(Ultra Fast Pixel Mode) 사용시 3.2MHz 까지 가능 (RTC5는 308KHz)
7. 최대 4개의 채널을 등록하여 데이타 측정 가능 (measurement) 하고 데이타는 최대 2,097,152개 까지 저장됨
8. 최대 4개의 3D 보정(correction) 파일 저장및 사용가능
9. 3D 스캐너 사용시 Z 축 정밀도가 20 bits 로 16배 향상됨(RTC5는 16bits) 또한 Z 축의 tracking-error 를 설정가능함
10. 레이저 delay 파라메터 값들의 정밀도가 32배 즉 1/64usec 로 향상됨 (RTC5는 1/2usec 임)

또한 다양한 함수들이 추가되고 사용법이 향상되었으니 자세한 사항은 메뉴얼을 참고 바랍니다.

2019.1. 추가됨) 
가상영역(virtual image field) 크기가 RTC5에 비해 무려 32배나 증가하였습니다. 즉 RTC5의 virtual image field 영역이 24bits인 반면, RTC6는 29bits 로 대폭 상향되어 MOTF 어플리케이션 적용시 영역제한이 상당히 완화되었습니다.






2017년 9월 5일

excelliSCAN 과 RTC6



작년말경 스캔랩(SCANLAB)에서 고성능의 스캐너와 제어기를 개발발표한바 있습니다. 제품명은 excelliSCAN 으로 주요한 기능으로는 트래킹 에러(Tracking error)가 0 이라는 시간값에 근접한다는 강력한 성능을 가지고 있습니다.
트래킹 에러(tracking error)라는 것은 시간에 대한 오차값으로 갈바노메터(galvanometer)에 명령된 위치와 실제 이동된 위치간의 지연값(latency delay)을 의미합니다. 위의 이미지처럼 제어기(RTC) 에서는 매 10usec 마다 위치 명령이 전송되지만 갈바노메터및 미러장치는 질량이 있고 이에 따른 관성(inertia)도 가지고 있기 때문에 가감속이 진행되고 결국 tracking error 시간만큼의 지연이 발생됩니다.
결국 가감속 부분의 균일하지 못한 위치 차이도 있는데다가, 만약 가공대상 물체가 이동중이라면 가공 위치 오차 (= tracking error * 이동중인 물체의 속도) 만큼의 가공편차가 발생합니다.

이 때문에 RTC 제어기와 스캐너의 조합으로 2차원 on the fly 를 개발하게 되면 치명적으로 위치 오차가 발생됩니다. RTC의 경우 이 오차에 대한 보상으로 tracking error 값을 지정하여 완화시킬수는 있지만 이 또한 등속 구간에서 유효한 값이라 하겠습니다.

이같은 문제를 해결하기 위해 나온것이 바로 tracking error 0 이라는 스펙을 가지는 excelliSCAN 제품이고, 이를 효과적으로 제어하기 위해서는 반드시 RTC6 라는 최신 제어기를 사용해야 합니다.




이 핵심 기술을 "scan-ahead" 라고 부르고 있는데 마치 모션 제어기들이 제공하는 "look-ahead" 라 유사한 명칭입니다. 말그대로 스캐너의 예상 운동경로를 사전에 분석/예측하여 이동 명령을 사전 계산하여 내보내는 것이라 할수있겠습니다.
위 도표와 같이 전통적인 방식의 스캐너의 운동과 달리 명령된 것과 거의 동일한 운동이 발생하는것을 알 수 있습니다. 이를 위해서 Tp (Preview time) 이라는 지연 시간이 발생하는데 이는 결국 사전 계산에 드는 비용으로 볼 수 있습니다.

scan-ahead를 사용하면 해당 시간만큼 명령이 지연되는 손실이 발생하나  (대략 1ms 로 예상됩니다) 스캐너의 실제 운동이 매우 정확해 지고 이에 따른 다양한 동기적 처리 (IO 및 레이저 출사등) 가 가능해 집니다. 결국 좀더 고성능의 2D on the fly 와 같은 제어가 가능해 지는 것입니다.

이 제품을 사용해 on the fly 테스트를 진행한 평가 문서를 보면, 최대 41%의 성능향상이 있으며 위치 정밀도 평균 3.4um, 표준편차 2.9um 로 정밀한 제어가 가능하다고 합니다.




광학 환경은,
- excelliSCAN14
- 100 mm telecentric 렌즈
- 필드 크기 : 54x54 mm
- 최대 마킹 속도 : 2. 5m/s
- 최대 점프 속도 : 20 m/s
- 최대 가속도 : 28*10^3 m/s^2

XY 스테이지의 테스트 환경은,
- 스테이지 크기 : 300x300mm
- 반복정밀도 : 0.1um
- 정밀도 : +- 2um
- 엔코더 분해능 : +- 0.5um
- 최대 속도 : 1 m/s
- 최대 가속도 : 10 m/s^2

모션 제어기 환경은,
- ACS 모션 (NPM 이더켓 드라이버)
- 스캐너 서보 업데이트 :  100KHz
- 스테이지 서보 업데이트 : 20KHz

레이저 환경은,
- JDSU PicoBlade (pico second 레이저)

2017년 8월 23일

레이저 가공 소프트웨어 소개


업무용으로 개발하였던 소프트웨어를 동영상을 통해 간단히 소개해 드리겠습니다. 다음과 같은 기능을 제공하고 있습니다.

1. 다양한 가공 객체 (원, 호, 직선, 나선, 사각형, 로고, 1/2차원 바코드, 전용폰트, 트루타입 폰트) 및 3D 모델용으로 STL, OBJ 포맷을 지원
2. OpenGL 렌더링 엔진을 사용한 하드웨어 가속 (2D/3D 뷰 모드 지원)
3. 다양한 편집 및 되돌리기 지원 (undo/redo)
4. 캐드(DXF) 불러오기및 레이어/ 블럭 등의 캐드 엔티티 처리 지원
5. 레이저 가공 파라메터 정보 변경/ 반복 가공 기능 마법사 지원
6. 가공시 RTC 3,4,5 컨트롤러 지원
7. 다양한 가공 방식 지정 가능 : Step(모션정지후 가공), Route(레이저 고정 출사 + 모션이동으로 가공), Fly(모션+스캐너 동시 이동 가공)





2017년 4월 11일

SCANLAB's RTC 를 이용한 가공 소프트웨어 개발 플랫폼

이번시간에는 스캔랩사의 RTC를 이용한 스캐너 제어 예제 프로그램을 소개해 드리겠습니다. 이 데모 프로그램은 사용자가 해당 제어기 버전(3,4,5)을 선택하여 사용이 가능하도록 Rtc 란 인터페이스를 제공합니다.



추상화된 Rtc 인터페이스를 사용하여, 각 버전간 복잡한 초기화 처리 문제, Import 라이브러리 문제를 내부적으로 처리하여 줍니다. 또한 각 입력 단위(주파수, 지연값, 속도)를 표준화하여 하위 컨트롤러와 무관하도록 동작합니다. Rtc3의 경우 원호보간이 되지 못하는 부분을 자체적으로 직선보간으로 처리하도록 설계되어 있습니다.  스캐너 제어 프로그램 개발에 관심이 있으신 분들은 참고해 보시면 도움이 될것 같습니다.


샘플 프로그램은 깃허브에 오픈소스로 공개하였습니다.



3가지(RTC3, 4, 5) 컨트롤러마다 그 특징이 다른데 비교해 보면 아래와 같습니다.
  1. RTC3
    1. 직선 보간 만 가능
    2. 원호 보간 미지원 
    3. 8000 개의 명령 버퍼
    4. 16비트 제어 분해능
  2. RTC4
    1. 직선및 원호보간 지원
    2. 8000 개의 명령버퍼
    3. 16비트 제어 분해능
  3. RTC5
    1. 직선및 원호보간 지원, Sky writing 지원으로 가감속 영역의 품질 해소, 레이저 출력 신호 동기화를 통해 jitter 해소
    2. marking on the fly 의 가상 영역 제공, 모션 영역 보정 기능 제공
    3. 수백만개의 명령버퍼
    4. 20비트 제어 분해능
    5. XY2-100 에서 SL2-100 으로 디지털 인터페이스 지원
  4. RTC6 
    1. RTC5 와 대부분 유사하고, 내부 메모리가 증가함

스캐너 제어 프로그램을 구현해야 하시는 분들에게 많은 도움이 되었으면 합니다. 행렬 사용기법이나, 대량의 데이타 처리 기법에 대한 궁금증은 문의주시기 바랍니다. 

2017년 3월 31일

레이저+스캐너+스테이지 동기화를 이용한 on the fly 가공 제어 기법

이번시간에는 레이저 + 스캐너 + X,Y 스테이지를 이용한 on the fly 가공 방식에 대해 소개해 드리려 합니다. 
일반적으로 스캐너를 이용한 레이저 가공은 광학시스템이 지원가능한 최대 영역에 대해서만 가공이 가능하고 이보다 큰 영역은 가공 데이타를 쪼개서(stitching) 분할 가공하는것이 일반적입니다.


그러나 레이저 출사를 끊지 않고 모션을 이동시켜 가공을 하게 되면 좀더 큰 대면적을 짧은 시간내에 처리가 가능합니다. 모션 구동측에 있는 서보모터의 이동량 (엔코더 출력을 이용)을 Feedback 받아 스캐너 제어측에 실시간으로 전달하여 처리하는 방식으로 대면적 가공이 가능해 집니다

1. 델타타우의 Power PMAC 을 이용한 on the fly 
2. 에어로텍 (AeroTech) 의 NMark 모션제어기를 이용한 on the fly
3. ESI (Electro Scientific Industries)사의 레이저 on the fly 가공 장비들
4. 스캔랩(Scanlab) 사의 RTC 컨트롤러를 이용한 on the fly 
등이 널리 알려진 방식입니다.

작년에 Power PMAC 제품을 사용해 개발 테스트 해 보았는데, 확실히 기존 방식에 대비하여 40~50% 이상 고속 가공이 가능한것으로 보입니다. 아래 테스트 가공 좌표와 모션 구동 영상을 참고해 보시면 장점을 쉽게 파악하실 수 있습니다.

테스트 하였던 가공 좌표 데이타

구동 동영상

확실히 빨라진것이 보이시나요? 렌즈의 유효 영역이 50*50mm 이고 위와 같이 가공해야 하는 좌표가 500*200mm 이라고 한다면 on the fly 가공방식이 매우 효율적임을 아실것입니다.

델타타우사의 Power PMAC 컨트롤러는 스테이지 X,Y 모터와 스캐너 X,Y 모터를 서로 개별적인 컨트롤러를 사용하지 않고, 하나의 중앙 컨트롤러가 모두 제어하는 방식인데, 이때 스캐너라는 두개의 미러를 사용하여 발생하는 역학 연산에 대해서는 역기구학(inverse kinematics) 을 개발자에게 제공하고 있습니다.

이 수식을 모션 프로그램에 삽입하여 사용자는 단순히 2차원의 가공 위치를 입력하면, 실제 스캐너측의 두 모터의 이동량을 구하여 처리됩니다.
또한 저속의 X,Y 스테이지와 고속의 X,Y 스캐너에 운동량을 분배(load balance ?)할 수 있도록, 로우패스 필터(LPF)를 제공해 주는 방식입니다. 나머지 좌표데이타의 연산, 전달, 순서 등의 상위 어플리케이션의 몫이 되겠습니다.

* 독일 SCANLAB 사에서는 RTC6와 ACS 모션 컨트롤러를 조합하여 on the fly 솔류션을 개발중이고, 하반기 시장에 출시하려는 예정이라고 하네요.

시리우스 라이브러리 홈페이지 오픈

현재 시리우스(Sirius) 라이브러리라는 제품을 개발하고 이를 소개하는 홈페이지를 오픈 하였습니다. 관심있는 분들의 많은 방문 요청드립니다. 앞으로 업데이트 소식및 변경사항은 스파이럴랩 홈페이지를 통해 진행할 예정입니다. 스파이럴랩 홈페이지 :  h...