-
SERIAL(RS-232C) 통신 개요IT/IOT 2024. 10. 19. 06:30728x90반응형
데이터 통신의 개요
데이터 통신 : 어떤 장소(장비)로부터 다른 곳(장비)에 원하는 정보를 전달하는 것
통신 방법
1) 병렬 전송
복수의 Bit를 모아서 한번에 전송하는 방식으로 주로 8Bit 또는 16Bit 등의 단위로 통신.
2) 직렬 전송
복수의 Bit를 한 Bit씩 나열하여 전송하는 방식으로 주로 장거리 전송에 주로 사용 되며 전송로의 비용을 저렴하게 구성할 수 있다.
RS232C 인터페이스
직렬 전송 장치의 일종인 RS232C는 EIA(Electronic Industries Association:미국 전자 공업 협회)가 RS232B의 개정판으로 1969년에 발표, 1981년에 개정 승인한 규격.
규격 정의 : 직렬로 이어진 이진 데이터를 교환하는 데이터 터미널 장비(DTE)와 데이터 통신 장비(DCE)간의 인터페이스의 제반 사항을 규정.
DTE (Data circuit Termination Equipment) : 터미널, 컴퓨터
DCE (Data Terminal Equipment) : 모뎀
MODEM (Modulation/Demodulation) : 변조/복조 장치
RS232C 표준
RS : Recommended
232 : 표준 식별 번호
C : 최근에 발표된 버전 번호
RS232C 규격 정의
1) 전기적 신호 특성 : + 5 ~ +15V : 논리 "0" - 5 ~ -15V : 논리 "1"
2) 인터페이스의 기계적 특성: 컨넥터 크기 및 형태 정의
3) 전송 회로의 정의 : 전기 신호의 정의는 총 21개가 정의되어 있으나 일반적으로 8개의 신호를 사용하고 있다.
RS232C와 전송 방식
RS232C를 사용 하는 경우 인터페이스와 전송 방식이 있다.
1) 통신의 형태 : 반이중 방식
2) 동기 방식 / 비동기 방식
데이터를 바르게 송수신 하려면 송신한 Bit열을 수신 측에서 정확하게 복원할 필요가 있다.
그 방법으로 수신 측에서 수신 신호의 Time slot(1Bit 주기)을 구분하는 방법에 따라 동기 방식과 비동기 방식으로 분류.
a. 동기 방식
* 동기 방식에서 Time slot의 구분을 수신 측에 알려주기 위하여 Data신호선 외에 동기
체크용 신호선을 별도로 설치하는 방법이 있으나 현재는 많이 사용하지 않고 주로 Character 동기 방식이 사용.
* 한번에 긴 Data를 송수신할 수 있으며 비 동기 방식에 비하여 전송 효율이 높다.
b. 비동기 방식
* 일정한 길이의 데이터(7 또는 8 Bit)의 앞뒤에 Start(0), Stop(1) Bit를 붙여서 전송하는 방법.
* 대기중에는 1이 상태를 유지 하다가 1에서 0으로 변화하는 시점부터 Time slot의 1/2 주기까지 0의 상태가 지속되면 Sampling을 개시.
* Time slot 중앙에서 체크하며 정해진 수 만큼 Sampling하면 최후의 Bit가 Stop bit 임을 확인하여 Sampling을 종료
3) 비동기 전송 방식의 Format
: start bit(1) + data bit(8) or data bit(7) + parity bit(1) + stop bit(1,1.5,2)
a. Parity Check Bit
데이터를 전송할 때 데이터가 정확하게 보내졌는지 검사하는 방법. 한 개의 문자 데이터
최상위에 1Bit를 Check용으로 부가하여 수신측에서 확인하며, 문자 데이터가 8Bit일 때는
Parity Check Bit를 부가할 수 없다.
b. Even Parity
D0 ~ D6까지의 데이터중 1의 개수가 짝수일 때는 D7=0. 홀수일 때는 D7=1로 하여 짝수를 만들어 보냄.
c. Odd Parity
D0 ~ D6까지의 데이터중 1의 개수가 홀수일 때는 D7=0. 짝수일 때는 D7=1로 하여 홀수를 만들어 보냄.
d. 전송 속도 : 통신 속도는 300, 600, 1200, 2400, 4800, 9600, 19200 BPS중에서 선택.
e. Baud : 1초당 변조 회수
f. BPS : 1초당 전송된 Bit수
용어정의
통신 방식
(1) 단방향 통신(Simplex)
정보의 흐름이 한 방향으로 일정하게 전달되는 통신 방식.
(2) 반2중 통신(Half-Duplex)
정보의 흐름이 1선의 케이블로 시간 간격으로 송신과 수신을 하는 방식.
(3) 전2중 통신(Full-Duplex)
정보의 흐름이 2선의 케이블을 이용하여 동시에 송수신이 가능한 방식.
전송 방식
데이터를 송수신할 때의 속도, 안전성, 경제성을 고려하여 아래와 같이 2가지로 구분
(1) 직렬(시리얼) 전송
데이터를 1개의 케이블을 통해 1Bit씩 전송하는 방식. 전송 속도는 느리나 설치 비용이
저렴하고 소프트웨어가 간단해지는 장점이 있다. RS-232C, RS-422, RS-485등이 이에 해당.
(2)병렬(패러렐) 전송
프린터 등에서 사용되는 방식으로 1Byte(8Bit)단위로 데이터를 전송하는 방식으로 속도가
빠르고 데이터의 정확성이 우수하나 전송 거리가 길수록 설치비용이 기하 급수적으로 증가하는 단점이 있다.
조보 동기 방식(비동기 방식)
시리얼 전송시 1문자씩 동기를 맞추어 전송하는 방식이며 동기신호(Clock등)는 전송 하지 않는다.
한 문자의 선두에 시작 비트(Start Bit)를 붙여 문자 코드를 보내고 마지막에 스톱 비트 (Stop Bit)를 붙여서 종료한다.
프로토콜(Protocol)
둘이상의 컴퓨터와 단말기 사이에 효율적이고 신뢰성 있는 정보를 주고 받기 위해 미리정보의 송수신측 사이에 정해둔 통신 규칙을 말한다. 일반적으로 호출 확립, 연결, 메시지교환 형식의 구조, 오류 메시지에 대한 재전송, 회선 반전 절차, 단말기 사이의 문자동기등에 대해 규정한다.
BPS (Bits Per Second)와 CPS (Characters Per Second)
BPS란 데이터 전송시 1초에 몇 비트를 전송하는지를 나타내는 전송률 단위.
CPS는 1초에 전송하는 문자의 수. : 보통 1문자는 1Byte(8Bit)이므로 CPS는 초당 전송할 수 있는 바이트수.
노드 (Node)
네트워크 트리 구조에서 데이터의 연결 마디를 의미하며 보통 네트워크는 수많은 노드로 구성.
패킷 (Packet)
정보를 일정 크기로 나눠서 전송하는 패킷 교환 방식에서 사용하는 용어로 Package와 Buket의 합성어로 패킷이란 전송 데이터를 정해진 길이로 분리하여 상대방 주소(국번등)를 나타내는 헤더를 붙인 것.
포트 (Port)
데이터 통신에서 원격 단말기로부터 데이터를 받거나 보내는 자료 처리 장치의 일부분을 가리키며 Cnet 시리얼 통신에서는 RS-232C 또는 RS-422 포트를 의미.
RS-232C
모뎀과 단말기 또는 모뎀과 컴퓨터를 접속하기 위한 인터페이스로서 CCITT의 권고에 따라 EIA가 제정한 시리얼 통신 규격.모뎀 접속뿐만 아니라 직접 접속(널모뎀)하는데도 사용. 단점은 전송거리가 짧고 1:1통신만 가능하다는 것인데 이 단점을 극복한 규격이 RS-422,RS-485임.
RS-422/RS-485
직렬(시리얼) 전송규격으로 RS-232C에 비해 전송 거리가 길고 1:N 접속이 가능. RS-422가능 SDA, SDB, RDA, RDB의 4개 신호선을 사용하여 전이중 방식 통신을 하며 RS-485는 SDA/RDA, SDB/RDB 2개의 신호선을 사용하여 N:N 접속이 가능하며 반이중 방식 통신을 한다.
신호선에 대한 설명
TXD - Transmit Data
비동기식 직렬통신 장치가 외부 장치로 정보를 보낼 때 직렬통신 데이터가 나오는 신호선이다.
RXD - Receive Data
외부 장치에서 들어오는 직렬통신 데이터를 입력받는 신호선이다
RTS - Ready To Send
컴퓨터와 같은 DTE장치가 모뎀 또는 프린터와 같은 DCE장치에게 데이터를 받을 준비가 됐음을 나타내는 신호선이다.
CTS - Clear To Send
모뎀 또는 프린터와 같은 DCE장치가 컴퓨터와 같은 DTE장치에게 데이터를 받을 준비가 됐음을 나타내는 신호선이다.
DTR - Data Terminal Ready
컴퓨터 또는 터미널이 모뎀에게 자신이 송수신 가능한 상태임을 알리는 신호선이며 일반적으로 컴퓨터등이 전원 인가후 통신 포트를 초기화한 후 이신호를 출력시킨다.
DSR - Data Set Ready
모뎀이 컴퓨터 또는 터미널에게 자신이 송수신 가능한 상태임을 알려주는 신호선이며 일반적으로 모뎀에 전원 인가후 모뎀이 자신의 상태를 파악한후 이상이 없을 때 이신호를 출력시킨다.
DCD - Data Carrier Detect
모뎀이 상대편 모뎀과 전화선등을 통해서 접속이 완료되었을 때 상대편 모뎀이 캐리어신호를 보내오며 이신호를 검출하였음을 컴퓨터 또는 터미널에 알려주는 신호선이다.
RI - Ring Indicator
상대편 모뎀이 통신을 하기위해서 먼저 전화를 걸어오면 전화 벨이 울리게 된다.
이때 이신호를 모뎀이 인식하여 컴퓨터 또는 터미널에 알려주는 신호선이며 일반적으로 컴퓨터가 이신호를 받게되면 전화벨 신호에 응답하는 프로그램을 인터럽터등을 통해서 호출하게 된다.
결선도
DTE DTE
2 (TXD)-----------------3(RXD)
3 (RXD) -----------------2(TXD)
4 (RTS) ------------------5(CTS)
5 (CTS) ------------------4(RTS)
7 (GND) -----------------7(GND)
6 (DSR)------+---------- 20(DTR)
8 (DCD)------+ +--- 6(DSR)
20 (DTR)------------+----8(DCD)
22 (RI)
응용 프로그램 SAMPLE
1) QBASIC
OPEN "com1:9600,n,8,1,cd,ds,rs,cs" FOR RANDOM AS #1
ack$ = CHR$(6)
DO
k$ = ""
k$ = INKEY$
IF k$ <> "" THEN
IF k$ = "A" OR k$ = "a" THEN
PRINT #1, ack$;
PRINT "> <ACK>";
ELSE
PRINT #1, k$;
PRINT ">"; k$
END IF
END IF
IF LOC(1) > 0 THEN
r$ = INPUT$(1, 1)
PRINT r$; "("; ASC(r$); ")";
END IF
LOOP UNTIL k$ = "Q" OR k$ = "q"
CLOSE #1
2) VB
' COM2를 사용한다.
Comm1.CommPort = 2
' 혈액분석기 LC-360의 통신 형식
' 9600 baud, NO parity, 8 Data, 1 Stop bit
Comm1.Settings = "9600,N,8,1"
' 수신된 것이 있으면 1 바이트씩 읽는다.
Comm1.InputLen = 1
' 포트를 연다.
Comm1.PortOpen = True
' 분석기에서 바라보았을 때 자신의 CTS가 활성화되어 있도록 만든다.
Comm1.RTSEnable = True
Select Case Request
Case REQ_ALL
' 혈액 분석기에 있는 모든 결과값을 요구한다.
Comm1.Output = "A" + Chr$(COMM_CR) + Chr$(COMM_LF)
Case REQ_TODAY
' 혈액 분석기에 있는 오늘 결과값을 요구한다.
Comm1.Output = "T" + Chr$(COMM_CR) + Chr$(COMM_LF)
Case REQ_LAST
' 혈액 분석기에 있는 마지막 결과값을 요구한다.
Comm1.Output = "D" + Chr$(COMM_CR) + Chr$(COMM_LF)
End Select
‘ 수신 BUFFER 를 확인 하여 DATA를 읽는다.
Timer_Count = 0
Do
dummy = DoEvents()
Timer_Count = Timer_Count + 1
Loop Until Comm1.InBufferCount >= 1 OR Timer_Count >= Max_Count
' 무엇인가 수신되기를 기다린 후 그것을 읽는다.
Byte_Receive = Comm1.Input
‘ 통신 Port 를 닫는다.
Comm1.PortOpen = False
728x90'IT > IOT' 카테고리의 다른 글
Visual Basic 언어를 이용한PLC 제어 (11) 2024.10.26 Modbus/TCP (2) 2024.10.23 통신에 사용되는 ASCII값과 의미 (0) 2024.10.18 SERIAL 통신 프로그램 (.NET) (1) 2024.10.17 PC PORT 번호와 PROTOCOL 간단 설명 (1) 2024.10.16