1

I know that with PDO there can be more than one receiver, but I wonder if that also applies to SDO block upload, so if I can have node A acting as a client, node B as a server and having some "eavesdropping" node C receiving a copy of the payload data.

I guess one of the risks is that there won't be any ack from C on whether data has been received or the CRC matches, so even if possible, I don't think is a good idea.

Is there a way in CANopen to sort of "broadcast" segmented data to more than one destination? The reason is not to duplicate bandwidth in B to A and B to C transfers.

Joan
  • 1,403
  • 1
  • 9
  • 11
  • Surely you can do whatever you want, and if C can see the transfer on the wire, it surely can process it. But as you mention, the acks will be missing, so it's not a good idea. Seems like you have already answered that. – user253751 May 17 '22 at 12:05

1 Answers1

1

Officially not, SDO are point to point and, in fact, the state machines required are pretty much detailed in the specs.

Even in practice it is not really possible to handle transmission errors, because there is the toggle bit status which need do be synchronized.

I guess what you are looking for is something like J1939 BAM transfers… they however have their limitation. The 'reliable broadcast' is actually a quite complex communication situation to scale up.

The most similar thing I could think of in a 'pure' CANopen framework (remember that technically you can send whatever you want on non-CANopen IDs) are MPDOs in SAM mode (multiplexed PDOs in source address mode). Of course you'll need to conceive some way to handle error, it all depends on your application case.

Lorenzo Marcantonio
  • 8,431
  • 8
  • 30
  • The more I know about CANopen, the more I realize how clumsy, wasteful of bandwidth, over-specified and rigid without a reason is. In short, the essence of germanic modern "engineering". – Joan May 17 '22 at 14:13
  • 1
    It has to be if everything need to talk with everything without serious reprogramming. If you have control on your node software you can get way more efficient. Also the use cases for CANopen are quite restricted (in short, only a little more than process automation) – Lorenzo Marcantonio May 18 '22 at 09:09