Skip to content

Latest commit

ย 

History

418 Commits

Folders and files

NameName
Last commit message
Last commit date
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 

Repository files navigation

NekoEcat Studio

A modern EtherCAT engineering workstation for Linux + IgH

Commission, debug, and diagnose your EtherCAT bus with confidence.

C++20 Qt6 CMake Linux License Tests


NekoEcat Studio is an EtherCAT commissioning and diagnostics workstation purpose-built for Linux systems using the IgH EtherCAT Master stack. It replaces the workflow of juggling terminals, spreadsheets, and custom scripts with a coherent, evidence-driven desktop application.

Whether you are integrating a new drive, tuning distributed clocks, debugging a startup sequence, or handing off a validated configuration โ€” NekoEcat Studio gives you a single tool for the job.

โœจ Features

๐Ÿ”Œ Full EtherCAT Protocol Support

Protocol Status Details
CoE (CANopen over EtherCAT) โœ… SDO upload/download, dictionary browsing, emergency object monitoring
FoE (File over EtherCAT) โœ… Firmware read/write via daemon
EoE (Ethernet over EtherCAT) โœ… IP configuration, frame statistics
SoE (Servo over EtherCAT) โœ… IDN read/write, parameter validation

๐Ÿ› ๏ธ 24 Purpose-Built Workspaces

Organized into logical groups โ€” no clutter, just the right tool for each task. (34 plugins are compiled and registered; the 24 visible ones each contribute a workspace tab, the rest are hidden helper/preference plugins.)

Group Workspaces
๐Ÿ  Overview Dashboard with session brief, evidence matrix, next-best-action
๐Ÿ” Topology & Slaves Topology graph, ESI browser, bus statistics, I/O variable table
๐Ÿ“– Dictionary & SDO Object dictionary, startup SDO sequences, PDO mapping editor
๐Ÿ“Š Monitoring Watch window, signal analyzer, oscilloscope, trace, logic analyzer
โšก Distributed Clocks DC sync status, precision tuning, drift optimizer
๐Ÿ”„ Runtime FreeRun process image, state machine controller
๐Ÿฉบ Diagnostics Online diagnostics, consistency checks, AL events, alarm panel
๐ŸŒ Protocols EoE tunnel, SoE drive interface, ENI export

๐Ÿง  Evidence-Driven Workflow

Every SDO write, state transition, and configuration change is tracked. Before writing to the bus, you can review the evidence trail โ€” what was read, what changed, and whether it matches expectations.

๐ŸŒ 8 Languages

Switch between English, ็ฎ€ไฝ“ไธญๆ–‡, ๆ—ฅๆœฌ่ชž, Deutsch, ํ•œ๊ตญ์–ด, ็น้ซ”ไธญๆ–‡, Franรงais, and Espaรฑol โ€” at runtime, no restart needed.

๐Ÿงช Real-Time Client / Shared Memory

A first-class, Qt-free real-time data plane for external programs:

  • SHM data plane โ€” ecatd mirrors the Free Run process image into POSIX shared memory (/nekoecat_proc_0) using a lock-free double buffer with a version-counter consistency protocol. No JSON or TCP in the hot path.
  • JSON-RPC control plane โ€” start/stop Free Run and query the process-image layout over the daemon's normal TCP endpoint.
  • Pure-C library โ€” libnekoecat_client.a (header: client/nekoecat_client.h) provides typed reads/writes with bounds validation and a double-read attach protocol.
  • Python example โ€” examples/realtime/nekoecat_client_example.py shows raw mmap/ctypes access plus the C library via ctypes.

See docs/ARCHITECTURE.md for the shared-memory design.

๐Ÿ”Œ Dual Backend Architecture

NekoEcat Studio  โ†JSON-RPCโ†’  ecatd daemon  โ†ecrt/CLIโ†’  IgH EtherCAT Master  โ†โ†’  Bus
  • Native ecrt API โ€” high-performance SDO, PDO, and slave operations
  • CLI fallback โ€” automatic fallback where ecrt is unavailable (ESI XML, SDO dictionary enumeration, state transitions)
  • Backend selection โ€” auto, native-only, or CLI-only modes

