본문 바로가기
인생은 실전/SmartFactory

[SECS] Semiconductor Equipment Communication Standard -Ⅱ(SECS-Ⅱ) / 호스트와 설비 사이에 교환되는 Message 형태 정의

by 나는영하 2022. 9. 6.

 SECS-Ⅱ : 설비 - 호스트 사이에 교환되는 Message 형태 정의

 

지난  시간에 확인해본 SECS-Ⅰ 프로토콜의 경우는 메세지를 전송하기 위한 방법을 정의한 규약입니다.

일반적으로 SEMI E4의 규정을 따르며  자세한 내용은 지난 시간 글을 참고하기를 권합니다.

 

2022.08.27 - [인생은 실전/SmartFactory] - [SECS] Semiconductor Equipment Communication Standard -Ⅰ(SECS-Ⅰ) / 호스트와 설비 간 RS-232를 통한 통신 방법을 정의한 프로토콜

 

[SECS] Semiconductor Equipment Communication Standard -Ⅰ(SECS-Ⅰ) / 호스트와 설비 간 RS-232를 통한 통신 방법을

 SECS-Ⅰ: 설비 - 호스트 사이 RS232를 통한 통신 방법을 정의한 프로토콜 반도체 공장 자동화를 위하여 반도체 장비 제어는 필수적이며 이를 위하여 SEMI(Semiconductor Equipment and Materials International)..

920416.tistory.com


SECS-Ⅱ는 메세지를 전송하기 위한 방법이 아닌 블록 형태로 교환되는 메세지의 내용에 대한 정보와 해석에 대한 부분을 정의한 프로토콜에 대해 알아보도록 하겠습니다. 구체적인 사항은 SEMI E5의 내용을 확인하시면 됩니다!!  

BLOCK 형태로 교환되는 MESSAGE

SECS -Ⅰ 프로토콜에 대해 공부를 했다면 위에 대한 그림을 이해하실수 있으실 겁니다.

SECS -Ⅱ 프로토콜은 위 그림에서 'C'에 해당하는 DATA가 실제로 어떻게 주고받게 되는지를 정의해두었습니다.

 

 1. Data 형식 및 구조

Block형태로 구성되는 Data는 아래와 같은 구조를 가지고 있습니다. 

  1. FORMAT (1byte) : Data Item에 있는 Data의 Format을 지정합니다. (아스키, 정수, 실수 타입 등)
    - ITEM FORMAT CODE(7~2 bit) : Data Item 내의 DATA 부분의 Data Format
    - OF LTH BYTES (1~0 bit) : Data Item 내의 Length Byte의 길이 지정
  2. LENGTH(1~3bytes) : Data Item내의 Data 길이를 지정하며 비 부호 2진수로 표현 
  3. DATA : 실제 데이터 ( 0 ~ 약 800만 Bytes)

위에서 C에 해당하는 DATA는 0 ~ 244 Bytes 라고 했는데, 실제 Data는 최대 800만 Byte까지 된다는 부분에 대해서는 사실 이해가 잘 가지 않습니다. 처음 그림에서의 SECS-1의 DATA 부분과 SECS-2의 DATA부분은 다르다고 생각해야하는 것인지.. 😥


실제 데이터가 어떠한 Type의 데이터를 가지고 있는지를 나타내는 "Item Format Code" 부분에 대한 세부적인 표는 아래와 같습니다. 6비트를 통해 실제로 전달되는 데이터가 어떠한 타입의 데이터인지를 알 수 있습니다.

아무래도 리스트(List)와 아스키(ASCII) 그리고 부울(Boolean)정도는 많이 사용됩니다!! 

 

 2. MESSAGE 구성 (STREAM / FUNCTION)

1️⃣ Message 구성 (Header 와 Data Block)

Message는 Stream과 Function에 의해 구분되며 여러개의 List와 Item으로 구성 됩니다. 

Header Only 메세지를 제외하고는 모든 메세지는 하나 이상의 Item을 포함합니다.

Stream은 메세지의 주제(Topic)에 따라서 나뉘고 Function은 조금더 세부적인 내용으로 나뉘게 됩니다. 

ex) S1F1 / S1F2 , S2F21/S2F22, S5F1, S9F0 등등.

✅ 참고로 Fucntion이 짝수(2,4,6,8)의 경우 홀수번(1,3,5,7)에 해당하는 메세지의 회신(Reply) 메세지를 뜻하며 이는 메세지에 따라 회신메세지가 존재할수도 안할수도 있습니다. 

✅ 각 Stream의 0번 Function 메세지의 경우는 특별한 메세지(Abort Transaction)로 아래에서 다루도록 하겠습니다.


2️⃣ Data 구조 

Item에만 Block이 있고 List에는 Block이 없음을 확인해주세요!

여기서 List는 자체적으로는 어떠한 값(정수, 글자, 부울)을 가지지 않으며 하위단에 Item 또는 List가 몇개 있는지를 나타내는 데이터 형태입니다. Item은 실제로 어떤 특정한 값을 Item Block에서 가지고 있게 됩니다.

