이것저것/My_Work

[펌 - 통신관련] - RS232/422/485

우담바라 2007. 11. 24. 19:55
마이크로프로세서는 주변장치를 통해서 외부와 정보를 교환할 수 있으며 일반적으로 정보를 외부와 교환하는 방법으로는 병렬통신과 직렬통신 2가지로 나눌 수가 있다.
일반적으로 컴퓨터내의 장치와 정보교환을 할 때는 통상적으로 고속의 통신속도를 필요로하여 한꺼번에 많은 정보를 처리할 수 있는 병렬통신 방식을 주로 쓴다.
이는 대량의 정보를 빠른시간에 한꺼번에 처리함으로써 컴퓨터의 성능을 향상 시킬 수가 있기 때문인데 이러한 방법의 대표적인 것이 마이크로프로세서 자체의 정보처리량을 증가시키는 것이며 이것은 데이터 비트수로써 나타난다.
(80286은 16비트의 외부 데이터 비트, 80386, 80486은 32비트의 외부 테이터 비트, 비록 내부에서는 32비트로 동작되지만 64비트의 외부 데이터 비트를 갖는 펜티엄 계열를 보아도 알 수 있다.) 그외 HDD, FDD, VIDEO 카드등이 대표적인 병렬통신 방식을 사용하는 장치라 하겠다. 하지만 모든 경우에 병렬통신 방식을 사용할 수는 없다.
그이유는 통신거리의 제한성, 구현상의 기술적인 어려움과 비용이 너무 비싸다는데있다. 또한 어플리케이션 자체가 고속의 통신속도를 필요로 하지않을 경우도 많다.
이러한 이유로 컴퓨터가 외부와의 통신을 할 때는 직렬통신 방식을 많이 사용한다.
직렬통신 방식이란 데이터비트를 1개의 비트단위로 외부로 송수신하는 방식으로써 구현하기가 쉽고, 멀리갈 수가 있고, 기존의 통신선로(전화선등)를 쉽게 활용할 수가 있어 비용의 절감이 크다는 장점이 있다. 직렬통신의 대표적인 것으로 모뎀, LAN, RS232 및 X.25등이 있다. 하지만 크게 직렬통신을 구분하면 비동기식 방식과 동기식 방식 2가지로 나누어진다. 많은 사람들이 비동기식 통신방식을 RS232로 알고있는데 실질적으로 RS232라는 것은 비동기식 통신콘트롤러에서 나오는 디지털신호를 외부와 인터페이스 시키는 전기적인 신호 방식의 하나일 뿐이다.
일반적으로 RS232를 비동기식 통신방식으로 인식하고 있는 것도 큰무리는 없다. 비동기식 통신방식을 지원하는 대표적인 콘트롤러는 NS사의 16C450과 16C550이며 그외 호환되는 콘트롤러가 다수의 회사에서 생산되지만 성능상의 차이는 없고 호환은 되지 않지만 비동기 통신의 기능을 갖는 콘트롤러는 수십가지의 종류가 있다.
비동기식 통신콘트롤러를 일반적으로 UART(Universal Asynchronous Receiver/ Transmitter)라 부른다. UART에서 나오는 신호는 보통 TTL신호레벨을 갖기 때문에 노이즈에 약하고 통신거리에 제약이 있다. 이러한 TTL신호를 입력받아 노이즈에 강하고 멀리갈 수 있게 해주는 인터페이스 IC를 LINE DRIVER/RECEIVER라 부르며 이중 대표적인 것이 RS422 및 RS485가 있다.
이들 인터페이스 방식의 특성은 아래 표에 나타나 있다.
 
Specification
RS232C
RS423
RS422
RS485
동작 모드
Single-Ended
Single-Ended
Differential
Differential
최대 Driver/Receiver 수
1 Driver
1 Receiver
1 Driver
10 Receivers
1 Driver
32 Receivers
32 Drivers
32 Receivers
최대 통달거리
약 15 m
약 1.2 km
약 1.2 km
약 1.2 km
최고 통신속도
20 Kb/s
100 Kb/s
10 Mb/s
10 Mb/s
지원 전송방식
Full Duplex
Full Duplex
Full Duplex
Half Duplex
최대 출력전압
±25V
±6V
-0.25V to +6V
-7V to +12V
최대 입력전압
±15V
±12V
-7V to +7V
-7V to +12V
 
