Versions Compared

Key

  • This line was added.
  • This line was removed.
  • Formatting was changed.

1 Example project

The location for the ECS CustomOD Example is in our Knowledge Base

KB → Software → LFW Host Examples → EtherCAT Slave

For netX90:

Image Removed

2 ECS Sources

The ECS Sources in the ECS CustomOD Example are in the folder:

netXStudio_ECSV5_simpleConfig_V2.1.0.0\netX 90 - EtherCAT Slave - simpleConfig V2.1.0.0\Components\cifXApplicationDemoECS\Sources

Image Removed

3 Configuration packet

The ECS Configuration packet is in the file AppECS_DemoApplicationFuction.c. The Configuration packet is explained in the SimpleConfig Example.

In the CustomOD Example the We have no EoE Example. Take the source from simpleConfig Example.

2 Configuration packet

For EoE it is necessary to change the Set Configuration Packet.

add ECAT_SET_CONFIG_COE is usedEOE falg:

ptConfigReq->tData.tBasicCfg.ulComponentInitialization |= ECAT_SET_CONFIG_DEVICEINFO | ECAT_SET_CONFIG_COEEOE;

Then this structure needs to be filled:

ECAT_SET_CONFIG_COE_T* ptCoECfg;

  ptCoECfg = &ptConfigReq->tData.tComponentsCfg.tCoECfg;

  ptCoECfg->bCoeFlags = ECAT_SET_CONFIG_COEFLAGS_USE_CUSTOM_OD;

  ptCoECfg->bCoeDetails = ECAT_SET_CONFIG_COEDETAILS_ENABLE_SDO

                        | ECAT_SET_CONFIG_COEDETAILS_ENABLE_SDOINFO

                        | ECAT_SET_CONFIG_COEDETAILS_ENABLE_UPLOAD

                        | ECAT_SET_CONFIG_COEDETAILS_ENABLE_SDOCOMPLETEACCESS;

  ptCoECfg->ulOdIndicationTimeout = 1000;

  ptCoECfg->ulDeviceType          = 0;

This: “ECAT_SET_CONFIG_COEFLAGS_USE_CUSTOM_OD” activates the custom OD. The stack will now only create the Object 0x1000 for device Type and the object 0x1018 for VendorID, Productcode, Revision Number and SerialNumber

All other Objects need to be created by application.

4 Create Object dictionary

The file AppECS_DemoObjectDictionary.h has a tables of objects and subobjects.

OBJECT_DESCRIPTION_T g_tObjects[] has the object table with the Indexs:

0x1600  → RxPDO

0x1A00 → TxPDO

0x1C00 → Sync Manager Comunication Type

0x1C12 → Sync Manger 1 PDO Assignment

0x1C13 → Sync Manger 1 PDO Assignment

0x2000 → Manufacture specific Outputs

0x3000 → Manufacture specific Inptus

0x4000 → Hello World Object

Each of the objects has a table of subobjects.

In the file AppECS_DemoApplicationFuction.c are the functions.

AppECS_OD_SendCreateObjectReq() and

AppECS_OD_SendCreateSubObjectReq()

5 Start Sequenz

The Object Dictionary must be created between Channel Init and Bus ON. This is done in AppECS_ConfigureStack():

Image Removed

  /* initialize channel to use the configured data */

  App_SysPkt_AssembleChannelInitReq(&ptAppData->tPacket);

  ulRet = Pkt_SendReceivePacket( ptAppData->hChannel[0], &ptAppData->tPacket, TXRX_TIMEOUT );

  if( ulRet != CIFX_NO_ERROR )

      return ulRet;

  /* Create Objects */

  AppECS_OD_SendCreateObjectReq(ptAppData, &g_customOd);

  //ulRet = Pkt_SendReceivePacket( ptAppData->hChannel, &ptAppData->tPacket, TXRX_TIMEOUT );

    if( ulRet != CIFX_NO_ERROR )

      return ulRet;

  App_SysPkt_AssembleStartStopCommReq( &ptAppData->tPacket, true );

  ulRet = Pkt_SendReceivePacket( ptAppData->hChannel[0], &ptAppData->tPacket, TXRX_TIMEOUT );

  if( ulRet != CIFX_NO_ERROR )

      return ulRet;

