본문으로 건너뛰기
Industrial Ethernet 심화 · 3/12

EtherCAT 아키텍처 분해 — Processing on the Fly 메커니즘

· Hawk · 10분 읽기

#한 줄 요약

“EtherCAT 슬레이브는 프레임을 받아 통과시키면서 자기 몫의 비트만 읽고 쓴다. 응답을 위해 멈추는 일이 없다.”on-the-fly 모델이 EtherCAT의 결정성을 만드는 핵심입니다.

EtherCAT을 처음 접할 때 가장 받아들이기 어려운 개념이 Processing on the Fly입니다. 표준 Ethernet에서는 노드가 프레임을 받아 처리한 다음 새 프레임을 만들어 보냅니다. EtherCAT은 이걸 뒤집습니다. 슬레이브는 지나가는 프레임 안에서 직접 자기 비트를 수정합니다.

이 장은 그 모델이 어떻게 동작하는지, 그것을 가능하게 하는 ESC(EtherCAT Slave Controller)의 자원(FMMU·Sync Manager·DC)이 무엇인지, 그리고 왜 Beckhoff에 종속되지 않은 오픈 생태계가 만들어졌는지 풀어봅니다.

#한눈에 보는 구조

EtherCAT 토폴로지 — Master에서 시작하는 daisy-chain, 마지막 슬레이브에서 반환되는 논리적 ring

EtherCAT 망은 논리적 ring입니다. 마스터가 보낸 프레임이 슬레이브 1→2→3→N을 순서대로 통과하고, 마지막 슬레이브에서 *접지(termination)*되어 반대 방향으로 돌아옵니다. 물리적으로는 daisy-chain입니다. 별도의 ring 토폴로지가 아닙니다. 각 슬레이브의 ESC가 upstream portdownstream port를 가지고 있어서 한 케이블이 두 방향 신호를 공유합니다(전이중).

전체 프레임이 마스터로 돌아올 때까지의 시간이 한 사이클입니다. 64 slave × 4 byte 데이터 기준으로 12.5 μs 안에 끝납니다.

#On-the-Fly Processing — 어떻게 가능한가

표준 Ethernet 모델과 비교해 보면 차이가 선명합니다.

표준 Ethernet (request-response)
마스터: "Slave 1, 데이터 줘" 전송
Slave 1: 프레임 *수신* → 처리 → *응답 프레임 생성* → 전송
마스터: 응답 수신
→ 1 노드 왕복: 수십 μs
→ 64 노드: 수 ms
EtherCAT (on-the-fly)
마스터: 한 프레임에 *모든 슬레이브의 데이터 슬롯* 포함하여 전송
Slave 1: 프레임이 통과하는 *그 순간* 자기 비트만 R/W
Slave 2: 같은 프레임이 와도 자기 비트만 R/W
...
Slave N: 마지막 슬레이브가 termination → 프레임이 마스터로 복귀
→ 전체 64 노드: 12.5 μs

ESC ASIC은 프레임이 통과하는 동안 실시간으로 데이터를 처리합니다. 비유하자면 지나가는 기차 안에서 손을 뻗어 가방을 바꿔치기하는 것과 같습니다. 기차는 멈추지 않습니다.

이게 가능한 이유는 세 가지입니다.

  1. ESC가 전용 ASIC이라 처리 지연이 <<1 μs. 게다가 슬레이브가 프레임 전체를 받기 전에 비트 단위 스트림으로 처리합니다. 시작부분 처리가 끝부분이 도착하기 전에 완료됩니다.
  2. EtherCAT 프레임은 최소 84 byte, 최대 1500 byte로 길어서, 그 시간 안에 ESC가 충분히 처리할 수 있습니다.
  3. 마스터가 미리 모든 슬레이브의 슬롯을 배치한 한 프레임을 보내므로, 슬레이브는 판단 없이 자기 슬롯 위치만 알면 됩니다.

