RS232 데이터 캡처를 위한 시리얼 케이블 제작 방법

DB9(DE9) 커넥터를 이용한 RS232 시리얼 데이터 통신 장비의 디버그를 위해 송수신 데이터를 직접 캡처해 확인할 수 있는 캡처용 케이블을 만드는 방법을 사진과 함께 설명한다. 직렬 통신용 9핀 단자의 핀 배열과 역할과 함께 실제 사용 사례도 소개한다.

시리얼 데이터 캡처 케이블이 필요한 이유

RS232를 비롯한 시리얼 통신은 임베디드 장비뿐 아니라 산업용 제어 장비, 방송 장비, 계측기, 네트워크 장비와 각종 레거시 시스템까지 다양한 분야에서 사용된다. 이러한 시리얼 통신을 사용하는 장비의 개발이나 디버그 혹은 역설계를 위해서는, 시리얼 포트를 통해 어떤 메시지들이 실제로 오고 가는지 확인해야 할 필요가 있다.

특히, 통신에 참여하는 장치들의 제조사가 다른 상황에서 장비 간 통신으로 인한 문제가 생기면 서로 자기 문제가 아니라고 궁뎅이를 뒤로 빼기에 바쁜데, 이런 상황에서 누구 궁뎅이를 걷어차 줘야 하는지 결정하려면, 제어하는 놈이 말을 잘못한 건지, 제어받는 놈이 말귀를 못 알아먹은 건지 직접 알아내야 한다.

이를 위해서는 통신 포트의 데이터를 중간에서 직접 들여다봐야 한다. 문제는 증거를 들이밀어도 궁뎅이 뒤로 빼는 건 둘째 치고 시중에서 이러한 용도의 케이블을 구하는 게 쉽지 않다는 것이다.

본 글에서는 먼저 RS232 시리얼 포트와 DB9(DE9) 커넥터의 구조, 주요 핀의 역할과 장비 간 연결 방법을 살펴본다. 이어서 실제 필자가 방송 장비의 통신 문제를 추적하기 위해 제작해 사용해 온 양방향 RS232 데이터 캡처 케이블의 원리와 결선 방법, 제작 과정을 설명한다.

RS232 시리얼 통신과 DB9(DE9) 커넥터

DB9(DE9) 커넥터의 시리얼 통신 핀 배치

RS232에는 송수신 데이터뿐 아니라 장비의 통신 상태와 흐름을 제어하기 위한 여러 신호가 정의되어 있다. 이러한 신호를 연결하기 위해 여러 형태의 커넥터가 사용되어 왔지만, 일반적으로 가장 익숙하게 접할 수 있는 것은 9핀 DB9(DE9) 커넥터이다.

DB9(DE9) 암·수 커넥터의 전면 모습과 1번부터 9번까지의 핀 배열
DB9(DE9) 암·수 커넥터의 핀 번호 — mbedded.ninja

이 커넥터의 D-subminiature 규격에 따른 정식 명칭은 DE9이다. 하지만 대부분 DB9이라고 부른다. 본 글에서는 두 명칭을 함께 표기한다. DB9(DE9) 커넥터가 가지고 있는 핀들의 역할은 아래의 표와 같다.

DB9(DE9) RS232 핀 배열 – DTE 기준
PIN이름방향역할
1DCD(Data Carrier Detect)수신통신 선로의 캐리어 신호 감지 여부
2RXD(Receive Data)수신대국에서 들어오는 데이터
3TXD(Transmit Data)송신대국으로 내보내는 데이터
4DTR(Data Terminal Ready)송신자국의 통신 가능 상태
5GND(Ground)양방향(공용)신호 기준 접지
6DSR(Data Set Ready)수신대국의 통신 가능 상태
7RTS(Request To Send)송신자국의 수신 가능 상태
8CTS(Clear To Send)수신대국의 수신 가능 상태
9RI(Ring)수신종명 신호 검출

본래 RS232 규격은 PC와 모뎀을 연결하기 위한 규격으로, 모뎀 통신에 필요한 여러 가지 제어 신호선들이 함께 있다. 이 중 순수하게 데이터의 송수신에 사용되는 선은 RXD, TXD 2개뿐이다. 우리는 이 2가지 신호와, 이 신호의 기준이 되는 GND만 생각하면 된다.

포트의 타입은 DTE(데이터 단말 장치)와 DCE(회선 종단 장치)가 있다. 둘의 차이는 RXDTXD의 핀 번호가 서로 다르다는 것이다. 크로스 케이블 없이 통신이 가능하도록 회로 내부에서 단자를 크로스 해 둔 형태로, PC와 같은 터미널 장치의 경우 대부분 위에서 설명한 DTE 배치를 가지고 있다.

흐름 제어를 사용할 경우 CTS/RTS도 고려 대상이 되나, 여기서는 논외로 치겠다.

RS232의 연결 방법

