---
title: "epos4-soem-control"
url: "https://maker.wiznet.io/Sunny_/projects/epos4-soem-control/"
markdown_url: "https://maker.wiznet.io/Sunny_/projects/epos4-soem-control/md"
type: "UCC: User Created Content"
author: "Sunghyun Kwon"
author_url: "https://github.com/shkwon98/epos4-soem"
editor: "WIZnet"
editor_url: "https://maker.wiznet.io/"
original_author: "Sunghyun Kwon"
original_url: "https://github.com/shkwon98/epos4-soem"
published: "2026-03-19"
language: "en"
likes: 0
views: 203
comments: 0
source: "WIZnet Makers (https://maker.wiznet.io/)"
---

# epos4-soem-control

> This is a real-time EtherCAT master application to control EtherCAT slave devices(e.g. epos4, elmo)

Original author: Sunghyun Kwon (source: https://github.com/shkwon98/epos4-soem)

## Article

![](https://maker.wiznet.io/upload/ckeditor5/578274429%5F1773999054%2Epng)

## Overview

`epos4-soem` 프로젝트는 Raspberry Pi 4를 기반으로, PREEMPT_RT Linux와 SOEM(Simple Open EtherCAT Master)을 조합해 maxon EPOS4 EtherCAT** 서보 드라이브를 제어하는 실시간 모터 제어 시스템이다**. 단순한 테스트 코드 수준을 넘어, EtherCAT 마스터 초기화, PDO 매핑, Operational 상태 전환, 실시간 제어 루프, 상태 감시, 그리고 원격 명령 수신 기능까지 포함하는 구조를 갖는다.

이 프로젝트의 가장 큰 특징은 **저비용 SBC 기반 실시간 EtherCAT 제어**를 실제 동작 가능한 형태로 정리했다는 점이다. Raspberry Pi 4는 범용 개발 보드이지만, PREEMPT_RT 커널을 적용하면 일정 수준의 실시간성을 확보할 수 있고, SOEM을 통해 산업 현장에서 널리 사용하는 EtherCAT 슬레이브와 직접 연동할 수 있다. 여기에 EPOS4와 같은 상용 서보 드라이브를 연결하면, 정밀 위치 제어·속도 제어·상태 모니터링이 가능한 실전형 모션 제어 플랫폼을 만들 수 있다.

또한 이 프로젝트는 EtherCAT 통신과 별도로 원격 GUI 또는 TCP 명령 채널을 두는 구조를 채택하고 있다. 이때 WIZnet W5500 같은 SPI Ethernet 모듈을 추가하면 제어용 네트워크와 서비스용 네트워크를 분리할 수 있어, 시스템 안정성과 유지보수 편의성을 동시에 확보할 수 있다. 즉, 이 프로젝트는 단순히 “모터를 돌리는 예제”가 아니라, **실시간 제어 시스템 아키텍처를 이해하고 확장하는 데 적합한 레퍼런스**라고 볼 수 있다.

---

## Features

![](https://maker.wiznet.io/upload/ckeditor5/578274429%5F1774004671%2Epng)

이 프로젝트는 EtherCAT 기반 모션 제어 시스템을 구성하는 데 필요한 핵심 기능을 비교적 잘 갖추고 있다.

### 1. Real-Time EtherCAT Master

**SOEM을 사용해 Raspberry Pi 4를 EtherCAT 마스터로 동작시킨다**. 일반적인 사용자 공간 애플리케이션과 달리, EtherCAT 슬레이브와의 주기적 데이터 교환을 전제로 설계되어 있어 **실시간 제어**에 적합하다.

### 2. EPOS4 Servo Drive Control

maxon EPOS4 EtherCAT 드라이브를 대상으로 PDO 매핑과 상태 전환을 수행하며, Operational 상태에 진입한 뒤 실제 제어 루프를 시작한다. 이를 통해 위치 기반 제어, 테스트 모션, 원격 명령 기반 제어 같은 확장이 가능하다.

### 3. PREEMPT_RT Linux Support

프로젝트는 PREEMPT_RT가 적용된 Raspberry Pi 4 환경을 기준으로 설계되었다. 이는 제어 주기의 안정성과 지터 감소에 직접적으로 기여하며, **실시간성**이 중요한 모터 제어 애플리케이션에서 매우 중요한 요소다.

### 4. Multi-Threaded Architecture

시스템은 하나의 루프만으로 동작하지 않는다. EtherCAT 상태를 감시하는 스레드, 실시간 제어 루프 스레드, TCP 명령을 처리하는 스레드가 분리되어 있어, 제어 성능과 관리 기능을 동시에 확보한다.

### 5. Remote Command and GUI Integration

원격 GUI 또는 외부 프로그램에서 TCP 명령을 보내 제어할 수 있는 구조를 포함한다. 이는 실험실 장비, 원격 유지보수 장비, 데모 시스템, 교육용 플랫폼에 특히 유용하다.

### 6. Expandable Network Architecture with WIZnet

WIZnet W5500 SPI Ethernet 모듈을 추가하면 EtherCAT 전용 포트와 별개로 서비스 네트워크를 구성할 수 있다. 이를 통해 원격 UI, 데이터 로깅, 유지보수 접속 경로를 제어망과 분리할 수 있다.

---

## System Architecture

![](https://maker.wiznet.io/upload/ckeditor5/578274429%5F1773999581%2Epng)

이 프로젝트의 시스템 구조는 크게 **실시간 제어 계층**, **필드버스 계층**, **원격 서비스 계층**으로 나눌 수 있다.

### 1. Real-Time Control Layer

Raspberry Pi 4가 시스템의 중앙 제어기 역할을 한다. PREEMPT_RT Linux 위에서 애플리케이션이 실행되며, 내부적으로 다음 기능이 분리되어 동작한다.

- EtherCAT 초기화 및 상태 전환

- PDO 기반 입출력 데이터 매핑

- 주기적 실시간 모터 제어 루프

- 상태 감시 및 오류 복구 체크

- TCP 기반 원격 명령 처리

즉, Raspberry Pi는 단순 호스트가 아니라 **EtherCAT Master + Motion Controller + Remote Gateway** 역할을 동시에 수행한다.

### 2. EtherCAT Fieldbus Layer

Raspberry Pi의 주 네트워크 인터페이스는 EtherCAT 마스터 포트로 사용된다. 이 포트를 통해 EPOS4 드라이브와 실시간 프레임을 주고받는다. EPOS4는 여기서 슬레이브 역할을 하며, 명령값과 상태값을 PDO 형태로 교환한다.

구조는 다음과 같다.

`Raspberry Pi 4 → EtherCAT Master Interface → EPOS4 Servo Drive → Motor / Encoder`

이 계층은 지터와 주기 안정성이 핵심이므로, 일반적인 사용자 네트워크 트래픽과 분리해 운용하는 것이 바람직하다.

### 3. Service Network Layer

원격 GUI 또는 외부 PC와 통신하기 위해 추가 네트워크 경로가 필요하다. 이때 Wi-Fi를 사용할 수도 있지만, 보다 안정적인 유선 연결을 위해 WIZnet W5500 SPI Ethernet 모듈을 추가할 수 있다.

구조는 다음과 같다.

`Remote PC / GUI → W5500 or Secondary Network → Raspberry Pi TCP Command Interface`

이 분리 구조의 장점은 명확하다.

- EtherCAT 제어망 보호

- 원격 접속 안정성 향상

- 유지보수 및 모니터링 기능 추가

- 데이터 로깅 및 UI 연결 확장 용이

### 4. Functional Data Flow

전체 데이터 흐름은 아래와 같이 이해할 수 있다.

- 원격 GUI 또는 클라이언트가 TCP 명령 전송

- Raspberry Pi가 명령 수신

- 제어 스레드가 목표값 생성

- SOEM이 PDO를 통해 EPOS4로 명령 전달

- EPOS4가 모터를 구동하고 엔코더 상태를 반환

- Raspberry Pi가 상태를 수집해 다시 GUI로 전달

이 구조는 산업 장비, 테스트 벤치, 교육용 데모 시스템, 연구용 모션 플랫폼에 매우 적합하다.

---

## Market & Application Value

![](https://maker.wiznet.io/upload/ckeditor5/578274429%5F1774004829%2Epng)

이 프로젝트는 모터 제어를 넘어, **산업 자동화와 연구용 모션 제어 사이의 실용적 접점**을 보여준다. 특히 Raspberry Pi 4, SOEM, EPOS4, 그리고 WIZnet 기반 보조 네트워크 구성을 결합함으로써 저비용이면서도 확장 가능한 제어 플랫폼을 구현할 수 있다.

### 1.산업 자동화

소형 자동화 장비, 이송 장치, 검사 장비, 실험용 생산 셀에서는 EtherCAT 기반 제어가 자주 요구된다. 이 프로젝트는 고가의 산업용 IPC 없이도 EtherCAT 마스터와 서보 드라이브 제어를 시험할 수 있어, 초기 프로토타입 개발에 매우 적합하다.

### 2. 로봇 공학 연구

로봇 관절 제어, 소형 액추에이터 제어, 정밀 위치 제어 실험에 활용할 수 있다. 특히 연구실에서는 빠른 개발, 낮은 비용, 코드 수정 용이성이 중요하므로, 이 프로젝트 구조는 연구용 플랫폼으로 높은 가치를 가진다.

### 3. 교육 및 훈련

EtherCAT, PDO 매핑, 실시간 Linux, 멀티스레드 제어 구조를 한 프로젝트에서 함께 학습할 수 있다는 점에서 교육용 가치가 높다. 학생이나 엔지니어 교육 과정에서 “산업용 필드버스와 실제 제어 소프트웨어가 어떻게 연결되는가”를 보여주기에 좋다.

### 4. 스마트 유지보수 원격 모니터링

WIZnet W5500을 활용해 제어망과 서비스망을 분리하면, 현장 장비의 유지보수성과 원격 진단성이 높아진다. 이는 스마트 팩토리, 예지보전, 원격 장비 지원 분야에서 매우 실용적이다.

### 5. 상업적 잠재력

이 구조는 다음과 같은 시장에 적용 가능성이 있다.

- 소형 산업 자동화 장비

- 실험실 자동화 장치

- 교육용 EtherCAT 트레이너

- 연구용 모션 제어 플랫폼

- 원격 유지보수 가능한 스마트 머신

특히 “저비용 + 오픈소스 + 산업용 프로토콜 + 원격 관리” 조합은 스타트업, 연구실, 장비 개발 초기 단계에서 경쟁력이 높다.

---

Source: https://maker.wiznet.io/Sunny_/projects/epos4-soem-control/
