알쓸전컴(알아두면 쓸모있는 전자 컴퓨터)
secs-I 프로토콜 이란 ? 본문
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 통신 |
위와 같은 통신 규격이 있고 통신 순서도(flow)를 보겠습니다
통신 flow
순서 |
방향 |
데이터 |
1 |
host->설비 |
ENQ |
2 |
설비->host |
EOT |
3 |
host->설비 |
Data |
4 |
설비->host |
ACK |
블록에 대한 기본 로직 입니다.
ENQ?EOT?ACK? 무슨 데이터 일까요?
name |
code |
function |
해석 |
ENQ |
00000101 |
Requset to Send |
메시지를 보내겠다 |
EOT |
00000100 |
Ready to Receive |
준비 됬다 |
ACK |
00000110 |
Correct Reception |
데이터를 정확히 받았다. |
NAK |
00010101 |
Incorrect Reception |
데이터를 정확히 못받았다. |
code는 RS-232 로 보내는 1byte 데이터 입니다.
그리고 이 1byte 데이터가 의미하는것을 풀어 해석 했습니다.
데이터 구조
RS-232로 데이터를 보낼때 어떠한 데이터 구조로 보내는지 알아 보면 좀더 직관적으로 이해를 도울수 있습니다.
영역 |
크기 |
설명 |
A |
1byte |
B영역과 C영역의 데이터 크기가 몇바이트 인지 설정 |
B |
10byte |
Header Structure 에서 상세히 설명 기본 개념은 데이터의 흐름 제어 |
C |
0~244Byte |
DATA 를 집어 넣음 |
D |
2byte |
Check sum 으로 데이터에 노이즈 없이 잘들어 왔는지 확인 작업 |
이중에 B,C,D 영역은 바로 이해가 안될수 있지만 지금 부터 설명 하는 부분을 알면 이해가 좀더 쉽습니다.
B영역
No. |
Module |
Description |
1 |
역순비트 ( R- Bit) |
Message의 방향을 나타낸다 0 : Host -> Equipment , 1 : Equipment -> Host |
2 |
Device ID |
Message의 발신지나 도착지를 정의 Host는 Device ID 가 없다. |
3 |
대기비트 (W-Bit) |
Primary Message의 전송자가 Reply Message 받는 여부 나타냄 0 : Reply message 없음 , 1 : Reply Message 있음 |
4 |
Message ID |
전송되는 Message의 내용을 정의 primary Message : Function number 가 홀수 secondary Message : Function number 가 짝수 |
5 |
종료비트 (E-Bit) |
Message의 마지막 블록임을 나타낸다. 0 : 남아있는 Block이 있음 , 1 : Block의 끝 |
6 |
Block Number |
한 개 이상의 Block이 전송되는 Message의 경우 |
7~10 |
System Bytes |
현재 진행중인 모든 Transaction에 대해 고유 하여야 함 최근 종료된 Transaction 이나 실패한 Transaction의 값과도 달라야 함 Reply Message의 System Bytes는 Primary Message의 값과 같아야 함 Multi-Block의 경우 모든 Block의 System Bytes의 값은 같아야 함 |
위와 같은 의미를 나타 냅니다 . 여기서 Message ID,System Bytes 는 좀더 설명이 필요합니다,
secs 통신 약속
- 상대방에게 데이터를 보낼때 Lower Message ID의 Function 코드는 홀수를 입력 한다.
- 상대방에게 요청받은 데이터를 보낼때는 Lower Message ID의 Function 코드는 +1 을 하여 짝수로 보낸다,
라는 위와 같은 규칙이 있습니다.
여기서 stream 뭐고 function 은 뭘까요 ?
stream 특정 컨셉 기능들의 모음 그룹
이름 | 내용 |
stream | 특정 컨셉 기능들의 모음 그룹 |
Function | 실제 기능을 하는 번호 |
예를 들면 s6f1,s6f2,s6f3,s6f4 이런식으로 s는 stream , f 는 funtion 을 의미합니다.
stream 안에 funtion 이 있습니다 .
secs-II 문서에 목자를 보면
이런식으로 stream 에 대해 정의 되어 있고
그 안에 funtion 에 대해서 정의 되어 있습니다.
(7~10)System byte
말은 복잡하게 적여 있지만 간단하게 통신 메세지에 고유 ID를 뷰어 통신을 여러개 받아서 처리 할때 ID에 받게 반환 처리 하기 위해서
사용되는 메세지 식별자 입니다. 메세지 통신을 할때 마다 +1씩 보통 해주게 됩니다.
C영역
C영역의 DATA 는
내용에 나온대로 데이터를 표준대로 작성 해도 되고 다른 형식으로 보내도 됩니다.
데이터를 보내는 양식이 있습니다. (<TRID>,<SMPLN>,<STIME>) 등...
그양식은 secs-II 다음 강의에서 다루고 지금 같이의는 stream과 funtion의 관계가 이렇다는것만 알고 넘어 갑니다.
그래서 C영은 stream 과 funtion에 정의한대로 데이터를 작성해서 보내면 되는것입니다.
데이터 작성법은 secs-II 다음 강의에서 다루도록 하겠습니다.
D영역
해당 영역은 RS-232 통신을 할때 데이터가 잘못된 데이터가 들어온것인지 체크하는 방법으로써
B와C 영역을 모두 더합니다,
예를 들면 B[1] = 은 B 영역의 1번째 바이트 입니다.
B[1]+B[2]+B[3]+B[4]+B[5]+B[6]+B[7]+B[8]+B[9]+B[10]+C[1]+C[2]......
모두 더하면 어떠한 값이 나올 것입니다.
그값을 통신으로 받은 값과 자신이 계산한 값을 비교 하여 데이터가 잘못들어온것인지 잘들어온것인지 판단할수 있습니다.
이것이 CheckSum 코드 입니다. sum 더해서 check 확인한다.
'산업용 프로토콜 > secs gem 프로토콜 개념' 카테고리의 다른 글
secs GEM 프로토콜 기본 개념 (0) | 2017.08.29 |
---|---|
[secs gem ]Time 에러 알아보기 (0) | 2017.08.29 |
HSMS 프로토콜 이란 (2) | 2017.08.28 |
secs-II 개념과 데이터 작성 방법 (0) | 2017.08.28 |