지금까지는 이동 물체에 대한 MoF(Marking on the Fly) 가공시 미리 등록된(RTC 버퍼에 사전에 다운로드된) 폰트 집합을 사용한 일련번호, 날짜, 시간 등의 마킹이 가능하였습니다. 시리우스2 v1.21 에서는 사전에 다운로드 하는 방식의 제한에서 벋어나 가공 데이타를 스크립트(C#)에 의해 동적으로 변경하고 이를 실시간으로 고속 버퍼링 처리가 가능하도록 개선되었습니다.
이를 통해 고속으로 이동하는 대상에 다양한 데이타 조합을 실시간 처리되어 다양한 가공 조합이 가능해졌습니다. 새롭게 추가된 editor_mof_barcode 데모 프로젝트가 이 기능을 보여주고 있습니다.

사전 준비사항
- editor_mof_barcode 프로젝트 빌드
- config/config/ini 파일 설정
- [RTC0] 섹션의 TYPE= 대상 Rtc 설정
- [RTC0] 섹션의 FOV 설정 (bits/mm 가 자동 계산됨)
- [RTC0] 섹션의 CORRECTION 파일 설정 (correction 폴더내의 파일 사용됨)
- [RTC0] 섹션의 SIGNALLEVEL 설정
- [RTC0] 섹션의 MOF_X_ENC_COUNTS_PER_MM, MOF_Y_ENC_COUNTS_PER_MM 설정 (단위 mm 당 입력되는 엔코더 펄스 개수)
- EXTENSION1 PORT 입력 포트 DIN0 핀으로 외부 트리거 (Active High) 신호 연결
- MARKING ON THE FLY 포트로 외부 엔코더 신호 연결
editor_mof_barcode 프로젝트를 실행시키면 테스트를 위해 아래와 같이 다양한 제어 개체들이 생성됩니다.
- Wait Ext 16: 확장 포트1 로 입력되는 트리거 신호 처리를 위한 개체 (여기에서는 DIN0 비트가 HIGH 로 전환되는 시점을 대기하는 용도)
- MoF Begin : MoF(Marking on the fly) 기능의 시작 (여기에서는 입력된 엔코더가 0 리셋되어 기준 위치가 초기화됨)
- QR 바코드 개체 (여기에서는 셀 가공을 도트로 처리 : Jump and shoot 방식) (실제 가공 데이타는 외부 스크립트 파일에서 동적으로 설정됨)
- Text 개체 : 트루타입 폰트 (실제 가공 데이타는 외부 스크립트 파일에서 동적으로 설정됨)
- Text 개체 : 시리우스 폰트 (실제 가공 데이타는 외부 스크립트 파일에서 동적으로 설정됨)
- MoF End : MoF(Marking on the fly) 기능의 끝
- Script Event : 스크립트(script) 쪽에 사용자가 지정한 이벤트 전달 (여기에서는 일련번호를 증가시키는 목적으로 사용됨)
위의 개체들은 프로그램 시작시 자동 생성되나, 사용자가 메뉴를 통해 수동으로 생성할 수 있습니다.
이후 외부 스크립트 파일(script\mof_barcode.cs) 파일이 자동으로 로드 됩니다. 해당 스크립트의 주요 기능은 아래와 같습니다.

실제 가공을 시작(F5)를 하게 되면 외부 확장 포트 1의 DIN0 입력 핀으로 HIGH 신호로 전환(High Edge)될 때까지 대기하게 됩니다. 이후 외부에서 해당 신호를 HIGH 로 입력하게 되면, 엔코더값이 모두 리셋 되어 스캐너의 기준 위치가 초기화됩니다.
이후 바코드및 텍스트 개체들은 지정된 스크립트 에 의해 Barcode 0001, Text1 0001, Text2 0001 와 같이 데이타 포맷이 자동 변환된 후(OnTextConverter가 호출됨) 각각 가공이 진행됩니다. 이때 입력되는 엔코더 신호의 증감에 의해 스캐너의 가공 위치가 실시간으로 추종(Follow)되게 됩니다.
(참고) 데모 프로젝트에서는 시뮬레이션된 엔코더 입력을 사용하고 있습니다. 실제 기구부에서 입력된 엔코더를 MARKING ON THE FLY 커넥터에 연결되어 있다면, 엔코더 시뮬레이션 기능을 비활성화(시뮬레이션 속도를 0 으로 설정) 해 주시기 바랍니다.

가공을 마치고 MoF 가 종료되면 원점 위치(0,0)로 점프를 하게 된 후 스크립트 이벤트 객체에 의해 OnScriptEvent 가 호출됩니다. 이로 인해 스크립트 코드에 코딩된 것처럼 일련번호를 +1 증가시키게 됩니다. 만약 최대 값(여기서는 10)을 초과하게 되면 다시 시작값(여기서는 1)로 초기화 되는 과정을 거칩니다.

가공이 완료되면 위 과정을 반복 (레이어 개체(Layer: 0)의 반복 회수를 10으로 설정하였기 때문) 합니다.

스크립트 코드 내에서 ‘SerialNo++’ 에 의해 값이 증가하는 시점은 RTC 내의 버퍼에 가공 데이타가 저장되는 시점입니다. 가공 준비를 위해 리스트 버퍼에 삽입되어 있기 때문에 실제 가공되는 시점과는 차이가 있습니다. 이 버퍼의 크기를 조절하면 더욱 많은 데이타가 삽입 처리되게(RTC Buffer 내의 Max size 값) 할 수 있습니다.
(주의) RTC 내부버퍼로 저장되는 데이타와 실제 스캐너의 모션이 동작하는 시간차이가 있기 때문에, 만약 가공을 강제로 중단(Marker.Stop 등) 한 후 재시작(Marker.Start)하고자 할 때는, 이미 증가된 일련번호값을 가지게 됩니다. 때문에 가공 시작전 스크립트의 속성값 (예를 들어 일련번호 시작값등)을 재 설정한 이후에 가공을 재 시도 해야 합니다.
이처럼 새롭게 개선된 MoF 기능의 특징으로는
- 모든 가공 데이타가 MoF(Marking on the fly) 적용되어 외부 엔코더의 증감량이 적용된다
- 가공중 텍스트나 바코드등 데이타를 스크립트(Script)기능에 의해 실시간 변경이 가능하다.
- 별도 프로그램 작성 없이 외부 스크립트(Script) 내용을 수정해 다양한 조건에 대한 변경이 가능하다.
- 변경된 데이타는 화면상의 개체에도 즉시 반영되여 화면에 출력된다.