RS-485 개요
RS-232와 마찬가지로 RS-485도 직렬 통신 표준입니다. 현재 공식 명칭은 TIA-485/EIA-485-A이지만 일반적으로 RS-485 표준이라고 합니다. RS-485는 산업 자동화, 자동차, 빌딩 관리 등의 산업에서 널리 사용됩니다.
RS-485 버스는 짧은 통신 거리와 낮은 데이터 속도 등 RS-232의 단점을 극복합니다. RS-485는 최대 10Mbit/s의 데이터 속도를 지원하며 이론상 최대 1,200m의 통신 거리를 제공합니다. RS-232의 단일 종단 전송과 달리 RS-485는 한 쌍의 연선 전선을 통한 차동 전송을 사용하며, 한 전선은 A로 지정되고 다른 전선은 B로 지정됩니다.
RS-485 물리 계층
RS-485 물리 계층은 장치와 물리 전송 매체 간의 원시 데이터 전송을 담당합니다. 전기 신호를 디지털 데이터로 변환하는 동시에 전압 레벨, 타이밍, 데이터 속도 및 기타 매개변수를 정의합니다.
① 차동 신호
장거리-케이블 연결은 신호 감쇠를 초래하고 소음 및 간섭 가능성을 높입니다. 이는 케이블 A와 B의 전압 진폭 변화로 나타납니다. 그러나 차동 라인을 사용하면 두 신호 간의 차이를 빼면 간섭이 상쇄되어 정상적인 신호가 출력된다는 장점이 있습니다. 두 신호 라인 모두에서 동일한 전압을 무시하는 차동 수신기의 기능을 공통{4}}모드 거부라고 합니다.


표준에서는 논리 1이 +2V ~ +6V이고 논리 0이 -6V ~ -2V라고 지정합니다.
RS-485에는 특정 버스 전압이 필요하지 않습니다. 최소 차동 전압만 고려합니다. 케이블 길이가 길어지면 수신기가 수신하는 전압이 +/- 200mV로 떨어질 수 있으며 이는 여전히 RS-485에 완벽하게 허용됩니다. 이는 RS-485의 장점 중 하나입니다.
많은 트랜시버가 TIA/EIA-485A 표준을 충족하거나 심지어 초과합니다. 그러나 실제 응용 분야에서는 장치에 지정된 매개변수가 우선합니다. 예를 들어 특정 트랜시버의 최소 음수 입력 임계값은 -200mV입니다.


② 신호 정의
오늘날 많은 RS-485 변환기는 RS-422와 호환되므로 이러한 변환기에서 RS-485의 A+ 및 B-에 해당하는 T/R+ 및 T/R- 레이블이 붙은 신호를 자주 볼 수 있습니다.
DB9 암 커넥터의 경우 RS-485 배선 정의는 다음과 같습니다. 핀 6~9는 N/A이므로 연결하면 안 됩니다.
| DB9 | 출력 신호 | RS-422 전이중 배선 | RS-485 반이중 배선 |
| 1 | T/R+ | 보내기(A+) | RS-485(A+) |
| 2 | T/R- | 보내기(B-) | RS-485(B-) |
| 3 | RXD+ | 수신(A+) | 비어 있는 |
| 4 | RXD- | 수신(B-) | 비어 있는 |
| 5 | 접지 | 접지선 | 접지선 |
③ 토폴로지
RS-485는 2{2}}와이어 및 4{4}}와이어 구성을 모두 지원합니다. 4{5}}와이어 구성은 지점간 통신으로 제한되며 현재는 거의 사용되지 않습니다. 2선 구성이 더 일반적으로 사용됩니다. 이 구성은 버스 토폴로지를 사용하여 단일 버스에 최대 32개의 노드를 연결할 수 있습니다.
I²C와 마찬가지로 RS-485 버스는 마스터-슬레이브 모드에서 작동합니다. 지점-대-단일-슬레이브 모드와 다중-슬레이브 모드를 모두 지원하지만 다중 마스터 모드는 지원하지 않습니다.


RS-485 트랜시버
RS-485는 차동 전송을 사용합니다. 마이크로컨트롤러를 사용하여 RS-485 장치를 제어하려면 CAN 버스와 유사한 트랜시버가 필요합니다. 다음 다이어그램은 RS-485 장치를 제어하는 MCU를 보여줍니다.
트랜시버 내부에는 수신기(상부)와 송신기(하부)가 있습니다. 다음은 MCU가 485 장치와 통신하는 방법을 이해하는 데 도움이 되는 트랜시버의 작동 방식에 대한 간략한 설명입니다.

RS-485 트랜시버의 내부 구조
어디:
A와 B는 버스입니다.
R은 수신기 입력입니다.
RE는 수신기 활성화 신호입니다.
DE는 송신기 활성화 신호입니다.
D는 송신기 출력입니다.
활성화 신호의 경우 문자 위에 선이 있는 신호는 액티브-로우(예: 위 그림의 RE)이고 선이 없는 신호는 액티브-하이(예: DE)입니다.
수신기 진리표
송신기의 경우 진리표는 다음과 같습니다.
1. 드라이버 활성화 핀 DE가 로직 하이이면 차동 출력 A와 B는 데이터 입력 D의 로직 상태를 따릅니다. D의 로직 하이로 인해 A는 하이가 되고 B는 로우가 됩니다. 이 경우 VOD=VA – VB로 정의된 차동 출력 전압은 양수입니다. D가 로우이면 출력 상태가 반전됩니다. 즉, B는 하이가 되고 A는 로우가 되며 VOD는 음수입니다.
2. DE가 로우이면 두 출력 모두 하이-임피던스가 됩니다. 이 경우 D의 논리 상태는 관련이 없습니다.
다음 진리표가 수신기에 적용됩니다.
1. 수신기의 활성화 핀(RE)이 로직 로우이면 수신기가 활성화됩니다. VID=VA – VB로 정의된 차동 입력 전압이 양수이고 양수 입력 임계값 VIT+를 초과하면 수신기의 출력 R이 높아집니다. VID가 음수이고 음수 입력 임계값 VIT-보다 낮으면 수신기 출력 R이 낮아집니다. VID가 VIT+와 VIT- 사이에 있으면 출력이 정의되지 않습니다.
2. RE가 로직 하이 또는 플로팅인 경우 VID의 크기나 극성에 관계없이 수신기 출력은 하이 임피던스입니다.


