Skip to content

SDO transfert abort 0x05040000 because the library is loosing device answer's frame. #623

@elmout31

Description

@elmout31

CanOpen library 2.4.1
(Ubuntu 24.04 / Python 3.10.18)

Mme, Sir,

Issue: "Transfer aborted by client with code 0x05040000" (= client timeout) even if the device answer within 10ms of the request and the timeout is not touched (Default found in the library code=300ms).

Investigation: This always append in this context. A SYNC frame is send by the command
network.sync.start(0.04).

If the SDO request (nodes[dev_num].sdo.download(SDO_INDEX, sub_index, val_bytes)) appears on the bus just few µs before the SYNC and the device answer is just after the SYNC. The answer seems not to be read by the library which declare a timeout and send the abort frame (300ms after the initial request). This behavior is systematic.

Image Image

On the can dump, you may see the SDO upload request answering within 10ms of the request, nevertheless the library sent the abort 300ms later.
In the dump, the SDO arrive 0.3µs before the SYNC and the answer is just after the SYNC.

If the SDO is well spaced from the next SYNC and the device had time to answer before the SYNC, it is working fine. In the example below, it is working fine
Image.

I also check network bus error but there is none:

Image

PS:

  • The device which answer SDO request is a true hardware device on the network and so has a different clocking crystal then the PC.
  • The candump software is also on the same PC than the program which use the library, so the PC is correctly receiving the frame.

Regards
Elmout

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions