Kick-start your slaves!
Thin EtherCAT stack designed to be embedded in a more complex software and with efficiency in mind.
- Can go to OP state
- Can read and write PI
- interface redundancy is supported
- CoE: read and write SDO - blocking and async call
- CoE: Emergency message
- Bus diagnostic: can reset and get errors counters
- hook to configure non compliant slaves
- consecutives writes to reduce latency - up to 255 datagrams in flight
- build for Linux and PikeOS
NOTE The current implementation is designed for little endian host only!
- CoE: segmented transfer - partial implementation
- CoE: diagnosis message - 0x10F3
- Bus diagnostic: auto discover broken wire (on top of error counters)
- More profiles: FoE, EoE, AoE, SoE
- Distributed clock
- AF_XDP Linux socket to improve performance
- Addressing groups
To improve latency on Linux, you have to
- use Linux RT (PREMPT_RT patches),
- set a real time scheduler for the program (i.e. with chrt)
- disable NIC IRQ coalescing (with ethtool)
- disable RT throttling
- isolate ethercat task and network IRQ on a dedicated core
- change network IRQ priority
- Tested on PikeOS 5.1 for native personnality (p4ext)
- You have to provide the CMake cross-toolchain file which shall define PIKEOS variable (or adapt the main CMakelists.txt to your needs)
- examples are provided with a working but non-optimal process/thread configuration (examples/PikeOS/p4ext_config.c): feel free to adapt it to your needs
KickCAT project is handled through CMake. To build the project, call CMake to configure it and then the build tool (default on Linux is make):
- Configure the project (more information on https://cmake.org/cmake/help/latest/)
mkdir -p build
cd build
cmake ..
- Build the project
make
In order to build unit tests, you have to enable the option BUILD_UNIT_TESTS (default to ON) and to provide GTest package through CMake find_package mechanism. Note: you can easily provide GTest via conan package manager:
- Install conan and setup PATH variable (more information on https://docs.conan.io/en/latest/installation.html)
pip install conan
export PATH="$PATH:$HOME/.local/bin"
- Install GTest in your build folder:
mkdir -p build
cd build
conan install ../conan/conanfile.txt -pr ../conan/profile_linux_x86_64.txt --build=missing
- Configure the project (can be done on an already configured project)
cmake ..
https://infosys.beckhoff.com/english.php?content=../content/1033/tc3_io_intro/1257993099.html&id=3196541253205318339 https://www.ethercat.org/download/documents/EtherCAT_Device_Protocol_Poster.pdf
various: https://sir.upc.edu/wikis/roblab/index.php/Development/Ethercat
diag: https://www.automation.com/en-us/articles/2014-2/diagnostics-with-ethercat-part-4 https://infosys.beckhoff.com/english.php?content=../content/1033/ethercatsystem/1072509067.html&id= https://knowledge.ni.com/KnowledgeArticleDetails?id=kA00Z000000kHwESAU