๐Ÿš€ Quick Start

Prerequisites

  • Linux x86_64 with IgH EtherCAT Master 1.6.x
  • Qt6 (Core, Network, Widgets)
  • CMake 3.20+

Install

# Debian / Ubuntu
sudo dpkg -i NekoEcatStudio-1.0.0_amd64.deb
sudo apt-get install -f
ecat-studio

# Fedora / RHEL
sudo dnf install ./NekoEcatStudio-1.0.0.x86_64.rpm
ecat-studio

# Portable (any distro)
tar -xzf NekoEcatStudio-1.0.0-linux-x64.tar.gz
./NekoEcatStudio-1.0.0-linux-x64/bin/ecat-studio

Build from source

git clone https://github.com/NekoRain/nekoecat-studio.git
cd nekoecat-studio
cmake -B build -DCMAKE_BUILD_TYPE=Release
cmake --build build -j$(nproc)

# Start the daemon (requires IgH master)
sudo ./build/apps/ecatd/ecatd

# Launch the GUI
./build/apps/ecat-studio/ecat-studio

cmake --install installs ecatd/ecat-studio to bin/, the real-time client library libnekoecat_client.a to lib/, and the client/SHM headers (nekoecat_client.h, shm_layout.h, nekoecat_shm.h) to include/nekoecat.

First Steps

  1. Start the daemon โ€” ecatd connects to the IgH EtherCAT Master
  2. Launch the GUI โ€” ecat-studio auto-connects via localhost:5877
  3. Scan the bus โ€” the Overview workspace will populate with detected slaves
  4. Browse the Object Dictionary โ€” read SDO entries with evidence tracking
  5. Configure startup SDOs โ€” build reusable configuration sequences
  6. Go live โ€” use FreeRun for process image monitoring and Watch for real-time SDO polling

๐Ÿงช Tested

  • 179 automated tests (100% passing) โ€” the default build runs 143 unit, 11 integration, and 25 performance tests covering the plugins, daemon handlers, and services that actually ship. Reaching additional (previously removed) services/plugins requires cmake -B build -DECAT_EXPERIMENTAL_SERVICES=ON
  • Verified on real hardware โ€” SDO read/write, slave scan, state transitions, and PDO mapping confirmed on Beckhoff-compatible digital I/O slave
  • Test environment: IgH Master 1.6.9, Linux 7.0.12-zen, RTL8125 NIC

๐Ÿ—๏ธ Architecture Overview

โ”Œโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”
โ”‚                    NekoEcat Studio                        โ”‚
โ”‚  โ”Œโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”  โ”Œโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”  โ”Œโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”  โ”‚
โ”‚  โ”‚ 34 Plugins   โ”‚  โ”‚ EventBus     โ”‚  โ”‚ ServiceContainer โ”‚  โ”‚
โ”‚  โ”‚ (24 visible) โ”‚  โ”‚ Pub/Sub      โ”‚  โ”‚ Dependency Inj.  โ”‚  โ”‚
โ”‚  โ””โ”€โ”€โ”€โ”€โ”€โ”€โ”ฌโ”€โ”€โ”€โ”€โ”€โ”€โ”˜  โ””โ”€โ”€โ”€โ”€โ”€โ”€โ”ฌโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”˜  โ””โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ฌโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”˜  โ”‚
โ”‚         โ”‚                โ”‚                    โ”‚           โ”‚
โ”‚  โ”Œโ”€โ”€โ”€โ”€โ”€โ”€โ”ดโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ดโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ดโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”  โ”‚
โ”‚  โ”‚              EcatClient (JSON-RPC)                   โ”‚  โ”‚
โ”‚  โ””โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ฌโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”˜  โ”‚
โ””โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ผโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”˜
                         โ”‚ TCP localhost:5877
