알쓸전컴(알아두면 쓸모있는 전자 컴퓨터)

secs-I 프로토콜 이란 ? 본문

산업용 프로토콜/secs gem 프로토콜 개념

secs-I 프로토콜 이란 ?

백곳 2017. 8. 28. 11:35

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의 발신지나 도착지를 정의

HostDevice 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 MessageSystem BytesPrimary Message 값과 같아야 함

Multi-Block의 경우 모든 BlockSystem 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 확인한다. 


 




Comments