Unterschiede

Hier werden die Unterschiede zwischen zwei Versionen gezeigt.

Link zu dieser Vergleichsansicht

embedded_systems:ethercat:ethercatinterface:understanding_ethercatinterface [2019-03-05 15:41] (aktuell)
Gehrig Marcel angelegt
Zeile 1: Zeile 1:
 +====== Understanding EtherCatInterface ======
 +===== ecmasterlib =====
 +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.
 +
 +When an //"​ecmasterlib"//​ object is created, an instance (monotonic) is created.
 +The stack is started exactly as in the //"​EcMasterDemoDC"//​ of Acontis.
 +
 +
 +===== EtherCatInterfaceBase =====
 +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"//​.
 +
 +==== EtherCatInterfaceBase_config.hpp ====
 +
 +
 +===== EtherCatInterfaceElmo =====
 +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 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**.
 +
 +All advanced functions can take several cycles.
 +They are only completed when they return ''​true''​.
 +These methods must be called again in each cycle until they return ''​true''​.