본문 바로가기

Software/Network

[serial] RS232/422/485 참고자료

마이크로프로세서는 주변장치를 통해서 외부와 정보를 교환할 수 있으며 일반적으로 정보를 외부와 교환하는 방법으로는 병렬통신과 직렬통신 2가지로 나눌 수가 있다.
일반적으로 컴퓨터내의 장치와 정보교환을 할 때는 통상적으로 고속의 통신속도를 필요로하여 한꺼번에 많은 정보를 처리할 수 있는 병렬통신 방식을 주로 쓴다.
이는 대량의 정보를 빠른시간에 한꺼번에 처리함으로써 컴퓨터의 성능을 향상 시킬 수가 있기 때문인데 이러한 방법의 대표적인 것이 마이크로프로세서 자체의 정보처리량을 증가시키는 것이며 이것은 데이터 비트수로써 나타난다.
(80286은 16비트의 외부 데이터 비트, 80386, 80486은 32비트의 외부 테이터 비트, 비록 내부에서는 32비트로 동작되지만 64비트의 외부 데이터 비트를 갖는 펜티엄 계열를 보아도 알 수 있다.) 그외 HDD, FDD, VIDEO 카드등이 대표적인 병렬통신 방식을 사용하는 장치라 하겠다. 하지만 모든 경우에 병렬통신 방식을 사용할 수는 없다.
그이유는 통신거리의 제한성, 구현상의 기술적인 어려움과 비용이 너무 비싸다는데있다. 또한 어플리케이션 자체가 고속의 통신속도를 필요로 하지않을 경우도 많다.
이러한 이유로 컴퓨터가 외부와의 통신을 할 때는 직렬통신 방식을 많이 사용한다.
직렬통신 방식이란 데이터비트를 1개의 비트단위로 외부로 송수신하는 방식으로써 구현하기가 쉽고, 멀리갈 수가 있고, 기존의 통신선로(전화선등)를 쉽게 활용할 수가 있어 비용의 절감이 크다는 장점이 있다. 직렬통신의 대표적인 것으로 모뎀, LAN, RS232 및 X.25등이 있다. 하지만 크게 직렬통신을 구분하면 비동기식 방식과 동기식 방식 2가지로 나누어진다. 많은 사람들이 비동기식 통신방식을 RS232로 알고있는데 실질적으로 RS232라는 것은 비동기식 통신콘트롤러에서 나오는 디지털신호를 외부와 인터페이스 시키는 전기적인 신호 방식의 하나일 뿐이다.
일반적으로 RS232를 비동기식 통신방식으로 인식하고 있는 것도 큰무리는 없다. 비동기식 통신방식을 지원하는 대표적인 콘트롤러는 NS사의 16C450과 16C550이며 그외 호환되는 콘트롤러가 다수의 회사에서 생산되지만 성능상의 차이는 없고 호환은 되지 않지만 비동기 통신의 기능을 갖는 콘트롤러는 수십가지의 종류가 있다.
비동기식 통신콘트롤러를 일반적으로 UART(Universal Asynchronous Receiver/ TransmItter)라 부른다. UART에서 나오는 신호는 보통 TTL신호레벨을 갖기 때문에 노이즈에 약하고 통신거리에 제약이 있다. 이러한 TTL신호를 입력받아 노이즈에 강하고 멀리갈 수 있게 해주는 인터페이스 IC를 LINE DRIVER/RECEIVER라 부르며 이중 대표적인 것이 RS232, RS422 및 RS485가 있다.
이들 인터페이스 방식의 특성은 아래 표에 나타나 있다.
 
Specification RS232C RS423 RS422 RS485
동작 모드 Single-Ended Single-Ended Differential Differential
최대 Driver/Receiver 수 1 Driver
1 Receiver
1 Driver
10 Receivers
1 Driver
10 Receivers
32 Drivers
32 Receivers
최대 통달거리 약 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
 
위의 표에서 알 수 있듯이 RS-232과 RS-423(Single-Ended 통신방식) 통신방식은 RS422와 RS485에 비해서 통신속도가 늦고 통신거리가 짧은 단점이 있으나 동작모드에서 알 수 있듯이 하나의 신호전송에 하나의 전송선로가 필요하기 때문에 비용절감의 장점이 있다.(RS422인 경우 하나의 신호 전송에 2개의 전송선로가 필요함) 위의 인터페이스 방식중 RS232, RS422 및 RS485에 대해서 각자 설명하겠다. 현재의 RS422 또는 RS485칩의 경우 위의 표에 나와있는 Driver와 Receiver의 수보다도 훨씬 많이 지원하고 있으며 RS485인 경우 최대 256의 노드를 갖는 칩도 있다.

