1
\$\begingroup\$

According to CSSeletronics.

What is the SDO service?

The SDO service allows a CANopen node to read/edit values of another node's object dictionary over the CAN network.

As mentioned under 'communication models', the CANopen SDO services utilize a "client/server" behavior.

Specifically, an SDO "client" initiates the communication with one dedicated SDO "server".

The purpose can be to update an OD entry (called an "SDO download") or read an entry ("SDO upload").

In simple master/slave networks, the node with NMT master functionality acts as the client for all NMT slave nodes reading or writing to their ODs.

https://www.csselectronics.com/pages/canopen-tutorial-simple-intro#sdo-service-data-object

enter image description here

Why are NMT masters acting as SDO clients and not SDO masters in CANopen?

\$\endgroup\$
3
  • \$\begingroup\$ That is such a messed up concept. You'll like this. Client/Server model should've staid in applications layer, while Master/Slave under link layer. Then, life could be easier to explain. \$\endgroup\$
    – jay
    Oct 25, 2021 at 2:33
  • \$\begingroup\$ @jay What are you even talking about? CANopen is the applications layer and it does not have the master/slave concept apart from the NMT protocol. \$\endgroup\$
    – Lundin
    Oct 25, 2021 at 9:38
  • \$\begingroup\$ @Lundin Talking about this of that. \$\endgroup\$
    – jay
    Oct 25, 2021 at 13:16

2 Answers 2

2
\$\begingroup\$

There is no master/slave in CANopen apart from the NMT protocol. The NMT master is responsible for sending out NMT status changes and is usually also the network supervisor node (heartbeat consumer etc). Notably, SDO transmission can happen in any NMT state, though it's generally recommended to do them in pre-operational mode only. Other than that, there's no relation between NMT and SDO.

As the text say, the SDO communication is to be regarded as point-to-point and no master or other 3rd party needs to be involved. All compliant CANopen nodes must have at least one Tx/Rx SDO.

There is nothing called "SDO master". The terms "client/server" aren't helpful: there's a sender and there's a receiver, and that's it.

I have no idea why your linked tutorial dragged NMT into the explanation of SDO, I can't make any sense of the text. I get the impression that they are speaking of some specific implementation (their own) and not the general case. It is perhaps not the best tutorial.

\$\endgroup\$
7
  • \$\begingroup\$ Don't forget LSS Master and LSS slave :) \$\endgroup\$
    – DanM
    Oct 25, 2021 at 14:35
  • \$\begingroup\$ So "the node with NMT master functionality acts as the client for all NMT slave nodes" is NOT correct? The NMT master functionality should act as the server instead? The server do the request to the client and the client response back? Not the client do the request to the server and the server response back? \$\endgroup\$
    – DanM
    Oct 25, 2021 at 14:40
  • \$\begingroup\$ @MrYui It doesn't make sense in a general CANopen context. You would normally configure each node individually, or at least that's the most common use-case I've encountered. As I already explained, NMT doesn't have jack to do with SDO and client/server are nonsense terms in this context. For example any random node might ask any other random node how that node is configured, then adapt itself accordingly. "Masterless system" is the most correct term, if any. \$\endgroup\$
    – Lundin
    Oct 25, 2021 at 14:45
  • \$\begingroup\$ Thank you so much for the explanation. It's sooo confusing when CANopen manuals says that client do the request to the server. \$\endgroup\$
    – DanM
    Oct 25, 2021 at 16:01
  • \$\begingroup\$ By the way. I have another question of CANopen you might are intrested into. It's a simple question about SYNC. \$\endgroup\$
    – DanM
    Oct 25, 2021 at 16:01
0
\$\begingroup\$

In most cases there is only one SDO channel defined in the system which is then often named "SDO Master". But the CANopen standard allows more than one SDO RX/TX channel in the same network so there can be two or more nodes communicating with others via SDO messages. Thenn the word "SDO Master" is misleading and can not be used. The SDO channels are defined in the Communication Segments object ID 0x1200.

That beeing said, it should be more clear that the NMT Master has nothing to do with a so called "SDO Master".

There is also the possibility of a Multi Master Network where no dedicated NMT master is needed on startup.

\$\endgroup\$
1
  • \$\begingroup\$ Object 0x1200 only tell the other nodes at the CAN network which is server and which is not server (client). \$\endgroup\$
    – DanM
    Oct 26, 2021 at 17:32

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

Not the answer you're looking for? Browse other questions tagged or ask your own question.