logo

English

SECS 프로토콜 개요

by digipine posted Nov 03, 2017
?

Shortcut

PrevPrev Article

NextNext Article

Larger Font Smaller Font Up Down Go comment Print
?

Shortcut

PrevPrev Article

NextNext Article

Larger Font Smaller Font Up Down Go comment Print

SEMI(Semiconductor equipment and Materials International) 는 http://www.semi.org/을 참고하시기 바란다.

SECS 프로토콜이란 것이 뭐냐 간단히 말하면, 반도체 만드는 장비들은 공장 자동화나 다른 목적을 위해서 전체적으로 네트웍으로 연결할 필요가 이어서 SEMI의 장비자동화 부문 (Equipment Automation Division)에서 반도체 장비와 외부 컴퓨터간의 인터페이스를 위한 데이터 통신의 표준 규약으로 제창하였고, 요즘 나오는 반도체 및 LCD 제조 장비들에는 이것이 거의 대부분 기본으로 사용하고 있다. 왜? 써먹을 곳이 너무 많거든....

통상 On-line이라는 개념에서 많이 사용되는 용어들이 있다.

SECS-I : Message Transport (Communication Over An RS-232 Cable) 
SECS-II : SECS-II는 장비와 호스트 간에 메시지 전송 규약에 따라 교환되는 메 시지가 해석될 수 있도록 그 구조 및 의미를 규정합니다. 이 표준에서 정의된 메시지는 일반적인 반도체 제조에 필요한 대부분의 내용을 포함하고 있으며, 정의되어 있지 않은 장비 고유의 필요한 메시지를 정의해서 사용할 수 있도록 허용합니다. 
HSMS : High-Speed SECS Message Services (Communication Over An Ethernet Cable On A TCP/IP Network) 
GEM: Generic Model for Communications and Control of Semi Equipment 으로써 SECS-II 메세지를 받을때 마다 취해야 하는 행동 양식/절차 이다. 
예전에 들어오던 장비들은 장비에 Serial Port를 이용해서 데이타를 주고받는 방식이었고, 그때 사용되는 프로토콜은 SECS-I, II 였지 그런데 요즘은 serial 통신을 사용하기보다는 HSMS라고 TCP/IP를 기반으로 하는 통신 방식을 사용한다.

따라서 구지 별도의 장비를 가지고 있지 않아도 장비에 LAN 선만 물려주면 데이타가 다 나오게 되는 것이지(세상 많이 좋아졌다....)

이제 좀더 자세히 보자.

[SECS-I]

SECS-I 메시지 전송 프로토콜  (RS-232C)
SECS-I에서 정의하는 표준은 반도체 장비와 호스트 사이의 적절한 메시지 교환을 위해 통신 인터페이스 사양을 정의하는 부분으로 다음과 같은 규칙을 갖는다. 
실제의 전송은 하나의 스타트 비트와 스톱비트를 갖는 10비트 직렬 전송이며, 비동기식 양방향 통신이다. 
특정 문자와 핸드쉐이크 코드에 의해 전송 방향이 구성된 후에 데이터가 전송된다. 
데이터는 254바이트이 블록단위로 전송된다. 
각 블록은 10바이트의 헤더를 가지며, 블록 헤더는 개개의 블록을 구분해 준다. 
하나의 완전한 전송 단위를 메시지라 하며 1 ~ 32,767블럭으로 구성된다. 
메시지는 요청과 응답의 한 쌍으로 구성되며 이들을 하나의 트랜잭션이라 부른다. 
블록 전송 프로토콜, 메시지 헤더 구성은 원래 문서를 참조하시길.
(왜냐면 프로그래머가 아니고 유저 입장에서는 필요 없으니까) 
프로토콜 파라메터 설정 
BAUD ; Baud rate, 통신 속도 설정 
DEVID ; Device ID, 장비에 부여되는 ID 
T1 ; 문자간 Timeout, 문자가 전송 지연 시간 제한 
T2 ; 프로토콜 Timeout, 프로토콜 응답 시간 제한 
T3 ; 응답 timeout, 응답 메시지 수신 시간 제한 
T4 ; 블록간 timeout, 블록간 전송 지연 시간 제한 
RTY ; 응답 횟수, 문제 발생시 재송신 허용 횟수 
M/S ; Master/Slave, 전송 요구 충돌시 우선 순위 지정