6 ECM Master

As soon as the ECS Stack in successfully configured and the Start Communication Request / Bus On is done, the EtherCAT Slave goes into Init State.

The EtherCAT Master can read out the Object dictionary in Pre-Operation State.

Image Removed

Bring device in Preop with TwinCAT:

Image Removed

Read out the Object dictionary:

Image Removed

List of All Objects:

Image Removed

and Subobjects

Image Removed

6 Structure of Manufacturer Object dictionary for processdata.

In the CustomOD Example only one PDO (0x1600) is used. One Object can have 255 subobjects. If each Subobject represents 1 Byte and the number of Byte is more then 255 Byte, it is necessary to create an second PDO Object 0x1601.

Example for Processdata structue with more than one PDO.

...

Manufacturer

Objects

...

Suboabjects in the

Manufacturer Object

...

For Example a Device

...

0x1600

0x1601

0x1602

...

...

0x2000

0x2001

0x2002

....

...

0x2000:01 ; ...

0x2001:01 ; 0x2001:02 ;  0x2001:03 ; ...

0x2002:01 ; 0x2002:02 ;  ...

...

...

Command (1 Byte)

Zero level (3 Byte)

Speed Value (2 Byte)

...

SM3 Object

...

0x1A00

0x1A01

0x1A02

...

...

0x3000

0x3001

0x3002

...

...

0x3000:01 ; 0x3000:02 ;  ...

0x3001:01 ; 0x3001:02 ; 0x3001:03 ...

0x3002:01 ; 0x3002:02 ; ...

...

...

Status Byte (2 Byte)

Sensor Data 1 (255 Byte)

Sensor Data 2 (2 Byte )

...

The Manufacturer Object can have the Index 0x2000 till 0x5FFF. The Values 0x2000 and 0x3000 can be changed.

In a profile device the object does not have a Index between 0x2000 till 0x5FFF. In this case, the Index has a range of 0x6000 - 0x9FFF.

...

Profiel

Objects

...

Suboabjects in the

ProfielObject

...

For Example a MDP Device

with IO Link profile

...

0x1600

0x1601

0x1602

...

...

0x6000

0x6001

0x6002

....

...

0x6000:01 ; 0x6000:02 ; 0x6000:03 ...

0x6001:01 ; 0x6001:02 ; 0x6001:03 ...

0x6002:01 ; 0x6002:02 ; 0x6002:03 ...

...

...

IO Link Sensor 1 (4 Byte)

IO Link Sensor 2 (10 Byte)

IO Link Sensor 3 (64 Byte)

...

...

SM3 Object

...

0x1A00

0x1A01

0x1A02

...

...

0x7000

0x7001

0x7002

...

...

0x7000:01 ; 0x7000:02 ; 0x7000:03 ...

0x7001:01 ; 0x7001:02 ; 0x7001:03 ...

0x7002:01 ; 0x7002:02 ; 0x7002:03 ...

....

...

IO Link Sensor 1 (4 Byte)

IO Link Sensor 2 (10 Byte)

IO Link Sensor 3 (64 Byte)

...

This picture shows the Linking of this objects:

Image Removed

A Sync Manager Object has a table of PDOs with PDO objects and subobjects. The PDO objects and subobjects are linked to manufacturer obects or profile objects.

...

3 ESI

Add in the ESI the EoE in the Mailbox area

<Mailbox DataLinkLayer="1">

   <EoE IP="1" MAC="1"/>

   <CoE SdoInfo="1" PdoUpload="1" CompleteAccess="1"/>

</Mailbox>

4 TwinCAT

Installe the new ESI in TwinCAT.

Now the EoE can be seen in TwinCAT.

Image Added

The MAC and IP settings will be written to the slave as startup parameter.

Image Added

There is no other way to set the IP to the EtherCAT Slave.

5 application

To use the EoE in the application the socket API is necessary. Go to the Socket Interface Example for more application sourcecode:

netX 90 - Ethernet Interface - Examples