DB9(DE9) 커넥터를 이용한 RS232 시리얼 데이터 통신 장비의 디버그를 위해 송수신 데이터를 직접 캡처해 확인할 수 있는 캡처용 케이블을 만드는 방법을 사진과 함께 설명한다. 직렬 통신용 9핀 단자의 핀 배열과 역할과 함께 실제 사용 사례도 소개한다.
시리얼 데이터 캡처 케이블이 필요한 이유
RS232를 비롯한 시리얼 통신은 임베디드 장비뿐 아니라 산업용 제어 장비, 방송 장비, 계측기, 네트워크 장비와 각종 레거시 시스템까지 다양한 분야에서 사용된다. 이러한 시리얼 통신을 사용하는 장비의 개발이나 디버그 혹은 역설계를 위해서는, 시리얼 포트를 통해 어떤 메시지들이 실제로 오고 가는지 확인해야 할 필요가 있다.
특히, 통신에 참여하는 장치들의 제조사가 다른 상황에서 장비 간 통신으로 인한 문제가 생기면 서로 자기 문제가 아니라고 궁뎅이를 뒤로 빼기에 바쁜데, 이런 상황에서 누구 궁뎅이를 걷어차 줘야 하는지 결정하려면, 제어하는 놈이 말을 잘못한 건지, 제어받는 놈이 말귀를 못 알아먹은 건지 직접 알아내야 한다.
이를 위해서는 통신 포트의 데이터를 중간에서 직접 들여다봐야 한다. 문제는 증거를 들이밀어도 궁뎅이 뒤로 빼는 건 둘째 치고 시중에서 이러한 용도의 케이블을 구하는 게 쉽지 않다는 것이다.
본 글에서는 먼저 RS232 시리얼 포트와 DB9(DE9) 커넥터의 구조, 주요 핀의 역할과 장비 간 연결 방법을 살펴본다. 이어서 실제 필자가 방송 장비의 통신 문제를 추적하기 위해 제작해 사용해 온 양방향 RS232 데이터 캡처 케이블의 원리와 결선 방법, 제작 과정을 설명한다.
RS232 시리얼 통신과 DB9(DE9) 커넥터
DB9(DE9) 커넥터의 시리얼 통신 핀 배치
RS232에는 송수신 데이터뿐 아니라 장비의 통신 상태와 흐름을 제어하기 위한 여러 신호가 정의되어 있다. 이러한 신호를 연결하기 위해 여러 형태의 커넥터가 사용되어 왔지만, 일반적으로 가장 익숙하게 접할 수 있는 것은 9핀 DB9(DE9) 커넥터이다.

이 커넥터의 D-subminiature 규격에 따른 정식 명칭은 DE9이다. 하지만 대부분 DB9이라고 부른다. 본 글에서는 두 명칭을 함께 표기한다. DB9(DE9) 커넥터가 가지고 있는 핀들의 역할은 아래의 표와 같다.
| PIN | 이름 | 방향 | 역할 |
|---|---|---|---|
| 1 | DCD(Data Carrier Detect) | 수신 | 통신 선로의 캐리어 신호 감지 여부 |
| 2 | RXD(Receive Data) | 수신 | 대국에서 들어오는 데이터 |
| 3 | TXD(Transmit Data) | 송신 | 대국으로 내보내는 데이터 |
| 4 | DTR(Data Terminal Ready) | 송신 | 자국의 통신 가능 상태 |
| 5 | GND(Ground) | 양방향(공용) | 신호 기준 접지 |
| 6 | DSR(Data Set Ready) | 수신 | 대국의 통신 가능 상태 |
| 7 | RTS(Request To Send) | 송신 | 자국의 수신 가능 상태 |
| 8 | CTS(Clear To Send) | 수신 | 대국의 수신 가능 상태 |
| 9 | RI(Ring) | 수신 | 종명 신호 검출 |
본래 RS232 규격은 PC와 모뎀을 연결하기 위한 규격으로, 모뎀 통신에 필요한 여러 가지 제어 신호선들이 함께 있다. 이 중 순수하게 데이터의 송수신에 사용되는 선은 RXD, TXD 2개뿐이다. 우리는 이 2가지 신호와, 이 신호의 기준이 되는 GND만 생각하면 된다.
포트의 타입은 DTE(데이터 단말 장치)와 DCE(회선 종단 장치)가 있다. 둘의 차이는 RXD와 TXD의 핀 번호가 서로 다르다는 것이다. 크로스 케이블 없이 통신이 가능하도록 회로 내부에서 단자를 크로스 해 둔 형태로, PC와 같은 터미널 장치의 경우 대부분 위에서 설명한 DTE 배치를 가지고 있다.
흐름 제어를 사용할 경우 CTS/RTS도 고려 대상이 되나, 여기서는 논외로 치겠다.
RS232의 연결 방법
RS232의 장비 간 접속은 매우 간단하다. 자국(또는 제어장치)의 TX가 대국(또는 피제어장치)의 RX로, 자국의 RX가 대국의 TX로 연결되면 된다. 그리고 두 장치가 공통된 신호의 전압 기준을 가질 수 있도록 GND끼리 연결해 주면 된다.

