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

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

by 나는영하 2022. 8. 27.

 SECS-Ⅰ: 설비 - 호스트 사이 RS232를 통한 통신 방법을 정의한 프로토콜

반도체 공장 자동화를 위하여 반도체 장비 제어는 필수적이며 이를 위하여 SEMI(Semiconductor Equipment and Materials International)에 의해 규정된 통신 프로토콜 즉 SECS Protocol을 주로 사용합니다.

SECS Protocol - Configuration

 

여기서 SECS Protocol의 하위 구성은 2가지로 나뉠 수 있습니다.

1️⃣ SECS - Ⅰ : RS232 통신을 위한 Low-Level Protocol

2️⃣ SECS - Ⅱ : SECS-I 또는 HSMS protocol을 통한 Equipment Controller PCequipment간에 사용되는 Standard Application Message Set

 

최근 SECS - Ⅰ 프로토콜은 사용되지 않는  추세이며 대부분 TCP/IP를 통한 통신 프로토콜인 HSMS를 사용합니다. 

하지만 SECS - Ⅰ은 HSMS Protocol의 근간이 되고 구성이 대동소이 하기 때문에 간단하게 집고 넘어가고자 합니다. 

SECS -  는 Message Format(?)을 정의한 부분으로 HSMS Protocol을 사용하더라도 동일하게 사용됩니다.

(상단의 SECS Protocol 구성도를 참고하시면 이해하기 한결 수월합니다!)  

 

SECS Protocol - Layer

 

 

 1. Physical Layer

SECS - Ⅰ프로토콜의 물리적인 계층은 반도체 장비와 상위 Host간의 메세지를 주고 받기 위한 물리적인 통신 연결 방법을 정의한 사양입니다.

 

RS-232C 통신규격으로 데이터를 주고 받으며 HOST와 장비간의 물리적인 연결 방법은 아래와 같습니다.  

 

 

 2. Transaction Layer

Transaction Diagram

트랜잭션(Transaction)은 메세지(Data)를 주고 받기 위한 일련의 과정을 뜻하는 단위라 생각하시면 될 것 같습니다. 

 

Host와 설비간에 데이터 교환을 하기 위해서는 데이터를 보내는 측에서 먼저 "ENQ" 신호를 전송해야합니다.

수신측은 ENQ 신호를 받으면 잘 받았다는 표시로 "EOT"신호를 보내게 됩니다.

EOT를 수신받은 송신측은 이제 데이터를 송신하게 됩니다. 

이러한 데이터를 수신부에선 CheckSum 후에 정상적으로 받았으면 긍정의 응답인 "ACK"

비정상적으로 받았다면 부정의 응답인 "NAK"를 회신해줍니다. 

Control char Hex Value Meaning
ENQ 05 LINE BID
EOT 04 ACCEPT BID
ACK 06 POSITIVE ACKNOWLEDGE
NAK 15 NEGATIVE ACKNOWLEDGE

 

이러한 과정은 블록마다 동일하게 수행되며,

만일 Message가 길어서 다중 Block으로 전송하게 된다면 블록의 수만큼 위의 과정을 반복하게 됩니다. 

Transaction Sample

 

위의 Sample의 경우는 SECS Protocol에 대한 트랜잭션의 샘플입니다.

아직 Header부와 Message부에 대한 의미를 잘 모르니 Header부의 앞뒤로 ENQ, EOT, ACK 신호가 오고 간것만을 확인하고 넘어가겠습니다. 😁

 

 

 3. Block + Message Layer

SECS Protocol에서 메시지 교환은 Block단위로 이루어지게 됩니다.

한번 메세지를 보내기 위한 블록은 크게 Header부와 Text(SECS -  )부로 구성되며 

그 길이는 최대 254Byte에 해당됩니다.

(블록의 앞뒤로 있는 LTH(1Byte)와 CheckSum(2Byte)은 제외)

 

SECS-Ⅰ 프로토콜에서 Header부는 아래와 같이 구성되어 있습니다.

Block Header 구성


 

1️⃣ LTH(Length Byte)와 CheckSum

LTH(Length Byte)는 자기 자신과 CheckSum의 크기를 제외하고 Header와 Text부의 총 크기(데이터 길이)를 나타냅니다.

따라서 Header는 기본적으로 10Byte이고 Text가 최대 244Byte를 가질 수 있으니 LTH는 최대 FF의 값만을 나타낼 수 있습니다. 

✅ SECS 통신을 하다 보면 Text부분이 없이 Header만을 보내는 메세지가 더러 존재합니다.

이럴 경우는 기본적으로 LTH의 값은 '0A' 이며, 이를 인지하고 있다면 맨 앞의 Byte 값만으로도 Text가 있는지 없는지 알 수 있습니다. 

 

