IT/Develop

RS-232, RS-422, RS-485 시리얼(직렬) 통신에 대해서 알아보자~!

Dsuny 2018. 6. 28. 09:55

 안녕하세요? 오늘은 RS-232, RS-422, RS-485 시리얼(직렬) 통신에 대해서 알아 보겠습니다. 일반적으로 개발할때 RS-232 즉 시리얼 통신을 사용하는 경우가 있습니다. 그런데 RS-422, RS-485도 있다는 사실????

 

 최근에 현장에 장비와 통신을 하는 프로그램을 개발을 했었는데 분명히 시리얼 케이블로 연결되어 있어서 당연히 RS-232로 통신을 하는 줄 알았습니다. PC에서 장비로 명령을 전달하고 결과를 받았는데 결과 값이 계속 들어 오지 않았습니다. 정말 이틀 동안 헤메고 있었습니다. 게다가 해외 출장 중이라서 기간이 넉넉하지 않았습니다. 결론적으로 장비와 PC와 통신이 RS-422로 이뤄지고 있었습니다(어디로 물어 볼 수도 없었고 혼자서 찾는다고 얼마나 고생을 했는지.. ㅠㅠ).

 

그래서 이번에 RS-232, RS-422, RS-485 시리얼(직렬) 통신에 대해서 정리해서 알려 드리겠습니다.

 

 

 

 

1. RS-232/422/485 통신의 개요

 마이크로프로세서는 주변장치를 통해서 외부와 정보를 교환할 수 있으며 일반적으로 정보를 외부와 교환하는 방법으로는 병렬통신과 직렬통신 2 가지로 나눌 수가 있습니다. 일반적으로 컴퓨터내의 장치와 정보교환을 할 때는 통상적으로 고속의 통신속도를 필요로 하여 한꺼번에 많은 정보를 처리할 수 있는 병렬통신 방식을 주로 씁니다. 이는 대량의 정보를 빠른 시간에 한꺼번에 처리함으로써 컴퓨터의 성능을 향상 시킬 수가 있기 때문이며 이것은 데이터 비트 수로써 나타납니다.

 

 하지만 모든 경우에 병렬통신 방식을 사용할 수는 없습니다. 그 이유는 통신거리의 제한성, 구현상의 기술적인 어려움과 비용이 너무 비싸다는데 있습니다. 또한 어플리케이션 자체가 고속의 통신속도를 필요로 하지않을 경우도 많습니다. 이러한 이유로 컴퓨터가 외부와의 통신을 할 때는 직렬통신 방식을 많이 사용합니다.

 

 직렬통신 방식이란 데이터 비트를 1 개의 비트단위로 외부로 송수신하는 방식으로써 구현하기가 쉽고, 멀리 갈 수가 있으며, 기존의 통신선로(전화선 등)를 쉽게 활용할 수가 있어 비용의 절감이 크다는 장점이 있습니다. 직렬통신의 대표적인 것으로 모뎀, LAN, RS-232 등이 있습니다. 하지만 크게 직렬통신을 구분하면 비동기식 방식과 동기식 방식 2 가지로 나누어집니다.

 

 많은 사람들이 비동기식 통신방식을 RS-232 로 알고 있는데 실질적으로 RS-232 라는 것은 비동기식 통신 컨트롤러에서 나오는 디지털신호를 외부와 인터페이스 시키는 전기적인 신호 방식의 하나일 뿐입니다. 일반적으로 RS-232 를 비동기식 통신방식으로 인식하고 있는 것도 큰 무리는 없습니다. 비동기식 통신 컨트롤러를 일반적으로 UART(Universal Asynchronous Receiver & Transmitter)라 부릅니다. UART 에서 나오는 신호는 보통 TTL 신호레벨을 갖기 때문에 노이즈에 약하고 통신거리에 제약이 있습니다. 이러한 TTL 신호를 입력 받아 노이즈에 강하고 멀리 갈 수 있게 해주는 인터페이스 IC 를 LINE DRIVER/RECEIVER 라 부르며 이중 대표적인 것이 RS-422 및 RS-485 가 있습니다.

 

 Specification

RS232C

RS423

RS422

RS485

동작 모드

Single-Ended

Single-Ended

Differential

Differential
최대 Driver/ Receiver 수

1 Driver

1 Receiver

1 Driver

10 Receiver

1 Driver

32 Receivers/256

32 Drivers

32 Receivers/256

최대 통달거리

약 15 m

약 1.2 km

약 1.2 km

약 1.2 km

최고 통신속도

20 Kb/s

100 Kb/s

10 Mb/s

10 Mb/s

지원 전송방식

Full Duplex

Full Duplex

Full Duplex

Half Duplex

최대 출력전압

±25V

±6V

-0.25V to +6V -7V to +12V

최대 입력전압

±15V

±12V

-7V to +7V

-7V to +12V

 


 

2. 시리얼통신(Serial Communications)의 기본

 

