Unterschiede

Hier werden die Unterschiede zwischen zwei Versionen angezeigt.

Link zu dieser Vergleichsansicht

Beide Seiten der vorigen Revision Vorhergehende Überarbeitung
Nächste Überarbeitung
Vorhergehende Überarbeitung
embedded_systems:ethercat:ethercatinterface [2019-03-05 15:41]
mgehrig2
embedded_systems:ethercat:ethercatinterface [2019-06-26 15:47] (aktuell)
Graf Urs
Zeile 1: Zeile 1:
-====== ​EtherCatInterface and ecmasterlib ======+====== ecmasterlib ​and EtherCATInterface ​======
 ===== Overview ===== ===== Overview =====
 {{ :​embedded_systems:​ethercat:​ethercatinterfaceelmo_inheritance.png?​direct&​|}} {{ :​embedded_systems:​ethercat:​ethercatinterfaceelmo_inheritance.png?​direct&​|}}
  
-The //"ecmasterilb"// and //"EtherCatInterface"// offer a relative easy way to use EtherCAT with EEROS or in standalone project.+The //"ecmasterlib"// and //"EtherCATInterface"// offer a relative easy way to use EtherCAT with [[http://​eeros.org/​|EEROS]] or in standalone project. ​
  
-  * //"​ecmasterlib"//​ offers the low level interface to the [[https://​www.acontis.com/​en/​ecmaster.html ​| Acontis ​stack (class A)]]. It is based on the demo application //"​EcMasterDemoDC"//​ from Acontis//"​ecmasterlib"//​ starts ​the Acontis ​stack and runs all threads needed by the stack. +  * **EEROS**: The robotic framework 
-  * //"​EtherCatInterfaceBase"//​ is the base interface to //"​ecmasterlib"//​. It is inherited by all EtherCatInterfaces. +  * **EtherCAT stack**: The EtherCAT stack from Acontis, see [[embedded_systems:ethercat:​understanding_acontis|The Acontis ​EtherCAT Stack]]. 
-  * //"​EtherCatInterfaceElmo"​// interface specific ​for [[https://​www.elmomc.com/​product/​gold-twitter/​ | Gold Twitter]] drives ​from ElmoMCOther drive (i.e. Maxon Maxpos 50/5) need a different interface. You may want to copy and adapt //"​EtherCatInterfaceElmo"//​ for your drive.+  * **ecmasterlib**:​ This library provides an easy interface to the EtherCAT stackThe library initializes ​the stack and takes over the periodic sending and receiving of the bus data. It provides the following basic interface: **[[embedded_systems:​ethercat:​ethercatinterface:​EtherCATInterfaceBase]]** 
 +  * **EtherCATInterfaceElmo**:​ An interface based on //EtherCATInterfaceBase// designed ​for Elmo drives. See **[[embedded_systems:ethercat:​ethercatinterface:​EtherCATInterfaceElmo]]** for details. You may need to implement your own interface for different ​drives. ​the interface further includes to EEROS blocks for the control system: 
 +    * **getDrivesBlock**:​ It has a signal output for every PDO input value (i.e. encoder values). You may need to modify this block in your application. 
 +    * **setDrivesBlock**:​ It has signal input for every PDO output value (i.e. setTorque). You may need to modify this block in your application. 
 + 
  
 +===== Installation =====
 +Please make sure that you have previously installed the EtherCAT stack software and EEROS beforehand. Install EEROS as described in [[http://​wiki.eeros.org/​getting_started/​compile_eeros|this tutorial]], but use the command line option ''​-DUSE_ETHERCAT=TRUE''​ when calling cmake.
 +<​code>​
 +...
 +cmake -DCMAKE_INSTALL_PREFIX=/​absolute/​path/​to/​working/​directory/​install-x86-64 -DUSE_ETHERCAT=TRUE ..
 +...
 +</​code>​
  
-  * [[.:​ethercatinterface:​understanding_ethercatinterface | Understanding EtherCatInterface]] +==== Install ecmasterlib ==== 
-  * [[.:​ethercatinterface:​using_ethercatinterface | Using EtherCatInterface with EEROS or in user application]] +Once the EtherCAT stack has been installed and the demo application ​is running, the //​ecmasterlib//​ can be installed
-  * [[.:​ethercatinterface:​writing_new_ethercatinterface | Writing a new interface for a new EtherCAT slave]]+
  
 +<​code>​
 +$ cd path/​to/​working/​directory
 +$ git clone https://​github.com/​ntb-ch/​ecmasterlib.git
 +$ cd ecmasterlib
 +$ mkdir externalLib
 +$ cp ''<​classB_path>''/​SDK/​LIB/​Linux/​x64/​libAtemRasSrv.a externalLib
 +$ cp ''<​classB_path>''/​SDK/​LIB/​Linux/​x64/​libEcMaster.a externalLib
 +$ mkdir build-x86-64
 +$ cd build-x86-64
 +$ cmake -DCMAKE_INSTALL_PREFIX=/​absolute/​path/​to/​working/​directory/​install-x86-64 ..
 +$ make
 +$ make install
 +</​code>​
 +
 +==== Install EtherCATInterfaceElmo ====
 +<​code>​
 +$ cd path/​to/​working/​directory
 +$ git clone https://​github.com/​ntb-ch/​ethercatinterfaceelmo.git
 +$ cd EtherCATInterfaceElmo
 +$ mkdir build-x86-64
 +$ cd build-x86-64
 +$ cmake -DCMAKE_INSTALL_PREFIX=/​absolute/​path/​to/​working/​directory/​install-x86-64 ..
 +$ make
 +$ make install
 +</​code>​
 +
 +===== Functionality =====
 +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 in the same way as in the //"​EcMasterDemoDC"//​ of Acontis.
 +
 +
 +
 +===== Necessary adaptions =====
 +==== Overview ====
 +The components //​EtherCATInterfaceElmo_config//,​ //​getDrivesBlock//​ and //​setDrivesBlock//​ need to be adjusted, if you change the variables, which are transmitted via PDOs (periodic sent/​received messages by the EtherCAT bus).
 +These components must also be adapted when creating a new EEROS application.
  
  
 ===== Attachment ===== ===== Attachment =====
-{{:​embedded_systems:​ethercat:​diagram_ethercatinterface.rar|Download diagram}}+{{:​embedded_systems:​ethercat:​diagram_ethercatinterface.rar|Class Hierarchy}}