2019년 4월 2일

syncAXIS 를 사용한 멀티헤드 On the fly 기법

2019.3월경 스캔랩에서는 자사의 syncAXIS 제품을 1.2.5 버전으로 업그레이드 하며 이를 공개하였습니다. 제가 파악해 보니 매우 흥미로운 기능이 추가되었는데 다름아닌 멀티헤드 on the fly 기능입니다.

스캔랩 사이트 주소 : https://scanlab.de/en/download/syncaxissoftware
* syncAXIS, RTC6, excelliSCAN  에 대해서는 이전글을 참고해 주시기 바랍니다.

  • syncAXIS v1.2.5 버전의 주요 변경사항
  1.  설정파일(XML)의 버전이 1.2로 대폭 바뀌었고, DTD 포맷도 구체적으로 변경되었습니다. XML system configuration 파일은 삭제되었고, DynamicLimits 라는 노드가 추가되었는데 주로 제한(영역크기 제한, 속도, 가속도, 가가속도 등의 동역학 값들) 값을 추가하고 이를 침범할 경우의 처리를 설정할 수 있습니다. 아마도 안전 관련 사항이 대폭 추가된듯 합니다.
  2. 몇몇 API 함수들이 추가되었습니다. 
    1. 주파수, 펄스폭을 런타임에 설정이 가능하게 되었습니다. 
    2. 멀티헤드별 행렬설정이 가능하게 되었습니다.
    3. 드디어 c# 에서 callback 을 지원하도록 개선(?) 되었네요. (완성된 버전은 아닌것 같네요. delegate 방식도 아니고 상속해서 사용하는 방식인거 같은데 생성이 되지 않는 부모 클래스를 제공하다니 -_-;)
  3. XML 설정파일에서 멀티헤드를 설정할 수 있도록 개선되었습니다. (최대 4개까지 지원한다고 합니다)
  4. syncAXIS Viewer 가 업데이트 되었습니다. (DirectX 기반으로 초기버전보다는 렌더링이 비약적으로 빨라졌습니다. (참고) 시뮬레이션 모드에서 생성된 로그 파일을 기반으로 모션 프로파일링이 가능합니다.

  • 멀티헤드의 구성

아래 사진과 같이 여러개의 RTC6 카드를 사용합니다. 또한 master-slave 연결을 사용해야 하며, 특이한것은 첫번째 카드에서 SLEC 컨버터(2nd head 커넥터)로 Ehtercat 통신 변환이 발생되며, 이후 카드들에서는 2nd head 커넥터에 스캐너(excelliSCAN) 를 연결합니다.
즉 스캐너 4개를 구동하기 위해 RTC6카드는 3개가 연결된 모습입니다. (레이저 소스 제어용 시그널이 3개가 되는데 으음... -_-;)

헤드 별로 하드웨어적인 상태 (틀어짐등의 오차)가 약간의 차이를 가지고 있을 것이므로, 이 상태를 적절히(?) 찾아서 오차량(dx, dy, theta)을 미리 설정파일에(xml)에 적용할수있게 되어 있습니다. (드디어 스테이지 스캐너간 X,Y 좌표방향을 맞출 필요가 없습니다. 설정 파일에서 행렬값만 바꾸면 됩니다. 이 버전에 와서야 지원되는군요.)



  • 모션 스테이지 한개 + 스캐너2 개가 구성된 모습

이후 가공 대상을 올려놓게 되는데 이 대상역시 약간의 오차를 가지고 올려놓게 될것 입니다. 이 오차역시 설정 파일(XML) 에 지정하게 됩니다. (해당 기능의 함수를 제공하고 있으므로, XML 에 설정하기 보다는 프로그램 런타임시 호출하여 사용하게 되겠군요 !)

즉 앞서 설정된 스캐너의 장착 오차(기계적 오차)와 대상 물체의 오차(대상 자재 오차)에 해당하는 3x3 행렬(Matrix)값을 계산해 주어야 합니다.

결과적으로 on the fly 가공을 하게 되면 syncAXIS DLL 라이브러는 Master 스캐너의 동작을 그대로 Slave 로 복사하여 가공하는 방식이 아니라, 서로간의 차이점을 계산한후 공통된 모션경로를 스테이지 제어에 사용하면서 동시에 그 차이점을 두개의 모션 경로로 분리하여 스캐너 1, 2에 각기 다른 모션 움직임이 발생하는 방식입니다.


  • On the fly 모션을 합치고 분리하는 모습

아래에서는 스테이지 모션을 위해  하나의 공통된 움직임을, 스캐너 2개는 서로 다른 움직임을 각각 경로를 추출하고 이를 계산해 내는 과정입니다.




추신) 현재 4개까지가 공식적인 지원이고, 추후에는 더 많은 멀티헤드 사용이 가능할 것으로 보입니다.

추신) syncAXIS DLL 내부적으로 모션 Planning 을 계산하게 되는데, CPU 자원을 상당히 소비하며, 좌표데이타 전달이 지속적으로 되지 않으면 문제가 될 소지가 다분합니다. 버퍼 언더런(buffer underrun) 상황을 조심하시기 바랍니다.

추신) 즉 on the fly 가공중에 절대로 break point 를 찍고 디버깅 하시면 않됩니다. ! 가공 데이타 전달이 중단되어 버퍼 고갈로 심각한 문제가 예상됩니다.

추신) C# 기반으로 콜백 함수 등록시 버그는 리포트하여 금일(2019.4.5) 스캔랩으로부터 패치가 되었고 이메일로 받아 정상 동작을 확인하였습니다. 조만간 홈페이지에 공개되겠지요.

댓글 없음:

댓글 쓰기

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

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