2-1) Baud Rate (보오레이트)와 BPS(비트/초)

 보오(Baud)라고 말하는 단위는 19 세기 후반에 프랑스 전신 공사의 Jean Maurice Baudot 씨의 이름에서 유래하였습니다. 보오(Baud)라고 말한 단위는 원래 변조율이나 1 초간 통신선의 신호 변경 회수를 가리키는 단어로서 사용되고 있습니다.2 개의 시리얼 디바이스를 접속한 경우에는 보오(Baud)와 BPS 는 사실상 똑같습니다. 만약 통신 속도를 19,200BPS 로 통신하고 있다면, 1 초간에 19,20 과한 신호가 변화한다고 말할 수 있습니다.☞

 

2-2) 비트 단위 데이터 전송

 시리얼통신에서는 1 바이트를 8 개의 비트로 분리해서 한번에 1 비트씩 통신선로로 전송합니다. 수신측에서는 통신선로를 통해 수신한 비트들을 조립해서 1 바이트를 만들어내야 하는데 이때 1 바이트의 범위를 식별하기 위하여 사용하는 것이 start bit 와 stop bit 입니다. 일단 start bit 를 송신하면 송신 측(계측 장치)에서는 계속해서 데이터비트를 송신합니다. 데이터 비트는 일반적으로 7 또는 8bit 를 주로 사용합니다. 수신 측(PC 측) 과 송신 측(계측 장치)은 이러한 데이터 비트 수와 보오레이트의 값을 일치하게 설정할 필요가 있습니다.7 데이터 비트라고 설정되어 있는 경우에는 127 보다 큰 ASCII 값을 보낼 수 없습니다. Hexa 값을 보내기 위해서 8bit 통신을 사용 합니다. 데이터를 송출하면 마지막으로 스톱 비트를 보냅니다. 스톱 비트의 값은 1 의 값 또는 기호 입니다.기호라면 이전 데이터 비트의 값이 1 이라도 확실하게 스톱 비트로서 잡는 것이 가능합니다. 스톱비트의 데이터 길이는 1,1.5,2 비트 중 선택 사용이 가능합니다.

 

2-3) 패리티 비트(Parity Bit) 

 start bit 와 stop bit 에 의하여 데이터의 단락을 나타내지만,패리티 비트라고 불리는 것을 이용하여 데이터의 구조를 확인하는 경우가 있습니다. 데이터의 송신 중에 데이터에 어떠한 누락이 생기고 있지 않을까 해서 그것을 체크하는 것이 패리티 비트입니다. 패리티에는 짝수 패리티(Even parity),홀수 패리티(Odd parity),마크 패리티(Mark parity),스페이스 패리티(Space parity),혹은 패리티 없음(None at all)을 선택할 수 있습니다. 짝수 또는 홀수 패리티를 이용하면 각 데이터 바이트 중의 1 의 개수를 헤아리고 보내진 그 수가 짝수 또는 홀수가 되도록 패리티 비트를 송신합니다.

 

2-4) 케이블 길이

 RS-232C 규격으로는 케이블의 길이는 약 150cm 로 되어 있습니다. 실드가 불안한 케이블의 경우,외부 환경이 크게 영향을 주며 전기적인 노이즈가 발생하기 쉬운 환경에서는 짧은 케이블을 이용해도 노이즈에 영향을 받습니다. 표준적인 사용 환경에 있어서 24 게이지 와이어의 실용적인 길이를 다음에 나타냅니다. 이것 이상의 길이에 이용한 경우는 신호 증폭기나 옵티칼 아이솔레이터(Optical Isolators)를 사용합니다.

 Baud Rate

 실드 케이블

 비 실드 케이블

 110

 1500m

 300m

 300

 1200m

 300m

 1200

 900m

 150m

 2400

 600m

 150m

 4800

 150m

 75m

 9600

 75m

 30m

 

2-5) RS-232C
P C에는 통상 수컷(male)의 9핀 "D" 타입 커넥터가 장비되고 있습니다. 최근의 P/C는 RS-232C 대신에 USB를 채용하고 있어 RS-232C를 사용하기 위해서는 RS-232C Adapter를 사용하여야 합니다. ☞

 

2-6) DCE 와 DTE 장치

 DTE 는 데이터 단말장치(Data Terminal Equipment)의 약어이고, DCE 는 데이터 통신장치(Data Communications Equipment)의 약어입니다. 이러한 약어를 이해한 것으로 데이터를 송신한 장치와 그 신호를 수신한 장치의 관계를 올바르게 이해할 수 있습니다.보통 PC는 DTE 장치이고 그 반면에 대부분의 다른 디바이스는 보통 DCE 장치입니다.  DCE와 DTE 장치 RS-232 스탠더드에서는 DTE 장치는 25 핀의 male 커넥터를 사용하고, DCE 장치는 25 핀의 female 커넥터를 사용합니다. DTE장치를 DCE장치에 접속하는 경우에는 스트레이트 케이블을 이용합니다

 