위의 표에서 알 수 있듯이 RS-232과 RS-423(Single-Ended 통신방식) 통신방식은 RS422와 RS485에 비해서 통신속도가 늦고 통신거리가 짧은 단점이 있으나 동작모드에서 알 수 있듯이 하나의 신호전송에 하나의 전송선로가 필요하기 때문에 비용절감의 장점이 있다.(RS422인 경우 하나의 신호 전송에 2개의 전송선로가 필요함) 위의 인터페이스 방식중 RS232, RS422 및 RS485에 대해서 각자 설명하겠다. 현재의 RS422 또는 RS485칩의 경우 위의 표에 나와있는 Driver와 Receiver의 수보다도 훨씬 많이 지원하고 있으며 RS485인 경우 최대 256의 노드를 갖는 칩도 있다.

   

 
시리얼통신(Serial Communications)의 기본

   
    
Baud Rate (보오레이트)와 BPS(비트/초)
보오(Baud)라고 말하는 단위는 프랑스 전신 공사의 Jean Maurice Baudot씨의 이름에서 유래한다.그는19세기 후반에 5단위 부호를 고안한 인물이다. 보오(Baud)라고 말한 단위는 원래 변조율이나 1초간 통신선의 신호 변경 회수를 가리키는 단어로서 사용되고 있었다.이것은 BPS(bit per second)와 항상 똑같은 것은 아니다. 2개의 시리얼 디바이스를 접속한 경우에는 보오(Baud)와 BPS는 사실상 똑같다. 만약 통신 속도를 19,200BPS로 통신하고 있다면, 1초간에 19,200회 선을 통과한 신호가 변화한다고 말할 수 있다.그러나 모뎀의 등장에 의하여 그 의미가 달라졌다.
모뎀은 전화 회선을 이용하고 데이터를 송수신한다.보오레이트(Baud Rate)는 종래의 통신 회선으로는 최대 2400 보오(Baud)까지로 제한되고 있다.이것은 전화회사에 의하여 공급되는 전화선의 물리적인 한계치이다. 그러나 최근에는 종래의 통신회선이라도 9,600 혹은 그이상의 데이터 전송이 가능해지고 압축 기술등의 발달에 의하여 보다 고속의 데이터 통신이 가능해지고 있다.일반적으로 PC에서는 보오(Baud) 와 BPS는 같다. 그러나 각 신호에 복수의 2진 데이터를 중첩시키는 장치를 사용하는 고속 데이터 전송 분야에서는 BPS가 보오(Baud)속도보다  빠르다.  

    
비트 단위 데이터 전송
시리얼통신에서는 1 바이트를 8개의 비트로 분리해서 한번에 1비트씩 통신선로로 전송한다. 수신측에서는 통신선로를 통해 수신한 비트들을 조립해서 1 바이트를 만들어내야 하는데 이때 1 바이트의 범위를 식별하기 위하여 사용하는 것이 스타트비트와 스톱비트이다. 일단 스타트 비트를 송신하면 송신측(계측 장치)에서는 계속해서 데이터비트를 송신한다.데이터 비트는 설정한 값에 따라 보통 5,6,7,8의 어느 쪽이다. 수신측(PC측) 과 송신측(계측 장치)은 이러한 데이터 비트수와 보오레이트의 값을 일치하게 설정할 필요가 있다.거의 대부분의 장비는 7 또는 8 데이터 비트를 사용해서 데이터를 전송한다.
7 데이터 비트라고 설정되어 있는 경우에는 127보다 큰 ASCII값을 보낼 수 없다. 똑같이 5 데이터 비트의 경우는 31이상의 ASCII 값을 취급할 수 없다.데이터를 송출하면 마지막으로 스톱 비트를 보낸다.스톱 비트의 값은 1 의 값 또는 기호이다.기호라면 이전 데이터 비트의 값이 1이라도 확실하게 스톱 비트로서 잡는 것이 가능하다.스톱비트의 데이터 길이는1,1.5,2비트의 어느 쪽이나 될 수 있다.  
    패리티 비트(Parity Bit)
