대면적 MoF 에서의 대기 위치 설정하기

최근 업데이트된 v.1.31.1490 버전에서는 스캐너의 FOV 를 벋어나는 영역에 대해 MoF 를 활용하는 데모 프로젝트 (editor_mof_text) 가 추가되었습니다. 이번 시간에는 이 예제를 자세히 설명해 보겠습니다.

editor_mof_text 데모 프로젝트가 실행된 모습

데모 프로젝트가 실행되면 자동적으로 아래 개체들이 생성됩니다.

  1. 입력 트리거 대기용 개체 생성 : 확장1 포트의 D.IN0 입력 대기
  2. MoF 시작 개체 : 엔코더가 초기화됨
  3. 각종 Text 개체 : 스캐너의 FOV 를 벋어나도록 위치를 설정 + 스크립트(Script)를 통한 데이타 변환 사용
  4. MoF 끝 개체 : 스캐너 원점으로 점프
  5. ScriptEvent 개체 : 일련번호를 증가시키는데 사용

여기서 주의해 보아야 할 것이 3 항목에서 생성되는 일부 텍스트(Text) 개체의 경우 스캐너의 FOV 를 벋어나도록 설정하였습니다 (가상 이미지 영역(Virtual Image Field) 을 사용하게 됨). 때문에 데이타를 가공하면 스캐너의 끝 위치(물리적 한계 위치)로 점프, 마크 하게 되어 비정상적인 가공이 진행되게 됩니다. (갈바노메너의 물리적인 제한 각도까지 회전된 후 레이저가 출사됨 )

때문에 대상 물체가 이동하여 스캐너의 중앙 영역으로 올 때까지 대기(외부에서 입력된 엔코더값을 통해 대기 위치를 처리)한 후 레이저가 출사 되도록 하는 등의 추가 조건이 필요합니다.

엔코더 위치 대기를 위한 객체 (MoF Wait)

즉 위와 같이 텍스트 개체의 가공 시작 전 엔코더 위치를 대기하는 조건을 사용자가 텍스트의 가공 시작 전 위치에 모두 생성하여 추가해 주어야 합니다. 이는 가공 개체가 많으면 매우 번거로운 작업이 될뿐 아니라 대기 위치를 일일이 확인 후 서로 다른 값을 입력하는 등 매우 반복적인 작업이 동반되어야 합니다.

이 작업을 간소화 하기 위해서 스크립트(Script)기능을 활용 할 수 있습니다.

데모 프로젝트에서는 이미 작성된 스크립트 파일(mof_text.cs) 이 적용되어 있습니다. 중요한 스크립트 코드는 바로 OnBeforeEntity 함수로, 실제 가공이 시작되면 매 개체(Entity)의 가공 시작 전 이 함수를 매번 거치게 됩니다.

스크립트의 OnBeforeEntity 함수를 활용한 모습

이때 OnBeforeEntity 함수에서는 텍스트(Text) 개체 여부를 확인한 후 텍스트 개체의 가공 직전에 RTC 리스트 버퍼에 엔코더의 특정 위치를 대기 하는 조건을 리스트 명령어로 삽입하도록 코드를 추가합니다. 즉 텍스트 개체들은 모두 자신의 좌측(Left) X 위치가 특정 위치보다 낮아질 때까지(Under) 대기 하게 됩니다. 이를 통해 외부 이동 물체가 이동 되고 가공해야 하는 텍스트 개체가 스캐너의 중심(대략적인) 위치에 도달 할 때까지 대기하는데 활용 될 수 있습니다.

(참고) 데모에서는 엔코더 X 신호를 사용하였으며 좌측(X-) 방향으로 물체가 이동할 경우 엔코더 X 값이 감소한다는 조건입니다.


버전 v.1.34 에서는 Config.IsWaitEncoderXForEachGlyph 옵션이 추가되었습니다.
해당 옵션이 True 인 경우 모든 Text, SiriusText, ImageText 개체들에 대해서 자동으로 엔코더 X 방향에 대해 개별 글자들의 시작 위치로 엔코더가 누적 될 때까지 대기 하는 리스트 명령이 자동으로 삽입됩니다. 때문에 사용자는 별도의 MoFWait 개체나 스크립트에 해당 대기 명령을 추가할 필요가 없습니다.
텍스트의 내용이 매우 길 경우 유용하며, 외부 엔코더 입력 보다 스캐너의 가공 속도가 빠를 경우 매번 대기하는 명령을 추가하는 불편함을 해소하기 위한 기능입니다.

댓글 달기

이메일 주소는 공개되지 않습니다. 필수 필드는 *로 표시됩니다

Scroll to Top