2-7) 동기(Synchronous) 통신과 비 동기(Asynchronous) 통신

 시리얼 통신에는 동기통신과 비 동기 통신의 2 종류의 통신 방식이 있습니다. 동기 통신의 경우,2 개의 디바이스 사이에서 동기를 취하고 그 타이밍에 따라 데이터를 송수신합니다. 데이터의 교환이 없는 사이도 제어용의 신호가 흐르고 있으므로 상대와의 동기를 유지하는 것이 가능합니다. 실 데이터를 송신한 때는 그것을 수신하고 데이터가 없는 때에는 대기 상태를 나타내는 신호를 교환합니다. 이처럼 통신이 확립되면 실 데이터를 송수신한 것에 데이터의 시작과 종료를 나타내는 신호가 존재하지 않기 때문에 데이터 전송 속도는 빨라집니다. PC의 시리얼 포트는 비 동기장치 입니다. 그러므로 비 동기 시리얼 통신만 지원합니다.

 


3. RS-232

 RS-232C 는 EIA(Electronic Industries Association)에 의해 규정되었으며 그 내용은 데이터단말기(DTE: Data Terminal Equipment)와 데이터통신기(DCE: Data Communication Equipment)사이의 인터페이스에 대한 전기적인 인수, 컨트롤 핸드쉐이킹, 전송속도, 신호 대기시간, 임피던스 인수 등을 정의하였으나 전송되는 데이터의 포맷과 내용은 지정하지 않으며 DTE간의 인터페이스에 대한 내용도 포함하지 않습니다. 같은 규격이 CCITT(Consultative Committee for International Telegraph and Telephony) 에서도 CCITT V. 24 에서 DTE 와 DCE 간의 상호 접속회로의 정의, 핀 번호와 회로의 의미에 대해서 규정을 하고 있습니다.

 

3-1) 신호선에 대한 설명

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) : 상대편 모뎀이 통신을 하기위해서 먼저 전화를 걸어오면 전화 벨이 울리게 됩니다. 이때 이 신호를 모뎀이 인식하여 컴퓨터 또는 터미널에 알려주는 신호선이며 일반적으로 컴퓨터가 이 신호를 받게 되면 전화벨 신호에 응답하는 프로그램을 인터럽터 등을 통해서 호출하게 됩니다.

 

3-2) 결선도

 DTE to DCE 9 Wire Cables

 DTE to DCE 8 Wire Cable

 DTE to DTE 3 Wire Cables

 DTE to DTE 7 Wire Cables

 

 

 

 

 


 

4. RS-422

 RS-422 는 EIA 에 의해서 전기적인 사양이 규정되어 있으며 RS-422 에서는 Point To Point 모드와 Multi-Drop 모드 두 가지가 있습니다. Point To Point 모드인 경우 RS-232 와 신호선 당 2 개의 라인이 필요한 것만 빼고 사용하는 방법에 있어서 별다른 필요가 없습니다. 하지만 Multi-Drop 모드인 경우는 Stream 에 의한 사용 방법이므로 다소 사용법이 복잡합니다. 일반적으로 사용되는 신호선은 TXD+, TXD-, RXD+ 및 RXD- 이고 나머지 신호선은 거의 사용되지 않습니다.

 

4-1) 신호선에 대한 설명

물리적으로 하나의 신호선에 두 개의 라인이 필요한데 그들의 표현은 신호선 명 뒤에 + 와 - 로써 구분표기 합니다. 즉, 예를 들면 RS-232의 TXD 신호선이 RS-422에서는 TXD+와 TXD-로 나누어 지는 것과 같습니다.

 

4-2) 결선도

 Point to Point 모드 결선도

 Multi-Drop 모드 결선도

 

 

 

 

5. RS-485

 RS-485 는 EIA 에 의해서 전기적인 사양이 규정되어 있으나 물리적인 코넥터 및 핀에 대한 사양은 아직 규정되어 있지 않습니다. 앞으로 나오는 이들의 내용은 한 예로 규정하여 사용하는 사양이니 이에 대해서 오해가 없으면 합니다. RS485 인 경우 RS-232 나 RS-422 처럼 Full Duplex 가 아닌 Half Duplex 전송방식만 지원하기 때문에 RS-422 의 Multi-Drop 모드의 슬레이브 처럼 RS-485 의 모든 마스터는 TXD 신호를 멀티포인트 버스(RS-485 의 모든 마스터가 공유하는 신호라인을 그렇게 부릅니다.)에 접속 또는 단락 시켜야만 할뿐만 아니라 RXD 신호 역시 모드에 따라서는 접속, 단락의 제어를 하여야 한다. RS-485 에서는 Echo 모드와 Non Echo 모드 두 가지가 있습니다.

 

5-1) 신호선에 대한 설명

RS-422 와 별차이가 없이 물리적으로 하나의 신호선에 두 개의 라인이 필요한데 그들의 표현은 신호선 명 뒤에 + 와 - 로서 구분표기 합니다. 하지만 UART 의 TXD, RXD 신호선이 멀티포인트 버스에 의하여 공동으로 사용하게 됨에 유의하여야 합니다. 즉 하나의 마스터는 멀티포인트 버스를 출력이면 출력, 입력이면 입력으로 구분하여 사용할 수 밖에 없습니다.

 

5-2) 결선도

 RS-485 표준 접속