하여간 SECS-I에 대하여 정리 하면 Serial 통신(그러니까, 예전 컴퓨터의 마우스를 연결하던 9핀짜리 포트 사용)에서 각각의 라인으로 어떤 전기적인 신호를 보내야 한다는 것을 정의하고 있다. 
[SECS-II]

SECS-II 메시지 전송 프로토콜
 
SECS-II 는 장비와 호스트 간에 메시지 전송 규약에 따라 교환되는 메시지가 해석될 수 있도록 그 구조 및 의미를 규정한다. 이 표준에서 정의된 메시지는 일반적인 반도체 제조에 필요한 대부분의 내용을 포함하고 있으며, 정의되어 있지 않은 장비 고유의 필요한 메시지를 정의해서 사용할 수 있도록 허용하고 있다.

● Stream과 Function

모든 메시지의 이름은 Stream과 Function의 조합으로 표현된다. 이 정보는 정송되는 메시지 블록의 헤더에 메시지 ID로 표현되며 각각에 부여된 번호로써 구분된다. 
Stream : 비슷한 기능을 하거나 서로 관련되는 메시지의 범주(그룹)를 하나의 Stream으로 구분한다. 
Function: Stream에 속하는 가가각의 메시지를 Function으로 구분하여, 1차 전송 메시지의 Function번호는 항상 홀수번호가 부여되고 이의 응답인 2차 메시지의 Function은 여기에 1이 더해진 짝수가 된다. (예 : 1차가 SnFm일 경우에는 2차는 SnFm+1)

좀 있다 나오지만 컴퓨터 화면에서 SECS 통신을 하는 것을 보면 S1F1이라는 형태로 정의되어 있는데 이것은 stream 1번, Function 1번이라는 의미로 해석하면 되겠다.

각 Stream에서 다루는 내용 
Stream 1 : Equipment Status 
Stream 2 : Equipment Control and Diagnostics 
Stream 3 : Material Status 
Stream 4 : Material Control 
Stream 5 : Exception Reporting(Equipment alarms) 
Stream 6 : Data Collection 
Stream 7 : Process Program Management 
Stream 8 : Control Program Transfer 
Stream 9 : System Errors (수신된 메시지가 에러임을 호스트에게 알려줌) 
Stream 10 : Terminal Services(장비 터미널에 텍스트 메시지를 전달함) 
Stream 11 : Removed from the 1989 standard 
Stream 12 : Wafer Mapping 
Stream 13 : Unformatted Data Set Transfers

위의 그룹을 보면 S1Fx로 가는 메세지는 모두 장비의 상태에 관한 것들이고, S6Fx로 가는 것은 데이타를 받기 위한 것이라는 의미군.

Transaction 및 Conversation 프로토콜
 
SECS-II 에 준하는 메시지 교환을 위해서는 트랜잭션의 형태와 각 트랜잭션간의 관계에 필요한 Conversation Protocol을 따라야 한다.