RS232 시리얼 통신 캡처 케이블
시리얼 통신에는 RS232뿐 아니라 RS422, RS485 등 여러 가지 규격이 사용된다. 이들은 전기적 특성과 연결 방식이 서로 다르지만, RS232 인터페이스로 변환하여 데이터를 확인할 수도 있어 범용으로 사용할 수 있다.
신호 캡처 방법
우리는 TXD와 RXD를 캡처할 장비로 보내 주어야 한다. 사실 복잡할 건 없다. 캡처를 받을 장비 입장에서는, TXD 신호와 RXD 모두 수신받는 신호가 된다. 따라서 기존 통신 선로의 TXD와 RXD를 각각 하나씩 분기하여 캡처 장비의 RXD 입력으로 연결한다.
일반적인 시리얼 포트에는 RXD 입력이 하나뿐이므로 두 방향의 데이터를 동시에 분리해서 확인하려면 2개의 시리얼 포트가 필요하다. 하나의 포트는 한쪽 장비가 보내는 데이터를, 다른 포트는 반대쪽 장비가 보내는 데이터를 수신하기 위해서다.

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

필요 자재 목록
먼저 필요한 자재를 준비한다.
- 적당한 길이의 3선 케이블 3EA (필자는 남는 Canare L-2B2AL 오디오 선을 사용했다.)
- 입력 단자용 숫놈 DB9(DE9) 1EA
- 출력 단자용 암놈 DB9(DE9) 3EA (RXD 모니터, TXD 모니터, THRU)
- 납땜 도구
입력 단자
신호를 입력받을 단자로, 숫놈이다. 수신 장치로 들어가는 케이블을 여기에 연결해 주면 된다. 사용할 선들을 색별로 묶어 납땜해 준다. 필자는 주황색 선을 RXD용으로, 백색 선을 TXD용으로, 쉴드를 GND로 사용했다.

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

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

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

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