스타트 비트와 스톱 비트에 의하여 데이터의 단락을 나타내지만,패리티 비트라고 불리는 것을 이용하여 데이터의 구조를 확인하는 경우가 있다.데이터의 송신 중에 데이터에 어떠한 누락이 생기고 있지 않을까 해서 그것을 체크하는 것이 패리티 비트이다.패리티에는 짝수 패리티(Even parity),홀수 패리티(Odd parity),마크 패리티(Mark parity),스페이스 패리티(Space parity),혹은 패리티 없음(None at all)을 선택할 수 있다. 짝수 또는 홀수 패리티를 이용하면 각 데이터 바이트 중의 1의갯수를 헤아리고 보내진 그 수가 짝수 또는 홀수가 되도록 패리티 비트를 송신한다.
예를 들어 짝수 패리티를 선택했다면 데이터 중에 1이 짝수개 있는 경우,패리티 비트는 0로 된다. 즉,바이너리 데이터 0110 0011에 대한 짝수 패리티는 0 이다.역으로 바이너리 데이터 1101 0110 의 경우,패리티 비트는1로 된다.홀수 패리티는 이 반대로 생각한다.데이터 중에 기수개의 1 이 있는 경우,그것은 0 이 된다.패리티 비트에 의한 에러 체크는 기본적인수법 이다.에러가 발생한 때에 에러의 존재를 알리는 것은 가능하지만 그것이 어느 데이터 중에 있는가 그 소재를 알리는 기능은 있지 않다.또,짝수개의 에러가 데이터 중에서 발생한 경우 패리티 비트로 에러를 검출하는 것이 불가능하다.마크 패리티나 스페이스 패리티는 실용적인 이점이 없기 때문에 현재 대부분 거의 이용되고 있지 않다.   
    케이블 길이
RS232C 규격으로는 케이블의 길이는 약150cm로 되어 있다.그러나 실제 고품질로 실드(shielded)된 케이블을 사용한다면 최장 3km정도까지 향상시키는 것이 가능하다.실드가 불충분한 케이블의 경우,외부 환경이 크게 영향을 준다.전기적인 노이즈가 발생하기 쉬운 환경에서는 짧은 케이블을 이용해도 노이즈에 영향을 받는다.표준적인 사용 환경에 있어서 24게이지 와이어의 실용적인 길이를 다음에 나타낸다. 이것 이상의 길이에 이용한 경우는 신호 증폭기나  옵티칼 아이솔레이터(Optical Isolators)를 사용한다.옵티칼 아이솔레이터는 LED나 포토 다이오드(Photo Diodes)를 내장하고 있고 시리얼 케이블의 각 와이어의 신호의 품질을 확보한다.전기적인 노이즈는 모든 와이어에 나타나고 영향을 미치지만 신호용 그라운드의 와이어도 영향을 받기 때문에 상대적인 전압 레벨은 확보하는 것이 가능하다
Baud Rate
실드 케이블
비 실드 케이블
110
1500m
300m
300
1200m
300m
1200
900m
150m
2400
600m
150m
4800
150m
75m
9600
75m
30m
 
 
 

   RS232C
RS-232C는 「 Recommend Standard number 232 」의 약어이고,「 C 」는 표준 규격의 최신판을 나타내는 것이다.거의 대부분의 PC의 시리얼 포트는 RS-232C의 서브 세트(9핀)가 표준 장비되어 있다.풀 규격은 25-pin의 "D"형태 커넥터로,이 중 22핀을 통신에 사용한다. 그러나 보통의 PC 통신에서는 이들 대부분의 핀은 사용되지 않는다.대부분의 최신 PC에는 통상 수컷(male)의 9핀 "D" 타입 커넥터가 장비되고 있다.
    DCE와 DTE 장치
DTE는 데이터 단말장치(Data Terminal Equipment)의 약어이고, DCE는 데이터 통신장치(Data Communications Equipment)의 약어이다. 이러한 약어를 이해한 것으로 데이터를 송신한 장치와 그 신호를 수신한 장치의 관계를 올바르게 이해할 수 있다.보통 PC는 DTE 장치이고  그 반면에 대부분의 다른 디바이스(예:시리얼 디바이스)는 보통 DCE 장치이다.
이하의 설명으로 의미를 잘 알지 못한 경우에는 DTE 장치를 그냥 PC라 하고 DCE 장치를 원격장치(Remote Device)라고 바꾸어 읽어도 괜찮다.
RS-232스탠더드에서는 DTE장치는 25핀의 수컷 커넥터를 사용하고, DCE장치는 25핀의 암컷 커넥터를 사용한다. DTE장치를 DCE장치에 접속하는 경우에는 스트레이트 케이블을 이용한다.역으로 2개의 같은 종류의 장치를 접속하는 경우는 널모뎀(Null Modem) 케이블,즉 크로스 케이블(송신라인과 수신라인을 서로 꼬인 케이블)을 사용한다.
    동기(Synchronous) 통신과 비 동기(Asynchronous) 통신