Transaction 프로토콜
하나의 트랜잭션은 SECS-II 에서 모든 정보교환의 기본이다. 트랜잭션은 주 메시지인 1차 메시지(Primary)와 필요에 따라 선택적으로 요구되는 응답 메시지인 2차 메시지(Secondary)로 구성되며, 이와 관련하여 SECS-II 규정을 준수하기 위해 필요한 사항들은 다음과 같다. 
S1,F1에 대한 응답은 항상 S1,F2이어야 한다. (SnFm -> SnFm+1) 
장비가 수신 메시지를 처리하지 못할 경우 Stream9에 있는 적절한 에러메시지를 보낸다. 
SECS-II 에서 제공하는 메시지에 대해서는 규정된 형태를 따라야 한다. 
장비에서 수신을 기다리는 제한 시간 초과시 S9,F9메세지를 보낸다. 
응답 메시지로써 Function 0의 메시지를 수신하면 관련 트랜잭션을 종료한다. 
Conversation 프로토콜
Conversation은 하나의 업무수행을 위해 필요한 여러 트랜잭션들의 조합이다. SECS-II에서 모든 정보교환의 형태를 구분하는 대화의 종류에는 7가지가 있다. 
응답을 요구하지 않는 대화. 가장 단순한 대화의 형태로 단일 블록으로 구성된다. 
응답으로써 어떤 데이터를 요청하는 형태의 대화. 
단일 블록 메시지 송신후 정확한 수신 여부를 확인하는 형태의 대화. 
여러불록의 메시지를 송신할 경우 수신측으로부터 사전에 송신 허락을 받아 수신 준비를 시킨 다음 메시지를 송신하고 송신 후에는 수신 여부를 확인한다. 
장비와 호스트간에 정해지지 않은 데이터 셋을 송신하는 경우(Stream 13). 
장비간의 물류 이동과 관련된 기능의 대화. 
송신 측에서 요구하는 응답을 위해서 수신측에서 데이터를 준비하는 절차나 시간이 필요하여 여러 트랜잭션을 거쳐 응답을 하게되는 경우.

SECS-II에 대하여 정리하면, 실제 컴퓨터 화면에서 내가 장비와 대화하기 위해서 어떤 메세지를 보내야 하는가를 정의하는 방식이다. 내가 이해할 수 있는 BASIC으로 프로그램을 만들고 그것이 컴파일되면 결국 컴에서 돌아가는 것은 기계어인 것과 마찬가지로 SECS-ii에서는 내가 프로그램에서 어떻게 메세지를 작성해야 하는가를 정의하는 것이고, SECS-I은 내가 쓴 메시지를 어떻게 컴퓨터에서 장비로 전송하고 응답을 받을 것인가를 정의하는 것. 
[HSMS]

HSMS 메시지 전송 프로토콜
 
SECS-I은 Serial(RS-232C)에 의한 통신 이었다면, HSMS는 TCP/IP에 의한 SECS통신입니다. SECS-I과 다른점은 메시지 헤더의 포멧이 약간 다르고 블록전송이 아니라는 점을 들을 수 있다.

Active, Passive Mode 
HSMS의 Active Mode
HSMS에서 Active Mode는 주로 EQP 서버 쪽에서 장비로 접속을 할 때 사용되는 모드 이다. 하나의 Client소켓으로 구성할 수 있으며 구현에 있어서는 Passive Mode보다 간단하다.

먼저 장비쪽으로 특정 아이피주소와 포트번호로써 접속을 시도 해야 한다. 접속이 되면 Select상태로 만들기 위해 select.req를 전송하고 이후 select.rsp를 받으면 select로 상태가 된 것으로 상태를 만든후 실제 데이터 메시지를 전송하고 수신할수 있다.

HSMS 의 Passive Mode 
HSMS에서 Passive Mode는 주로 장비가 서버의 접속을 기다릴 때 사용되는 모드 이다. 하나의 Server소켓과 하나의 Client소켓으로 구성할 수 있으며 구현에 있어서는 Active Mode보다는 다소 복잡하다.(소켓작업 부분)

-먼저 지정된 포트번호로 서버 소켓을 이용하여 Listen상태로 만든후 EQP서버 쪽에서 Connect요청이 들어오면 Accept하여 Client소켓과 연결 시켜준다. 이후 접속이 되면 Select상태로 만들기 위해 서버 쪽에서 select.req를 전송하고 이후 select.rsp를 Reply하면 select로 상태가 되며 실제 데이터 메시지를 전송하고 수신할수 있다.

좀하여간 HSMS는 SECS-ii와 동일한 것으로 생각하면 될 것이다. 다만 통신 기반이 TCP/IP다 보니 SECS-I처럼 Serial cable을 통해서 전기적인 신호를 어떻게 보내야 한다는 것을 정의할 필요가 없는 것 뿐이지 
[GEM]

