1. 프로젝트 소개 [Wafer 코팅 시뮬레이션]

1. 개요

Wafer 코팅 시뮬레이션은 Wafer 코팅 설비 추가, 코팅 등의 작업을 시뮬레이션하는 솔루션입니다.

솔루션을 구성하는 컴포넌트는 두 개의 Windows 응용 프로그램과 세 개의 라이브러리로 구성합니다.

두 개의 Windows 응용 프로그램은 “WaferLine 공장 시뮬레이션”과 “중앙관제”입니다. 두 응용 모두 Windows Forms 앱(.NET Framework)입니다.

WaferLine 공장 시뮬레이션에서는 Wafer 코팅 라인을 추가, 라인에 Wafer 추가, 코팅액 추가, Spin 속도 조절, 코팅액 낙하 속도 조절, 라인 가동, 라인 멈춤 등을 할 수 있습니다.

중앙관제에서는 공장과 소켓으로 연결하여 공장 상태를 모니터링할 수 있으며 WafeLine을 제어할 수 있습니다.

세 개의 라이브러리에는 WaferLineLib, WaferLineControlLib, WaferLineCommLib가 있습니다.

WaferLineLib는 Wafer와 WaferLine을 정의한 클래스 라이브러리입니다.

WaferLiineControlLib는 Wafer와 WaferLine을 시각화하는 사용자 정의 컨트롤 라이브러리입니다.

WaferLineCommLib는 공장 설비와 중앙 관제 사이에 통신을 정의한 클래스를 라이브러리입니다.

WaferLine 공장 설비 시뮬레이션은 세 가지 라이브러리를 모두 참조하여 사용합니다. 그리고 중앙 관제는 WaferLineCommLib를 참조하여 사용합니다.

[그림] 배치 다이어그램

2. WaferLineLib

WaferLineLib는 Wafer 클래스와 WaferLine 클래스를 정의하는 클래스 라이브러리입니다.

Wafer 클래스는 100개의 쉘로 구성하며 WaferLine은 Wafer와 코팅액으로 구성합니다.

WaferLine에서 Wafer는 코팅 전 Wafer와 코팅 후 Wafer로 구분하며 Spin 속도와 코팅액 낙하 속도를 설정할 수 있씁니다. 그리고 WaferLine의 상태가 바뀔 때 이를 이벤트로 통보하기 위해 이벤트 인자 클래스와 이벤트 핸들러 대리자를 정의하고 있습니다.

이벤트이벤트 인자(클래스)이벤트 핸들러(대리자)
웨이퍼 추가AddWaferEventArgsAddWaferEventHandler
코팅액 추가AddPREventArgsAddPREventHandler
Spin 속도 설정SetSpeenEventArgsSetSpeedEventHenadler
Drop속도 설정SetDropEventArgsSetDropEventHandler
코팅액 소진EndPREventArgsEndPREventHandler
코팅 완료EndCoatingEventArgsEndCoatingEventHandler


[표] WaferLineLib에 정의한 이벤트 인자 클래스와 이벤트 핸들러 대리자

[그림] WaferLineLib 클래스 다이어그램

3. WaferLineControlLib

WaferLineControlLib에는 화면 깜빡임을 줄이기 위한 DoubleBuffer 속성을 설정한 DPanel 클래스와 Wafer를 표현할 WaferPanel, WaferLine을 표현할 WaferLineConrol을 정의하고 있습니다.

WaferPanel은 원 안에 10X10 형태로 100개의 쉘을 표시하고 코팅한 쉘은 품질 수준에 따라 다른 색(품질 수준이 높을수록 녹색, 낮을수록 빨간색)으로 표현하고 있습니다.

[그림] WaferPanel

WaferLinePanel은 WaferLine을 시각화한 사용자 정의 컨트롤입니다.

WaferLinePanel을 통해 Line 추가, Wafer 추가, 코팅액 추가, Spin 속도 조절, 코팅액 낙하 속도 조절, 라인 가동 및 코팅 완료한 Wafer 품질 수준 확인 등의 작업을 할 수 있습니다.

[그림] WaferLineControl

4. WaferLineCommLib

WaferLineCommLib는 공장 설비와 중앙 관제 사이에 통신을 담당하는 클래스 라이브러리입니다.

중앙 관제를 통해 공장 설비를 제어하는 부분은 FactoryClient와 FactoryServer 클래스가 담당합니다.

공장 설비의 현재 상태를 중앙 관제에 제공하는 부분은 ControlClient와 ControlServer클래스가 담당합니다.

이 외에 수신한 정보를 알려줄 이벤트 중에 WaferLineLib에 정의하지 않은 이벤트 인자와 대리자를 정의하며 자신의 IP 주소 목록을 알려주는 MyNetwork 클래스를 제공합니다.

[그림] WaferLineCommLib 클래스 다이어그램

5. WaferLine 공장 설비 시뮬레이션

WaferLine 공장 설비 시뮬레이션은 Wafer 코팅을 시뮬레이션하는 Windows Forms 앱입니다.

WaferLine 공장 설비 시뮬레이션은 세 가지 라이브러리를 모두 참조하여 사용합니다.

WaferLine 공장 설비 시뮬레이션에는 MainForm과 WaferLineForm 및 통신을 담당하는 Manager로 구성합니다.

MainForm에서는 Line을 추가 및 기본적인 공장의 상황을 모니터링 가능합니다.

만약 특정 Line을 관리한다면 WaferLineForm을 띄워서 Wafer 추가, 코팅액 추가를 비롯하여 WaferLine을 제어합니다.

Manager를 통해 공장 설비 상황을 중앙 관제에 전달하며 중앙 관제에서 제어 메시지를 수신하면 이벤트 처리로 이를 알려 WaferLine을 제어할 수 있게 도와줍니다.

[그림] WaferLine 공장 설비 시뮬레이션 콤포넌트 다이어그램

MainForm에서는 FactoryServer의 IP와 Port를 설정할 수 있습니다.  Line 추가 및 라인 상태를 확인, 특정 Wafer의 품질 확인 및 WaferLineForm을 시각화도 담당합니다. Wafer의 품질 수준을 시각화하는 부분은 WaferLineControlLib에 있는 WaferPanel을 사용합니다.

[그림] MainForm

WaferLineForm은 WaferLineControl을 배치하여 하나의 WaferLine을 제어하는 역할을 담당합니다. 현재는 WaferLineControl과 라인 번호를 표시하는 Label로 구성하고 있습니다.

[그림] WaferLineForm

6. 중앙 관제

중앙 관제는 ContralForm 하나로 구성하고 있으며 WaferLineCommLib를 참조 추가하여 사용합니다.

[그림] 중앙 관제 컴포넌트 다이어그램

CentralForm에서는 WaferLine 공장 설비와 소켓으로 연결하여 공장 설비의 상황을 모니터링합니다. 그리고 WaferLine에 Wafer 추가, 코팅액 추가, Spin 속도 설정, 코팅액 Drop 속도 설정 등을 할 수 있습니다. 이러한 동작은 참조하는 WaferLineCommLib를 통해 전송 및 수신하고 수신한 정보는 이벤트를 통해 확인하여 목적에 맞게 처리합니다.

[그림] 중앙 관제 CentralForm