Stream과 Function에 따라서 DataBlcok의 구조가 달라지게 됩니다.

(Header Only에 해당하는 메세지들은 Item을 가지고 있지 않겠죠 !!?)


3️⃣ Stram & Function

SEMI E5 관련 파일을 보면 Stream/Function에 해당하는 모든 Message를 정의해 두었습니다. 

본 글에서는 모든 메세지를 담을 수 없기 때문에 각 스트림이 어떠한 주제를 가지고 있는지만 알아보도록 하겠습니다.

Stream Topic Stream Topic
1 Equipment Status 2 Equipment Control and Diagnostics
3 Material Status 4 : Material Control
5 Exception Handling 6 Data Collection
7 Process Program Management 8 Control Program Transfer
9 System Errors 10 Terminal Services
11 Host File Services(Deleted) 12 Wafer Mapping
13 Data Set Transfers 14 Object Services
15 Recipe Management 16 Processing Management
17 Equipment Control and Diagnostics 18 Subsystem Control and Data

Stream & Function의 경우 SEMI에서 정해놓은 '예약영역'이 있고 사용자가 직접 메세지를 정의해서 사용할 수 있는 '사용자 정의 영역'이 정해져 있습니다. 

  • 예약 영역 : S1 ~ S63 / F1 ~ F63 + SYF0 (All Stream, 0 Function) + S0FY(0 Stream, All Function)
  • 사용자 정의 영역 : S64 ~ S127 / F1 ~ F255 + S1 ~ S63 / F64 ~ F255 

※ SEMI E5의 Message 정의 부분 (참고용)

S2F41 Host Command Send의 정의 부분 발췌

 

 3. Data Item Dictionary

Data Block에 어떠한 값을 넣고 싶다고해서 Item 형식만 (ASCII, BOOL 등등) 맞추어서 넣을 수 있는것은 아닙니다.

SECS - Ⅱ의 여러 메세지에서 공통적으로 사용되는 다양한 Data Item을 정의해 두었습니다. 이는 SEMI E5의 문서를 보면 알수 있으며 이또한 너무 많은 Item의 종류가 존재하기 때문에 SEMI 사양서상에 어떠한 형식으로 나타나있는지만 확인해보도록 하겠습니다.

  • Name : Data Item 이름
  • Format : Data Item 형식(ASCII, BOOL, INTEGER 등), 8진수로 표현
  • Description : 설명 부분
  • Values : 실제로 사용되는 값과 값에대한 설명
  • Where Used : 해당 Item이 어떠한 Message(SxFy)에서 사용되는지..

 

 4. Special Transaction 

SECS 통신에서는 일반적인 메세지 외에 특별한 경우에 사용되는 메세지가 존재합니다. 

 

1️⃣ Abort Transaction (SxF0)

모든 Stream의 0번 Function은 해당 Stream의 모든 트랜잭션을 취소한다는 메세지 입니다.

이는 어떠한 Primary 메세지의 응답 메세지로 많이 사용 됩니다.

 

2️⃣ Error Message 

SECS 통신 오류로 인해 설비가 프로세스를 수행하지 못할때 에러 메세지를 보내게 됩니다.

9번 Stream 메세지가 이에 해당합니다. 

ex) Trnsaction Timeout Message : S9F9

 

 5. Message Sample

 

1️⃣ 문자 'ABC'를 Item으로 송신하기 위한 코드 

           01000001  // Item ASCII, 1 Byte Length

           00000011  // 3 Byte Characters

           01000001  // ASCII A

           01000010  // ASCII B

           01000011  // ASCII C


2️⃣ 아래와 같은 조건을 만족시키는 SECS Message(Ⅰ, Ⅱ)

 

❓ 조건

  • Deviced ID : 66
  • 메세지 전송 방향 : EQ --> HOST
  • Stream : 5 , Function : 1
  • System Byte : 1
  • List > 3 Items --> Binary, 1-Byte Signed Integer, ASCII

✅ Header (SECS - Ⅰ)

 

10000000  R=1 (To Host)

01000010  Device ID = 66

00000101  W=0, Stream=5

00000001  Function=1

10000000  E=1

00000001  Block=1

00000000  System Byte 1 = 0 

00000000  System Byte 2 = 0

00000000  System Byte 3 = 0

00000001  System Byte 4 = 1

 

✅ Data Block (SECS - Ⅱ)

 

00000001  List, 1 Byte Length

00000011  3 Elements --> List 이기 때문에 Value가 없음

00100001  Binary Item, 1 Byte Length

00000001  1 Byte Long

10000100  Binary Item Value 

01100101  1-Byte Signed Integer , 1 Byte Length

00000001  1 Byte Long

00010001  Integer Value 

01000001  ASCII, 1 Byte Length

00000100  4 Byte Characters

01010100  ASCII Item Value(1) : T

01000010  ASCII Item Value(2) : E'

01010011  ASCII Item Value(3) : S

01010100  ASCII Item Value(4) : T

댓글