RS-232 시리얼 통신 캡쳐 케이블 제작 방법: 데이터 모니터링 및 디버깅
시리얼 통신장비의 디버그용 RS-232 데이터 캡춰 케이블을 만드는 방법과 결선도, DE-9(DB-9) 핀 배열, 시리얼 장비의 접속법에 대한 소개
시리얼통신을 사용하는 장비의 개발이나 디버그(혹은 역설계)를 위해서는, 해당 포트를 통해 어떤 메시지들이 오고 가는지 확인해야 할 필요가 있다.
특히, 제어장치와 피제어장치의 제조사가 다른데 장비간에 통신으로 인한 문제가 발생했을 경우, 서로 자기네 문제가 아니라고 궁뎅이를 뒤로 빼기에 바쁘다. 이런 상황에서 누구 궁뎅이를 걷어차 줘야 하는지 결정하려면, 제어하는 놈이 말을 잘못 한건지, 제어 받는 놈이 말귀를 못 알아 먹은건지 알아내야 하는데, 이를 위해서는 통신포트의 데이터를 중간에서 직접 들여다 봐야 한다. (증거를 들이밀어도 발 빼려고 하는건 나중에 생각하기로 하자)
본 글에서는, 이러한 상황에 유용하게 사용할 수 있는 시리얼 데이터통신 캡춰 케이블을 직접 제작하는 과정과 그에 관련한 정보들을 소개한다.
직렬통신 RS-232 신호 캡처의 개념
시리얼 통신 규격은 여러가지가 있으나, 그 중 가장 흔하게 접할 수 있는 방식은 RS-232라고 하는 규격이다.
RS-232의 신호선
RS-232는 8개의 신호선과 1개의 신호접지선을 사용하며, 보통 DE-9(DB-9 라고도 불린다)라고 하는 9핀 커넥터를 사용한다.

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) | 수신 | 종명신호 검출 |
본래 RS-232 규격은 PC와 모뎀을 연결하기 위한 규격으로, 모뎀통신에 필요한 여러가지 제어 신호선들이 함께 있다. 이 중 순수하게 데이터의 송수신에 사용되는 선은 RXD
, TXD
2개 뿐이다. 우리는 이 2가지 신호와, 이 신호의 기준이 되는 GND
만 생각하면 된다. (흐름제어를 사용할 경우 CTS
/RTS
도 고려 대상이 되나, 여기서는 논외로 치겠다.)
RS-232의 연결
RS-232의 장비간 접속은 매우 간단하다. 자국(또는 제어장치)의 TX
가 대국(또는 피 제어장치)의 RX
로, 자국의 RX
가 대국의 TX
로 연결되면 된다. 그리고, 두 장치가 공통된 신호의 전압 기준을 가질 수 있도록 GND
끼리 연결해 주면 된다.

신호 캡춰 방법
우리는 TXD
와 RXD
를 캡춰할 장비로 보내 주어야 한다. 사실 복잡할 건 없다. 캡춰를 받을 장비 입장에서는, TXD
신호와 RXD
모두 수신받는 신호가 된다. TXD
신호선과 RXD
신호선을 하나 더 딴 다음, 캡춰받을 장비의 RX
로 넣어주면 된다. 하나의 포트는 하나의 RX
만 가지고 있으므로, 캡춰받을 장비는 포트가 2개 있어야 겠다.

이를 결선도로 그려보면 이렇게 되겠다.

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

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

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

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

완성
완성된 모습이다. 수축튜브로 정리 해 주고, 단자 구분을 위한 라벨을 붙여 준다. 캡춰용 PC에서 PuTTY
등을 이용해 케이블과 연결된 직렬포트를 확인해 보면 오고가는 데이터들이 보인다. 다만, 사진에 보이는 것 처럼, 오래 쓰지는 못할 것 같긴 하다. 하지만 어쩌겠는가? 일단 써 먹어야지..

마무리
본 글은 본 필자가 방송 시스템의 직렬통신관련 이슈를 해결하기 위해, 방송장비간 통신 데이터 내역을 살펴보고자 캡춰 케이블을 제작하며 작성한 글이다. 구조상 별 문제가 발생할 만한 거리는 없으며, 실제 본 필자가 수년동안 사용하는 동안 별 문제가 발생한 바 없었다. 다만, 단순한 병렬연결 구조로 되어있어 신호의 물리적 규격을 검증하기에는 무리가 있으며, 송수신장치 전송부의 (막장)설계에 의해 예기치 못한 동작이 발생할 수 있다는 것을 참고하기 바라는 바이다.