시리얼 통신에는 동기통신과 비 동기 통신의 2 종류의 통신 방식이 있다.동기 통신의 경우,2개의 디바이스 사이에서 동기를 취하고 그 타이밍에 따라 데이터를 송수신한다.데이터의 교환이 없는 사이도 제어용의 신호가 흐르고 있으므로 상대와의 동기를 유지하는 것이 가능하다.실 데이터를 송신한 때는 그것을 수신하고 데이터가 없는 때에는 대기 상태를 나타내는 신호를 교환한다.이처럼 통신이 확립되면 실 데이터를 송수신한 것에 데이터의 시작과 종료를 나타내는 신호가 존재하지 않기 때문에 데이터 전송 속도는 빨라진다. PC의 시리얼 포트는 비 동기장치이다. 그러므로 비 동기 시리얼 통신만 지원한다.
비 동기란 "동기 통신 아님" 의 의미한다.그리고 송신과 수신 아이들(idle) 문자가 필요없다. 그러나 데이터의 처음과 끝에는 반드시 스타트 비트와 스톱 비트가 붙는다.스타트 비트는 데이터의 개시를 나타내고 스톱 비트는 데이터의 종료를 나타내는 것이다.따라서 이들 두 비트의 추가 때문에 비 동기 통신의 속도는 동기 통신에 비교하여 약간 늦어진다.그러나 프로세서는 대기 상태의 때에 여분의 아이들(idle) 문자를 처리할 필요가 없다.
비 동기 통신에 있어서 아이들 상태는 역시 마크(mark)라고 불리고 1의 값을 갖는다.이 값을 이용한 것으로 아이들 상태의 경우와 케이블이 벗어나고 있는 상태를 판별한 것이 가능하다.데이터를 송신하면 반드시 스타트 비트가 동시에 송신된다.즉,스타트 비트의 값은 0(스페이스 상태)로 수신측에 데이터가 송신되고 오는 것을 알린다.  
 
 RS232에 대한 설명
RS232C는 EIA(Electronic Industries Association)에 의해 규정되어 졌으며 그내용은 데이터단말기(DTE: Data Terminal Equipment)와 데이터통신기(DCE: Data Communication Equipment)사이의 인터페이스에 대한 전기적인 인수, 컨트롤 핸드쉐이킹, 전송속도, 신호 대기시간, 임피던스 인수등를 정의하였으나 전송되는 데이터의 포맷과 내용은 지정하지 않으며 DTE간의 인터페이스에 대한 내용도 포함하지 않는다.
같은 규격이 CCITT(Consultative Committee for International Telegraph and Telephony) 에서도 CCITT V.24에서 DTE와 DCE간의 상호 접속회로의 정의, 핀번호와 회로의 의미에 대해서 규정을 하고 있다.
여기서는 자세한 기술적인 내용의 기술은 피하고 필요한 내용만 간략하게 기술하겠다. RS232에서 일반적인 내용은 위에서 충분히 기술되어 있으며 기본적으로 알아야 할 내용은 코넥터의 사양, RS232 신호선과 케이블 연결 결선도이다. 이들의 내용은 아래와 같다.
 코넥터 사양


 
 신호선에 대한 설명
 TXD - Transmit Data
 
비동기식 직렬통신 장치가 외부 장치로 정보를 보낼 때 직렬통신 데이터가 나오는 신호선이다.
RXD - Receive Data
 
외부 장치에서 들어오는 직렬통신 데이터를 입력받는 신호선이다
RTS - Ready To Send
 
컴퓨터와 같은 DTE장치가 모뎀 또는 프린터와 같은 DCE장치에게 데이터를 받을 준비가 됐음을 나타내는 신호선이다.
CTS - Clear To Send
 
모뎀 또는 프린터와 같은 DCE장치가 컴퓨터와 같은 DTE장치에게 데이터를 받을 준비가 됐음을 나타내는 신호선이다.
DTR - Data Terminal Ready
 
컴퓨터 또는 터미널이 모뎀에게 자신이 송수신 가능한 상태임을 알리는 신호선이며 일반적으로 컴퓨터등이 전원 인가후 통신 포트를 초기화한 후 이신호를 출력시킨다.
DSR - Data Set Ready
 
