TwinCAT PLC Library: EtherCAT


FB_EcCoeSdoRead 1:

The FB_EcCoeSdoRead function block allows data to be read from an EtherCAT slave through an SDO (Service Data Object) access. This requires the slave to have a mailbox and to support the "CANopen over EtherCAT" (CoE) protocol. The nSubIndex and nIndex parameters select the object that is to be read.


        sNetId          : T_AmsNetId; 
        nSlaveAddr      : UINT; 
        nSubIndex       : BYTE; 
        nIndex          : WORD;
        pDstBuf                 : DWORD; 
        cbBufLen        : UDINT; 
        bExecute        : BOOL;
        tTimeout        : TIME := DEFAULT_ADS_TIMEOUT; 

sNetId: This is a string that contains the AMS network identifier of the EtherCAT master device.

nSlaveAddr: Fixed address of the EtherCAT slave to which the SDO upload command should be sent.

nSubIndex:Sub-index of the object that is to be read.

nIndex: Index of the object that is to be read.

pDstBuf:The address (pointer) of the receive buffer.

cbBufLen:The maximum available buffer size for the data to be read, in bytes.

bExecute: The block is activated by a rising edge at this input.

tTimeout: Maximum time allowed for the execution of the function block.


        bBusy           : BOOL;
        bError                  : BOOL;
        nErrId          : UDINT;

bBusy: This output is set when the function block is activated, and remains set until an acknowledgement is received.

bError: This output is set up after the bBusy output has been reset if there has been an error in transmission of the command.

nErrId: Supplies the ADS error code associated with the most recently executed command if the bError output is set.


Example of an implementation in ST:

        fbSdoRead       : FB_EcCoESdoRead;
        sNetId          : T_AmsNetId := '';
        bExecute        : BOOL;
        nSlaveAddr      : UINT := 1006;
        nIndex          : WORD := 16#1018;
        nSubIndex       : BYTE :=1;
        vendorId        : UDINT;
        bError          : BOOL;
        nErrId          : UDINT;
fbSdoRead(sNetId:= sNetId,nSlaveAddr :=nSlaveAddr, nIndex:=nIndex, nSubIndex :=nSubIndex, pDstBuf:= ADR(vendorId), cbBufLen:=SIZEOF(vendorId),bExecute:=bExecute);


Development environment Target system type PLC libraries to be linked
TwinCAT v2.10.0 or higher PC or CX (x86) TcEtherCAT.lib
( Standard.Lib; TcBase.Lib; TcSystem.Lib, TcUtilities.Lib are included automatically )
TwinCAT v2.10.0 Build >= 1301 or higher CX (ARM)