RS232에 대한 설명
RS232C는 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간의 상호 접속회로의 정의, 핀번호와 회로의 의미에 대해서 규정을 하고 있다.
여기서는 자세한 기술적인 내용의 기술은 피하고 필요한 내용만 간략하게 기술하겠다. RS232에서 일반적인 내용은 위에서 충분히 기술되어 있으며 기본적으로 알아야 할 내용은 코넥터의 사양, RS232 신호선과 케이블 연결 결선도이다. 이들의 내용은 아래와 같다.
 
코넥터 사양
사용자 삽입 이미지
사용자 삽입 이미지
 
신호선에 대한 설명
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 to DCE 9 Wire Cables DTE to DCE 8 Wire Cables
사용자 삽입 이미지
사용자 삽입 이미지
DTE to DTE 3 Wire Cables DTE to DTE 7 Wire Cables
사용자 삽입 이미지
사용자 삽입 이미지

RS422에 대한 설명
RS422는 EIA에 의해서 전기적인 사양이 규정되어 있으나 물리적인 코넥터 및 핀에 대한 사양은 아직 규정되어 있지 않다. 앞으로 나오는 이들의 내용은 시스템베이스에서 규정하여 사용하는 사양이니 이에 대해서 오해가 없으면 한다. RS422에서는 Point To Point 모드와 Multi-Drop 모드 두가지가 있다. Point To Point 모드인 경우 RS232와 신호선당 2개의 라인이 필요한 것만 빼고 사용하는 방법에 있어서 별다른 필요가 없다. 하지만 Multi-Drop 모드인 경우는 사용법이 좀 복잡하다. Multi-Drop의 자세한 내용에 대해서는 다음 란에서 다루고 먼저 코넥터의 사양, RS422 신호선과 케이블 결선도에 대해서 먼저 설명하겠다.
 
코넥터 사양
사용자 삽입 이미지
사용자 삽입 이미지
( )안의 신호선은 시스템베이스의 제품중 MULTI-1 모델에만 적용됨. 신호선에 할당된 핀번호는 시스템베이스 제품에만 적용되며 다른제품과 틀릴 수 있음. 일반적으로 사용되는 신호선은 TXD+, TXD-, RXD+ 및 RXD- 이고 나머지 신호선은 거의 사용되지 않는다.
 
신호선에 대한 설명
신호선에 대한 설명은 RS232와 별차이가 없고 다만 물리적으로 하나의 신호선에 두 개의 라인이 필요한데 그들의 표현은 신호선명뒤에 + 와 - 로써 구분표기 한다. 즉, 예를 들면 RS232의 TXD 신호선이 RS422에서는 TXD+와 TXD-로 나누어 질 뿐이다.
 
결선도
DTE to DTE 2 Twisted Pair Cables
사용자 삽입 이미지

* GND는 연결하지 않아도 됨.
* + 신호선은 + 신호선과 - 신호선은
- 신호선과 연결됨에 유의 바람.
사용자 삽입 이미지
 
RS422 Multi-Drop 모드에 대한 설명

Multi-Drop모드가 사용되는 시스템은 하나의 마스터에 여러개의 슬레이브가 연결되어 마스터가 어떤 슬레이브와 통신을 할것인지를 결정하고 해당 슬레이브를 호출하면 호출된 슬레이브가 응답을하는 체제로 구성되어진다. (앞 쪽의 Multi-Drop 모드 결선도 참조)
이때, 하나의 마스터에 최대 10개까지의 슬레이브가 연결될 수가 있고 이때 마스터는 Point To Point모드로 설정되어 있어도 상관이 없으나 슬레이브는 반드시 Multi-Drop 모드로 설정이 되어져 있어야 한다.

여기서 주의하여야 할내용은 모든 슬레이브의 TX신호라인을 정보를 출력시킬때만 공동 TXD라인에 접속 시켜야만 하며 그렇지않고 하나의 슬레이브가 계속 TX신호라인을 공동 TXD라인에 접속시키면 마스터에 의해서 호출된 다른 슬레이브가 정보를 출력시켜도 계속 접속된 슬레이브 때문에 공동 TXD라인에 전기적인 충돌이 발생되어 마스터로 정보가 전달되지 않는다. 즉 동시에 2개이상의 슬레이브가 공동 TXD라인에 접속하면 않되는 것을 반드시 지켜야만 한다.