RS232의 장비 간 접속은 매우 간단하다. 자국(또는 제어장치)의 TX가 대국(또는 피제어장치)의 RX로, 자국의 RX가 대국의 TX로 연결되면 된다. 그리고 두 장치가 공통된 신호의 전압 기준을 가질 수 있도록 GND끼리 연결해 주면 된다.

두 RS232 장비의 RXD와 TXD를 서로 교차하고 GND를 연결하는 결선도
RS232 장비 간 RXD·TXD 교차 연결

RS232 시리얼 통신 캡처 케이블

시리얼 통신에는 RS232뿐 아니라 RS422, RS485 등 여러 가지 규격이 사용된다. 이들은 전기적 특성과 연결 방식이 서로 다르지만, RS232 인터페이스로 변환하여 데이터를 확인할 수도 있어 범용으로 사용할 수 있다.

신호 캡처 방법

우리는 TXDRXD를 캡처할 장비로 보내 주어야 한다. 사실 복잡할 건 없다. 캡처를 받을 장비 입장에서는, TXD 신호와 RXD 모두 수신받는 신호가 된다. 따라서 기존 통신 선로의 TXDRXD를 각각 하나씩 분기하여 캡처 장비의 RXD 입력으로 연결한다.

일반적인 시리얼 포트에는 RXD 입력이 하나뿐이므로 두 방향의 데이터를 동시에 분리해서 확인하려면 2개의 시리얼 포트가 필요하다. 하나의 포트는 한쪽 장비가 보내는 데이터를, 다른 포트는 반대쪽 장비가 보내는 데이터를 수신하기 위해서다.

두 RS232 장비 사이의 RXD와 TXD 신호를 별도의 캡처 장비 두 대로 수신하는 구성도
RXD와 TXD를 각각 수신하는 시리얼 데이터 캡처 구성

이를 실제 DB9(DE9) 커넥터의 핀 번호를 기준으로 결선도로 그려보면 아래의 그림과 같이 된다.

입력·THRU·RX PROBE·TX PROBE 단자의 2번·3번·5번 핀을 연결한 RS232 캡처 케이블 결선도
RS232 시리얼 캡처 케이블 결선도

필요 자재 목록

먼저 필요한 자재를 준비한다.

  • 적당한 길이의 3선 케이블 3EA (필자는 남는 Canare L-2B2AL 오디오 선을 사용했다.)
  • 입력 단자용 숫놈 DB9(DE9) 1EA
  • 출력 단자용 암놈 DB9(DE9) 3EA (RXD 모니터, TXD 모니터, THRU)
  • 납땜 도구

입력 단자

신호를 입력받을 단자로, 숫놈이다. 수신 장치로 들어가는 케이블을 여기에 연결해 주면 된다. 사용할 선들을 색별로 묶어 납땜해 준다. 필자는 주황색 선을 RXD용으로, 백색 선을 TXD용으로, 쉴드를 GND로 사용했다.

RS232 캡처 케이블 입력용 DB9(DE9) 수 커넥터의 2번·3번·5번 핀 납땜 상태
캡처 케이블의 입력 단자

THRU 단자

입력 단자와 병렬로 연결된 단자이다. 원래의 수신 장치에 연결해 주면 된다. 입력 단자와 1:1로, 동일하게 납땜해 준다.

RS232 캡처 케이블 THRU용 DB9(DE9) 암 커넥터의 2번·3번·5번 핀 납땜 상태
원래 수신 장비로 연결되는 THRU 단자

RXD 모니터 단자

입력 단자의 RXD에 연결된 주황색 선을 2번 핀에 연결해 준다. 수신 장치에서 입력 단자를 향해 전송한 신호들은 이 포트에서 모니터할 수 있다.

주황색 RXD 선과 GND 쉴드를 연결한 RS232 RXD 모니터용 DB9(DE9) 암 커넥터
RXD 신호를 캡처하는 모니터 단자

TXD 모니터 단자

입력 단자의 TXD에 연결된 흰색 선을 2번 핀에 연결해 준다. 입력 단자에서 수신 장치를 향하는 신호들은 이 포트에서 모니터할 수 있다.

흰색 TXD 선과 GND 쉴드를 연결한 RS232 TXD 모니터용 DB9(DE9) 암 커넥터
TXD 신호를 캡처하는 모니터 단자

완성

완성된 모습이다. 수축 튜브로 정리해 주고, 단자 구분을 위한 라벨을 붙여 준다. 캡처용 PC에서 PuTTY 등을 이용해 케이블과 연결된 직렬 포트를 확인해 보면 오가는 데이터들이 보인다. 다만, 사진에 보이는 것처럼, 각 잡고 만든 물건은 아니다 보니 내구성이 좋진 못하다. 하지만 팔기 위해 만든 것도 아니고 본 필자에게 신호만 잘 보이면 된다. ㅎㅎ

INPUT·THRU·RX·TX 라벨이 부착된 완성된 RS232 시리얼 캡처 케이블
RS232 시리얼 데이터 캡처 케이블

참고사항

