Understanding EtherCatInterface


The „ecmasterlib“ provides a callback function (void callbackFct(…)) which is called by the Acontis stack once per EtherCAT cycle. This method:

  • Copies the received data from the stack into the receive buffer of „ecmasterlib“
  • Copies the data to be sent from the send buffer of „ecmasterlib“ to the stack.

The receive and send buffers of „ecmasterlib“ are byte arrays (uint8_t* inBuffer; uint8_t* outBuffer;) which are the same size as the PDOs.

The „ecmasterlib“ also provides a condition variable (std::condition_variable cv;) to synchronize the user application (i.e. EEROS).

When an „ecmasterlib“ object is created, an instance (monotonic) is created. The stack is started exactly as in the „EcMasterDemoDC“ of Acontis.


This is the base class for all interface classes. It mainly provides set and get methods for 8, 16, and 32 bit long data. The get methods calculate the correct offset of the receive buffer of the „ecmasterlib“ and returns the data. The set methods also calculate the offset and write the data into the transmit buffer of „ecmasterlib“.



The „EtherCatInterfaceElmo“ is especially designed for the Gold Twitter drives from Elmo. It consists of the following components:

  • EtherCatInterfaceElmo.hpp
  • EtherCatInterfaceElmo.cpp
  • EtherCatInterfaceElmo_config.hpp

The „EtherCatInterfaceElmo.hpp“ declares all methods of the interface. The low level methods ('ll_'-prefix) are at the bottom of the page.

These low level methods read and write individual data objects to/from the stack. Which objects are available and their file type must be read from the documentation of the manufacturer of the EtherCAT slave. Each data object has its own method.

Where a data object is located in the PDO depends on the ENI file used. These offsets must be read from the ENI file and configured in „EtherCatInterfaceElmo_config.hpp“.

All methods above the low level methods are optional. They contain a certain degree of intelligence and simplify the interface to the user application.

Blocking functions

Methods in the interface must never be blocking.

Some advanced functions may take several cycles. They are only completed when they return true. These methods must be called again in each cycle until they return true.


This is configuration file has do be adapted depending on the EtherCAT network.

The most important part of this file is the offset definition of all PDO offset. Before you start your application, you have to define all PDO offsets of your network.

Be aware that EtherCATInterface assumes that all drives send the identical variables via PDO. With the current implementation it is not possible to send different variables for different drives.

If a variable is not available, the offset is set to '-1'. The methods which would use a unavailable variable will throw an error if called.