모뎀이 컴퓨터 또는 터미널에게 자신이 송수신 가능한 상태임을 알려주는 신호선이며 일반적으로 모뎀에 전원 인가후 모뎀이 자신의 상태를 파악한후 이상이 없을 때 이신호를 출력시킨다.
DCD - Data Carrier Detect
 
모뎀이 상대편 모뎀과 전화선등을 통해서 접속이 완료되었을 때 상대편 모뎀이 캐리어신호를 보내오며 이신호를 검출하였음을 컴퓨터 또는 터미널에 알려주는 신호선이다.
RI - Ring Indicator
 
상대편 모뎀이 통신을 하기위해서 먼저 전화를 걸어오면 전화 벨이 울리게 된다. 이때 이신호를 모뎀이 인식하여 컴퓨터 또는 터미널에 알려주는 신호선이며 일반적으로 컴퓨터가 이신호를 받게되면 전화벨 신호에 응답하는 프로그램을 인터럽터등을 통해서 호출하게 된다.
 
 결선도
DTE to DCE 9 Wire Cables
DTE to DCE 8 Wire Cables

                                            
DTE to DTE 3 Wire Cables
DTE to DTE 7 Wire Cables

 RS422에 대한 설명
RS422는 EIA에 의해서 전기적인 사양이 규정되어 있으나 물리적인 코넥터 및 핀에 대한 사양은 아직 규정되어 있지 않다. 앞으로 나오는 이들의 내용은 한 예로 규정하여 사용하는 사양이니 이에 대해서 오해가 없으면 한다. RS422에서는 Point To Point 모드와 Multi-Drop 모드 두가지가 있다. Point To Point 모드인 경우 RS232와 신호선당 2개의 라인이 필요한 것만 빼고 사용하는 방법에 있어서 별다른 필요가 없다. 하지만 Multi-Drop 모드인 경우는 사용법이 좀 복잡하다. Multi-Drop의 자세한 내용에 대해서는 다음 란에서 다루고 먼저 코넥터의 사양, RS422 신호선과 케이블 결선도에 대해서 먼저 설명하고자 한다.
 
 코넥터 사양
신호선에 할당된 핀번호는 한 예로 다른제품과 틀릴 수 있음. 일반적으로 사용되는 신호선은 TXD+, TXD-, RXD+ 및 RXD- 이고 나머지 신호선은 거의 사용되지 않는다.
 
 신호선에 대한 설명
신호선에 대한 설명은 RS232와 별차이가 없고 다만 물리적으로 하나의 신호선에 두 개의 라인이 필요한데 그들의 표현은 신호선명뒤에 + 와 - 로써 구분표기 한다. 즉, 예를 들면 RS232의 TXD 신호선이 RS422에서는 TXD+와 TXD-로 나누어 질 뿐이다.


 
결선도
<Point to Point 모드 결선도>
<Multi-Drop 모드 결선도>
DTE to DTE 2 Twisted Pair Cables

* GND는 연결하지 않아도 됨.
* + 신호선은 + 신호선과 - 신호선은
- 신호선과 연결됨에 유의 바람.
 RS422 Multi-Drop 모드에 대한 설명
Multi-Drop모드가 사용되는 시스템은 하나의 마스터에 여러개의 슬레이브가 연결되어 마스터가 어떤 슬레이브와 통신을 할것인지를 결정하고 해당 슬레이브를 호출하면 호출된 슬레이브가 응답을하는 체제로 구성되어진다. (앞 쪽의 Multi-Drop 모드 결선도 참조)
이때, 하나의 마스터에 보통 10개(Max 32)까지의 슬레이브가 연결될 수가 있고 이때 마스터는 Point To Point모드로 설정되어 있어도 상관이 없으나 슬레이브는 반드시 Multi-Drop 모드로 설정이 되어져 있어야 한다.

여기서 주의하여야 할내용은 모든 슬레이브의 TX신호라인을 정보를 출력시킬때만 공동 TXD라인에 접속 시켜야만 하며 그렇지않고 하나의 슬레이브가 계속 TX신호라인을 공동 TXD라인에 접속시키면 마스터에 의해서 호출된 다른 슬레이브가 정보를 출력시켜도 계속 접속된 슬레이브 때문에 공동 TXD라인에 전기적인 충돌이 발생되어 마스터로 정보가 전달되지 않는다. 즉 동시에 2개이상의 슬레이브가 공동 TXD라인에 접속하면 않되는 것을 반드시 지켜야만 한다.