CheckSum에 해당하는 2Byte는 보내는 메세지가 정상적으로 수신되었는지 확인하는 중복 검사의 한 형태입니다.

이와 관련된 내용은 저도 아래의 링크에서 확인했으니 참고 바랍니다.. :)

https://hojak99.tistory.com/246

 

[네트워크] 체크섬 (checksum)

[체크섬] 체크섬은 중복 검사의 한 형태. 송신된 자료의 무결성을 보호하는 단순한 방법이다. 통신에서 CRC, 즉 순환 중복 검사를 체크섬이라고도 말하는데 엄밀히 따지면 체크섬은 나열된 데이

hojak99.tistory.com


 

2️⃣ Block Header (Device ID)

Header부에서 1번과 2번 Byte에 해당하는 부분은 Device ID를 구별하기 위한 부분입니다.

어떠한 장비와 통신해서 메세지를 주고 받을건지 설정하는 부분인데 여기서 최상위 비트(R비트)를 통해 

호스트에서 장비로 보내는 메세지인지 (해당 비트가 0인경우)

장비에서 호스트로 보내는 메세지인지 (해당 비트가 1인경우) 구분해줍니다. 

 

따라서 Device ID로 설정할 수 있는 부분은 최상위 비트를 제외한 15Bit,

즉 0 ~ 32767개의 ID만을 설정할 수 있습니다. (제가 볼땐 충분할거 같네요.. 🤔)

 


3️⃣ Block Header (Stram & Function)

3번과 4번째 Byte는 전송되는 Message에 대한 내용을 정의한 부분입니다. 

각각 Stream과 Fucntion을 나타내는데 이는 SECS-Ⅱ 프로토콜에서 조금 더 자세히 다뤄볼 내용입니다.

여기서 중요한거는 3번째 Byte의 최상위 비트는 WaitBit(W비트)라고 불리는데 

해당 비트가 0이면 송신측에서 수신측의 응답이 필요 없는 메세지이고

1이면 송신측에서 수신측의 응답을 요구하는 메세지를 나타냅니다.  


4️⃣ Block Header (Block Number)

5번째와 6번째 Byte는 블록의 일련번호를 정의하는 부분입니다.

SECS-Ⅰ 블록은 254바이트 크기의 메세지를 가지게 되는데 이러한 메세지가 나뉘어져서 사용할 경우 

각 블록은 1부터 시작하는 연속되는 일련번호를 가지게 됩니다.

 

여기서도 5번째 Byte의 최상위 비트는 EndBit(E비트)라고 불리는데 해당 블록이 마지막 블록인지 아닌지를 표시합니다. 

해당 비트가 0이면 추가로 송신되는 블록이 존재하고, 해당 비트가 1이면 마지막 블록임을 뜻합니다. 


5️⃣ Block Header (System Bytes)

 

7번부터 10번까지의 Byte는 시스템 바이트를 뜻하며 이는 진행중인 메세지 트랜잭션을 규정하는 부분입니다.

  • 현재 진행중인 모든 트랜잭션에 대해 고유해야한다.
  • 최근 종료된 트랜잭션이나 실패한 트랜잭션의 값과도 달라야 한다.
  • Reply Message의 시스템 바이트는 Primary Message의 값과 같아야 한다.
  • 다중 블록 메세지인 경우 모든 블록은 동인한 시스템 바이트 값을 가진다. 

보통 메세지 통신을 할때마다 해당 바이트의 값을 +1씩 해주게 됩니다. 

 
 

 4. Timeout + Protocol Parameter

Timeout Parameters

SECS-Ⅰ 통신에는 다양한 Parameter와 타임아웃이 존재합니다.

물론 TCP/IP를 사용하는 HSMS Protocol의 경우 또 다른 파라미터가 존재하기 때문에 

자주 사용하지 않은 SECS-Ⅰ 프로토콜의 파라미터의 경우 간단히 아래의 표만을 참고하고 넘어가도록 하겠습니다.

 

표시 이름 설명
BAUD Baud Rate 직렬 통신 속도 설정
DEVID Device ID 장비에 부여되는 ID
T1 Inter Character Timeout 문자들을 전달 받는 사이의 시간 제한
T2 Protocol Timeout 프로토콜 응답 시간 제한
T3 Reply Timeout 응답(회신) 메세지 수신 시간 제한
T4 Inter Block Timeout 블록간 전송 지연 시간 제한
RTY Retry Limit 허용되는 최대 전송 재시도 횟수
M/S Master / Slave 동시에 메세지 전송 시 우선 순위 지정 (Master 부터)

 

 

현재는 SECS-Ⅰ 보단 전송 속도와 데이터 크기면에서 우월한 HSMS 프로토콜을 더 많이 사용합니다.

따라서 다음 시간에는 HSMS Protocol에 대해 알아보도록 하겠습니다.😁

 

 

댓글