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Ω)은 신호 반사를 방지하고 데이터 무결성을 유지하는 중요한 역할을 함
✅ 네트워크의 양 끝단에만 터미네이션 저항을 추가하여 신호 품질을 유지해야 함
'프로그래밍 > 시스템' 카테고리의 다른 글
시리얼 통신 하드웨어 및 연결 실습 - 2. RS-485 모듈(MAX485)과 마이크로컨트롤러 연결 (0) | 2025.02.10 |
---|---|
시리얼 통신 하드웨어 및 연결 실습 - 1. 시리얼 포트 개념 및 USB-to-Serial 변환기 이해 (0) | 2025.02.10 |
시리얼 통신 인터페이스 - 2. RS-485 개요 및 RS-232와의 차이점 (0) | 2025.02.10 |
시리얼 통신 인터페이스 - 1. RS-232 개요 및 특징 (0) | 2025.02.10 |
주요 시리얼 통신 프로토콜 - 3. I2C (Inter-Integrated Circuit) & 프로토콜 비교 (0) | 2025.02.10 |