TX신호선과 공동 TXD라인에 TX신호선을 접속 또는 단락시켜주는 개폐신호사이에는 S/W 또는 H/W에 의한 적절한 타이밍의 조절이 필요한데 일반적으로 S/W에 의한 방법을 많이 사용한다.
우선 TX신호선과 개폐신호사이의 관계를 알아보는 것이 중요한데 이들간에 필요한 타이밍 정보를 아래 그림을 통해서 알아보자.

사용자 삽입 이미지

먼저 슬레이브가 마스트로 데이터를 출력하기전(슬레이브측의 UART TXD 신호선) 먼저 개폐신호를 출력시켜야 한다.(슬레이브측의 RS422 개폐신호(Logic "1"이면 접속 Logic "0" 이면 단락)를 참조)
즉, TXD라인을 통해서 출력하는 첫 번째 데이터 "A"의 스타트비트가 출력되기전 최소한 RS422 드라이버칩이 개폐신호를 받고 접속되는데 걸리는 시간인 Driver Enable to Output High Delay Time(tZH)이나 Driver Enable to Output Low Delay Time(tZL)이전에 RS422 개폐 신호를 접속하는 상태로 출력시켜야만 한다.(Logic "1"상태)
여기서 tZH와 tZL의 수치는 칩제조회사마다 약간씩 틀리나 보통 수십에서 수백 nS사이의 값이다.
하지만 이수치값이 최소수치이기 때문에 정확하게 지킬필요는 없고 여유있게 주면된다. 즉, S/W에서 먼저 RS422 개폐신호를 접속상태로 출력시키고 난후 TXD라인에 데이터를 출력시키며 TXD라인에 마지막 데이터의 스톱비트까지 출력되고 난 것을 확인후 개폐 신호를 단락상태로 출력시키면 된다.(그림상에서 데이터 "B"의 스톱비트가 출력된후 RS422 개폐신호가 단락상태(Logic "0")로 전환되는 것을 보면 알수가 있다.)
위그림에서 알수있드시 RS422 개폐신호가 접속상태일 때 슬레이브측의 RS422칩의 출력단인 TXD+와 TXD-출력단에 신호가 출력되어(데이터 "A", "B") 마스터측의 UART RXD입력단에 신호가 입력됨을 알수가 있고(데이터 "A", "B") RS422 개폐신호가 단락 상태일 때 슬레이브측의 TXD+와 TXD-출력단이 플로팅(Hi-Z)상태가 되어 신호가 출력 되지 않아(데이더 "C") 마스터측의 UART RXD입력단에 아무신호가 입력되지 않음을 알수가 있다
TXD+와 TXD-신호는 공동 TXD라인에 접속시 서로 반대의 상태를 갖고 출력되고 단락시 동시에 플로팅 상태임을 그림을 통해 알 수 있다.

일반적으로 RS422 개폐신호는 RTS나 DTR신호중 하나를 사용하며 시스템베이스의 경우는 대부분 RTS신호를 사용한다.

사실 TXD신호선을 S/W에 의해서 접속 또는 단락하는 것 자체에 별문제는 없으나 프로그래머 입장에서는 까다롭고 귀찮은 일임에 틀림없다. 이러한 불편함을 해소하가 위해서 나온방법이 TXD신호선에서 데이터가 나올때만 H/W가 이를 감지하여 자동으로 접속 또는 단락 동작을 자동으로 하는 것이다. 이 방법은 프로그래머에게 편리함과 다른 S/W와의 호환성유지(Multi-Drop용의 S/W가 아닌 경우)에 유용하다라고는 하겠으나 전세계적으로 그러한 기능을 제공하는 칩 및 제품은 없다.

다만 시스템베이스의 MULTI-1모델중 일부분의 모델에서만 H/W에 의한 자동 개폐가 가능하니 폐사에 문의하여 사용하면 되겠다.


