로봇 구성 요소 간 통신 프로토콜
📌 개요
- 로봇 = 센서·제어기·모터 드라이버·상위 컴퓨터가 서로 데이터를 주고받아야 움직이는 분산 시스템, 그 대화의 규칙이 통신 프로토콜(Communication Protocol)
- 어떤 버스를 고르느냐가 배선·실시간성·확장성을 결정 → 미들웨어 사양 분석의 핵심 항목
- 반복 출제: UART·SPI·I2C 비교, RS-232/RS-485 차이, CAN 중재 방식(ID가 작을수록 우선), EtherCAT 실시간 동기, TCP/UDP 비교
📖 핵심 개념
통신 프로토콜이란
- 프로토콜 = 통신 당사자끼리 미리 정해 둔 약속의 집합 — 전기 신호의 수준, 데이터의 묶음 형식(프레임), 오류를 확인하는 방법, 주고받는 절차까지
- 약속이 하나라도 다르면(예: UART의 통신 속도) 대화가 성립하지 않음
통신의 기본 분류 — 용어부터
- 직렬(Serial) vs 병렬(Parallel): 한 가닥으로 비트를 차례로 vs 여러 가닥으로 동시에. 현대 통신은 대부분 직렬
- 동기식(Synchronous) vs 비동기식(Asynchronous): 클록 신호를 공유하며 맞춰 보내는가(SPI, I2C), 클록 없이 약속된 속도(보레이트)와 시작·정지 비트로 맞추는가(UART)
- 전이중(Full-duplex) vs 반이중(Half-duplex): 동시에 양방향 가능 vs 한 번에 한 방향
- 1:1 vs 멀티드롭(버스): 두 장치 전용선 vs 하나의 버스에 여러 장치
- 마스터-슬레이브 vs 멀티마스터: 한쪽이 주도권을 갖는가, 누구든 먼저 말할 수 있는가
OSI 7계층 — 통신을 이해하는 지도
-
OSI 7계층 = 통신 기능을 7개 층으로 나눈 표준 모델
-
순서만 기억: 물리 → 데이터링크 → 네트워크 → 전송 → 세션 → 표현 → 응용
-
필드버스(CAN 등)는 주로 물리 + 데이터링크 계층을 정의
-
TCP/UDP는 전송 계층, IP는 네트워크 계층
-
CANopen 같은 상위 프로파일이 응용 계층 역할을 얹는다
기판 위 근거리 3형제 — UART, SPI, I2C
MCU와 센서·모듈 사이의 짧은 거리 통신이다 (→ 로봇센서 인터페이스).
| 구분 | UART | SPI | I2C |
|---|---|---|---|
| 신호선 | 2 (TX, RX) | 4 (MOSI, MISO, SCK, SS) | 2 (SDA, SCL) |
| 동기 방식 | 비동기 (보레이트 약속) | 동기 (클록 공유) | 동기 (클록 공유) |
| 연결 형태 | 1:1 | 마스터-슬레이브, 슬레이브마다 SS(CS)선 필요 | 마스터-슬레이브, 주소로 구분해 2선에 여러 장치 |
| 속도 | 낮음~중간 | 고속 (수십 Mbps급) | 중간 (표준 100k, 고속 수 Mbps) |
| 특징 | 가장 간단, 디버그 로그 단골 | 전이중, 고속 센서(IMU 등) | 배선 최소, 풀업 저항 필요 |
장치 간 버스 — RS-232, RS-485, CAN
| 구분 | RS-232 | RS-485 | CAN |
|---|---|---|---|
| 신호 | 싱글엔드 | 차동(Differential) | 차동 |
| 연결 | 1:1 | 멀티드롭 (표준 최대 32노드) | 멀티드롭 · 멀티마스터 |
| 거리 | ~15 m | ~1.2 km | ~수백 m (속도에 반비례) |
| 노이즈 내성 | 약함 | 강함 | 강함 |
- 차동 2선(CAN_H/CAN_L) + 양단 종단저항, 노이즈에 강함
- 멀티마스터: 어느 노드든 먼저 송신 시도 가능
- 비파괴 비트 중재(Arbitration): 동시에 송신하면 ID가 작은(우선순위 높은) 메시지가 이기고, 진 쪽은 데이터 손상 없이 물러났다가 재시도 — 급한 메시지(비상정지)에 작은 ID를 배정한다
- 클래식 CAN의 데이터는 프레임당 최대 8바이트, 속도 최대 1 Mbps (CAN FD는 64바이트로 확장)
- CRC 기반의 강력한 오류 검출 + 자동 재전송
- 모터 드라이버 통신의 사실상 표준이며, 응용 프로파일로 CANopen이 널리 쓰인다 (→ 로봇 액추에이터 펌웨어 설계)
실시간 이더넷 — EtherCAT
-
일반 이더넷은 빠르지만 스위치 지연·충돌 때문에 "정확히 언제 도착하는가"를 보장하지 못함
-
다축 로봇의 모션 동기에는 산업용 실시간 이더넷을 씀
-
EtherCAT: 마스터가 보낸 하나의 프레임이 슬레이브들을 차례로 통과하면서 각자 자기 데이터를 읽고 써넣는(processing on the fly) 구조 — 왕복 없이 한 바퀴로 전체 축과 통신해 매우 효율적
-
분산 클록(Distributed Clock): 슬레이브들의 시계를 µs 이하로 정렬해 여러 축이 같은 순간에 동작 — 다관절 로봇 보간 주행의 필수 조건
-
그 외 이름만: EtherNet/IP, PROFINET 등
상위 네트워크 — TCP vs UDP
상위 제어기·서버·원격 UI 사이는 이더넷/무선 위의 TCP/IP를 쓴다.
| 구분 | TCP | UDP |
|---|---|---|
| 연결 | 연결지향 (핸드셰이크) | 비연결 |
| 신뢰성 | 재전송·순서 보장 | 없음 (유실 가능) |
| 지연·오버헤드 | 상대적으로 큼 | 작음 |
| 용도 | 명령·파일·설정 (빠짐없이) | 영상 스트리밍·주기 상태 (최신값 우선) |
- 영상처럼 "늦은 재전송보다 다음 최신 프레임이 나은" 데이터는 UDP가 적합
- ROS 2의 기반인 DDS도 UDP 위에 신뢰성 QoS를 선택적으로 얹는 방식 (→ 로봇 미들웨어 구조 설계)
오류 검출 — 깨진 데이터를 걸러내는 장치
- 패리티 비트(Parity): 1의 개수를 홀/짝으로 맞춤 — 1비트 오류만 검출, 가장 단순
- 체크섬(Checksum): 데이터 합을 함께 전송
- CRC(Cyclic Redundancy Check): 다항식 나눗셈 기반 — 연속(버스트) 오류까지 잡는 강력한 방식. CAN·이더넷이 사용
- 그 위에 타임아웃·재전송, 시퀀스 번호로 유실·중복·순서를 관리한다 (프레임 설계는 통신 프로토콜 설계)
📊 다이어그램 · 수식
로봇 내부·외부 통신 계층
flowchart TD
SRV["서버 · 원격 UI"] -- "이더넷/무선 (TCP·UDP)" --> PC["상위 제어기
(Linux + 미들웨어)"]
PC -- "필드버스 (CAN · EtherCAT)" --> MC1["모터 드라이버 1"]
PC -- "필드버스" --> MC2["모터 드라이버 n"]
PC -- "USB · 이더넷" --> LID["LiDAR · 카메라"]
subgraph MB["하위 제어 보드 내부"]
M["MCU"] -- "SPI · I2C · UART" --> S["IMU · 소형 센서"]
end
PC -- "UART/CAN" --> MCAN 비트 중재의 원리
동시에 송신을 시작하면 ID를 한 비트씩 비교하며, 우성(dominant, 0) 비트를 보낸 쪽이 버스를 차지한다:
→ ID 숫자가 작을수록 우선순위가 높다. 패배한 노드는 전송을 중단하고 버스가 비면 재시도하므로 데이터가 깨지지 않는다(비파괴 중재).
🎯 핵심 요약 · 암기 포인트
✏️ 예상문제
1. CAN 버스에 대한 설명으로 옳지 않은 것은?
① 차동 2선 방식이라 노이즈에 강하다 ② 어느 노드든 먼저 송신을 시도할 수 있는 멀티마스터 방식이다 ③ 식별자(ID) 값이 클수록 메시지의 우선순위가 높다 ④ 동시 송신이 충돌해도 데이터가 손상되지 않는 비파괴 중재를 사용한다
정답 및 해설
정답: ③ CAN의 중재는 우성 비트(0)가 이기는 구조라서 ID 값이 작을수록 우선순위가 높다. 그래서 비상정지처럼 급한 메시지에 작은 ID를 배정한다. ①②④는 모두 CAN의 핵심 특징이다.
2. 차동 신호를 사용하여 노이즈에 강하고, 하나의 버스에 여러 장치를 멀티드롭으로 연결해 약 1.2 km까지 통신할 수 있는 직렬 통신 규격은?
① RS-232 ② RS-485 ③ SPI ④ I2C
정답 및 해설
정답: ② RS-485의 특징 그대로다. RS-232는 싱글엔드 1:1로 십수 m가 한계이고, SPI·I2C는 기판 위 근거리 통신이다.
3. 원격 모니터링용 카메라 영상 스트리밍에 TCP 대신 UDP를 사용하는 주된 이유는?
① 재전송 지연 없이 낮은 지연으로 최신 프레임을 계속 보낼 수 있어서 ② 데이터가 절대 유실되지 않아서 ③ 연결 설정(핸드셰이크)이 반드시 필요해서 ④ 패킷의 도착 순서가 항상 보장되어서
정답 및 해설
정답: ① 영상은 한 프레임이 늦게 재전송되어 오는 것보다 그냥 버리고 다음 최신 프레임을 받는 편이 낫다. UDP는 재전송·순서 보장이 없는 대신 지연이 작아 이런 실시간 스트림에 적합하다. ②③④는 TCP의 특징이다.
4. EtherCAT이 다관절 로봇의 여러 축을 마이크로초 수준으로 동시에 움직일 수 있게 하는 핵심 기술은?
① 패리티 비트 ② 보레이트 자동 협상 ③ 풀업 저항 ④ 분산 클록(Distributed Clock)
정답 및 해설
정답: ④ EtherCAT은 슬레이브들의 시계를 분산 클록으로 정밀하게 정렬해 모든 축이 같은 순간에 지령을 적용하게 한다. 여기에 프레임이 슬레이브를 통과하며 데이터를 읽고 쓰는(processing on the fly) 구조로 높은 효율을 얻는다.
5. 두 가닥의 선(SDA, SCL)만으로 여러 슬레이브 장치를 주소로 구분하여 연결하는 동기식 직렬 통신은?
① UART ② SPI ③ I2C ④ RS-232
정답 및 해설
정답: ③ I2C는 데이터(SDA)·클록(SCL) 2선 버스에 장치 주소로 슬레이브를 구분하므로 배선이 최소화된다. SPI는 빠르지만 슬레이브마다 선택(SS)선이 따로 필요하고, UART는 비동기 1:1 통신이다.
🔗 관련 노트
- 로봇 소프트웨어 운영체제 — 통신으로 연결되는 상·하위 제어기 구성
- 로봇 미들웨어 구조 설계 — 이 통신 위에 얹히는 미들웨어(DDS 등)
- 로봇 액추에이터 펌웨어 설계 — CAN 기반 모터 제어기 통신 설계
- 로봇센서 인터페이스 — 센서 쪽에서 본 UART·SPI·I2C
- 통신 프로토콜 설계 — 프레임·프로토콜을 직접 설계하는 방법
- _MOC 로봇소프트웨어구조설계