Firmware 1.5 communication structure

The input/output communication protocol follows the CiA402 design specification can be found here: dsp402.pdf

Here is a summary of the commonly used PDO structures:

Sync managers

  • LAN9252 limits the number of Sync managers supported to 4, so as we now support FoE and CoE for SDO we need all of them: 2 for the PDOs and 2 for the SDOs
Sync manager Type Address Name Frequency Size Description
0 MAILBOX 0x1000 MBXOut - 128B SDO and FoE request
1 MAILBOX 0x1180 MBXIn - 128B SDO and FoE respense
2 BUFFERED 0x1300 OrbitaIn 1kHz - Orbita PDO outputs at 1kHz
3 BUFFERED 0x1400 OrbitaOut 1kHz - Orbita PDO inputs at 1kHz
  • Therea are two types of Sync Managers available for EtherCAT communiction: BUFFERED and MAILBOX.
    • The BUFFERED type is used for the OrbitaIn, OrbitaState and OrbitaOut PDOs, because we want to send the data as fast as possible (at 1kHz).BUFFERED type buffers the data in the master and we do not see any potential data loss if the slave is not able to read/write the data in time.
    • The MAILBOX type is used for the ansyn data exchange with request/response mechanism handskahe confirmation.
      • It cannot be used in runtime (only when the LAN9252 is in the PREOP state)
      • It is used for SDO communcation
      • It is used to FoE firmware update

PDO structure

Here is the chosen structure of the PDOs. They now follow relatively well the CiA4 standard. The Indexes correspond to the indexes in the standard and the sub-indexes correspond to the axis of the actuaror 2 axis for orbita2d and 3 axis for orbita 3d.

  • OrbitaIn (RxPdo) - Master to Slave
  • OrbitaState (TxPdo) - Slave to Master
  • OrbitaOut (TxPdo) - Slave to Master
Attribute OrbitaIn (RxPdo) OrbitaState (TxPdo) OrbitaOut (TxPdo)
sm_type BUFFERED BUFFERED BUFFERED
sync manager 2 3 3
address 1000 1200 1300
name OrbitaIn OrbitaState OrbitaOut
write frequency 1kHz 1kHz 1kHz
orbita2d size 43 Bytes 31 Bytes 27 Bytes
orbita3d size 63 Bytes 45 Bytes 39 Bytes

Some important notes

  • LAN9252 limits the number of Sync managers supported to 4, so as we now support FoE and CoE for SDO we need all of them: 2 for the PDOs and 2 for the SDOs
  • So both output PDOs are using the same Sync manager 3 and the input PDOs are using the Sync manager 2

OrbitaIn (RxPdo) - Master to Slave

Entry Name Entry Type Index Sub-Index
controlword UINT16 0x6041 -
mode_of_operation UINT8 0x6060 -
target_position REAL 0x607A 1, 2, … (up to orbita_type)
target_velocity REAL 0x60FF 1, 2, … (up to orbita_type)
velocity_limit REAL 0x607F 1, 2, … (up to orbita_type)
target_torque REAL 0x6071 1, 2, … (up to orbita_type)
torque_limit REAL 0x6072 1, 2, … (up to orbita_type)

OrbitaState (TxPdo) - Slave to Master

Entry Name Entry Type Index Sub-Index
error_code UINT16 0x603F 0 (homing), 1,2, .. (up to orbita_type)
actuator_type UINT8 0x6402 -
axis_position_zero_offset REAL 0x607C 1, 2, … (up to orbita_type)
board_temperatures REAL 0x6500 1, 2, … (up to orbita_type)
motor_temperatures REAL 0x6501 1, 2, … (up to orbita_type)

OrbitaOut (TxPdo) - Slave to Master

Entry Name Entry Type Index Sub-Index
statusword UINT16 0x6040 -
mode_of_operation_display UINT8 0x6061 -
actual_position REAL 0x6064 1, 2, … (up to orbita_type)
actual_velocity REAL 0x606C 1, 2, … (up to orbita_type)
actual_torque REAL 0x6077 1, 2, … (up to orbita_type)
actual_axis_position REAL 0x6063 1, 2, … (up to orbita_type)

Copyright © 2025 Pollen Robotics