목록산업용 프로토콜 (9)
알쓸전컴(알아두면 쓸모있는 전자 컴퓨터)
GEM 프로토콜 기본 개념 특정 상황에서 어떤 SECS-Ⅱ Message를 사용해서 통신을 하고 어떤 행동을 해야 하는지 정의한 표준이 GEM 입니다. 이렇게 SECS-II 을 통해서 어떤 행동을 할지에 대해서 정의한것은 많이 있지만 기본적인만 로직을 보고 나머지는 필요할때마다 GEM 표준 문서를 보고 분석 해서 사용하시는것이 가장 좋을듯 합니다. 여기서는 문서를 어떻게 해석 되는지에 대해서만 다루는것이 가장 좋을듯 합니다. Communications state Diagram GEM 표준 문서를 보면 위와 같은 다이어 그램이 나와 있습니다. 그리고 해당 다이어그램에 대한 설명이 상세히 나와 있습니다. 간단히 분석을 위해서 gem 문서의 위의 다이어 그램에 관련된 부분의 표를 가져 오겠습니다. Commun..
Time 에러 Time 에러는 secs-I 와 HSMS 에서 통신을 확인 및 유지시키는데 목적이 있습니다. secs-I와 HSMS 에서 통신 error 는 이름과 종류가 다르니 각각 알아 보겠습니다. secs-I Time error 일단 secs-I 표준 문서를 표면 이러한 표가 있고 영어로 설명이 되어 있습니다. 이해를 돕기 위해 몇가지 자료를 통해 이해 돕도록 하겠습니다. symbol name Funtion Typical value range T1 Inter-Character Timeout 연속되는 Character 사이의 Interruption 감지 0.5sec 0.1 ~ 10 T2 Protocol Timeout Protocol응답의 누수 감지 10sec 0.2 ~ 25 T3 Reply Timeou..
HSMS[High Speed SECS Message Service] sesc-I 을 대체 하기 위해서 만들어진 프로토콜입니다. 시대가 변하면서 RS-232 보다 더빠른 ehternet 기반으로한 TCP/IP 프로토콜을 사용하여 통신을 하는 시대가 됬습니다. 반도체 설비들도 더 빠른 통신을 필요로 하였습니다. 그래서 TCP/IP 프로토콜 위에 HSMS 프로토콜을 얻혀 SESC-I 을 대체 하는것으로 표준이 만들어 졌습니다. 먼저 secs-I 위에 secs-II 를 다시 한번 구조를 보겠습니다. 영역 크기 설명 A 1byte B영역과 C영역의 데이터 크기가 몇바이트 인지 설정 B 10byte Header Structure 에서 상세히 설명 기본 개념은 데이터의 흐름 제어 C 0~244Byte DATA 를 집..
secs-II 개념 secs-II 개념은 이전 secs-I 강의 에서 부분중에 C영역에 대한 규약을 정의한 것이 secs-II 프로토콜 입니다. 먼저 secs-II 개념에서는 이름 내용 stream 카테코리 Funtion stream의 세부 내용 Message 2용어가 먼저 나옵니다. secs-II 문서를 보면 기본 카테고리가 정의되어 있고 Funtion 에 대한 세부 내용이 들어가 있습니다. 그래서 C영역을 작성 하는것은 위 부분을 작성 하는것 입니다. 데이터 작성 기본 규칙 secs-II 에서 데이터는 header 와 body를 가지고 있습니다. Number of length byte,Length byte 빨간색으로 박스친 부분을 같이 봐야합니다. number of length byte는 length..
secs-I 프로토콜 설비와 host PC 간의 통신 내용,방법을 정의한 프로토콜입니다. secs-I은 내용이 많지 않습니다. 또한 현재는 사용빈도가 많이 줄어드는 추세 입니다. 하지만 기본 Base 개념에 필요한 부분들이 있어서 학습은 필요합니다. 통신 수단은 RS-232 을 이용합니다. 프로토콜이라는것의 절반은 용어의 해석 부터 시작 되니 차근 차근 용어를 풀어 나가며 학습 하도록 하겠습니다. 컴퓨터를 전공했던 분들을 모르시기가 어려운 RS-232 입니다. secs-I은 1980년도 쯤에 정의가 됬으니 이해야 되실겁니다 그당시 통신 RS-232가 많이 사용되었습니다. 통신 규격 1start bit(0) - 8 data bit - 1stop bit(1) 비동기 통신 1:1 통신 위와 같은 통신 규격이 ..
HOST secs gem 샘플 코드 소스 코드 실행은 329번째 줄 commLogFileHandler = CommunicationLogFileHandler("C:/", "h") 에서 보시는게 가독성에 더 좋을듯 합니다. import secsgem import code import logging #로그 남기는 코드 #http://idlecomputer.tistory.com/17 (참고) from communication_log_file_handler import CommunicationLogFileHandler import secsgem.secs.functions #커스텀 하게 사용할 변수 클래스 등록 #class 변수이름(부모) # __type__ = secsgem.SecsVarDynamic # __al..
설비 secs/gem 코드 작성 이번 코드는 간단하게 secs/gem 통신 표준에서 설비쪽 코드를 작성하는 것을 해보겠습니다. import logging import code import secsgem #전에 통신 로그 남기는 게시물 에서 만들었던 모듈 #http://idlecomputer.tistory.com/17 (참고) from communication_log_file_handler import CommunicationLogFileHandler #여기 secsgem.GemEquipmentHandler 에서는 SVID와 ECID 등을 등록하면 S1F11 등과 같은 표준에 매치 시켜 자동으로 응답을 주소 셋팅을 해줍니다. class SampleEquipment(secsgem.GemEquipmentHan..
로그 기록기 소스 secs/gem 통신 기록 코드를 출력하기 위해서 communication_log_file_handler.py 을 만들어 줍니다. class CommunicationLogFileHandler(logging.Handler): def __init__(self, path, prefix=""): logging.Handler.__init__(self) self.path = path self.prefix = prefix def emit(self, record): filename = os.path.join(self.path, "{}com_{}.log".format(self.prefix, record.remoteName)) with open(filename, 'a') as f: f.write(self..
secs gem open source 라이브러리 설치 여기서는 기본적인 secs/gem 프로토콜 개념이 있다는하에 진행된다. 추후에 기본 개념 설명은 따로 하겠다. 유일하게 secs gem 프로토콜이 open source 기반은 파이썬 언어 뿐이다. open source가 있다는것에 감사 하는것이 좋을것 같다. https://pypi.python.org/pypi/secsgemhttps://github.com/bparzella/secsgemhttp://secsgem.readthedocs.io/en/latest/reference.html 이 3사이트가 오픈 소스 대한 정보 전부이다 보니 위 사이트 3개 문서를 많이 본다. 소규모 오픈 소스 프로젝트이나 문서화나 API 정리가 상당히 잘되었다. 본인은 실제로 ..