RS-232는 왜 지금도 산업 장비에서 사용되는가
RS-232는 왜 지금도 산업 장비에서 사용되는가#
1장 오래된 RS-232가 아직도 사라지지 않은 이유#
1.1 최신 장비에서도 발견되는 오래된 포트#
산업 장비나 제어기 뒤쪽을 살펴보면 다음과 같은 커넥터를 발견할 때가 있습니다.
DB9또는 장비 매뉴얼에서:
RS-232
Serial
COM Port라는 표현을 볼 수 있습니다.
RS-232는 매우 오래된 통신 방식이지만 지금도 다음과 같은 곳에서 발견할 수 있습니다.
산업용 Controller
계측기
Barcode Reader
RFID Reader
출입통제 장비
PLC 주변 장비
Network 장비 Console
주차관제 장비
Legacy 시스템이유는 단순합니다.
복잡한 Network가 필요하지 않고 두 장비 사이에서 소량의 명령과 데이터를 주고받는 용도라면 RS-232로도 충분한 경우가 많기 때문입니다.
1.2 RS-232가 오래 살아남은 이유#
RS-232의 강점은 최신 기술이라는 데 있지 않습니다.
오히려 다음과 같은 특성 때문입니다.
구조가 단순하다.
구현이 쉽다.
장비 비용이 낮다.
오랫동안 사용되어 관련 장비가 많다.
Debug와 설정용 Interface로 사용하기 편하다.
기존 산업 장비와의 호환성을 유지하기 쉽다.산업 현장에서는 항상 최신 기술을 사용하는 것이 최선인 것은 아닙니다.
이미 안정적으로 동작하는 장비를 굳이 교체하지 않는 경우도 많기 때문에 RS-232는 오랫동안 살아남았습니다.
2장 RS-232는 무엇인가#
2.1 직렬 방식으로 데이터를 전달한다#
RS-232는 데이터를 한 번에 여러 Bit씩 보내는 병렬 방식이 아니라 Bit를 순서대로 전달하는 직렬 통신 Interface입니다.
개념적으로:
1
↓
0
↓
1
↓
1
↓
0처럼 데이터가 시간 순서대로 전달됩니다.
실제 Application에서는 Byte 단위 데이터를 사용하더라도 전송선에서는 Bit Stream으로 전달됩니다.
2.2 주로 두 장비를 직접 연결한다#
RS-232의 대표적인 사용 형태는 Point-to-Point입니다.
장비 A
│
│ RS-232
│
장비 B예:
PC
↕
Barcode Reader또는:
Controller
↕
RFID Reader같은 형태입니다.
여러 장비를 하나의 Bus에 연결하는 RS-485와는 기본적인 사용 방식이 다릅니다.
3장 RS-232에서 가장 중요한 세 선#
기본적인 RS-232 통신을 이해하려면 우선 세 가지를 알면 됩니다.
TxD
RxD
GND3.1 TxD#
TxD는 Transmit Data입니다.
자신이 상대방에게 데이터를 보내는 선입니다.
장비 A TxD
↓
↓
장비 B RxD3.2 RxD#
RxD는 Receive Data입니다.
상대방이 보낸 데이터를 받는 선입니다.
장비 A RxD
↑
↑
장비 B TxD3.3 GND#
GND는 두 장비가 신호 전압을 판단하기 위한 기준이 됩니다.
기본적인 3선 통신은 다음과 같습니다.
장비 A 장비 B
TxD ─────────────────→ RxD
RxD ←───────────────── TxD
GND ────────────────── GND현장에서 RS-232가 동작하지 않는 경우 가장 먼저 확인하는 것이 이 세 선입니다.
4장 Tx와 Rx를 왜 교차해야 할까#
4.1 송신선은 상대의 수신선으로 들어가야 한다#
두 장비가 통신하려면:
Tx → Tx가 아니라:
Tx → Rx가 되어야 합니다.
따라서 일반적인 관계는:
A Tx → B Rx
A Rx ← B Tx입니다.
4.2 그런데 항상 같은 케이블을 사용하는 것은 아니다#
RS-232에서는 DTE와 DCE라는 장비 역할 개념이 있습니다.
대표적으로 전통적인 구분에서는:
DTE
Data Terminal Equipment
DCE
Data Communication Equipment로 나눕니다.
어떤 역할의 장비끼리 연결하느냐에 따라 Straight Cable이나 Tx/Rx가 교차된 Null-Modem 구성이 필요할 수 있습니다.
따라서 현장에서:
RS-232니까 2번과 3번만 교차하면 된다.라고 무조건 판단하면 안 됩니다.
장비 매뉴얼의 Pinout과 DTE·DCE 구분을 먼저 확인하는 것이 가장 안전합니다.
5장 DB9 커넥터와 Pinout#
5.1 RS-232에서 자주 보는 DB9#
현대의 RS-232 장비에서는 DB9 형태의 커넥터를 자주 볼 수 있습니다.
전통적인 PC 계열 DTE의 DB9 Pinout에서는 대표적으로:
2번
RxD
3번
TxD
5번
GND가 사용됩니다.
하지만 산업 장비에서는 제조사가 별도의 Pinout을 적용하는 경우가 있기 때문에 커넥터 모양만 보고 판단해서는 안 됩니다.
5.2 같은 DB9라고 같은 통신은 아니다#
매우 중요한 원칙입니다.
DB9
=
RS-232라고 단정할 수 없습니다.
같은 커넥터를 사용하면서:
RS-232
RS-422
RS-485
제조사 전용 Interface를 사용하는 장비도 존재할 수 있습니다.
따라서:
Connector 모양 확인
↓
장비 Label 확인
↓
Manual 확인
↓
Pinout 확인
↓
전기적 Interface 확인순서로 보는 것이 좋습니다.
6장 RS-232는 전압으로 0과 1을 표현한다#
6.1 일반적인 TTL Serial과 전압 체계가 다르다#
초보자가 자주 하는 실수 중 하나는:
UART
=
RS-232라고 생각하는 것입니다.
UART는 직렬 데이터를 구성하고 Timing하는 기능이고, RS-232는 전기적 Interface 특성을 정의합니다.
따라서 MCU의 TTL UART 신호를 RS-232 장비에 바로 연결해서는 안 되는 경우가 많습니다.
중간에 RS-232 Transceiver가 필요할 수 있습니다.
6.2 RS-232의 전압 방향#
RS-232에서는 일반적인 Digital Logic에서 익숙한:
0V = 0
5V = 1과는 다른 전압 체계를 사용합니다.
일반적으로 수신기 관점에서:
-3V 이하
→ Mark 영역
+3V 이상
→ Space 영역으로 구분하며, -3V와 +3V 사이 영역은 명확한 논리 상태로 보장되는 영역이 아닙니다.
실제 송신기의 출력 전압 범위와 구현은 장비에 따라 달라질 수 있습니다.
6.3 왜 음전압을 사용할까#
RS-232는 초기 전자통신 환경에서 비교적 안정적으로 신호를 구분할 수 있도록 이러한 전압 방식을 사용했습니다.
하지만 Single-Ended 방식이기 때문에 긴 거리나 전기적 Noise가 많은 환경에서는 RS-422·RS-485의 Differential 방식보다 불리할 수 있습니다.
7장 9600-8-N-1은 무엇을 의미할까#
산업 장비 매뉴얼에서 다음과 같은 표현을 매우 자주 볼 수 있습니다.
9600-8-N-1이를 나누면:
9600
Baud Rate
8
Data Bit
N
No Parity
1
Stop Bit입니다.
7.1 두 장비의 설정이 맞아야 한다#
장비 A:
9600
8
N
1장비 B:
19200
8
N
1이라면 정상적인 데이터 해석이 어렵습니다.
마찬가지로:
9600-8-N-1과:
9600-7-E-1도 서로 다른 설정입니다.
따라서 통신 장애가 발생하면 다음 네 가지를 함께 비교합니다.
Baud Rate
Data Bits
Parity
Stop Bits8장 Baud Rate와 Bit Rate는 같은 말일까#
Baud Rate는 초당 Symbol 수를 의미합니다.
Bit Rate는 초당 전달되는 Bit 수를 의미합니다.
따라서 개념적으로:
Baud Rate
≠
Bit Rate입니다.
다만 일반적인 Binary UART 기반 RS-232 환경에서는 한 Symbol이 한 Bit 상태를 나타내는 경우가 많아 숫자가 같게 보일 수 있습니다.
예:
9600 baud환경에서 Line 상의 Bit Timing도 9600 bit/s에 대응하는 방식으로 동작하는 경우가 일반적입니다.
하지만 Start Bit, Stop Bit, Parity 등이 포함되므로 실제 유효 Data Payload 처리량은 9600 Byte/s가 아닙니다.
9장 Start Bit와 Stop Bit는 왜 필요할까#
RS-232에서 흔히 사용하는 UART 기반 비동기 통신에서는 송신 측과 수신 측이 지속적인 Clock Line을 공유하지 않습니다.
따라서 하나의 Character가 시작되는 위치를 알아야 합니다.
예를 들어 8-N-1 구성은 개념적으로:
Start
↓
D0
D1
D2
D3
D4
D5
D6
D7
↓
Stop형태가 됩니다.
한 Byte의 Data를 보내기 위해 실제 Line에서는 Start와 Stop Bit까지 포함한 더 많은 Bit가 전송됩니다.
10장 흐름 제어는 왜 필요한가#
송신 장비가 너무 빠르게 데이터를 보내는데 수신 장비가 처리하지 못하면 Data 손실이 발생할 수 있습니다.
이를 관리하기 위해 Flow Control을 사용할 수 있습니다.
10.1 Hardware Flow Control#
대표적으로:
RTS
CTS를 사용합니다.
RTS는 Request To Send, CTS는 Clear To Send를 의미합니다.
장비 구성에 따라 이 신호를 이용해 Data 송수신 가능 상태를 조절합니다.
10.2 Software Flow Control#
대표적인 방식은:
XON
XOFF입니다.
제어 문자를 Data Stream 안에 넣어 송신을 일시 중지하거나 다시 시작하도록 요청합니다.
10.3 흐름 제어가 없는 장비도 많다#
간단한 산업 장비에서는:
Flow Control
None을 사용하는 경우도 많습니다.
특히 짧은 Command와 Response만 주고받는 시스템에서는 별도의 Flow Control을 사용하지 않는 경우가 있습니다.
어떤 방식을 사용하는지는 반드시 장비 Manual을 확인해야 합니다.
11장 RS-232의 통신 거리는 왜 짧은가#
11.1 무조건 몇 m라고 외우면 안 된다#
RS-232에서는 흔히 약 15m라는 숫자가 언급됩니다.
하지만 실제 통신 가능 거리는 하나의 숫자로 결정되지 않습니다.
다음 조건의 영향을 받습니다.
Baud Rate
Cable 품질
Cable Capacitance
주변 Noise
Ground 상태
장비 출력 특성
Receiver 특성따라서:
RS-232
=
15m까지 무조건 정상이라고 이해하면 안 됩니다.
11.2 거리가 길어질수록 문제가 커질 수 있다#
Cable이 길어지면:
Signal 왜곡
Noise 영향
전압 Margin 감소
Timing 문제가 커질 수 있습니다.
장거리 환경이라면 RS-422나 RS-485 같은 Differential Interface를 검토하는 이유가 여기에 있습니다.
12장 RS-232와 RS-485는 무엇이 다른가#
대표적인 차이를 단순화하면 다음과 같습니다.
| 항목 | RS-232 | RS-485 |
|---|---|---|
| 기본 연결 | Point-to-Point | Multi-drop 가능 |
| 신호 방식 | Single-Ended | Differential |
| 일반적 거리 | 비교적 짧음 | 장거리 구성에 유리 |
| Noise 내성 | 상대적으로 불리 | 상대적으로 유리 |
| 배선 | Tx·Rx·GND 중심 | A·B 중심의 2선식 또는 4선식 구성 가능 |
| 산업 현장 | Console·설정·단순 장비 연결 | 다수 장비·장거리 Field 통신 |
따라서 다음과 같은 환경에서는 RS-485가 더 적합할 수 있습니다.
장비가 여러 대
통신 거리가 김
전기적 Noise가 많음
하나의 Bus로 여러 장비 연결반대로:
두 장비만 연결
거리가 짧음
구조가 단순함
기존 장비가 RS-232만 지원한다면 RS-232가 여전히 실용적일 수 있습니다.
13장 산업 현장에서 RS-232는 어떻게 사용될까#
13.1 장비 설정용 Console#
RS-232가 가장 오래 살아남은 분야 중 하나입니다.
PC
↓
RS-232
↓
산업 장비를 연결해 다음 작업을 수행할 수 있습니다.
초기 설정
상태 확인
Firmware 관리
Debug
Log 확인13.2 Reader와 Controller 연결#
예를 들어:
Barcode Reader
RFID Reader
계측 장비
출입통제 Reader등이 Controller와 RS-232로 연결될 수 있습니다.
주고받는 데이터량이 크지 않기 때문에 오래된 장비에서는 RS-232로도 충분한 경우가 있습니다.
13.3 주차관제 장비#
주차관제 분야에서도 기존 장비에서 다음과 같은 형태를 만날 수 있습니다.
주차권 발행기
RFID Reader
Controller
정산 주변장치
설정 Console최근 시스템에서는 Ethernet이나 RS-485, 각종 Gateway를 사용하는 경우도 많지만 기존 설치 장비와의 호환성 때문에 RS-232가 남아 있을 수 있습니다.
14장 RS-232 위에는 별도의 Protocol이 올라간다#
중요한 점이 있습니다.
RS-232 자체는 업무 명령의 의미를 정의하지 않습니다.
RS-232는 전기적으로 데이터를 어떻게 전달할 것인지에 가까운 Interface입니다.
실제 장비가 사용하는 Data 구조는 제조사가 별도로 정의할 수 있습니다.
예:
STX
↓
CMD
↓
DATA
↓
Checksum
↓
ETX또는 단순한 ASCII Command:
STATUS\r\n같은 구조를 사용할 수도 있습니다.
따라서:
RS-232를 안다
=
장비 Protocol을 안다는 아닙니다.
15장 RS-232 장애를 만났을 때 어디부터 볼까#
장비가 응답하지 않는다고 가정합니다.
무작정 Application Code부터 수정하지 않습니다.
다음 순서로 확인할 수 있습니다.
15.1 Interface 확인#
정말 RS-232인가?
TTL UART인가?
RS-422인가?
RS-485인가?15.2 Pinout 확인#
Tx
Rx
GND
RTS
CTS를 확인합니다.
15.3 DTE·DCE 확인#
Straight Cable인지 Null-Modem 형태인지 확인합니다.
15.4 Serial 설정 확인#
Baud Rate
Data Bits
Parity
Stop Bits
Flow Control을 양쪽에서 비교합니다.
15.5 실제 데이터 송수신 확인#
가능하다면 Serial Analyzer, Oscilloscope 또는 적절한 측정 장비로 신호와 Data를 확인합니다.
송신 자체가 없는가?
송신은 하지만 상대가 받지 않는가?
상대는 응답하지만 내가 못 받는가?
Byte는 들어오지만 내용이 깨지는가?를 구분합니다.
16장 증상별로 원인을 좁혀보자#
| 증상 | 우선 확인 |
|---|---|
| 완전히 무응답 | Port·Pinout·Tx/Rx·GND |
| 양쪽 모두 송신만 함 | Tx/Rx 배선 |
| 글자가 깨짐 | Baud·Data Bit·Parity·Stop Bit |
| 일부만 수신 | Flow Control·Buffer·Protocol |
| 가까우면 정상, 멀면 불안정 | Cable·Noise·거리 |
| 특정 장비만 안 됨 | Pinout·DTE/DCE·장비 설정 |
| 송수신은 되지만 명령 실패 | 상위 Protocol·Packet 구조 |
이 표에서 중요한 것은 물리적 통신과 Protocol 문제를 구분하는 것입니다.
17장 간단한 Python 통신 예제#
시험 환경에서 pySerial을 사용하면 Serial Port 통신을 실습할 수 있습니다.
import serial
ser = serial.Serial(
port="/dev/ttyS0",
baudrate=9600,
bytesize=8,
parity="N",
stopbits=1,
timeout=1
)
ser.write(b"HELLO")
response = ser.read(5)
print(response)
ser.close()여기서:
baudrate=9600
bytesize=8
parity=N
stopbits=1은 흔히 말하는:
9600-8-N-1설정입니다.
하지만 실제 장비에서:
HELLO라는 문자열이 유효한 명령이라는 뜻은 아닙니다.
실제 Packet Format은 반드시 장비 Protocol 문서를 따라야 합니다.
18장 보안도 생각해야 한다#
RS-232는 자체적으로 다음 기능을 제공하지 않습니다.
암호화
사용자 인증
상대 장비 인증
접근 권한 관리물리적으로 Serial Port에 접근할 수 있다면 장비 Command나 Data를 읽거나 전송할 수 있는 시스템도 존재할 수 있습니다.
따라서 중요한 시스템에서는 다음을 함께 고려해야 합니다.
장비 물리 접근 통제
제어반 잠금
Maintenance Port 관리
Gateway 인증
운영 권한 관리
통신 Log 관리단순히 RS-232 구간을 Serial-over-TCP로 변환한다고 자동으로 보안이 생기는 것도 아닙니다.
Gateway 자체의 인증·암호화·접근제어 기능을 함께 확인해야 합니다.
19장 현장에 가기 전 확인할 체크리스트#
RS-232 장비를 처음 연결한다면 최소한 다음 정보를 준비합니다.
장비 Model
통신 Interface
Connector
Pinout
DTE / DCE
Baud Rate
Data Bits
Parity
Stop Bits
Flow Control
Protocol Format그리고 현장에서 다음 질문을 순서대로 던집니다.
정말 RS-232인가?
↓
Connector Pinout은 무엇인가?
↓
Tx와 Rx 관계는 맞는가?
↓
GND는 연결되어 있는가?
↓
Serial 설정은 같은가?
↓
Flow Control은 맞는가?
↓
실제 Byte가 송신되는가?
↓
상대가 응답하는가?
↓
상위 Protocol Format은 맞는가?이 순서대로 확인하면 장애 영역을 빠르게 좁힐 수 있습니다.
20장 자기 점검#
20.1 RS-232에서 가장 기본적인 세 신호는 무엇인가#
TxD
RxD
GND입니다.
20.2 같은 DB9 커넥터라면 모두 RS-232인가#
아닙니다.
커넥터 모양과 전기적 Interface는 별개의 문제입니다. 반드시 장비 Manual과 Pinout을 확인해야 합니다.
20.3 9600-8-N-1은 무엇을 의미하는가#
일반적으로:
9600 Baud
8 Data Bits
No Parity
1 Stop Bit를 의미합니다.
20.4 글자가 깨져 들어오면 무엇을 먼저 확인할까#
두 장비의:
Baud Rate
Data Bits
Parity
Stop Bits설정을 비교합니다.
20.5 RS-232와 RS-485의 가장 큰 차이는 무엇인가#
RS-232는 주로 Point-to-Point의 Single-Ended 통신에 사용되고, RS-485는 Differential 신호와 Multi-drop 구성이 가능해 장거리·다중 장비 환경에 더 적합합니다.
21장 이 글을 마치며#
RS-232는 오래된 기술입니다.
하지만 오래됐다는 이유만으로 쓸모없는 기술은 아닙니다.
산업 현장에서는 아직도:
Controller
Reader
계측기
Console
Legacy Device등에서 RS-232를 만날 수 있습니다.
RS-232를 이해할 때 가장 먼저 기억해야 할 구조는:
Tx
↓
Rx
Rx
↑
Tx
GND
↔
GND입니다.
그리고 실제 통신에는:
Physical Interface
↓
Pinout
↓
Serial Setting
↓
Byte Stream
↓
Device Protocol이라는 여러 층이 존재합니다.
따라서 장비가 응답하지 않는다고 해서 곧바로 Program이나 Protocol 문제라고 판단해서는 안 됩니다.
먼저:
RS-232 Interface가 맞는가?
↓
배선이 맞는가?
↓
전기적 신호가 존재하는가?
↓
9600-8-N-1 같은 설정이 맞는가?
↓
실제 Byte가 전달되는가?
↓
Protocol이 맞는가?를 순서대로 확인해야 합니다.
특히 다음 네 가지를 기억하면 됩니다.
RS-232는 단순히 DB9 커넥터의 이름이 아니라 전기적 Serial Interface 표준입니다.
UART와 RS-232는 같은 개념이 아니며, RS-232는 별도의 전압 특성을 사용합니다.
두 장비의 Baud Rate·Data Bit·Parity·Stop Bit 설정이 일치해야 데이터를 올바르게 해석할 수 있습니다.
RS-232가 데이터를 전달해도 그 위에서 사용하는 장비 Protocol은 제조사마다 다를 수 있습니다.
RS-232를 제대로 이해한다는 것은 오래된 규격 하나를 외우는 것이 아니라, 물리적인 선과 전압이 어떻게 Byte Stream으로 이어지고 다시 장비 명령으로 해석되는지 연결해서 이해하는 것입니다.