RS-485의 A·B 두 선만으로 여러 장비를 연결하는 방법
RS-485의 A·B 두 선만으로 여러 장비를 연결하는 방법#
1장 두 선으로 여러 장비를 연결할 수 있을까#
RS-422에서는 흔히 다음과 같이 송신과 수신 Pair를 따로 사용합니다.
TX+
TX-
RX+
RX-반면 산업 현장에서 자주 만나는 2-Wire RS-485는 다음처럼 한 Pair만 사용합니다.
A
B그런데 이 두 선에:
Controller
Sensor 1
Sensor 2
Sensor 3
Sensor 4같은 여러 장비를 연결할 수 있습니다.
개념적으로:
┌─ Device 1
│
A/B ────┼─ Device 2
│
├─ Device 3
│
└─ Device 4형태입니다.
RS-485가 산업 현장에서 오랫동안 사용되는 가장 큰 이유 중 하나가 바로 이 Multi-point Bus 구성입니다.
2장 2-Wire RS-485의 핵심은 하나의 Pair를 공유하는 것이다#
2-Wire RS-485에서는 송신과 수신에 같은 Differential Pair를 사용합니다.
A ===============================
B ===============================장비 A가 송신할 때도 이 Pair를 사용하고:
Device A
→ A/B
→ Device B장비 B가 응답할 때도 같은 Pair를 사용합니다.
Device A
← A/B
← Device B따라서 양쪽이 동시에 자유롭게 송신할 수 없습니다.
이 구조가 Half Duplex입니다.
3장 Half Duplex란 무엇인가#
Half Duplex는 양방향 통신은 가능하지만 동시에 양쪽이 송신하지 않는 방식입니다.
무전기를 생각하면 쉽습니다.
A 송신
→ B 수신
A 송신 종료
B 송신
→ A 수신RS-485 2선식에서는 일반적으로 이런 방식으로 운용합니다.
Master
"Device 3, 상태를 알려줘."
↓
Bus
Device 3
"정상이다."
↓
Bus한 장비가 말하는 동안 나머지는 Bus를 듣습니다.
4장 RS-485라고 무조건 Half Duplex는 아니다#
중요한 부분입니다.
RS-485는 흔히:
2-Wire
=
Half Duplex형태로 사용됩니다.
하지만 4-Wire RS-485 구성도 가능합니다.
TX+
TX-
RX+
RX-처럼 송신 Pair와 수신 Pair를 분리하면 Full Duplex 형태로 운용할 수 있습니다.
따라서:
RS-485
=
무조건 Half Duplex라고 이해하면 안 됩니다.
정확히는 2-Wire RS-485가 Half Duplex로 널리 사용된다고 보는 것이 좋습니다.
5장 2-Wire와 4-Wire RS-485 비교#
| 항목 | 2-Wire RS-485 | 4-Wire RS-485 |
|---|---|---|
| Differential Pair | 1개 | 2개 |
| 대표 동작 | Half Duplex | Full Duplex 가능 |
| 송수신 | 같은 Pair 공유 | 송신·수신 분리 |
| Cable | 상대적으로 적음 | 상대적으로 많음 |
| Bus 구성 | 매우 흔함 | 특정 시스템에서 사용 |
| 송신 방향 제어 | 중요 | 구조에 따라 단순해질 수 있음 |
| 산업 장비 | 매우 흔함 | 장비 지원 여부 확인 필요 |
6장 여러 장비가 같은 선을 공유하면 누가 먼저 말할까#
RS-485 자체는 다음을 결정하지 않습니다.
누가 먼저 송신하는가?
어느 장비가 응답하는가?
장비 Address는 몇 번인가?
응답은 몇 ms 안에 해야 하는가?이것들은 상위 Protocol에서 정합니다.
대표적인 구조가 Request/Response 방식입니다.
Master
↓
Device 5에 요청
Device 1
무시
Device 2
무시
Device 5
응답이렇게 Bus 사용 순서를 관리합니다.
7장 RS-485는 Protocol이 아니다#
매우 중요합니다.
RS-485는:
Electrical Interface입니다.
반면 다음과 같은 것은 상위 Protocol입니다.
Modbus RTU
BACnet MS/TP
DMX512
Profibus 일부 물리 구현
제조사 전용 Protocol따라서:
RS-485 장비라고 해서 두 장비가 자동으로 서로 통신하는 것은 아닙니다.
다음이 모두 맞아야 합니다.
Electrical Interface
↓
Baud Rate
↓
Data Bits
↓
Parity
↓
Stop Bits
↓
Protocol
↓
Address
↓
Command Format8장 Device Address는 왜 필요한가#
Bus에 여러 장비가 연결되어 있다고 하겠습니다.
Device 1
Device 2
Device 3
Device 4Master가:
STATUS라는 명령을 보냈는데 Address가 없다면 어느 장비가 응답해야 할지 알기 어렵습니다.
그래서 상위 Protocol에서는 일반적으로 Address를 사용합니다.
예:
Address
0x03
Command
0x10
Data
...
CRC
...Bus에 연결된 모든 장비가 Frame을 볼 수 있지만:
Address 0x03인 장비만 응답하도록 설계할 수 있습니다.
9장 Address는 RS-485가 만들어주는 것이 아니다#
흔히:
RS-485 Address라는 표현을 쓰지만 엄밀히 말하면 Address는 RS-485 Electrical Standard의 기능이 아닙니다.
예를 들어:
Modbus RTU라면 Modbus가 Slave Address를 정의합니다.
제조사 전용 Protocol이라면 제조사가 Address 형식을 정의합니다.
따라서 같은 RS-485 Cable에서도 전혀 다른 Protocol을 사용할 수 있습니다.
10장 여러 장비가 동시에 송신하면 어떻게 될까#
2-Wire RS-485의 같은 Bus에서 두 Driver가 동시에 활성화됐다고 하겠습니다.
Device A
TX ON
\
> 같은 Bus
/
Device B
TX ON서로 다른 논리 상태를 Drive하면 Signal 충돌이 발생할 수 있습니다.
결과는:
깨진 Byte
Framing Error
CRC Error
응답 없음
불규칙한 Packet등으로 나타날 수 있습니다.
따라서 한 순간에 Bus를 Drive하는 장비를 하나로 제한하는 것이 중요합니다.
11장 Master/Slave 구조가 많이 사용되는 이유#
Half Duplex Bus에서는 누가 언제 송신할지 제어하기 쉬운 구조가 필요합니다.
대표적인 방식은:
Master
질문
↓
Slave
응답입니다.
Master가 먼저 요청하고 지정된 Slave만 답하게 합니다.
Master
→ Device 1 요청
← Device 1 응답
Master
→ Device 2 요청
← Device 2 응답
Master
→ Device 3 요청
← Device 3 응답이런 구조를 사용하면 Bus 충돌을 크게 줄일 수 있습니다.
12장 모든 RS-485가 Master/Slave인 것은 아니다#
이 역시 중요한 구분입니다.
RS-485 자체는 Master와 Slave를 정의하지 않습니다.
상위 Protocol에 따라:
Master / Slave
Client / Server
Token Passing
Peer-to-Peer
Custom Polling같은 다양한 구조를 사용할 수 있습니다.
따라서:
RS-485
=
Master/Slave라고 단정하면 안 됩니다.
13장 Driver Enable은 무엇인가#
2-Wire RS-485에서는 같은 Pair를 송신과 수신에 함께 사용합니다.
따라서 Transceiver에는 보통:
Driver Enable개념이 있습니다.
수신 대기 상태:
Driver Disabled
↓
Bus를 듣는다송신 상태:
Driver Enabled
↓
A/B를 Drive한다송신 완료:
Driver Disabled
↓
다시 수신와 같은 흐름입니다.
14장 송신이 끝났는데 Driver를 계속 켜두면#
Device A가 Message 전송을 마쳤는데도 Bus Drive를 해제하지 않는다고 하겠습니다.
Device A
Driver ON이 상태에서 Device B가 응답을 시작하면:
Device B
Driver ON두 Driver가 동시에 Bus에 연결될 수 있습니다.
결과적으로:
Bus Collision
응답 손상
CRC Error
Timeout등이 발생할 수 있습니다.
Half Duplex RS-485에서는 송신 종료 후 얼마나 빨리 Bus를 놓는가도 중요합니다.
15장 너무 빨리 Driver를 끄면 어떻게 될까#
반대 문제도 있습니다.
마지막 Byte가 실제 Wire로 완전히 전송되기 전에 Driver를 Disable하면 마지막 Bit 또는 Stop Bit 일부가 잘릴 수 있습니다.
예:
Application write 완료
↓
Driver OFF라고 바로 처리했는데 UART 내부에는 아직 Data가 남아 있을 수 있습니다.
중요한 것은:
Application Buffer Empty와:
실제 UART 송신 완료가 같은 의미가 아닐 수 있다는 점입니다.
RS-485 Direction Control을 직접 구현한다면 실제 송신 완료 시점을 확인해야 합니다.
16장 Converter가 방향을 자동으로 바꾸기도 한다#
최근 USB-to-RS485 Adapter나 Serial Converter 중에는:
Auto Direction
Auto TX Enable기능을 제공하는 제품이 있습니다.
Data가 나가기 시작하면 자동으로 Driver를 활성화하고:
Data 송신 종료
↓
자동으로 Receive 상태 전환을 수행합니다.
이런 장비에서는 Application이 Driver Enable을 직접 제어하지 않아도 되는 경우가 많습니다.
17장 RTS로 방향을 제어하기도 한다#
일부 Converter에서는 RTS를 이용해 RS-485 송수신 방향을 제어합니다.
예:
RTS ON
→ TX Mode
RTS OFF
→ RX Mode하지만 이것은 RS-232에서 사용하는:
RTS/CTS Hardware Flow Control과 다른 용도입니다.
같은 RTS Signal 이름을 사용하더라도 역할이 다를 수 있으므로 구분해야 합니다.
18장 A와 B는 무엇인가#
RS-485 장비에서는 다음과 같은 Terminal을 많이 봅니다.
A
B또는:
D+
D-485+
485-처럼 표시될 수 있습니다.
문제는 제조사마다 A와 B Naming Convention이 다르게 사용되는 사례가 있다는 것입니다.
그래서:
A = +
B = -또는 그 반대로 무조건 외우면 안 됩니다.
19장 A끼리 연결했는데도 통신이 안 될 수 있다#
장비 A:
A
B장비 B:
A
B라고 표시되어 있다고 해서 무조건:
A ↔ A
B ↔ B가 맞다고 단정하기 어렵습니다.
서로 다른 제조사가 A/B Naming을 반대 의미로 사용했을 가능성이 있기 때문입니다.
가장 안전한 방법은 데이터시트의:
Non-inverting
Inverting
+
-
D+
D-표기를 함께 확인하는 것입니다.
20장 A/B 반전이 의심되면 어떻게 할까#
우선 Manual과 Wiring Diagram을 확인합니다.
그 다음 필요하다면:
전원 차단
↓
배선 확인
↓
제조사 극성 확인
↓
시험 환경에서 검증순서로 진행합니다.
무작정 현장에서 A/B를 반복해서 뒤집기보다는 먼저 장비 Pinout과 Signal Definition을 확인하는 것이 우선입니다.
21장 Daisy Chain이 왜 중요한가#
RS-485 Bus는 일반적으로 다음과 같은 형태가 유리합니다.
Master ─ Device 1 ─ Device 2 ─ Device 3 ─ Device 4즉 Main Bus를 따라 장비가 이어지는 구조입니다.
이를 흔히 Daisy Chain 형태라고 부릅니다.
전송선의 구조가 비교적 일정하게 유지되어 Signal Reflection을 관리하기 쉽습니다.
22장 Star 배선은 왜 주의해야 할까#
다음처럼 한 지점에서 여러 방향으로 긴 Cable이 갈라진다고 하겠습니다.
Device 1
│
│
Device 2 ─── Junction ─── Device 3
│
│
Device 4각 Branch가 Transmission Line처럼 동작하면서 Reflection이 복잡해질 수 있습니다.
따라서 일반적인 RS-485 Bus에서는 긴 Star Branch를 피하는 것이 좋습니다.
다만:
Active Hub
Repeater
특수한 Network Topology를 사용하는 시스템은 별도의 설계가 가능합니다.
23장 Stub란 무엇인가#
Main Bus에서 장비로 짧게 빠지는 Branch를 Stub라고 합니다.
Main Bus =========================
|
|
DeviceStub가 지나치게 길면 Signal Reflection과 Waveform 왜곡을 증가시킬 수 있습니다.
따라서 일반적으로 Stub는 짧게 유지합니다.
정확한 허용 길이는:
Baud Rate
Cable
Transceiver
Edge Rate
Topology에 따라 달라집니다.
24장 종단저항은 왜 필요한가#
긴 Cable에서는 Signal이 끝에 도달했을 때 반사될 수 있습니다.
Signal
──────────────→
Cable End
↓
Reflection
←──────────────이를 줄이기 위해 Bus의 Characteristic Impedance에 맞는 Termination Resistor를 사용합니다.
RS-485 Cable에서는:
120Ω이 흔히 등장합니다.
하지만 실제 값은 Cable과 장비 설계를 확인해야 합니다.
25장 종단저항은 어디에 설치할까#
일반적인 RS-485 Bus에서는 물리적인 전송선 양 끝에 종단을 두는 구성이 흔합니다.
120Ω 120Ω
│ │
Master ─ Device ─ Device ─ Device ─ Device중간 장비마다 120Ω을 넣는 것이 아닙니다.
26장 종단저항을 너무 많이 넣으면 어떻게 될까#
각 장비마다 종단을 활성화했다고 하겠습니다.
Device 1
120Ω
Device 2
120Ω
Device 3
120Ω
Device 4
120Ω여러 저항이 병렬로 연결되면서 Bus 전체 부하가 크게 증가할 수 있습니다.
Driver가 충분한 Differential Voltage를 만들지 못하게 되어 오히려 통신이 불안정해질 수 있습니다.
따라서 장비 추가 시:
내장 Termination이 켜져 있는가?를 반드시 확인해야 합니다.
27장 Bias 저항은 왜 필요한가#
아무 장비도 송신하지 않는 상태를 생각해보겠습니다.
Device 1
Driver OFF
Device 2
Driver OFF
Device 3
Driver OFF이 상태에서 Bus가 불확정 상태로 남으면 Noise 때문에 Receiver가 잘못된 상태 변화를 감지할 수 있습니다.
이를 방지하기 위해 Bus의 Idle 상태를 정의하는 Bias Network를 사용할 수 있습니다.
28장 Bias는 어디에나 넣는 것이 아니다#
흔히 Pull-up과 Pull-down 저항을 이용합니다.
하지만 모든 장비에 Bias를 설치하면 안 됩니다.
예:
Master
Bias ON
Device 1
Bias ON
Device 2
Bias ON
Device 3
Bias ON이처럼 여러 Bias Network가 병렬로 동작하면 Bus 전기적 특성이 달라질 수 있습니다.
따라서:
누가 Bias를 제공하는가?를 시스템 단위로 확인해야 합니다.
29장 최신 Transceiver는 Fail-safe 기능을 가질 수 있다#
일부 현대 RS-485 Receiver는 Open Bus나 Idle 상태에서 안정적인 Logic 상태를 만들기 위한 Fail-safe 기능을 내부적으로 제공합니다.
따라서:
RS-485
=
무조건 외부 Bias 필요라고 볼 수는 없습니다.
장비 내부 회로와 Transceiver 데이터시트를 확인해야 합니다.
30장 Ground 선은 필요 없을까#
RS-485는 Differential 방식이기 때문에 흔히:
A
B두 선만 연결하면 된다고 생각하기 쉽습니다.
하지만 실제 Receiver에는 허용할 수 있는 Common-Mode Voltage 범위가 있습니다.
장비 사이의 기준 전위 차이가 지나치게 크면:
A-B Differential Voltage가 정상이어도 입력 허용 범위를 벗어날 수 있습니다.
따라서 Ground와 Signal Reference 전략도 시스템 설계의 일부입니다.
31장 별도의 Ground를 무조건 연결하라는 뜻도 아니다#
반대로:
RS-485에는 Ground가 필요하다.
↓
모든 장비 GND를 강제로 연결한다.도 위험할 수 있습니다.
현장에서는:
Signal Ground
Protective Earth
Chassis Ground
Shield
Equipotential Bonding을 구분해야 합니다.
잘못된 연결은 Ground Loop나 과도한 전류를 만들 수 있습니다.
따라서 장비 제조사의 Grounding 지침과 현장 전기 설계를 따릅니다.
32장 Shielded Cable은 무조건 필요한가#
Noise가 많은 산업 환경에서는 Shielded Twisted Pair가 도움이 될 수 있습니다.
하지만 모든 환경에서 무조건 Shield가 필요한 것은 아닙니다.
Cable 선택은:
거리
Baud Rate
EMI 환경
전력 Cable과의 거리
설비 Grounding
장비 요구사항을 함께 고려해야 합니다.
33장 Shield는 무조건 한쪽만 접지하는가#
그렇지 않습니다.
한쪽 Ground가 적합한 시스템도 있고, 적절한 Equipotential Bonding이 된 환경에서 양단 처리하는 방식이 적합한 경우도 있습니다.
중요한 것은:
한쪽 접지
=
절대 규칙으로 생각하지 않는 것입니다.
Cable 제조사, 장비 제조사, EMC 설계 지침을 기준으로 결정합니다.
34장 RS-485에는 몇 대까지 연결할 수 있을까#
고전적인 RS-485 설명에서는 흔히:
32 Unit Loads라는 기준이 등장합니다.
하지만 이것을:
RS-485는 최대 32대라고 단순히 외우면 안 됩니다.
35장 Unit Load란 무엇인가#
Unit Load는 Receiver가 Bus에 주는 전기적 부하를 나타내는 개념입니다.
전통적인 Receiver:
1 Unit Load기준에서는 32 Unit Loads가 대표적인 기준으로 사용되었습니다.
하지만 현대 Transceiver에는:
1/2 Unit Load
1/4 Unit Load
1/8 Unit Load같이 더 작은 부하를 갖는 제품도 있습니다.
따라서 더 많은 Receiver 연결을 지원할 수 있습니다.
실제 최대 장비 수는 Transceiver 사양과 전체 Bus 설계를 봐야 합니다.
36장 장비 수만으로 최대 Node를 결정할 수 없다#
예를 들어 1/8 Unit Load Receiver라고 해서 무조건 수백 장비를 안정적으로 연결할 수 있다는 뜻도 아닙니다.
실제 시스템은 다음 조건의 영향을 받습니다.
Cable 길이
Baud Rate
Topology
Stub
Termination
Bias
Connector
Transceiver
Protocol Polling 시간
전원
Noise따라서 Electrical Limit와 실용적인 System Limit은 다를 수 있습니다.
37장 여러 장비를 연결하면 처리량은 어떻게 될까#
RS-485 Bus에 장비가 많아지면 하나의 Communication Channel을 여러 장비가 공유합니다.
예:
Master → Device 1
응답
Master → Device 2
응답
Master → Device 3
응답
Master → Device 4
응답장비 수가 증가하면 모든 장비를 한 번씩 Polling하는 시간도 증가합니다.
38장 Polling Cycle을 계산해보자#
장비가 20대 있고 각 요청과 응답 처리에 평균 20ms가 필요하다고 단순 가정해보겠습니다.
20 devices
×
20 ms
=
400 ms여기에:
Inter-frame Delay
Timeout
Retry
Application 처리 시간이 추가됩니다.
실제 전체 Polling Cycle은 더 길어질 수 있습니다.
따라서 많은 Node를 연결할 수 있다는 사실과 빠르게 모든 장비를 조회할 수 있다는 것은 다른 문제입니다.
39장 Timeout을 너무 짧게 설정하면#
Master가 요청합니다.
Master
→ Device 5Device 5가 20ms 후 응답하도록 설계됐는데 Master Timeout이:
10ms라면 Master는 응답 전에:
Timeout으로 판단할 수 있습니다.
그 뒤 Retry가 시작되면 기존 응답과 새로운 요청이 섞이면서 장애가 더 복잡해질 수도 있습니다.
40장 Timeout을 너무 길게 설정하면#
반대로 Device가 고장났는데 Timeout이:
5 seconds라면 한 장비가 응답하지 않을 때마다 전체 Bus Polling이 오래 멈출 수 있습니다.
예:
Device 1 정상
Device 2 정상
Device 3 장애
↓
5초 대기
↓
Device 4장비 수가 많으면 시스템 전체 상태 갱신이 매우 느려질 수 있습니다.
따라서 Timeout은 실제 장비 응답 특성을 측정해서 정해야 합니다.
41장 Address 중복은 매우 위험하다#
Device 3과 Device 7이 모두:
Address = 5로 설정되어 있다고 하겠습니다.
Master가:
Address 5에 요청하면 두 장비가 동시에 응답할 수 있습니다.
Device 3 ─┐
├── 동시에 TX
Device 7 ─┘결과:
Collision
CRC Error
깨진 Frame
응답 불안정이 발생할 수 있습니다.
42장 장비를 추가한 뒤 전체 Bus가 이상해졌다면#
기존:
Device 1
Device 2
Device 3은 정상인데 Device 4를 추가한 뒤 Bus 전체가 불안정하다고 하겠습니다.
다음 항목을 확인합니다.
A/B 극성
Address 중복
내장 Termination
내장 Bias
Stub 길이
Cable 연결
Ground Difference
Baud 설정새 장비 하나가 전체 Bus의 전기적 조건을 바꿀 수 있습니다.
43장 가까운 장비는 되고 먼 장비만 안 된다#
이 경우 다음을 우선 확인합니다.
Cable 길이
Termination
Cable 종류
Baud Rate
Noise
Stub
Ground Potential Difference예를 들어:
Device 1
20m
정상
Device 2
50m
정상
Device 3
300m
오류라면 단순 Address 문제보다는 Physical Layer 문제일 가능성을 먼저 살펴볼 수 있습니다.
44장 모든 장비가 동시에 안 된다#
Master도 송신하는 것 같고 모든 Device가 무응답이라면 다음을 확인합니다.
Master Transceiver
A/B 공통 배선
Termination
Power
Ground
USB-to-RS485 Adapter
Driver Enable
Baud Rate특정 Device가 아니라 Bus 전체 문제인지 구분하는 것이 중요합니다.
45장 특정 장비 한 대만 안 된다#
반대로 다른 장비는 정상이고 한 장비만 무응답이면:
Device Address
Device Power
Local Cable
A/B 배선
Serial 설정
Transceiver
Protocol 설정을 우선 확인합니다.
Bus 전체 설정을 무작정 변경하지 않는 것이 중요합니다.
46장 Modbus RTU는 RS-485와 어떤 관계인가#
Modbus RTU는 RS-485 위에서 자주 사용되는 Protocol입니다.
구조를 단순화하면:
Modbus RTU
↓
UART Byte Stream
↓
RS-485 Electrical Interface입니다.
Modbus RTU Frame의 대표적인 구조는:
Address
Function Code
Data
CRC입니다.
47장 Modbus 요청 예시#
예를 들어 Slave Address 0x05에 Coil을 읽는 요청을 보낸다고 가정하면 교육용 개념은 다음과 같습니다.
05 01 00 00 00 08 CRC_LO CRC_HI의미:
05
Slave Address
01
Read Coils
0000
Start Address
0008
Quantity
CRC
Frame Error Check실제 CRC 값은 Frame 내용에 따라 계산해야 합니다.
고정된 예시 CRC를 임의로 복사해서 사용하면 안 됩니다.
48장 RS-485 위에서 꼭 Modbus를 사용해야 하나#
아닙니다.
다음과 같은 자체 Protocol을 만들 수도 있습니다.
STX
Address
Command
Length
Data
Checksum
ETX예:
02 03 10 02 01 00 CRC 03같은 형식입니다.
중요한 것은 Bus를 공유하는 모든 장비가 동일한 Protocol 규칙을 이해해야 한다는 점입니다.
49장 Python Code가 RS-485를 직접 구현하는 것은 아니다#
USB-to-RS485 Adapter가 Serial Port로 제공된다고 하겠습니다.
Python에서는 일반 Serial API로 접근할 수 있습니다.
import serial
ser = serial.Serial(
port="/dev/ttyUSB0",
baudrate=19200,
bytesize=8,
parity="N",
stopbits=1,
timeout=1
)
ser.write(b"TEST")
response = ser.read(64)
print(response)
ser.close()하지만 Python이 A/B Differential Signal을 직접 만드는 것은 아닙니다.
실제 구조는:
Python
↓
OS Serial Driver
↓
USB/UART
↓
RS-485 Transceiver
↓
A/B입니다.
50장 RS-485 Direction Control은 Adapter에 따라 다르다#
어떤 Adapter는 자동으로 송수신 방향을 제어합니다.
다른 Hardware에서는 Application이나 Driver가:
RTS
Driver Enable등을 제어해야 할 수 있습니다.
따라서 Code를 작성하기 전에:
Adapter가 Auto Direction을 지원하는가?를 확인해야 합니다.
51장 Wireshark만으로 RS-485를 볼 수 있을까#
일반적인 Wireshark는 Ethernet·IP 같은 Network Packet 분석에 주로 사용합니다.
RS-485 Serial Line을 그대로 Ethernet Packet처럼 Capture하는 도구는 아닙니다.
RS-485 분석에는 상황에 따라:
Serial Analyzer
Logic Analyzer
Oscilloscope
USB-to-RS485 Sniffer
Protocol Analyzer등을 사용합니다.
상위 Protocol Data를 PC로 Capture한 뒤 Wireshark용 Dissector 등으로 분석하는 별도의 환경도 만들 수 있습니다.
52장 Multimeter로 확인할 수 있는 것#
Multimeter는 다음 점검에 유용합니다.
Cable 연속성
Short
일부 DC Bias
Ground Potential Difference
전원 상태하지만 빠른 Differential Waveform과 Reflection을 정확하게 보기에는 한계가 있습니다.
53장 Oscilloscope로 확인할 수 있는 것#
Oscilloscope를 사용하면:
A Signal
B Signal
Differential Voltage
Common-Mode Voltage
Noise
Reflection
Driver Enable Timing등을 확인할 수 있습니다.
특히 송신 종료 이후 Driver가 언제 Bus를 Release하는지 관찰하면 Half Duplex Timing 문제를 진단하는 데 도움이 됩니다.
54장 RS-485 Bus 장애 진단 순서#
현장에서 Bus가 통신하지 않는다면 다음 순서로 확인합니다.
1. 장비 전원
↓
2. RS-485 Interface 확인
↓
3. 2-Wire / 4-Wire 확인
↓
4. A/B 정의 확인
↓
5. Cable 연속성
↓
6. Topology 확인
↓
7. Termination 확인
↓
8. Bias 확인
↓
9. Ground·Common-Mode 확인
↓
10. Baud·Parity·Stop Bit 확인
↓
11. Device Address 확인
↓
12. Driver Enable 확인
↓
13. 실제 Frame 확인
↓
14. Timeout·Retry 확인55장 증상별 점검 기준#
| 증상 | 우선 확인 |
|---|---|
| 모든 장비 무응답 | Master·A/B·Baud·Driver Enable |
| 한 장비만 무응답 | Address·Local Wiring·Power |
| 장비 추가 후 전체 불안정 | Termination·Bias·Address·Stub |
| 가까운 장비만 정상 | Cable·Termination·Noise |
| 간헐적 CRC Error | Noise·Reflection·Collision |
| 특정 Address에서 오류 | Address 중복 |
| 요청 후 응답 일부 손실 | Direction Timing·Buffer |
| 송신은 되지만 응답 못 받음 | Driver Release·Timeout |
| 특정 시간대에 장애 | EMI·Ground·전원 환경 |
56장 RS-485 보안도 별도로 생각해야 한다#
RS-485 자체에는:
Authentication
Encryption
Authorization기능이 없습니다.
누군가 물리적으로 Bus에 접근할 수 있고 Protocol을 알고 있다면 Frame을 관찰하거나 전송할 가능성이 있습니다.
따라서 중요한 제어 시스템에서는:
제어반 접근 통제
Cable 접근 통제
Gateway 인증
상위 Protocol 인증
Command 권한 관리
Audit Log등을 함께 고려해야 합니다.
57장 Serial-over-IP Gateway를 사용하면 더 주의해야 한다#
RS-485 Bus를 Ethernet Gateway에 연결하면:
RS-485 Device
↓
Gateway
↓
Ethernet
↓
Server구조가 됩니다.
운영은 편리해지지만 기존에 현장 Cable에 물리적으로 접근해야 했던 Interface가 Network를 통해 접근 가능해질 수 있습니다.
따라서 Gateway의:
Authentication
TLS
ACL
VPN
Firmware Update
Management Port등을 확인해야 합니다.
58장 현장 사례 — 여러 주차 장비를 하나의 Bus에 연결한다면#
예를 들어 다음 장비를 연결한다고 하겠습니다.
Controller
Gate Device 1
Gate Device 2
Sensor 1
Sensor 22-Wire RS-485를 사용한다면:
Controller
│
├── Device 1
├── Device 2
├── Sensor 1
└── Sensor 2를 논리적으로 구성할 수 있습니다.
실제 Physical Wiring은 가능한 한 Bus 형태로 설계합니다.
각 장비에는:
Address 1
Address 2
Address 3
Address 4처럼 중복되지 않는 Address를 지정합니다.
59장 장비 수가 많으면 Bus를 나누는 것도 방법이다#
RS-485 하나에 무조건 최대한 많은 장비를 연결하는 것이 좋은 것은 아닙니다.
장비 수가 많아지면:
Polling Cycle 증가
장애 영향 범위 증가
Cable 길이 증가
Stub 증가 가능성
Troubleshooting 복잡도 증가등의 문제가 생깁니다.
상황에 따라:
Bus A
Bus B
Bus C로 Segment를 나누거나 Repeater·Gateway를 사용하는 것이 더 나을 수 있습니다.
60장 Repeater는 언제 사용할까#
다음과 같은 상황에서는 RS-485 Repeater를 검토할 수 있습니다.
Cable 구간이 너무 김
Node 수 증가
Branch 분리 필요
Electrical Segment 분리
Noise 구간 분리Repeater는 Signal을 다시 생성하고 Bus Segment를 분리하는 데 활용할 수 있습니다.
하지만 Repeater를 추가하면:
Delay
설정
전원
새로운 장애 지점도 증가하므로 무조건 사용하는 것은 아닙니다.
61장 흔히 하는 잘못된 판단#
61.1 RS-485는 A/B 두 선이면 무조건 통신한다#
아닙니다.
Baud·Parity·Address·Protocol·Termination 등도 맞아야 합니다.
61.2 RS-485는 무조건 Half Duplex다#
아닙니다.
2-Wire Half Duplex가 흔하지만 4-Wire 구성이 가능합니다.
61.3 A는 항상 +이고 B는 항상 -다#
제조사 Naming이 다를 수 있습니다.
61.4 최대 장비 수는 무조건 32대다#
아닙니다.
Unit Load와 Transceiver 특성에 따라 달라집니다.
61.5 모든 장비에 종단저항을 넣으면 좋다#
아닙니다.
일반적인 Bus에서는 물리적 양 끝단의 Termination을 중심으로 설계합니다.
61.6 Bias는 장비마다 넣는다#
아닙니다.
전체 Bus의 Bias 구조를 확인해야 합니다.
61.7 RS-485에는 Ground가 필요 없다#
Common-Mode Voltage와 Ground Potential Difference를 무시해서는 안 됩니다.
61.8 장비가 많으면 RS-485 하나에 모두 넣으면 된다#
Node 수뿐 아니라 Polling Time, 장애 범위, Cable 구조까지 고려해야 합니다.
62장 자기 점검#
62.1 2-Wire RS-485가 Half Duplex인 이유는 무엇인가#
송신과 수신이 하나의 Differential Pair를 공유하기 때문입니다.
62.2 Device Address는 누가 정의하는가#
RS-485가 아니라 Modbus RTU나 제조사 전용 Protocol 같은 상위 Protocol이 정의합니다.
62.3 여러 장비가 동시에 송신하면 어떻게 되는가#
동일 Bus에서 Driver 충돌이 발생해 Data가 손상될 수 있습니다.
62.4 종단저항은 어디에 배치하는가#
일반적인 Bus에서는 물리적 전송선의 양 끝단에 배치합니다.
62.5 RS-485의 최대 장비 수가 고정되지 않은 이유는 무엇인가#
Transceiver의 Unit Load와 Cable·Topology·Protocol 등 시스템 조건에 따라 달라지기 때문입니다.
63장 이 글을 마치며#
2-Wire RS-485의 핵심은 단순합니다.
A
B라는 하나의 Differential Pair를 여러 장비가 함께 사용합니다.
그래서:
한 장비 송신
↓
다른 장비 수신
↓
송신 종료
↓
다른 장비 응답이라는 Half Duplex 방식이 일반적으로 사용됩니다.
하지만 실제 산업 시스템을 만들려면 두 선보다 훨씬 많은 것을 생각해야 합니다.
A/B
↓
Topology
↓
Termination
↓
Bias
↓
Ground
↓
Driver Enable
↓
Baud Rate
↓
Address
↓
Protocol
↓
Timeout
↓
Retry가 모두 하나의 통신 시스템을 구성합니다.
특히 다음 다섯 가지를 기억하면 됩니다.
2-Wire RS-485는 하나의 Differential Pair를 송신과 수신에 공유하는 Half Duplex 구성이 일반적입니다.
RS-485는 여러 Transceiver가 하나의 Bus를 공유할 수 있지만 어느 장비가 언제 송신하는지는 상위 Protocol이 관리해야 합니다.
Device Address, Master/Slave, CRC 같은 개념은 RS-485 자체가 아니라 상위 Protocol에서 정의합니다.
Termination과 Bias는 많을수록 좋은 것이 아니라 Bus 전체 구조에 맞춰 설계해야 합니다.
RS-485에서 통신이 안 될 때는 A/B만 보지 말고 Physical Layer부터 Address·Protocol·Timing까지 순서대로 확인해야 합니다.
RS-485를 이해한다는 것은 단순히:
A와 B 두 선으로
여러 장비를 연결한다.고 외우는 것이 아닙니다.
같은 두 선을 여러 장비가 어떻게 공유하고, 누가 언제 송신하며, Bus가 아무도 말하지 않을 때 어떤 상태를 유지하는지를 이해하는 것이 핵심입니다.