참고사항
이 케이블은 필자가 과거 임베디드 시스템을 다루던 시절부터 직접 만들어 사용해 오던 것으로, 시리얼 통신 기반 방송 송출 시스템의 통신 문제 디버그에도 사용하고 있다. 장비 사이에서 실제로 어떤 데이터가 오가는지 직접 확인할 수 있기 때문에, 통신 프로토콜 분석이나 원인 추적이 필요한 상황에서 종종 유용하게 써먹는다.
구조 자체는 기존의 RXD와 TXD 신호를 수신용 포트로 단순 분기하는 방식이다. 본 필자는 이 케이블을 20년 넘도록 직접 만들어 사용해 왔지만, 사용 중 특별한 문제가 발생한 적은 없었다. 별도의 전원이나 복잡한 회로도 필요하지 않아 RS232 장비를 개발하거나 유지보수할 때 하나쯤 만들어 두면 상당히 유용하다.
단, 이 케이블은 어디까지나 통신 데이터를 모니터링하기 위한 도구이다. 신호의 물리적 특성을 검증하는 용도로는 사용하는 데 적합하지 않다. 기존 통신 선로에 캡처 장비의 입력을 병렬로 연결하기 때문에 추가적인 부하가 생기며, 배선 길이나 연결된 장비의 입력 특성에 따라 신호 전압이나 파형에 영향을 줄 수 있다.
대부분의 정상적인 RS232 인터페이스에서는 실제 사용에 문제가 없지만, 긴 배선을 사용하거나 신호 상태가 좋지 않은 환경, 또는 송수신 회로의 구동 여유가 충분하지 않은 장비에서는 캡처 케이블을 연결하는 것 자체가 통신 상태에 영향을 줄 수 있다. 따라서 데이터의 내용이 아니라 신호 전압, 파형, 상승·하강 시간과 같은 물리 계층의 상태를 확인해야 한다면 오실로스코프 같은 장비를 사용해야 한다.
FAQ
- 실제 사용 중인 시리얼 통신을 캡처하는 방법은?
- 두 장비 사이의 기존 통신은 그대로 유지하면서
RXD와TXD신호를 각각 분기해 캡처 장비의RXD로 입력하면 된다. RS232 캡처 케이블의THRU단자는 원래 수신 장비로 연결하고,RXD와TXD모니터 단자를 각각 캡처용 시리얼 포트에 연결하면 실제 사용 중인 장비 사이에서 오가는 데이터를 확인할 수 있다. - 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번 핀이다. 흐름 제어를 사용하는 장비에서는RTS와CTS등의 추가 신호도 고려해야 한다. - RS232의 RXD와 TXD를 동시에 캡처하려면 시리얼 포트가 몇 개 필요한가?
- 두 방향의 데이터를 분리해서 동시에 확인하려면 시리얼 포트가 2개 필요하다. 캡처 장비 입장에서는 원래 통신 선로의
RXD와TXD가 모두 수신해야 할 신호이므로, 각각을 별도의 시리얼 포트의RXD에 연결한다. - RS232 캡처 케이블을 연결하면 기존 장비의 통신에 영향을 주는가?
- 통신 선로에 캡처 장비의 입력을 병렬로 연결하면 추가적인 부하가 생긴다. 배선이 길거나 신호 상태가 좋지 않은 환경, 송수신 회로의 구동 여유가 충분하지 않은 장비에서는 통신 상태에 영향을 줄 가능성이 있다.
- RS232 캡처 케이블로 신호 전압이나 파형도 확인할 수 있는가?
- 신호 전압, 파형, 상승·하강 시간 등 물리 계층의 상태를 확인하려면 오실로스코프 같은 계측 장비를 사용해야 한다.
- RS422나 RS485 통신도 이 방법으로 캡처할 수 있는가?
- RS422와 RS485는 RS232와 전기적 특성과 연결 방식이 다르므로 이 케이블을 그대로 연결할 수는 없다. 다만 적절한 인터페이스나 컨버터를 이용해 RS232로 변환할 수 있는 환경이라면 RS232 측에서 데이터를 확인하는 용도로 활용할 수 있다.
- 캡처한 RS232 데이터는 어떤 프로그램으로 확인할 수 있는가?
- 캡처용 PC에서는
PuTTY같은 시리얼 터미널 프로그램을 사용할 수 있다. 대상 장비와 동일한 통신 속도와 데이터 형식으로 시리얼 포트를 설정한 뒤RXD와TXD모니터 포트를 각각 열어 데이터를 확인하면 된다.
갱신 내역
- — 최초 게시 (https://www.DectENG.com/)
- — 수정
- — 수정 및 주소 이전 (https://www.EQMaker.kr/)