TX신호선과 공동 TXD라인에 TX신호선을 접속 또는 단락시켜주는 개폐신호사이에는 S/W 또는 H/W에 의한 적절한 타이밍의 조절이 필요한데 일반적으로 S/W에 의한 방법을 많이 사용한다.
우선 TX신호선과 개폐신호사이의 관계를 알아보는 것이 중요한데 이들간에 필요한 타이밍 정보를 아래 그림을 통해서 알아보고자 한다.
먼저 슬레이브가 마스트로 데이터를 출력하기전(슬레이브측의 UART TXD 신호선) 먼저 개폐신호를 출력시켜야 한다.(슬레이브측의 RS422 개폐신호(Logic "1"이면 접속 Logic "0" 이면 단락)를 참조)
즉, TXD라인을 통해서 출력하는 첫 번째 데이터 "A"의 스타트비트가 출력되기전 최소한 RS422 드라이버칩이 개폐신호를 받고 접속되는데 걸리는 시간인 Driver Enable to Output High Delay Time(tZH)이나 Driver Enable to Output Low Delay Time(tZL)이전에 RS422 개폐 신호를 접속하는 상태로 출력시켜야만 한다.(Logic "1"상태)
여기서 tZH와 tZL의 수치는 칩제조회사마다 약간씩 틀리나 보통 수십에서 수백 nS사이의 값이다.
하지만 이수치값이 최소수치이기 때문에 정확하게 지킬필요는 없고 여유있게 주면된다. 즉, S/W에서 먼저 RS422 개폐신호를 접속상태로 출력시키고 난후 TXD라인에 데이터를 출력시키며 TXD라인에 마지막 데이터의 스톱비트까지 출력되고 난 것을 확인후 개폐 신호를 단락상태로 출력시키면 된다.(그림상에서 데이터 "B"의 스톱비트가 출력된후 RS422 개폐신호가 단락상태(Logic "0")로 전환되는 것을 보면 알수가 있다.)
위그림에서 알수있드시 RS422 개폐신호가 접속상태일 때 슬레이브측의 RS422칩의 출력단인 TXD+와 TXD-출력단에 신호가 출력되어(데이터 "A", "B") 마스터측의 UART RXD입력단에 신호가 입력됨을 알수가 있고(데이터 "A", "B") RS422 개폐신호가 단락 상태일 때 슬레이브측의 TXD+와 TXD-출력단이 플로팅(Hi-Z)상태가 되어 신호가 출력 되지 않아(데이더 "C") 마스터측의 UART RXD입력단에 아무신호가 입력되지 않음을 알수가 있다
TXD+와 TXD-신호는 공동 TXD라인에 접속시 서로 반대의 상태를 갖고 출력되고 단락시 동시에 플로팅 상태임을 그림을 통해 알 수 있다.
일반적으로 RS422 개폐신호는 RTS나 DTR신호중 하나를 사용하며 대부분 RTS신호를 사용한다.
사실 TXD신호선을 S/W에 의해서 접속 또는 단락하는 것 자체에 별문제는 없으나 프로그래머 입장에서는 까다롭고 귀찮은 일임에 틀림없다. 이러한 불편함을 해소하가 위해서 나온방법이 TXD신호선에서 데이터가 나올때만 H/W가 이를 감지하여 자동으로 접속 또는 단락 동작을 자동으로 하는 것이다. 이 방법은 프로그래머에게 편리함과 다른 S/W와의 호환성유지(Multi-Drop용의 S/W가 아닌 경우)에 유용하다.

 RS485에 대한 설명
RS485는 EIA에 의해서 전기적인 사양이 규정되어 있으나 물리적인 코넥터 및 핀에 대한 사양은 아직 규정되어 있지 않다. 앞으로 나오는 이들의 내용은 한 예로 규정하여 사용하는 사양이니 이에 대해서 오해가 없으면 한다. RS485인 경우 RS232나 RS422처럼 Full Duplex가 아닌 Half Duplex 전송방식만 지원하기 때문에 RS422의 Multi-Drop 모드의 슬레이브처럼 RS485의 모든 마스터는 TXD신호를 멀티포인트 버스(RS485의 모든 마스터가 공유하는 신호라인을 그렇게 부른다.)에 접속 또는 단락시켜야만 할뿐만 아니라 RXD신호 역시 모드에 따라서는 접속, 단락의 제어를 하여야 한다. RS485에서는 Echo 모드와 Non Echo 모드 두가지가 있다. 이들에 대한 자세한 내용에 대해서는 다음 란에서 다루고 먼저 코넥터의 사양, RS485 신호선과 케이블 결선도에 대해서 먼저 설명하고자 한다.
 
 코넥터 사양
신호선에 할당된 핀번호는 한 예로 적용되며 다른제품과 틀릴 수 있음.
 
 신호선에 대한 설명
신호선에 대한 설명은 RS232와 별차이가 없고 다만 물리적으로 하나의 신호선에 두 개의 라인이 필요한데 그들의 표현은 신호선명뒤에 + 와 - 로써 구분표기 한다. 하지만 UART의 TXD, RXD신호선이 멀티포인트 버스에 의하여 공동으로 사용하게됨에 유의하여야 한다. 즉 하나의 마스터는 멀티포인트 버스를 출력이면 출력, 입력이면 입력으로 구분하여 사용할 수 밖에 없다.
 
 결선도
 
RS485 Echo, Non Echo 모드에 대한 설명
멀티포인트 버스를 사용하는 시스템은 하나의 버스에 여러개의 마스터가 연결되어 사용한다. 이 때문에 하나의 마스터가 다른 마스터와 통신을 할 경우에는 반드시 출력 개폐를 하여야만 한다.
이것의 원리는 RS422의 Multi-Drop 모드와 동일하니 그쪽을 살펴보시기 바람. 하지만 동시에 여러개의 마스터가 출력을 하여 데이터가 충돌하는 현상이 발생하기 때문에 이러한 문제는 S/W에 의하여 해결되어야 한다. 이렇게 충돌 여부를 확인하는 방법 중 하나가 자기가 보낸 정보를 자기가 받아보아 충돌여부를 확인하는 것인데 이것을 RS485 Echo 모드라 부른다.
즉, 어떤 마스터가 멀티포인트 버스에 예를 들어 "ABC"라는 데이터를 보내면 이것이 자동적으로 되돌아 오므로(Echo) 이것을 읽어와 "ABC"여부를 확인하여 동일한 정보가 아니거나 들어온 데이터의 수가 틀리면 충돌한 것으로 보고 적절한 시간의 지연을 거쳐 다시 출력시켜 정확한 값이 되돌아 올 때 까지 되풀이하면 된다. 이때 마스터의 RXD신호선은 항상 멀티포인트 버스에 접속되어 있어 자신의 데이터 뿐만 아니라 다른 어느 마스터가 보내는 데이터를 받을 수가 있다.
이러한 데이터를 자신에게 필요한 정보 인지를 판단 하는 것은 S/W에 의해서 결정된다. 위의 내용을 요약하면 RS485 Echo 모드는 마스터의 RXD신호선은 항상 멀티포인터 버스 에 접속되어 있고 TXD신호선은 데이터를 출력할 때만 멀티포인터 버스에 접속시키야 하고 나머지는 반드시 단락 시켜야한다. 만약 단락시키지 않으면 RS422의 Multi-Drop모드와 같이 다른 마스터가 데이터를 보내도 충돌이 발생하여 절대로 올바른 송수신이 발생 할 수가 없다.
위의 RS485 Echo 모드에서 자기가 보낸 데이터가 자기자신에게 되돌아 오는 기능을 없앤 것이 RS485 Non Echo 모드이다. RS485 Non Echo 모드는 TXD신호선을 멀티포인트 버스에 접속시키면 그즉시 RXD신호선 이 멀티포인트 버스에서 단락되고, TXD신호선을 멀티포인트 버스에서 단락시키면 그즉시 RXD신호선이 멀티포인트 버스에 접속하게 된다.
멀티포인터 버스에 접속 및 단락할 때 필요한 타이밍관계는 RS422 Multi-Drop에 대한 설명에서와 같다. 일반적으로 RS485 개폐신호는 RTS나 DTR신호중 하나를 사용하며 대부분 RTS신호를 사용한다



[펌] - http://blog.naver.com/kjj312/70022599895

'이것저것 > My_Work' 카테고리의 다른 글

[펌]CAN 개요  (0) 2007.11.26
CAN 통신  (0) 2007.11.26
[XPE] - Component 정리  (0) 2007.10.30
[XPE] - Aesop - LX800 XP 에서 Touch driver install  (0) 2007.10.30
[XPE] - Remote Desktop  (0) 2007.10.26