저는 MES 직무를 하면서 설비와 MES 사이의 HSMS 통신을 다루어 왔어요. 이 글은 그 과정을 정리한 핵심인데요, 우선 HSMS의 메시지 체계는 편지 보내기와 유사하다고 이해하면 직관적이에요. 발신자와 수신자 정보가 있고, 각 정보가 어디에 위치하는지가 정해져 있으며, 보내진 편지에는 반드시 플래그가 붙어요. 여기에 더해 HSMS는 메시지 성격에 따라 카테고리까지 나눠 두었고, 이를 S와 F로 구분해 S-F 조합으로 부릅니다. 예를 들어 S6F11처럼 S는 성격을, F는 기능을 나타내죠. S의 하위 구성은 데이터 전송과 연결 관련 메세지, 알림, 설비 이벤트, 레시피 제어, 에러 등으로 나뉘어 있어요. S가 데이터를 담아 보내는 역할이면 S1은 연결 관련, S3는 재료 명령, S5는 Alarm, S6는 CEID 같은 설비 이벤트를 다룹니다. F 뒤의 홀수/짝수 규칙은 보내는 메세지와 받는 메세지를 짝으로 맞추는 방식으로 일반적이에요.
구성 방식은 실제 사례를 통해 이해하면 더 명확해요. 예를 들면 S1F13은 연결 관련 메세지이고, 그 안에서 트리 구조로 표기하면 직관이 좋아요. S1F13의 루트 L은 2개의 자식을 가지는 리스트이고, 자식으로 설비 모델명과 소프트웨어 버전이 들어 있습니다. 이때 HSMS 메세지는 배열로 담아 처리하며 S1F13[0][0]은 설비 모델명을 가리키고, 같은 방식으로 다른 값을 뽑아 씁니다. 또 다른 예로 S2F41은 시작 명령(Remote Command)이고, 파라미터 리스트 아래에 2개의 파라미터가 있어요. 첫 번째 파라미터는 이름-값 쌍으로 와 이고, 두 번째 파라미터는 와 같은 구성으로 되어 있죠. 처음 L[2]로 루트 노드를 묶고, 그 아래에 자식들이 파라미터 쌍으로 쌓이는 구조를 보게 되면 파일이나 폴더를 여는 느낌으로 덩어리 두 개가 존재하는 것처럼 직관이 생겨요. 이처럼 S와 F의 조합과 L[2] 같은 트리 구조 규칙을 이해하면 HSMS 메시지의 형식을 읽고 데이터를 뽑아 쓰는 일이 한결 수월해져요.
결론적으로 통신은 메시지 형식에 맞춰 보내는 규칙을 이해하는 것에서 시작하고, 그 규칙을 따르면 데이터 흐름과 제어 흐름을 설비와 MES 사이에서 효과적으로 연결할 수 있어요.
원문 링크 : HSMS 통신 간략 정리