#ESC — EtherCAT Slave Controller

ESC는 모든 EtherCAT 슬레이브의 심장입니다. 외부에서 보면 두 개의 Ethernet PHY, 내부에는 DPRAM, FMMU, Sync Manager, DC unit, 그리고 호스트 인터페이스(SPI/PDI)를 가진 ASIC입니다.

ESC 블록 다이어그램 — EBus Loop · DPRAM · FMMU · Sync Manager · DC Unit · ESC Registers와 PDI를 통한 MCU 연결

EtherCAT 슬레이브 칩의 대표는 두 가지입니다.

제조사특징가격대
ET1100Beckhoff4 port, 8 FMMU, 8 SM, DPRAM 8 KB산업 표준
LAN9252Microchip3 port, ET1100 호환, SPI/μC PDI저렴
AX58100ASIX2 port, 8 FMMU, 8 SM가성비
ESC20ETGFPGA reference (IP core)가변

설계 시점에 가장 흔한 선택이 LAN9252입니다. ET1100과 바이너리 호환이고 SPI 인터페이스가 깔끔합니다. MCU 한 개 + LAN9252 한 개로 슬레이브를 만들 수 있어 한국의 중소 전장·자동화 업체에서 폭넓게 쓰입니다.

#FMMU — Fieldbus Memory Management Unit

FMMU는 논리 주소 ↔ 물리 주소 변환기입니다. 마스터가 “logical address 0x10000~0x10003 4 byte 쓰기”를 보내면, ESC가 FMMU 매핑을 보고 자기 DPRAM의 어디에 쓸지 결정합니다.

왜 굳이 변환 단계를 두는지 처음엔 어색합니다. 이유는 마스터의 단순화입니다. 64개 슬레이브가 있을 때, 각각의 물리 주소를 다 알고 개별 datagram을 보내려면 64개 명령이 필요합니다. 대신 논리 주소 공간을 하나 잡고 한 datagram에 64 slave 데이터를 다 담으면, 한 명령으로 모두를 다룹니다.

마스터의 process image (논리 주소 공간)
0x10000: Slave 1 input (4 byte)
0x10004: Slave 2 input (8 byte)
0x1000C: Slave 3 input (2 byte)
...
0x10100: Slave 1 output (4 byte)
0x10104: Slave 2 output (8 byte)
...
각 slave의 FMMU 매핑 (LWR=0x08 logical write 시점)
Slave 1 FMMU 1: logical 0x10100~0x10103 → DPRAM 0x1000 (4 byte, write)
Slave 1 FMMU 0: logical 0x10000~0x10003 → DPRAM 0x1010 (4 byte, read)
Slave 2 FMMU 1: logical 0x10104~0x1010B → DPRAM 0x1000 (8 byte, write)
...

한 LRW(0x0C, Logical Read-Write) datagram이 모든 슬레이브를 통과하면서, 각 슬레이브가 FMMU로 자기 슬롯만 잘라서 처리합니다. 마스터 코드는 논리 process image만 다루면 됩니다. 어느 슬레이브의 어느 레지스터가 어디 있는지 알 필요가 없습니다.

ESC는 보통 8개 FMMU를 가집니다. 입력·출력·mailbox용으로 나눠 씁니다.

#Sync Manager — DPRAM 접근 동기화

DPRAM은 EtherCAT 측호스트 MCU 측 양쪽에서 접근됩니다. 동시에 같은 영역을 R/W하면 데이터 손상이 일어납니다. Sync Manager가 이걸 막습니다.

Sync Manager는 두 가지 모드가 있습니다.

모드용도동작
Buffered (3-buffer)주기 process data3개 버퍼를 원자적으로 swap. 항상 최신만 읽힘
Mailbox (handshake)비주기 큰 메시지한 측 쓰기 완료 → 다른 측 읽기. handshake

3-buffer 모드의 동작이 정교합니다.