RS485에 대한 설명
RS485는 EIA에 의해서 전기적인 사양이 규정되어 있으나 물리적인 코넥터 및 핀에 대한 사양은 아직 규정되어 있지 않다. 앞으로 나오는 이들의 내용은 시스템베이스에서 규정하여 사용하는 사양이니 이에 대해서 오해가 없으면 한다. RS485인 경우 RS232나 RS422처럼 Full Duplex가 아닌 Half Duplex 전송방식만 지원하기 때문에 RS422의 Multi-Drop 모드의 슬레이브처럼 RS485의 모든 마스터는 TXD신호를 멀티포인트 버스(RS485의 모든 마스터가 공유하는 신호라인을 그렇게 부른다.)에 접속 또는 단락시켜야만 할뿐만 아니라 RXD신호 역시 모드에 따라서는 접속, 단락의 제어를 하여야 한다. RS485에서는 Echo 모드와 Non Echo 모드 두가지가 있다. 이들에 대한 자세한 내용에 대해서는 다음 란에서 다루고 먼저 코넥터의 사양, RS485 신호선과 케이블 결선도에 대해서 먼저 설명하겠다.
 
코넥터 사양
사용자 삽입 이미지
사용자 삽입 이미지
신호선에 할당된 핀번호는 시스템베이스 제품에만 적용되며 다른제품과 틀릴 수 있음.
 
신호선에 대한 설명
신호선에 대한 설명은 RS232와 별차이가 없고 다만 물리적으로 하나의 신호선에 두 개의 라인이 필요한데 그들의 표현은 신호선명뒤에 + 와 - 로써 구분표기 한다. 하지만 UART의 TXD, RXD신호선이 멀티포인트 버스에 의하여 공동으로 사용하게됨에 유의하여야 한다. 즉 하나의 마스터는 멀티포인트 버스를 출력이면 출력, 입력이면 입력으로 구분하여 사용할 수 밖에 없다.
 
결선도
사용자 삽입 이미지
 
RS485 Echo, Non Echo 모드에 대한 설명

멀티포인트 버스를 사용하는 시스템은 하나의 버스에 여러개의 마스터가 연결되어 사용한다. 이 때문에 하나의 마스터가 다른 마스터와 통신을 할 경우에는 반드시 출력 개폐를 하여야만 한다.
이것의 원리는 RS422의 Multi-Drop 모드와 동일하니 그쪽을 살펴보시기 바람. 하지만 동시에 여러개의 마스터가 출력을 하여 데이터가 충돌하는 현상이 발생하기 때문에 이러한 문제는 S/W에 의하여 해결되어야 한다. 이렇게 충돌 여부를 확인하는 방법 중 하나가 자기가 보낸 정보를 자기가 받아보아 충돌여부를 확인하는 것인데 이것을 RS485 Echo 모드라 부른다.
즉, 어떤 마스터가 멀티포인트 버스에 예를 들어 "ABC"라는 데이터를 보내면 이것이 자동적으로 되돌아 오므로(Echo) 이것을 읽어와 "ABC"여부를 확인하여 동일한 정보가 아니거나 들어온 데이터의 수가 틀리면 충돌한 것으로 보고 적절한 시간의 지연을 거쳐 다시 출력시켜 정확한 값이 되돌아 올 때 까지 되풀이하면 된다. 이때 마스터의 RXD신호선은 항상 멀티포인트 버스에 접속되어 있어 자신의 데이터 뿐만 아니라 다른 어느 마스터가 보내는 데이터를 받을 수가 있다.
이러한 데이터를 자신에게 필요한 정보 인지를 판단 하는 것은 S/W에 의해서 결정된다. 위의 내용을 요약하면 RS485 Echo 모드는 마스터의 RXD신호선은 항상 멀티포인터 버스 에 접속되어 있고 TXD신호선은 데이터를 출력할 때만 멀티포인터 버스에 접속시키야 하고 나머지는 반드시 단락 시켜야한다. 만약 단락시키지 않으면 RS422의 Multi-Drop모드와 같이 다른 마스터가 데이터를 보내도 충돌이 발생하여 절대로 올바른 송수신이 발생 할 수가 없다.
위의 RS485 Echo 모드에서 자기가 보낸 데이터가 자기자신에게 되돌아 오는 기능을 없앤 것이 RS485 Non Echo 모드이다. RS485 Non Echo 모드는 TXD신호선을 멀티포인트 버스에 접속시키면 그즉시 RXD신호선 이 멀티포인트 버스에서 단락되고, TXD신호선을 멀티포인트 버스에서 단락시키면 그즉시 RXD신호선이 멀티포인트 버스에 접속하게 된다.
멀티포인터 버스에 접속 및 단락할 때 필요한 타이밍관계는 RS422 Multi-Drop에 대한 설명에서 자세하게 다루었기 때문에 더 이상 언급하지 않겠다. 일반적으로 RS485 개폐신호는 RTS나 DTR신호중 하나를 사용하며 시스템베이스의 경우는 대부분 RTS신호를 사용한다.