시리얼 통신장비의 디버그용 RS-232 데이터 캡춰 케이블을 만드는 방법과 DE-9 핀 배열, 시리얼 장비의 접속법에 대한 소개
시리얼통신을 사용하는 장비의 개발이나 디버그(혹은 역설계)를 위해서는, 해당 포트를 통해 어떤 메시지들이 오고 가는 확인해야 할 필요가 있다.
특히, 제어창지와 피 제어장치의 제조사가 다른데 장비간에 통신으로 인한 문제가 발생했을 경우, 서로 자기네 문제가 아니라고 궁뎅이를 뒤로 빼기에 바쁘다. 이런 상황에서 누구 궁뎅이를 걷어차 줘야 하는지 결정하려면, 제어하는 놈이 말을 잘못 한건지, 제어 받는 놈이 말귀를 못 알아 먹은건지 알아내야 하는데, 이를 위해서는 통신포트의 데이터를 중간에서 직접 들여다 봐야 한다. (증거를 들이밀어도 발 빼려고 하는건 나중에 생각하기로 하자)
직렬통신 RS-232
시리얼 통신 규격은 여러가지가 있으나, 그 중 가장 흔하게 접할 수 있는 방식은 RC-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의 연결
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번 핀에 연결해 준다. 입력 단자에서 수신 장치를 향하는 신호들은 이 포트에서 모니터 할 수 있다.
완성
완성된 모습이다. 수축튜브로 정리 해 주고, 단자 구분을 위한 라벨을 붙여 준다. 시험해 보니 잘 동작한다. 다만, 사진에 보이는 것 처럼, 오래 쓰지는 못할 것 같긴 하다. 하지만 어쩌겠는가? 일단 써 먹어야지..