3-buffer SM (process data)
버퍼 A: EtherCAT이 *지금 쓰는 중*
버퍼 B: 호스트가 *지금 읽는 중*
버퍼 C: *다음에 swap될 후보*
EtherCAT 쓰기 완료 → C가 "최신"으로 표시, A가 다음 쓰기로
호스트 읽기 완료 → C가 호스트의 다음 읽기로

결과는 race-free에 latest-only 의미론입니다. 호스트가 느리게 읽어도 최신 데이터만 봅니다. 오래된 데이터를 보는 일이 없습니다.

mailbox SM은 CoE·SoE·FoE·EoE·AoE 같은 대용량 비주기 메시지에 쓰입니다. Ch 4에서 다룹니다.

#Distributed Clock — Sub-μs 동기

DC의 원리는 Ch 2에서 다뤘습니다. 여기서는 EtherCAT 안에서의 동작 흐름을 봅니다.

DC 동기 절차 (마스터가 수행)
1. BWR (0x05, Broadcast Write):
모든 슬레이브의 DC port time을 latch
→ 각 슬레이브는 *각 port에서의 프레임 도착 시각*을 기록
2. BRD (0x07, Broadcast Read):
첫 DC 슬레이브의 시각을 reference로 채택
3. ARMW (Auto Read Multiple Write, 0x0D):
reference 시각을 모든 슬레이브에 분배.
각 슬레이브 ESC가 자기 propagation delay를 자동으로 빼고
offset을 계산해서 자체 clock에 적용
4. 마스터가 주기적으로 ARMW를 재전송 → drift 보정

DC의 절묘함은 propagation delay 자동 계산입니다. ESC는 port 0 도착 시각port 1 도착 시각둘 다 기록합니다. 그 차이가 그 슬레이브에서의 처리 시간 + 케이블 왕복 시간입니다. 마스터는 이 정보로 각 슬레이브까지의 정확한 propagation delay를 계산해 ARMW에 실어 줍니다.

DC 결과: 64 slave 망에서의 sync 정확도
슬레이브 간 jitter: <100 ns
마스터 vs 슬레이브: 1~5 μs (마스터 OS 의존)

마스터-슬레이브 jitter는 OS 의존이지만, 슬레이브 간은 ns급입니다. 64축 모터가 같은 시각에 동시 동작해야 한다는 모션 컨트롤의 요구를 이걸로 풉니다.

#슬레이브의 상태 머신 — EtherCAT State Machine (ESM)

EtherCAT 슬레이브는 다섯 상태를 가집니다. 마스터의 명령에 따라 상태 전이가 일어납니다.

상태의미가능한 통신
Init초기 상태, 통신 없음없음
Pre-Operational (Pre-Op)mailbox 가능, process data 없음CoE/SoE/FoE/EoE 가능
Safe-Operational (Safe-Op)input 가능, output 불가input PDO 가능
Operational (Op)모든 통신 가능input + output PDO
Bootstrapfirmware update 전용FoE만

마스터의 초기화 흐름은 보통 다음과 같습니다.

1. Init : ESC 설정 초기화

2. → Pre-Op : Sync Manager 0/1 (mailbox) 설정

3. → Safe-Op : Sync Manager 2/3 (PDO) 설정, FMMU 설정

  • input PDO 전송 시작

4. → Op : output PDO도 처리. 정상 동작.

상태 전이가 실패하면 AL Status에 에러 코드가 기록되고 마스터에 통지됩니다. 가장 흔한 실패는 Safe-Op → Op 전이에서 output PDO를 슬레이브가 받지 못함입니다. WKC 불일치가 원인인 경우가 많습니다.

#Beckhoff 종속성 vs ETG 표준

EtherCAT은 Beckhoff Automation이 2003년에 발표한 프로토콜입니다. 그러나 같은 해에 *EtherCAT Technology Group(ETG)*에 양도되었고, 지금은 IEC 61158/61784 국제 표준입니다.

EtherCAT Ecosystem