โ”Œโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ผโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”
โ”‚  โ”Œโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ดโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”  โ”‚
โ”‚  โ”‚                   ecatd daemon                       โ”‚  โ”‚
โ”‚  โ”‚  โ”Œโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”  โ”Œโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”  โ”Œโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”  โ”‚  โ”‚
โ”‚  โ”‚  โ”‚ CLI Backend   โ”‚  โ”‚ Native ecrt โ”‚  โ”‚ FreeRun    โ”‚  โ”‚  โ”‚
โ”‚  โ”‚  โ”‚ (ethercat cmd)โ”‚  โ”‚ Backend     โ”‚  โ”‚ Controller โ”‚  โ”‚  โ”‚
โ”‚  โ”‚  โ””โ”€โ”€โ”€โ”€โ”€โ”€โ”ฌโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”˜  โ””โ”€โ”€โ”€โ”€โ”€โ”€โ”ฌโ”€โ”€โ”€โ”€โ”€โ”€โ”˜  โ””โ”€โ”€โ”€โ”€โ”€โ”ฌโ”€โ”€โ”€โ”€โ”€โ”€โ”˜  โ”‚  โ”‚
โ”‚  โ”‚         โ””โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ฌโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”˜               โ”‚         โ”‚  โ”‚
โ”‚  โ”‚                   โ”‚                 โ”Œโ”€โ”€โ”€โ”€โ”€โ”ดโ”€โ”€โ”€โ”€โ”€โ”€โ”  โ”‚  โ”‚
โ”‚  โ”‚                   โ”‚                 โ”‚ SHM Mirror โ”‚  โ”‚  โ”‚
โ”‚  โ”‚                   โ”‚                 โ”‚(double-buf)โ”‚  โ”‚  โ”‚
โ”‚  โ””โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ผโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ผโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ฌโ”€โ”€โ”€โ”€โ”ผโ”€โ”€โ”˜  โ”‚
โ””โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ผโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ผโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ผโ”€โ”€โ”€โ”€โ”ผโ”€โ”€โ”€โ”€โ”€โ”˜
                       โ”‚                 โ”‚       โ”‚    โ”‚
              โ”Œโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ดโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”        โ”‚  โ”Œโ”€โ”€โ”€โ”€โ”ดโ”€โ”€โ”€โ”€โ”€โ”ดโ”€โ”€โ”€โ”€โ”€โ”€โ”
              โ”‚ IgH EtherCAT    โ”‚        โ”‚  โ”‚ POSIX SHM       โ”‚
              โ”‚ Master (ecrt)   โ”‚        โ”‚  โ”‚ /nekoecat_proc_0โ”‚
              โ””โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ฌโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”˜        โ”‚  โ”‚ (C client, Py)  โ”‚
                       โ”‚                 โ”‚  โ””โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”˜
              โ”Œโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ดโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”        โ”‚
              โ”‚  EtherCAT Bus   โ”‚        โ”‚
              โ”‚  (real slaves)  โ”‚        โ”‚
              โ””โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”˜        โ”‚
                                         โ”‚
                            nekoecat_client (C) / Python example

๐Ÿ“š Documentation

Document Description
User Manual Getting started, workspace reference, troubleshooting
Installation Guide System requirements, multiple install methods
Architecture System design, IPC protocol, plugin system
Plugin Guide Creating and integrating custom workspace plugins
Developer Guide Build system, testing, contribution workflow
Changelog Release history and version notes

๐Ÿค Contributing

Contributions are welcome! Whether it is a bug report, feature request, or pull request:

  1. Check the open issues for existing discussions
  2. Read the Developer Guide for build and test setup
  3. Submit a PR โ€” the CI pipeline builds and runs the full default test suite automatically

๐Ÿ“„ License

NekoEcat Studio is free software licensed under the GNU General Public License v3.0.


Built with Qt 6 ยท IgH EtherCAT Master ยท CMake ยท โค๏ธ
Copyright ยฉ 2026 NekoRain

About

Modern EtherCAT engineering workstation for Linux and IgH EtherCAT Master

Resources

Stars

7 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages