iolite stg as an ethercat slave device

  • Software
  • iolite stg as an ethercat slave device
Justin Lee

Posted on 19.03.2025 20:53

question about setting up an iolite acting as an ethercat slave in a network? we got the esi file from the downloads page and are actually able to communicate with the daq from our ethercat master. We just have some specific questions about how we are supposed to integrate it. One simple example is how do we ensure that the amplifier settings are applied to the channel for our specific sensor type? Like the voltage range and scaling factors. Is it possible to setup via modification to the esi file?

Aljaž Kropivšek
Application Engineer for Control and Automation
Posted on 24.03.2025 14:17

Hi Justin,


It is possible to set up the amplifier settings using startup (init) commands in the ESI file by adding them to the ​Mailbox -> CoE​ section.

The startup commands are executed during specified transition(s) between states and write a specified value into a specified SDO.

​You can find most of the SDOs listed in the Third party EtherCAT masters manual, along with their indices, subindices, and valid values.


Below is an example of setting the first channel to a half bridge mode with 10V input range and 1V excitation voltage.


<Mailbox DataLinkLayer="true">
  <CoE SdoInfo="true" PdoAssign="true" PdoConfig="true" SegmentedSdo="true" CompleteAccess="true">
    <InitCmd>
      <Transition>IP</Transition>
      <Index>32800</Index>
      <SubIndex>9</SubIndex>
      <Data>0300</Data>
      <Comment>Bus1 mode: 0000 = DC, 0300 = SM, 0100 = buffered DC (DEWESoft)</Comment>
    </InitCmd>
    <InitCmd>
      <Transition>PS</Transition>
      <Index>#x8040</Index>
      <SubIndex>#x1</SubIndex>
      <Data>0600</Data>
      <Comment>Measure type ( = bridge )</Comment>
    </InitCmd>
    <InitCmd>
      <Transition>PS</Transition>
      <Index>#x8040</Index>
      <SubIndex>#x2</SubIndex>
      <Data>0100</Data>
      <Comment>Bridge Mode ( = half bridge )</Comment>
    </InitCmd>
    <InitCmd>
      <Transition>PS</Transition>
      <Index>#x8040</Index>
      <SubIndex>#x3</SubIndex>
      <Data>0100</Data>
      <Comment>Range ( = 10V )</Comment>
    </InitCmd>
    <InitCmd>
      <Transition>PS</Transition>
      <Index>#x8040</Index>
      <SubIndex>#x16</SubIndex>
      <Data>a4709d3f</Data>
      <Comment>UserOffset ( = 1.23 )</Comment>
    </InitCmd>
    <InitCmd>
      <Transition>PS</Transition>
      <Index>#x8040</Index>
      <SubIndex>#x17</SubIndex>
      <Data>85eb9140</Data>
      <Comment>UserGain ( = 4.56 )</Comment>
    </InitCmd>
    <InitCmd>
      <Transition>PS</Transition>
      <Index>#x8040</Index>
      <SubIndex>#x1c</SubIndex>
      <Data>0bfa7f3f</Data>
      <Comment>CalcExcitation ( = 1V )</Comment>
    </InitCmd>
  </CoE>
  <FoE/>
</Mailbox>


Please note:

  • The startup commands need to be sent to the device during the PS (PRE OP to SAFE OP) transition.
  • Added are also the UserOffset and UserGain startup commands, to provide the module with sensor scaling and allow it to provide the values already converted into physical units​ in the PDOs.
  • Values need to be written in the little endian hexadecimal representation.
  • Indices and subindices can be written as hexadecimal values (as specified in the manual) if you put "#x" in front of the value (as in "#x1c" for decimal value of 28).


Login to reply to this topic. If you don't have account yet, you can signup for free account .