[RS232] DTE vs. DCE
RS232는 컴퓨터와 주변기기를 연결하는 대부분 비동기식 직렬방식의 통신표준중 하나로, 연결이 간단하며 기술적 구현이 쉬워서 오래 전부터 널리 이용되고있다. RS는 Recommended Standard의 약자이며 특히 최대 전압이 5V 인 경우를 RS232C로 부른다.
RS232에서 장치는 두 부류로 정의되는데 하나는 DTE(Data Terminal Equipment)이고 다른 하나는 DCE(Data Communication Equipment)이다. 현재 시판중인 대부분의 PC에서의 Serial Port는 DTE 장치에 해당한다.
다음은 DTE 9 pin(M) 포트의 핀배열, 명칭과 설명이다
pin# | 방향 | 명칭 | 설명 |
---|---|---|---|
1 | Input | CD | Carrier Detect: 이 핀이 논리 0이 되므로써 이 장치가 보낸 데이터를 상대방 장치가 다 받았음을 알 수 있게 된다. |
2 | Input | RxD | Received Data: 데이터를 받는 핀 |
3 | Output | TxD | Transmitted Data: 데이터를 전송하는 핀. 이 장치가 대기 상태에 있을때는 논리 1이 출력된다. |
4 | Output | DTR | Data Terminal Ready: 이 핀에 논리 0을 출력함으로써 상대방 장치에게 데이터를 보낼 준비가 되었음을 알린다. |
5 | GND | Signal Ground: 접지 | |
6 | Input | DSR | Data Set Ready: 이 핀이 논리 0이 되므로써 상대방 장치가 데이터를 보낼 준비가 되었음을 알게된다. |
7 | Output | RTS | Request To Send: 이 핀에 논리 0을 출력함으로써 상대방 장치에게 데이터를 받을 준비가 되었음을 알린다. |
8 | Input | CTS | Clear To Send: 이 핀이 논리 0이 되므로써 상대방 장치가 데이터를 수신할 준비가 되었음을 알게된다. |
9 | Input | RI | Ring Indicator: 이 핀이 논리 0이 되면 모뎀에 통신연결 요구가 들어왔음을 알 수 있다. |
참고로 DCE 장치의 커넥터에서는 데이터의 방향이 반대가 된다. 예를 들어, DCE 9핀 포트에서 2번 핀의 명칭은 RxD (Receive Data)로 동일하지만 출력 핀이며, 3번 핀(TxD)이 입력 핀이다.
DTE와 DCE를 연결할 때에는 일반적인 Straight Through(스트레이트쓰루) Cable을 사용한다.
하지만 컴퓨터와 연결할 측정기기마저도 DTE 형일 경우엔 Null Modem(널모뎀) Cable을 사용해야만 한다.
Click Here for Further Reading...
한동안 비동기식 직렬(Asynchronous Serial)통신 방식의 RS-232C 포트는 대부분의 PC에 기본적으로 장착되어 왔다. 따라서 컴퓨터로 제어되는 대부분의 계측장비 역시 RS-232C 포트를 갖추고 있으며 근래에 와서 USB(Universal Serial Bus) 포트로 대치될 때까지 대표적 유선통신 방식의 주류를 이뤘다. 최근에 와선 WiFi 기술의 비약적인 발전으로 전통적 유선통신 기술이 위협을 받고 있으나 제어계측 장비분야의 경우 아직까지도 경제적이고 신뢰성있는 통신방식으로 각광받고 있다.
데이터 전송방식에 따른 통신의 간단한 분류 (기술용어)
- Simplex :단방향 전송방식으로, 애초에 송신측 장비와 수신측 장비가 역할이 정해져서 한 방향으로만 전송이 가능
- Half Duplex : 반이중 전송방식으로, 송수신이 모두 가능하지만 한번에 한방으로만 전송이 가능
- Simplex :단방향 전송방식으로, 애초에 송신측 장비와 수신측 장비가 역할이 정해져서 한 방향으로만 전송이 가능
- Full Duplex : 전이중 전송방식으로, 동시에 송신과 수신이 가능
- RS-232 통신은 위 세가지가 모두 가능한 통신방식이다.
Identifying the Connector Pins
제일 먼저 알아둬야 할 것은 Connector Pin 에 번호를 붙이는 방법이다. 쉽게, 수컷(Male) Connector의 1번 Pin이 암컷(Female) Connector의 1번 Pin에, 2번 Pin은 2번 Pin에 ... 연결되는 방식으로 번호가 부여된다. 다음 그림처럼 Male Connector를 정면으로 바라볼 때 1번 Pin은 좌측상단 모서리에 있으며, 따라서 Female Connector를 정면으로 바라보면 1번 Pin은 우측상단 모서리에 위치하게된다. 이는 9 Pin D Connector 와 25 Pin D Connector 에서 공통이다.
다행히, 대부분의 Connector들은 다음 그림처럼 Pin Number가 Pin 옆에 Print 되어 있기때문에 큰 문제가 되지는 않을것이다.
Serial Communication 에서 불편하게 DTE 와 DCE를 구분하는 이유는 무엇일까?
역사적으로 원격의 두 컴퓨터 간의 통신에서 PC 와 PC 사이에는 모뎀(Modem)이라는 장치가 사용되었다. 통신으로 데이터를 전송할 경우, 컴퓨터가 사용하는 Digital 정보를 Analog 신호의 전송선로(전화선)로 전송하기 위한 변환을 해야 한다. 반대로 데이터를 받을 경우엔 전화선으로 들어온 Analog 신호를 Digital 정보로 변환하여 PC로 전달해야 한다. 전자를 변조(Modulation), 후자를 복조(Demodulation)라고 하는데 Modem은 이들의 앞 글자를 딴 약자이다. Terminal 과 Modem은 각자 자기의 임무가 있기때문에 DTE 와 DCE로 역할을 구분하며, 각 포트의 핀은 케이블을 통해 그대로 1:1로 연결된다.
하지만 시간이 흐르며 대부분의 계측장비들도 작고 편리한 RS232 통신모듈을 장착하게 되었고, 전화선을 통한 통신이 거의 사라진 오늘날, 물리계측에 사용되는 주된 Serial 통신은 중간에서 매개하던 Modem 없이 PC 와 계측장비 사이에 직접 이뤄지고 있다. 이때 계측장비는 Modem 이 아니기 때문에 DCE 일 수도 있고 DTE 일 수도 있다. 물론 PC 는 거의 항상 DTE 이다.
Serial 통신의 데이터 전송 형태
RS232C 통신에서의 전압신호 레벨은 일반적인 TTL 디지털 논리의 그것과는 완전히 다르다. Serial 통신에서의 논리 1 과 0 을 각각 Mark 와 Space 라고 하는데, 다음 그림과 같은 네거티브 논리를 적용한다.
전압범위 | 상태 설명 |
---|---|
-Vmax ~ -3V | 논리 1, Mark, 또는 대기상태 |
-3V ~ 3V | 금지상태 |
3V ~ Vmax | 논리 0, Space, 또는 동작상태 |
여기서 Vmax 값은 수 V 에서부터 높게는 수십 V 가 되기도 한다. 신호레벨이 -3V ~ 3V 인 중간 영역은 노이즈에 의해 문제가 발생될 수 있는 대역이므로 올바른 신호 값으로 인정되지 않는다. 전송하는 데이터는 보통 10 bits, 또는 11 bits의 패킷(Packet)으로 구성되며, 각각 Start bit, Data bits, Parity bit, Stop bits 로 이뤄진다. 이 패킷의 구성 비트 수는 통신 소프트웨어에서 사용자가 선택할 수 있다.
Start bit 와 Stop bits
Start bit 는 각 문자 데이타가 전송된다는 것을 알려주기 위한 것으로 한 개의 비트를 사용한다. Stop bits 는 데이터 전송이 끝났다는 것을 알려주기 위한 것으로, 1, 1.5, 2 bits 중에 선택하여 사용한다.
Data bits 와 Parity
Parity(패리티)는 단순 오류체크 기능을 수행하는데, 사전에 송신측과 수신측 사이에 약속을 해야 한다. 만약 패리티를 짝수(Even)로 정했으면 송신측에서는 패리티 비트를 포함, 1의 갯수가 짝수가 되도록 패리티 비트를 채워 전송한다. 패리티 비트는 선택사항(Option)이다. 이것을 사용하지 않으면 전체 Data bits 는 8비트 폭이 된다.
Baud Rate (데이터 전송률)
두 장비간에 얼마나 빠른 속도로 통신이 이뤄지는지 설정하는 값으로, 1초 동안 전송되는 비트수(bps, Bit per second)를 의미한다. Start bit, Data bit, Parity bit, Stop bit를 모두 합쳐 초당 얼마나 전송이 되는지에 따라 1200bps, 2400bps, 4800bps, 9600bps ... 등으로 설정한다. 만약 사용자가 속도를 9600bps로 설정했다면 각 비트가 전송되는데 걸리는 시간은 1/9600 = 0.104 ms 정도 된다. 따라서 Stop bit를 2 bit라고 했을 때 하나의 데이터를 전송하는데는 0.104 ms x 11 bit = 약 1.14 ms 정도 소요된다. 따라서 매초당 9600/11 = 872 개의 문자데이터를 전송할 수 있다.
Serial 통신을 사용한 물리측정 실습
Serial 통신의 실제 연습으로 간단한 측정장치를 원격으로 사용해 보고자 한다. 측정장치로는 RS232C 포트가 장착된 AND 사의 전자 저울 CB-2000 모델을 사용한다.
원격 데이터수집 실습에는 PC와 측정장치, 그리고 두 장치를 연결하는 Serial Cable등의 Hardware와 원격통신을 담당할 Software가 필요하며 사용자는 이들을 통신의 목적에 따라 적절히 설정, 연결할 수 있어야 한다.
우선 다음 절차를 따라 측정장치 CB-2000의 Hardware를 설정한다. 이 단계에서는 반드시 측정장치의 메뉴얼을 참고해야 한다.
1. 9 Pin D-Sub 케이블을 연결하고 저울의 전원을 켠다.
2. <샘플>버튼을 계속 누르면 <Func> 메뉴가 나온다. <프린트> 버튼을 눌러서 이 메뉴를 선택한다. <Func> 메뉴 아래의 설정항목 사이에서 이동할때는 <샘플> 버튼을, 설정값의 변경은 '영점/용기' 버튼을 이용한다.
3. 실험자가 체크하여야 할 설정항목은 <Prt>, <bPS>, <btPr> 등의 3가지 항목이다. <Prt> 는 출력모드 설정, <bPS> 는 전송속도 설정, <btPr> 는 패리티 비트의 설정이다. 자세한 사항은 저울의 메뉴얼을 참고한다.
4. 각 항목의 값 설정이 완료되면 '프린트' 버튼을 눌러 저장시킨다. 화면에는 'End" <모드> 버튼을 눌러 상위메뉴로 빠져나온다. 설정 즉시 저울은 설정 모드에 따라 출력 데이터의 전송을 시작한다.
다음 절차에 따라 CB-2000을 원격조작할 PC의 통신포트를 설정한다.
1. 제어판-시스템-장치관리자-포트(COM & LPT)를 확인한다.
2. 장치가 문제없이 작동 중이면 다음 단계로 넘어간다.
3. 원하는 통신포트를 마우스 오른쪽 버튼으로 클릭하여 속성 창을 열고 포트설정 탭을 열어 설정값을 확인한다. 이 값을 앞 단계인 CB-2000의 설정치와 비교해보고 필요하면 일치하도록 변경한다.
4. 포트설정이 끝나면 CB-2000 과 PC를 Serial Cable로 연결한다.
다음 절차에 따라 PC와 CB-2000 사이의 원격통신을 담당할 Software를 기동시킨다. Software로는 윈도우에서 기본 제공되는 하이퍼터미널 프로그램을 이용한다.
1. PC에 설치된 운영체제(OS)가 Windows XP 라면 시작-모든프로그램-보조프로그램-통신-하이퍼터미널로 들어간다. 하지만, OS가 Windows vista 나 Windows 7 이라면 기본적으로 하이퍼터미널이 제공되지 않는다.이 경우 Windows XP 가 설치된 컴퓨터에서 하이퍼터미널을 복사해서 사용하면 된다. 두 OS가 모두 동일한 32-bits 운영체제이기 때문에 호환이 된다. 단, Hypertrm.exe 와 Hypertrm.dll의 두 파일을 모두 복사해서 작업폴더에 옮겨두도록 한다.
2. 이제 Hypertrm.exe를 더블클릭하여 기동시킨다. 만약 하이퍼터미널을 처음으로 실행하는 것이라면 다음 창들이 뜰 수 있다. (Win 7 화면캡쳐)
그냥 '아니오'를 선택한다.
어차피 모뎀으로 전화선에 연결할 것이 아니므로 지역번호만 적당히 적어넣고 확인하여 다음 단계로 넘어간다.
확인을 눌러 다음 단계로 넘어간다.
3. 이제 본격적으로 하이퍼터미널의 연결설정 단계가 나온다. (Win XP 화면캡쳐)
연결이름은 적당히 적어넣는다.
실습에 사용할 Serial Port를 지정한다. 이는 위의 PC 설정 단계의 제어판-장치관리자에서 봐두었던 COM 포트를 선택해주면 된다.
다음으로 포트설정을 해준다.
CB-2000에서 설정된 값에 맞춰서 비트/초(B, Baud Rate), 데이터비트(Data bits), 패리티(Parity), 정지비트(Stop bit) 등을 설정해준다. 흐름제어는 없음으로 설정한다. 확인버튼을 누른다.
4. 그러면 하이퍼터미널을 통해 선택한 Serial Port로 통신이 시작된다. 아래와 같이 CB-2000이 전송하는 값이 연속적으로 터미널 화면에 나타난다.
Null Modem 이란 무엇인가?
앞서 살펴보았듯이 PC는 DTE의 역할을, Modem은 DCE의 역할을 한다. DTE 와 DCE의 연결은 매우 간단하다. 예를 들어 DTE 장치(PC)에서 TxD인 3번 핀은 출력 핀이다. 반면에 DCE 장치(Modem)에서 TxD인 3번 핀은 입력 핀이다. 우리는 송신측의 PC 와 Modem 사이에 1번 핀은 1번핀으로, 2번 핀은 2번핀으로, ... 연결해주면 된다. 결론적으로 DTE 장치와 DCE 장치 사이에는 Straight Through(스트레이트 쓰루) 케이블로 연결해주면 된다. 이는 수신측의 Modem 과 PC 사이에도 마찬가지이다.
'A'라는 문자를 내 PC에서 Modem을 통해 상대방 PC로 보낸다고 하자. 이 경우 내 PC는 송신측, 상대방 PC는 수신측이 된다. 내 PC(DTE)의 3번 핀(TxD)에서 0100 0001 이라는 데이터가 송신 Modem(DCE)의 3번 핀(TxD)으로 전달된다. 이는 전화선으로 상대방 Modem 으로 전달되고 수신측 Modem(DCE)의 2번 핀(RxD)으로 나와서 상대방 PC(DTE)의 2번 핀(RxD)으로 전달된다. 이것은 흡사 잘 짜여진 택배회사에서 물품을 운송하는 과정과 같다. 군산의 발송 고객이 맞긴 화물은 군산의 택배회사 발송부서에서 출발하지만 이것이 택배회사 서울지점의 발송부서로 배달되면 안된다. 두 지점의 발송부서는 서로 만날 일이 없다.
이제 DTE 와 DTE 끼리의 연결을 생각해 보자. 송신측과 수신측 사이에 중계 역할을 하는 Modem이 없이 PC와 계측기기를 바로 연결하는 경우로 볼 수 있다. 이 경우엔 내 PC(DTE)의 3번 핀(TxD)에서 나온 데이터가 수신 측 계측기기(DTE)의 2번 핀(RxD)으로 직접 전달되야 한다. 다음 그림에서 알 수 있듯이 DTE 와 DTE 장치사이엔 Straight Through(스트레이트 쓰루) 케이블을 사용하면 안된다.
이 경우엔 아래 그림처럼 2번 핀과 3번핀이 서로 Cross(교차)된 케이블을 사용해야 하는데, 이런 케이블을 Null Modem(널모뎀)이라 한다.
엘레파츠(www.eleparts.co.kr) 등 시중 부품판매 사이트에서 취급하는 케이블이 스트레이트 타입인지 널모뎀 타입인지는 외형상으로 구분이 안된다. 유심히 체크하도록 한다. 그리하여 사용하고자 하는 계측기기의 Serial 포트가 DTE 타입인지 DCE 타입인지 반드시 확인하고 적절한 케이블을 선택할 줄 알아야 한다.
내가 사용하는 장비는 DTE형인가 DCE형인가? - 체크방법
우선 제일 안전한 방법은 장비에 대한 메뉴얼을 참고하는 것이다. 하지만 이것이 쉽지 않은 상황에서 임기응변으로 구분하는 방법이 있다. 전문가들은 DMM 을 이용하여 Signal Ground (DB9 커넥터의 5번 핀)에 대한 2번 핀 혹은 3번 핀의 DC 전압을 확인함으로써 이를 구분해낸다. 장치에 전원을 넣은 상태에서 아직 데이터의 전송을 하지 않는 경우, 출력 핀에서는 -3V ~ -십수 V 정도의 전압이 나타난다. 전송 직전의 스탠바이 상태에서는 Mark(논리1) 상태에 있기 때문이다. 입력 핀의 경우에는 매우 작은 전압 혹은 0 V 가 나온다. 예를 들어, DB9 커넥터의 2번 핀에서 -11V 의 전압이 나왔다면 RxD 핀이 출력 핀이므로 그 장비는 DCE형 장비이며 PC와는 일반 Straight Through 케이블로 연결하면 된다. 하지만, 그 전압이 3번 핀에서 나타난다면 장비도 PC와 같은 DTE 형이며 Null Modem 케이블을 이용해야 한다.