CanOpenStandards -- since 2005 they are all available for free, simply download at CiA Web site.
Current version of the CiA 301 documnet is 4.2
Edison asked: The NMT master issues NMT control messages to the slaves. But the slave does not respond. Then how does the NMT master know whether the slave has entered the state the master wanted it to enter?
By watching heart beat, node state is coded there; oe@port.de
you are right, NMT is an unconfirmed service. For checking the actual state of the devices Heartbeat or Guarding can be used. With Heartbeat each configured device periodically transmits its status. With the (old) Guarding the NMT Master transmits a Remote Frame to which the slave answers with its status. juergen.klueser@web.de
You can check the network state either with Nodeguarding or with Heartbeat. Both NMT error control services work with the same identifier (700h + Node ID).
4 = Stopped 5 = Operational 127 = Pre-Operational Please note that the most-significant bit in the response message toggles for each request.
Of course, the object dictionary IS stored in the device. The EDS file is a description of the objects stored in the device. And typical it is a electronic file, stored on some electronic readable media. If an configuration master, or application master wants to know data types, it has to read and evaluate the file. Or it knows implicitely what and how to access. Besides this, a specification exists, that a CANopen device can store the EDS internally in the device. Other devices (don't use "master" always, remember we really have a multi-master system) can download the EDS using SDO domain transfer. oe@port.de
Since version 4.0 of the DS301, it is recommended to use Heart Beat. For a new development you should prefer it. From the technical view Heart Beat provides a better usage of the CAN network bandwith. From the commercial point of view: choose a library which provides both, than your device can be configured to take part in either of both methods. See also CanOpenAndRtr.
Daniel: we have a network with different kinds of CANopen-nodes. One of these nodes is superior. This node is a control which function as master. So far the general situation. Now every node has its Default SDO-Server, which is defined under 0x1200 in the object dictionary. To configure the nodes, the master uses at the start-up of the network the default SDO-Server. Now there is diagnostic system in the network to monitor the nodes of the network. The question: Has the diagnostic system to use an other SDO Server at the nodes to to monitor them? Someone told me, that only the master should use the Default-SDO and this should be a part of the standard, but I can't find it there. Is this right, or are there other requirements of that kind?
Jürgen: this is right, normally a second SDO client should use another SDO. It is not documented in the CANopen specifications, since this is already a requirement of the underlying CAN: Every ID in the network must be send only by one device (exist some exceptions...).
But in practical systems the used devices have only one SDO server available. For solving this problem, CiA has defined in CIA302 the so-called SDO Manager, which is responsible to manage the assignment of the SDOs. There are only a few applications with an SDO Manager in the market. In most systems there is not really a problem: Typically a "Master" uses SDOs only in the start-up phase. So the SDOs can be used later on. But in fact this is responsibility of the system integrator.
The CANopen standards do specify protocols, services etc., but it does not intend to specify how to be used. Like with CAN: It specifies messages IDs, but not, what do to with.