이 케이블은 필자가 과거 임베디드 시스템을 다루던 시절부터 직접 만들어 사용해 오던 것으로, 시리얼 통신 기반 방송 송출 시스템의 통신 문제 디버그에도 사용하고 있다. 장비 사이에서 실제로 어떤 데이터가 오가는지 직접 확인할 수 있기 때문에, 통신 프로토콜 분석이나 원인 추적이 필요한 상황에서 종종 유용하게 써먹는다.

구조 자체는 기존의 RXDTXD 신호를 수신용 포트로 단순 분기하는 방식이다. 본 필자는 이 케이블을 20년 넘도록 직접 만들어 사용해 왔지만, 사용 중 특별한 문제가 발생한 적은 없었다. 별도의 전원이나 복잡한 회로도 필요하지 않아 RS232 장비를 개발하거나 유지보수할 때 하나쯤 만들어 두면 상당히 유용하다.

단, 이 케이블은 어디까지나 통신 데이터를 모니터링하기 위한 도구이다. 신호의 물리적 특성을 검증하는 용도로는 사용하는 데 적합하지 않다. 기존 통신 선로에 캡처 장비의 입력을 병렬로 연결하기 때문에 추가적인 부하가 생기며, 배선 길이나 연결된 장비의 입력 특성에 따라 신호 전압이나 파형에 영향을 줄 수 있다.

대부분의 정상적인 RS232 인터페이스에서는 실제 사용에 문제가 없지만, 긴 배선을 사용하거나 신호 상태가 좋지 않은 환경, 또는 송수신 회로의 구동 여유가 충분하지 않은 장비에서는 캡처 케이블을 연결하는 것 자체가 통신 상태에 영향을 줄 수 있다. 따라서 데이터의 내용이 아니라 신호 전압, 파형, 상승·하강 시간과 같은 물리 계층의 상태를 확인해야 한다면 오실로스코프 같은 장비를 사용해야 한다.

FAQ

실제 사용 중인 시리얼 통신을 캡처하는 방법은?
두 장비 사이의 기존 통신은 그대로 유지하면서 RXDTXD 신호를 각각 분기해 캡처 장비의 RXD로 입력하면 된다. RS232 캡처 케이블의 THRU 단자는 원래 수신 장비로 연결하고, RXDTXD 모니터 단자를 각각 캡처용 시리얼 포트에 연결하면 실제 사용 중인 장비 사이에서 오가는 데이터를 확인할 수 있다.
DB9(DE9) 핀 배열은?
DB9(DE9)에서 1번은 DCD, 2번은 RXD, 3번은 TXD, 4번은 DTR, 5번은 GND, 6번은 DSR, 7번은 RTS, 8번은 CTS, 9번은 RI이다.
RS232 데이터 송수신에 필요한 핀은?
일반적인 데이터 송수신에는 RXD, TXD, GND를 사용한다. DB9(DE9) 기준으로 RXD는 2번, TXD는 3번, GND는 5번 핀이다. 흐름 제어를 사용하는 장비에서는 RTSCTS 등의 추가 신호도 고려해야 한다.
RS232의 RXD와 TXD를 동시에 캡처하려면 시리얼 포트가 몇 개 필요한가?
두 방향의 데이터를 분리해서 동시에 확인하려면 시리얼 포트가 2개 필요하다. 캡처 장비 입장에서는 원래 통신 선로의 RXDTXD가 모두 수신해야 할 신호이므로, 각각을 별도의 시리얼 포트의 RXD에 연결한다.
RS232 캡처 케이블을 연결하면 기존 장비의 통신에 영향을 주는가?
통신 선로에 캡처 장비의 입력을 병렬로 연결하면 추가적인 부하가 생긴다. 배선이 길거나 신호 상태가 좋지 않은 환경, 송수신 회로의 구동 여유가 충분하지 않은 장비에서는 통신 상태에 영향을 줄 가능성이 있다.
RS232 캡처 케이블로 신호 전압이나 파형도 확인할 수 있는가?
신호 전압, 파형, 상승·하강 시간 등 물리 계층의 상태를 확인하려면 오실로스코프 같은 계측 장비를 사용해야 한다.
RS422나 RS485 통신도 이 방법으로 캡처할 수 있는가?
RS422와 RS485는 RS232와 전기적 특성과 연결 방식이 다르므로 이 케이블을 그대로 연결할 수는 없다. 다만 적절한 인터페이스나 컨버터를 이용해 RS232로 변환할 수 있는 환경이라면 RS232 측에서 데이터를 확인하는 용도로 활용할 수 있다.
캡처한 RS232 데이터는 어떤 프로그램으로 확인할 수 있는가?
캡처용 PC에서는 PuTTY 같은 시리얼 터미널 프로그램을 사용할 수 있다. 대상 장비와 동일한 통신 속도와 데이터 형식으로 시리얼 포트를 설정한 뒤 RXDTXD 모니터 포트를 각각 열어 데이터를 확인하면 된다.

갱신 내역

  • 최초 게시 (https://www.DectENG.com/)
  • 수정
  • 수정 및 주소 이전 (https://www.EQMaker.kr/)