GEM은 메시지에 대해 상응하는 동작을 구현하는 것이라고 말할 수 있다. GEM은 사전에 정의된 일련의 시퀀스대로 프로그램이 동작하도록 만든 것이다. 예를 들어 장비쪽에서 현재 셀을 트랙아웃 시키기위해 S6F11을 보내면 EQP서버쪽에서는 이를 수락한다는 뜻으로 S6F12를 보낸다. 그럼 S6F12를 받은 장비는 트랙아웃을 시작한다. 이런 이련의 과정을 만들어 가는 것이 GEM이다.  
아래의 그림은 GEM의 한동작의 시퀀스를 나타낸다.
그림 보기
  
GEM은 실제로 SECS를 이용해서 장비를 on-line으로 연결할 때 그리 필요하지는 않은 기능이다. 왜냐면 프로그램에서 알아서 하는 부분이라 유저 입장에서는 잘 몰라도 되는 것이기 때문이다.

SVID 목록과 매뉴얼을 만들어서 배포한다. 
이것이 없으면 장비에서는 "SVID 13번의 값은 100이다"라고 응답을 해오는데 그게 뭔지 모르는 상황이 생긴다. 그래서 SVID 목록을 사용해서 데이타를 해석하고 유저에서 "xx값은 100이다"라고 번역해서 보여줄 수 있게 된다.

보통 미국장비들이 좀 많은 데이타를 지원하고 일본장비들이 좀 빈약하게 지원한다. 아마도 SEMI가 미국쪽에서 시작되었고 그쪽 회사들이 자동화나 FDC 등의 툴에 대한 수요가 많기 때문이 아닌가 생각된다.

적용이 많이 하여간 SECS라는 것은 반도체 장비를 사용하는 과정에서 자동화나 요즘 각광받고 있는 FDC를 위해서 아주 유용한 툴이라는 점. 그래서 대략 개념 정도는 이해하고 있어야 할 것 같아서 한번 써보았다.

 
?

List of Articles
No. Subject Author Date Views
29 모바일 전용 CPU ARM이 노트북과 AI로 진화 한다 file digipine 2017.11.03 3
28 임베디드 Linux 시스템 부팅 시 프로그램 자동 실행 digipine 2017.11.03 2
27 Wandboard Yocto XBMC 올리기 digipine 2017.11.03 2
26 Wandboard Yocto XBMC 올리기 digipine 2017.11.03 2
25 안드로이드 의 써드파티 어플의 SD RW 권한 부여 digipine 2017.11.03 2
24 스니핑 개념, 공격기법, 방어법, 참고할만한 오픈소스 라이브러리 및 툴 digipine 2017.11.03 2
23 GA-P55A-UD3R rev 2.0 / GT 240 OSX 스노우 레파드 해킨가이드 digipine 2017.11.03 2
22 HIGH QUALITY MOBILE EXPERIENCE (HQME) digipine 2017.11.03 2
21 해킨토시 설치법 GA-P55A-UD3R rev 2.0 / intel Core i5 760 / NVIDIA GeForce GT 240 digipine 2017.11.03 2
20 CISCO Router 설정 팁 - QOS 1 digipine 2017.11.03 2
19 UC 환경을 위한 종합 네트워크 FMC digipine 2017.11.03 3
18 네트웍 용어중 bps, cps, BPS, pps 의 차이점 digipine 2017.11.03 1
17 L4 장비의 핵심 로드 밸런싱(Load Balancing) digipine 2017.11.03 1
16 DaVinci 에 대한 소개글 digipine 2017.11.03 1
15 RFID와 USN 에 대해서 digipine 2017.11.03 2
» SECS 프로토콜 개요 digipine 2017.11.03 1
13 반도체 전공정 후공정 설명 digipine 2017.11.02 43
12 반도체 장비/공정 기술 용어집 digipine 2017.11.02 4
11 차세대 비휘발성 메모리 기술동향 file digipine 2017.11.02 1
10 서보모터의 기초와 제어 file digipine 2017.11.02 1
Board Pagination Prev 1 2 Next
/ 2