EtherCAT & PROFINET DISCUSSION

What is CANopen over EtherCAT (CoE), and how are PDOs mapped for a CiA 402 servo drive?

Started by chetanvaddorya CANopen over EtherCATCoEPDO mappingCiA 402 drive profileobject dictionary
5 replies 248 views 6 participants
Latest activity · 30 Sep 2026

What is CANopen over EtherCAT (CoE), and how are PDOs mapped for a CiA 402 servo drive?

chetanvaddorya EtherCAT & PROFINET Forum
#1

My EtherCAT servo drive's manual talks about "CoE", an object dictionary, RxPDO 0x1600 and TxPDO 0x1A00, and objects like 0x6040 and 0x6064. I know a little CANopen from CAN bus, but here there are no CAN identifiers and no 8-byte limit.

How much of CANopen is actually used in CoE, and how does the master know which bytes of the cyclic frame are the controlword, the target position and so on?

Community replies 5

Re: What is CANopen over EtherCAT (CoE), and how are PDOs mapped for a CiA 402 servo drive?

#2

CoE reuses the application layer of CANopen and drops the CAN-specific transport. What is kept: the object dictionary with 16-bit index and 8-bit subindex, SDO access to it, the PDO concept, emergency messages and the device profiles such as CiA 402 for drives. What is gone: COB-IDs, the 8-byte PDO limit, NMT (the EtherCAT state machine takes its place) and heartbeat.

SDOs travel through the EtherCAT mailbox, an acyclic channel available from PRE-OP onward. PDOs are not separate messages at all: their content is simply the slave's section of the cyclic process data, exchanged through the sync managers.

Re: What is CANopen over EtherCAT (CoE), and how are PDOs mapped for a CiA 402 servo drive?

#3

The mapping is described by two layers of objects. A mapping object lists the dictionary entries packed into one PDO: 0x1600 and up for RxPDOs (master to drive), 0x1A00 and up for TxPDOs (drive to master). Each entry is a 32-bit value holding index, subindex and bit length, so 0x60400010 means object 0x6040, subindex 0, 16 bits.

The assignment objects then say which PDOs are active: 0x1C12 lists the RxPDOs assigned to the output sync manager and 0x1C13 the TxPDOs assigned to the input sync manager. The byte layout of the process data is the order of those entries, little-endian.

Re: What is CANopen over EtherCAT (CoE), and how are PDOs mapped for a CiA 402 servo drive?

#4

A typical cyclic synchronous position setup looks like this. RxPDO: controlword 0x6040 (16 bits) and target position 0x607A (32 bits), 6 bytes of outputs. TxPDO: statusword 0x6041 (16 bits) and position actual value 0x6064 (32 bits), 6 bytes of inputs. The mode is selected with object 0x6060 (value 8 for cyclic synchronous position), either by SDO in PRE-OP or mapped into the PDO.

The drive is then enabled through the CiA 402 state machine by writing 0x0006, 0x0007 and 0x000F to the controlword in sequence while watching the statusword. Before enabling, set the target position equal to the actual position, otherwise the drive sees a jump on the first cycle and trips on following error.

Re: What is CANopen over EtherCAT (CoE), and how are PDOs mapped for a CiA 402 servo drive?

#5

The master learns all this from the ESI file, the XML device description supplied by the manufacturer, which lists the default PDOs, the alternatives and whether the mapping is fixed or changeable. Configuration tools read the ESI and generate the start-up SDO writes.

If you write the master code yourself, the sequence to change a mapping in PRE-OP is: write 0 to subindex 0 of the assignment object (0x1C12 or 0x1C13), write 0 to subindex 0 of the mapping object, write the entries, write the entry count to its subindex 0, write the PDO index into the assignment object, and finally set the assignment's subindex 0 to the number of PDOs. If the sync manager sizes do not match afterwards, the drive refuses SAFE-OP.

Re: What is CANopen over EtherCAT (CoE), and how are PDOs mapped for a CiA 402 servo drive?

#6

Units deserve a check before first motion. Position objects are in the drive's own increments unless scaling objects are configured, so a target of 10,000 may be a small fraction of a turn on a high-resolution encoder: with a 23-bit encoder, one motor revolution is 8,388,608 counts.

Read the actual position while turning the shaft by hand to confirm the counts per revolution and the direction before commanding anything, and set conservative following-error and velocity limits for the first tests.

TEP COMMUNITY