SECS - I 부터 HSMS 까지 03 (HSMS 프로토콜에 관하여)

JUN·2025년 4월 27일
0

스마트팩토리

목록 보기
3/3
post-thumbnail

이전 글들에서 스마트 팩토리에서 CIM과 통신하기 위해 사용되는 SEMI 표준들 중 SECS 프로토콜, 그 중에서 SECS-I, SECS-II 프로토콜에 대해 알아보았다.

오늘은 SECS 메시지들을 TCP 로 통신할때 필요한 전송 표준인 HSMS 에 대해 알아보겠다.

HSMS(High Speed SECS Message Service) 란?

기존에 SECS 통신은 RS-232라는 직렬 시리얼 통신 위에서 SECS-I를 통해 SECS-II 메시지들을 주고받으며 통신이 이루어졌다.

하지만 점점 이더넷 기술 규격이 발달하고 널리 퍼짐에 따라 TCP/IP 프로토콜을 사용해서 통신을 하는 시대가 됐다.

그래서 이러한 TCP/IP 위에서도 안정적으로 SECS-II 메시지들을 사용해서 통신을 주고받을 수 있도록 규약을 만든 것이 HSMS 프로토콜이다.

→ HSMS란? TCP/IP 네트워크 상에서 SECS-II 메시지를 안정적으로 주고받기 위한 전송 프로토콜 이다.

이제 HSMS 프로토콜의 구조를 살펴보자.

HSMS 프로토콜의 구조

기본적으로 SECS-I 프로토콜에서 크게 구조가 변하지 않았다.

  • A 영역(Length) : 4 byte, B 영역과 C 영역의 길이를 나타낸다.
  • B 영역 (Header) : 10 byte (Session Id, Heder Byte 2, Header Byte 3, Ptype, Stype, System Byte)
  • C 영역 (Data) : 가변적 , SECS-II 메시지가 존재.

Header (B영역)

HSMS 메시지의 헤더는 크게 Session Id, Heder Byte 2, Header Byte 3, Ptype, Stype, System Byte 로 나뉘어져 있다.

  • Session ID Device ID, Host ID 각 통신 객체간의 관계를 규정하는 영역
  • Header Byte 2 HSMS 메시지는 크게 Data Message와 Control Message로 나뉜다. 메시지 유형은 SType 값으로 구분함 (0: Data Message, 그 외: Control Message)
      1. Data Message (데이터 메시지)

        실제 생산 장비와 호스트 간의 SECS-II 메시지를 전송할 때 사용

      • 구성 요소
        • W-Bit (MSB): 응답 필요 여부를 표시
        • 1: 응답 필요
        • 0: 응답 불필요
      • Stream Number (하위 7비트): SECS-II 메시지의 Stream 번호
      • 용도
        • 장비 상태 보고
        • 명령 실행
        • 데이터 수집
      1. Control Message (제어 메시지)
      • 특징
        • 일반적으로 Header Byte 2는 0으로 설정
        • 특수한 경우 상태 코드 포함 가능
      • 용도
        • 연결 설정
        • 연결 해제
        • 링크 테스트
  • Header Byte 3
    • Data Message일 경우:
      • Function Number (8비트 전체 사용) → SECS-II 메시지에서 사용하는 Function 코드 번호를 의미. → 즉, 특정 Stream 안에서 어떤 기능(명령/응답)인지를 구체적으로 지시하는 값.
    • Control Message일 경우:
      • Control Type (8비트 전체 사용) → 제어 메시지의 종류를 지정함. (예: 연결 요청, 연결 종료, 링크 테스트 등)
  • PType (Protocol Type)
    • 항상 0으로 설정 (Reserved)
    • HSMS에서 통신 프로토콜 타입은 고정값을 가지며, 추가 정의 없이 0을 사용함.
  • SType (Session Type)
    • 이 메시지가 어떤 종류의 통신 세션 메시지인지를 나타낸다.
    • 대표적인 SType 예시:
      • 0: Data Message (SECS-II 데이터 전송용)
      • 1: Select.req (연결 요청)
      • 2: Select.rsp (연결 응답)
      • 5: Linktest.req (링크 상태 테스트 요청)
      • 6: Linktest.rsp (링크 상태 테스트 응답)
      • 9: Separate.req (연결 종료 요청)
  • System Bytes (4 Byte)
    • 송신자가 임의로 설정하고, 응답 시 동일하게 복사되어 돌아오는 값.
    • 요청-응답을 매칭하기 위한 용도로 사용됨.
      • 예를 들어, 송신자가 메시지를 보낼 때 System Byte를 1234로 설정했다면, 그 응답 메시지에도 1234가 붙어 와야 한다.
      • 이렇게 해서 요청과 응답 쌍을 구분하고 관리할 수 있다.

Control Message 와 Data Message

1. Data Message (데이터 메시지)

  • 목적: 실제 생산장비와 호스트(서버) 간에 업무용 데이터를 주고받기 위한 메시지.
  • 특징:
    • SType = 0.
    • SECS-II 메시지를 담고 있음. (장비 상태 보고, 명령 수행, 데이터 수집 등)
    • Header Byte 2의 상위 1비트(W-Bit)가 응답 필요 여부를 표시:
      • 1 → 이 메시지에 대해 응답이 필요함.
      • 0 → 이 메시지에 대해 응답이 필요 없음.
    • Header Byte 2의 하위 7비트는 Stream Number (SECS-II Stream 번호).
    • Header Byte 3Function Number (SECS-II Function 번호).
  • 구성 예시:
- Stream 2, Function 17 : 특정 명령 전송
- Stream 3, Function 1 : 상태 요청

2. Control Message (제어 메시지)

  • 목적: 통신 상태를 관리하기 위한 메시지. (연결, 해제, 유지 등)
  • 특징:
    • SType ≠ 0 (0이 아닌 값들: 1, 2, 5, 6, 9 등)
    • SECS-II 데이터는 포함되지 않음 (C 영역이 없음 또는 아주 짧음).
    • 통신 자체를 유지하거나 제어하기 위한 간단한 명령을 보내는 것.
    • Header Byte 2는 보통 0으로 설정.
    • Header Byte 3Control Type을 나타냄. (어떤 제어 명령인지를 지정)
  • 주요 Control Message 종류 (SType 기준):
SType의미설명
1Select.req연결 요청
2Select.rsp연결 요청 응답
5Linktest.req링크 테스트 요청
6Linktest.rsp링크 테스트 응답
9Separate.req연결 해제 요청
  • Control Message 구성 예시:
    • Select.req: 장비와 호스트가 새 연결을 만들 때 보냄.
    • Linktest.req: 통신이 정상인지 확인하고 싶을 때 보냄.
    • Separate.req: 정상적으로 연결을 끊고 싶을 때 보냄.

즉 정리하자면 Control Message냐 Data 메시지냐는 아래에 따라 알 수 있다.

구분Data MessageControl Message
목적업무 데이터 전송통신 제어 관리
SType01, 2, 5, 6, 9 등
Header Byte 2W-Bit + Stream Number보통 0
Header Byte 3Function NumberControl Type
SECS-II 메시지 포함 여부포함 (C영역 사용)거의 없음 (C영역 비워짐)
profile
순간은 기록하고 반복은 단순화하자 🚀

0개의 댓글