개요
시리얼 통신은 데이터를 한 번에 한 비트씩 순차적으로 전송하는 통신 방식을 의미한다.
데이터를 직렬로, 즉 하나의 선로를 통해 비트 단위로 순서대로 전송한다. 이는 여러 비트를 동시에 전송하는 병렬(패러럴) 통신과 대비되는 개념이다.
8비트 데이터 'A'(01000001)를 전송할 때 0→1→0→0→0→0→0→1 순서로 한 비트씩 순차적으로 선 하나로 시간차를 두고 전송한다.
보통 2~4개의 적은 수의 전선이 필요하며, 장거리 통신에 적합하다. 전자기 가섭에 상대적으로 강하며 구현이 간단하고 비용이 저렴하다는 장점이 있다.
반면 병렬 통신보다 속도가 느리며, 데이터 동기화가 필요하다는 단점이 있다.
시리얼 통신은 임베디드 시스템, 산업 자동화, 센서 네트워크, 디버깅 및 로깅, GPS 수신기, 모뎀 통신 등 다양한 분야에서 광범위하게 사용된다.
특히 Arduino, Raspberry Pi 같은 개발 보드에서는 시리얼 통신을 통해 컴퓨터와 데이터를 주고받거나 센서 값을 모니터링하는 용도로 자주 활용된다.
통신 방식
전송 모드는 동기식과 비동기식으로 구분되어진다.
- 동기식 : 별도의 클럭 신호를 사용하여 송신자와 수신자가 동일한 타이밍으로 데이터를 주고 받는다.
- 비동기식 : 클럭 신호 없이 시작 비트와 정지 비트를 사용하여 데이터의 시작과 끝을 알린다. UART가 대표적 예이다.
동기식은 효율적이지만 복잡하며, 비동기식은 불규칙한 데이터 전송 시 주로 사용되며 구현이 간단하여 널리 사용된다.
데이터 흐름 방향
단방향, 양방향에과 동시성에 따라 구분되어진다.
1. 단방향 (Simplex)
- 한쪽 방향으로만 전송
- 예: 방송, 센서 데이터
2. 반이중 (Half-Duplex)
- 양방향이지만 동시 전송 불가
- 예: 무전기, RS-485
3. 전이중 (Full-Duplex)
- 양방향 동시 전송 가능
- 예: 전화, RS-232
주요 파라미터
- 보드율 : 초당 전송되는 심볼 수를 의미한다, 일반적으로 9600, 19200, 38400, 115200 등이 사용된다.
- 데이터 비트 : 실제 데이터 비트수로 보통 7비트 혹은 8비트이다.
- 패리티 비트 : 오류 검출을 위한 비트 (None, Even, Odd)
- 정지 비트 : 데이터 전송의 끝을 알리는 비트 (1 또는 2비트)
주요 표준 및 인터페이스
- RS-232: 가장 일반적인 시리얼 통신 표준으로, ±12V 전압 레벨을 사용한다.
- RS-485: 차동 신호를 사용하여 노이즈에 강하고 장거리 통신이 가능하다.
- USB: 현대적인 시리얼 통신 방식으로 플러그 앤 플레이를 지원한다.
- SPI/I2C: 마이크로컨트롤러와 주변 장치 간 통신에 사용되는 시리얼 프로토콜이다.
RS-232 통신 규칙
1. 물리적 특성
- 전압 레벨: 논리 0(SPACE) = +3V ~ +15V, 논리 1(MARK) = -3V ~ -15V
- 최대 전송 거리: 약 15m
- 최대 전송 속도: 115.2kbps (일반적으로 9600bps 사용)
- 연결 방식: 점대점(Point-to-Point) 연결만 가능
2. 신호선 구성
- TxD (Transmit Data): 데이터 송신
- RxD (Receive Data): 데이터 수신
- RTS (Request to Send): 송신 요청
- CTS (Clear to Send): 송신 허가
- DTR (Data Terminal Ready): 단말 준비 완료
- DSR (Data Set Ready): 데이터 세트 준비 완료
- DCD (Data Carrier Detect): 반송파 검출
- RI (Ring Indicator): 호출 신호
3. 통신 절차
- 송신 측에서 RTS 신호를 활성화
- 수신 측에서 CTS 신호로 응답
- 데이터 전송 시작
- 전송 완료 후 RTS 비활성화
통신 상태별 의미
상태 │ 전압 │ 의미
─────────────┼───────┼─────────────────
유휴 (Idle) │ -12V │ 통신 준비, 대기 중
시작비트 │ +12V │ "데이터 시작!"
데이터비트 0 │ +12V │ 이진 데이터 '0'
데이터비트 1 │ -12V │ 이진 데이터 '1'
정지비트 │ -12V │ "데이터 끝, 유휴로"
수신기의 해석
수신기가 보는 것:
1. -12V 계속 → "아직 데이터 없음, 대기"
2. +12V 감지 → "시작비트! 데이터 올 예정"
3. 이후 8비트 → "실제 데이터 수신 중"
- +12V = 0비트
- -12V = 1비트
4. -12V (정지) → "데이터 완료, 다시 대기"
RS-232 통신 규칙 예시
1. 유휴 상태 (Idle State)
전압: -12V (논리 1, MARK)
의미: 데이터 전송이 없는 평상시 상태
상태: 통신 대기 중
시간 ────────────────────────
전압 -12V (계속 MARK)
2. 데이터 전송 중
예시: 'A' (01000001) 전송
S D0 D1 D2 D3 D4 D5 D6 D7 St
+12V ┌─┐ ┌─┐
│ │ │ │ ┌─
-12V ┘ └───────────┘ └────────┘
S: 시작비트 (SPACE, 데이터 시작 알림)
D0=1: 논리1 (MARK, -12V) ← 실제 데이터
D1=0: 논리0 (SPACE, +12V) ← 실제 데이터
...계속해서 실제 데이터...
St: 정지비트 (MARK, 유휴상태 복귀)
문자 'B' (01000010) 전송
비트 구성:
- 시작비트: 0 (SPACE, +12V)
- D0: 0 (SPACE, +12V) ← 실제 데이터
- D1: 1 (MARK, -12V) ← 실제 데이터
- D2: 0 (SPACE, +12V) ← 실제 데이터
- D3: 0 (SPACE, +12V) ← 실제 데이터
- D4: 0 (SPACE, +12V) ← 실제 데이터
- D5: 0 (SPACE, +12V) ← 실제 데이터
- D6: 1 (MARK, -12V) ← 실제 데이터
- D7: 0 (SPACE, +12V) ← 실제 데이터
- 정지비트: 1 (MARK, -12V)
'AB' 전송 시:
A문자 B문자
[S|데이터|St] [S|데이터|St]
논리0이든 논리1이든 모두 실제 데이터 비트
3. 수신 상태 판단 방법
1. 유휴 감지:
- 연속된 MARK(-12V) 신호
- 정지비트 이후 계속 MARK
2. 데이터 시작 감지:
- MARK에서 SPACE로 변화
- 이것이 시작비트
3. 데이터 수신 중:
- 시작비트 후 정해진 시간 간격으로
- 8개(또는 7개) 데이터비트 샘플링
4. 데이터 완료:
- 정지비트(MARK) 감지
- 다시 유휴 상태로
RS-485 통신 규칙
1. 물리적 특성
- 전압 레벨: 차동 신호 사용 (±1.5V ~ ±6V)
- 최대 전송 거리: 1200m
- 최대 전송 속도: 10Mbps (거리에 따라 감소)
- 연결 방식: 멀티드롭(Multi-drop) 연결 지원 (최대 32개 노드)
2. 신호선 구성
- A선 (Non-inverting): 양극성 신호
- B선 (Inverting): 음극성 신호
- 차동 신호: A-B 전압 차이로 데이터 판정
- 논리 1: A > B (일반적으로 +200mV 이상)
- 논리 0: A < B (일반적으로 -200mV 이하)
3. 통신 제어
반이중(Half-Duplex) 통신
- 송신과 수신을 동시에 할 수 없음
- DE (Driver Enable) 신호로 송신 모드 제어
- 송신 시: DE = High, 수신 시: DE = Low
전이중(Full-Duplex) 통신
- 4선 방식으로 송신과 수신 동시 가능
- 송신용 A+/A-, 수신용 B+/B- 분리
4. 네트워크 구성
마스터-슬레이브 구조
- 한 번에 하나의 마스터만 송신 가능
- 슬레이브는 마스터의 요청에만 응답
- 주소 기반 통신으로 특정 노드 선택
5. 통신 프로토콜
Modbus RTU가 널리 사용됨
- 바이너리 형태의 데이터 전송
- CRC 오류 검출
- 슬레이브 주소 + 기능 코드 + 데이터 + CRC
1. 기본 프레임 (RS-232와 동일)
시작비트(1) + 데이터비트(8) + 패리티(1) + 정지비트(1)
2. Modbus RTU 프로토콜 (가장 일반적)
[슬레이브 주소][기능코드][데이터][CRC-16]
1바이트 1바이트 N바이트 2바이트
RS-485 통신 규칙 예시
1. 마스터 요청
1. 마스터: DE=HIGH (송신 모드)
2. 프레임 전송: [주소][기능][데이터][CRC]
3. 마스터: DE=LOW (수신 모드)
4. 응답 대기 (타임아웃 설정)
2. 슬레이브 응답
1. 모든 슬레이브: 프레임 수신
2. 주소 확인: 자신의 주소인지 판단
3. 해당 슬레이브만:
- CRC 검증
- 명령 처리
- DE=HIGH
- 응답 프레임 송신
- DE=LOW
3. 타이밍 다이어그램
시간: ──────────────────────────────────→
마스터 DE: ┌─────┐ ┌─────┐
│송신 │ │송신 │
───┘ └────────┘ └───
슬레이브 DE: ┌─────┐
│응답 │
───────────┘ └───────
버스 신호: [요청] [응답] [요청]
4. 주소 지정 방식
// 주소 범위: 1~247 (0은 브로드캐스트)
주소 설정 방법:
- DIP 스위치
- 소프트웨어 설정
- 점퍼 핀
// 브로드캐스트 통신
마스터 → 모든 슬레이브
[00][기능코드][데이터][CRC]
└ 브로드캐스트 주소
모든 슬레이브가 명령 실행
하지만 아무도 응답하지 않음
5. 에러 처리
// CRC 검증
송신측: 데이터에 대해 CRC-16 계산
수신측: 받은 데이터로 CRC 재계산 후 비교
CRC 에러 시:
- 슬레이브: 응답하지 않음
- 마스터: 타임아웃 후 재전송
// 타임아웃 처리
마스터의 대기 시간:
- 응답 타임아웃: 100ms~1초
- 프레임 간격: 3.5문자 시간 이상
슬레이브 무응답 시:
- 재전송 (보통 3회)
- 에러 로그 기록
- 상위 시스템에 알림
RS-232와 RS-485의 주요 차이점
1. 통신 방식
RS-232: 점대점, 항상 송수신 가능
RS-485: 멀티포인트, 송신권 제어 필요
RS-232: 즉시 데이터 전송 가능
RS-485: 마스터의 요청에만 응답
2. 프로토콜 복잡도
RS-232: 물리계층만 정의, 단순
RS-485: 물리계층 + 상위 프로토콜 필요
RS-232: 바이트 스트림
RS-485: 구조화된 프레임 + 주소 + 에러체크
RS-485는 RS-232보다 훨씬 복잡하지만, 산업 자동화에서는 이런 구조화된 통신이 필수적이다.
'컴퓨터 과학(CS) > 네트워크' 카테고리의 다른 글
[네트워크] 캐스팅 방식 (0) | 2025.07.06 |
---|---|
[네트워크] IP 단편화(IP Fragmentation) (3) | 2025.06.06 |
[네트워크] MTU(Maximum Transmission Unit) (0) | 2025.06.06 |
[네트워크] RTT(Round Trip Time) (0) | 2025.06.06 |
네트워크 병렬 서버 로드 밸런싱 - DNS, Anycast (1) | 2024.11.26 |