Beckhoff는 ASIC IP와 master 상용 제품을 통해 생태계의 중심에 남아 있지만, 프로토콜 자체는 개방되어 있습니다. 이 균형이 EtherCAT의 빠른 채택을 가능하게 했습니다.

한국에서 EtherCAT 슬레이브를 만드는 중소 자동화 업체는 보통 LAN9252 + STM32 조합으로 시작합니다. ETG에 가입(연회비 약 1500 EUR)하면 vendor ID가 발급되고, conformance test를 통과하면 공식 EtherCAT 슬레이브가 됩니다. 마스터 측은 SOEM이 무료라서 총 비용 부담이 적습니다.

#자주 하는 실수

#”EtherCAT은 ring 토폴로지다”

논리적으로는 ring이지만 물리적으로는 daisy-chain입니다. 슬레이브의 한 케이블이 양방향 신호를 다 보냅니다. 별도의 두 번째 케이블이 필요 없습니다. cable redundancy가 필요하면 별도의 ring 옵션을 켜야 합니다.

#”Slave 한 개가 잘못되면 전체 망이 죽는다”

기본 daisy-chain에서는 그렇습니다. 중간 슬레이브가 링크 단절되면 그 뒤의 슬레이브에 접근 불가합니다. 해결책은 cable redundancy 옵션입니다. 마스터가 양쪽 끝에 케이블을 연결해 두 방향 모두로 통신합니다. 중간 단선이 일어나도 양쪽으로 분기된 망이 각자 동작합니다.

#”FMMU와 Sync Manager는 같은 것이다”

다릅니다. FMMU는 주소 변환, SM은 접근 동기입니다. 같은 process data가 두 개를 모두 거칩니다. FMMU가 논리 → 물리 주소를 변환하고, SM이 그 물리 주소 영역에 원자성을 보장합니다.

#”DC는 마스터 시계를 따라간다”

PTP는 그렇지만 EtherCAT DC는 첫 슬레이브를 reference로 씁니다. 마스터의 절대 시각과는 별도 도메인입니다. 마스터 OS의 jitter가 슬레이브 동기에 영향을 주지 않는다는 점이 강점입니다.

#”EtherCAT 마스터는 일반 NIC로 안 된다”

일반 1 Gbps NIC로 동작합니다. 다만 PREEMPT_RT 커널, IRQ affinity, dedicated CPU core가 필요합니다. 전용 NIC는 jitter를 줄이지만 필수는 아닙니다.

#정리

  • EtherCAT의 핵심은 on-the-fly processing입니다. 슬레이브가 프레임을 통과시키면서 자기 비트만 R/W합니다.
  • 물리는 daisy-chain, 논리는 ring입니다. 마지막 슬레이브가 termination해서 마스터로 돌려보냅니다.
  • ESC ASIC이 ns 단위 처리를 가능하게 합니다. ET1100·LAN9252·AX58100이 대표 칩입니다.
  • FMMU는 논리↔물리 주소 변환, Sync Manager는 DPRAM 접근 동기화를 담당합니다.
  • Distributed Clock은 propagation delay 자동 계산으로 슬레이브 간 ns 동기를 만듭니다.
  • EtherCAT State Machine은 Init→Pre-Op→Safe-Op→Op 네 단계 전이로 초기화됩니다.
  • Beckhoff가 만든 프로토콜이지만 ETG가 표준화하고 IEC 61158 국제 표준입니다.
  • 한국 슬레이브 개발에는 LAN9252 + STM32 + SOEM 마스터 조합이 흔합니다.

다음 편은 Ch 4: EtherCAT 프레임 — Datagram·WKC입니다. EtherType 0x88A4 프레임의 정확한 구조와 명령 코드(LRD·LWR·LRW·BRD·BWR), Working Counter, mailbox 프로토콜(CoE·SoE·FoE·EoE·AoE)을 풀어봅니다.

#관련 항목