1

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?

euraad
  • 1,025
  • 11
  • 30
  • That is such a messed up concept. You'll like [this](https://copperhilltech.com/blog/industrial-ethernet-guide-clientserver-vs-masterslave/). Client/Server model should've staid in applications layer, while Master/Slave under link layer. Then, life could be easier to explain. – jay Oct 25 '21 at 02:33
  • @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. – Lundin Oct 25 '21 at 09:38
  • @Lundin Talking about [this](https://copperhilltech.com/blog/industrial-ethernet-guide-clientserver-vs-masterslave/) of that. – jay Oct 25 '21 at 13:16

2 Answers2

2

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.

Lundin
  • 17,577
  • 1
  • 24
  • 67
  • Don't forget LSS Master and LSS slave :) – euraad Oct 25 '21 at 14:35
  • 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? – euraad Oct 25 '21 at 14:40
  • @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. – Lundin Oct 25 '21 at 14:45
  • Thank you so much for the explanation. It's sooo confusing when CANopen manuals says that client do the request to the server. – euraad Oct 25 '21 at 16:01
  • By the way. I have another question of CANopen you might are intrested into. It's a simple question about SYNC. – euraad Oct 25 '21 at 16:01
  • @MrYui Yes I could answer that one but so can any learning material. CANopen is pretty complex but you'll at least have sort out the basic stuff through conventional studies. – Lundin Oct 26 '21 at 06:16
  • I have problems to undetstand why I should define the COB ID's + "valid" in the Object Dictionary such as 0x1200 or 0x1028, 0x1012. Why "valid"? Is that a way to describe for the master which node have activated EMCY, TIME, SDO channel etc? Like a "remember note"? Nothing special actually? – euraad Oct 26 '21 at 17:39
0

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.

A.R.C.
  • 307
  • 4
  • 12
  • Object 0x1200 only tell the other nodes at the CAN network which is server and which is not server (client). – euraad Oct 26 '21 at 17:32