-
Notifications
You must be signed in to change notification settings - Fork 216
Description
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.
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
.
I also check network bus error but there is none:
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