시리얼 통신 인터페이스 - 3. RS-485의 고급 개념과 실용적 고려 사항

2025. 2. 10. 14:37프로그래밍/시스템

3장: RS-485의 고급 개념과 실용적 고려 사항

RS-485는 멀티 드롭(Multi-Drop) 방식과 장거리 통신을 지원하는 견고한 시리얼 통신 프로토콜이지만,
효율적으로 사용하기 위해 몇 가지 중요한 개념을 이해해야 합니다.

이번 장에서는 반이중(Half-Duplex) 방식에서의 송·수신 전환 방식과 터미네이션 저항(Termination Resistor)의 필요성을 자세히 설명하겠습니다.


1. 반이중(Half-Duplex) 방식과 송·수신 전환 필요

✅ 반이중(Half-Duplex)이란?

RS-485는 기본적으로 반이중(Half-Duplex) 통신 방식을 사용합니다.
즉, 한 번에 한 방향으로만 데이터를 전송할 수 있으며, 송신과 수신을 번갈아가며 수행해야 합니다.

📌 반이중 통신의 특징

  • 송신(TX)과 수신(RX)이 동시에 이루어질 수 없음
  • 데이터를 보낼 때는 송신 모드, 받을 때는 수신 모드로 변경해야 함
  • 마스터(Master)와 슬레이브(Slave) 간 통신 시, 송·수신 전환을 정확히 제어해야 충돌 방지 가능

📌 RS-232는 풀 이중(Full-Duplex) 방식이지만, RS-485는 주로 반이중 방식을 사용함.


2. 한 번에 한 방향으로만 데이터 전송 가능

RS-485에서는 두 개의 와이어(A, B)로 송·수신이 이루어지며, 같은 버스에서 여러 장치가 동시에 전송할 수 없습니다.
즉, 한 장치가 송신하는 동안 다른 장치는 반드시 수신 모드로 설정되어야 합니다.

🛠️ 예제: 마스터-슬레이브 통신

[마스터] (송신 중) TX ----> RX [슬레이브 1]
[마스터] (송신 중) TX ----> RX [슬레이브 2]

💡 마스터가 송신하는 동안 모든 슬레이브는 수신 모드로 있어야 합니다.

📌 송·수신 충돌 방지를 위해 반드시 소프트웨어 또는 하드웨어적으로 송·수신 전환을 관리해야 합니다!


3. 송·수신 전환을 위한 컨트롤 필요

✅ 송·수신 전환 방법

RS-485 반이중 방식에서는 송·수신 모드를 전환하는 기능이 필요합니다.
이를 위해 마이크로컨트롤러(MCU)에서는 DE(Data Enable) 또는 RE(Receive Enable) 핀을 사용하여 전환을 제어할 수 있습니다.

📌 RS-485 송·수신 제어 핀 (보통 MAX485 같은 드라이버 칩에서 제공)

핀 이름 역할

DE (Data Enable) HIGH → 송신 모드 (TX 활성화)
RE (Receive Enable) LOW → 수신 모드 (RX 활성화)

📌 송신을 시작할 때는 DE 핀을 HIGH로 설정하고, 데이터를 보낸 후 LOW로 변경하여 수신 모드로 전환해야 함.

🛠️ 예제: 송·수신 전환 코드 (Arduino)

#define DE_PIN 2  // 송신/수신 전환 핀

void sendData(String message) {
    digitalWrite(DE_PIN, HIGH); // 송신 모드
    Serial.write(message.c_str()); // 데이터 전송
    delay(10); // 데이터 전송이 완료될 때까지 대기
    digitalWrite(DE_PIN, LOW); // 수신 모드
}

📌 이와 같은 방식으로 송·수신 모드를 제어하면 데이터 충돌을 방지할 수 있습니다.


4. 터미네이션 저항(Termination Resistor)의 필요성

RS-485는 장거리 통신(최대 1200m)을 지원하는 특성상, 신호 반사(Echo) 문제를 해결해야 합니다.
이를 위해 라인의 끝단에 터미네이션 저항(Termination Resistor)을 추가하여 신호 품질을 유지할 수 있습니다.

✅ 터미네이션 저항의 역할

  • 신호 반사(Echo) 방지 → 데이터가 케이블 끝에서 반사되어 오류가 발생하는 것을 방지
  • 신호 무결성 유지 → 장거리에서도 안정적인 데이터 전송 가능
  • 신호 전압 강하 방지 → RS-485의 차동 신호를 일정하게 유지

📌 RS-485에서는 일반적으로 120Ω 저항을 사용하여 터미네이션을 적용합니다.


5. 적절한 값의 저항(120Ω)을 사용하여 신호 품질 유지

✅ 터미네이션 저항 추가 방식

  • RS-485 네트워크의 양 끝단에 120Ω 저항을 추가해야 함
  • 마스터(Master)와 마지막 슬레이브(Slave) 장치에 각각 하나씩 추가
  • 네트워크 중앙에는 터미네이션 저항을 추가하지 않아야 함

📌 터미네이션 저항을 추가하면 장거리에서도 안정적인 신호 품질을 유지할 수 있음.

🛠️ 예제: RS-485 터미네이션 적용

[마스터] --[120Ω]---[슬레이브1]---[슬레이브2]---[120Ω]--[슬레이브3]

💡 양 끝단(마스터와 마지막 슬레이브)에만 120Ω 저항을 추가합니다.

📌 터미네이션 저항을 추가하지 않으면, 신호 반사로 인해 데이터 오류 발생 가능!


📌 요약

RS-485는 반이중(Half-Duplex) 방식으로 한 번에 한 방향으로만 데이터 전송 가능
송·수신 충돌을 방지하기 위해 DE/RE 핀을 활용하여 송·수신 전환을 제어해야 함
터미네이션 저항(120Ω)은 신호 반사를 방지하고 데이터 무결성을 유지하는 중요한 역할을 함
네트워크의 양 끝단에만 터미네이션 저항을 추가하여 신호 품질을 유지해야 함