SYNC is a special service, which is available both in CANopen and CANopen FD.

The SYNC producer (usually a controller or another device with a precise clock) cyclically transmits a SYNC message, which can be received by other devices (SYNC consumers). These SYNC messages can be used to synchronize anything, but are mostly used to synchronize the PDO transmissions or to synchronize actions.

SYNC configuration objects

The SYNC producer has 2 or 3 objects in its object dictionary to configure the SYNC message:

  • 0x1005 – COB-ID Sync: Definition of CAN-ID and if a device is producer or consumer
  • 0x1006 – Communication Cycle Period: Time between 2 SYNC messages
  • 0x1019 – Synchronous Counter Value: optional object to configure SYNC messages with a SYNC counter

The SYNC consumer has 2 objects in its object dictionary to configure the SYNC reception:

  • 0x1005 – COB-ID Sync: Definition of CAN-ID and if a device is producer or consumer
  • 0x1007 – Snychronous Window Length: Object to define until when a PDO after a SYNC is considered valid (optional)

The CAN-ID for the SYNC message is 0x80 according to CANopen’s pre-defined connection set. Although the CAN-ID for SYNC can be configured in object 0x1005, the author haven’t seen any other CAN-ID for SYNC so far. Nevertheless, it would be theoretically possible to have 2 or more SYNC domains in one network using different SYNC CAN-IDs.

SYNC messages

Illustration of 2 types of CANopen SYNC messages

The original SYNC message has a length of zero. It contained 0 bytes. A newer SYNC messages which has been introduced with CANopen 4.2 includes 1 byte for a SYNC counter. Most older CANopen devices only support the original SYNC message whereas newer devices support both options. The sync counter can be used for a more detailed distribution of synchronous PDOs.

synchronous Transmit PDOs

The subindex 2 of the TxPDOs communication objects contain the transmission type of a PDO.
A value of 1 means that a TxPDO shall be transmitted every SYNC, a value of 2 means that a PDO shall be sent every 2nd SYNC. Up to 240 which means that a TxPDO shall be sent every 240th SYNC message.

synchronous Receive-PDOs

Synchronous RxPDOs (transmission type 1) will receive a PDO, but the values will only taken over into the mapped objects at the next SYNC message. Using this approach one may e.g. sent different commands or new target positions to different devices and the values we be taken over into the application at the next SYNC message at the same time for all devices.