RS-485 데이터 링크
위에서 RS-485 트랜시버의 작동 원리를 논의한 후 이제 RS{4}}485 데이터 링크에 대해 간략하게 설명하겠습니다. 먼저 이해하기 쉬운 UART 프로토콜 프레임 형식을 살펴보세요.
마스터가 슬레이브로 데이터를 보내든 슬레이브가 마스터로 데이터를 보내든 A와 B 라인이 모두 사용됩니다. 따라서 RS-485는 일반적으로 반이중 모드에서 사용됩니다.
호스트의 GPIO는 RS-485 트랜시버의 DE 핀을 제어하여 전송 모드를 설정합니다. 단일 바이트는 UART TXD 라인에서 RS-485 트랜시버의 데이터(D 또는 DI) 라인으로 전송됩니다. 트랜시버는 단일 종단 UART 비트 스트림을 A 및 B 라인의 차동 비트 스트림으로 변환합니다. 데이터가 트랜시버를 떠나면 호스트는 즉시 트랜시버를 수신 모드로 전환합니다.
슬레이브는 마스터와 유사하게 작동합니다. 슬레이브는 RS-485 트랜시버의 /RE 핀을 제어하여 수신 모드로 설정하고 마스터가 보낸 비트 스트림을 수신하여 단일 종단 신호로 변환한 후 슬레이브의 UART RXD 라인을 통해 수신합니다. 슬레이브가 응답할 준비가 되면 마스터와 동일한 방식으로 데이터를 전송하고 마스터는 수신 모드로 전환됩니다.
RS-232에서 RS-485로의 변환
RS-232와 RS-485 간 변환이 가능합니다. 한 가지 방법은 RS-232를 TTL로 변환한 다음 TTL을 RS-485로 변환하는 것입니다. 물론 RS-232에서 RS-485로의 직접 변환을 지원하는 칩도 있으며 이러한 모듈은 온라인에서 많이 구할 수 있습니다.
RS-232-RS-485 변환 모듈
RS-485와 CAN의 차이점
RS-485에는 표준화된 데이터 프로토콜 형식이 없지만 CAN 버스와 많은 유사점을 공유합니다. 예를 들어, A&B와 CANH&CANL은 모두 차동 신호입니다. 둘 다 통신을 위해 트랜시버가 필요합니다. 둘 다 120옴 터미네이션 저항을 사용한다는 점은 유사점입니다.
| 버스 특성 | CAN 버스 | RS-485 버스 |
| 하드웨어 비용 | 약간 높음 | 저렴하다 |
| 버스 활용 | 자동 우선순위 중재, 높은 활용도 | 폴링을 사용합니다. 낮은 활용도 |
| 데이터 전송률 | 높은 | 낮은 |
| 오류 감지 메커니즘 | 컨트롤러에는 낮은 수준의 데이터 전송의 정확성을 보장하는 체크섬 메커니즘이 포함되어 있습니다- | 물리 계층 사양만 해당. 데이터링크 계층 사양 없음 |
| 단일-노드 장애가 미치는 영향 | 버스에 영향 없음 | 버스 마비 |
| 개발 비용 | 유연한 소프트웨어 개발, 낮은 시간 비용 | 개발이 어렵다 |
| 시스템 비용 | 상대적으로 낮음 | 높은 |
일반적인 RS-485 회로
다음은 온라인에서 찾은 일반적인 RS-485 회로입니다. 주목해야 할 두 가지 사항이 있습니다.
1. 활성화 신호 RE 및 DE는 리소스를 절약하기 위해 단일 GPIO로 제어할 수 있습니다. GPIO25가 하이 레벨을 출력하면 RE와 DE는 0V이고 장치는 수신 모드로 들어갑니다. GPIO25가 로우 레벨을 출력하면 RE 및 DE는 3.3V이고 장치는 전송 모드로 들어갑니다.
2. 일부 회로에서는 풀-저항이 핀 A에 추가되고 풀다운 저항이 핀 B에 추가됩니다. 그 주된 이유는 RS-485 버스가 유휴 상태에 있을 때 전압 레벨이 고정되지 않고-즉, -200mV와 +200mV 사이에서 변동하며 트랜시버가 높거나 낮은 레벨을 출력할 수 있기 때문입니다. UART는 유휴 상태일 때 높은 수준을 유지해야 합니다. 이때 트랜시버가 로우 레벨을 출력하면 UART는 이를 시작 비트로 해석하여 통신 오류를 일으킬 수 있습니다. R_u 및 R_d의 특정 값은 여기서 자세히 설명하지 않습니다. 나는 앞으로 이 주제에 관해 자세한 글을 쓸 계획이다.

두 번째 사항에 대해서는 다음 사항에 유의하시기 바랍니다.
① A핀에 풀{0}}저항을 적용하고 B핀에 풀다운 저항을- 적용할 경우, 역접속으로 인해 데이터 통신이 실패할 수 있습니다.
② 트랜시버에 내장된 -풀업-및 풀다운 저항-저항이 있는 경우 외부 저항을 추가할 필요가 없습니다.




