Frustratedone
Frustratedone

Reputation:

CANopen PDOs and a communication profile

If the data contains more than one value, how do I know what these values represent? And how do I break up the data into individual values? Am I right to say that the relationship between the PDOs and data to be transmitted are defined in the communication profile?

(I thank Matli for having explained that the CAN interface API probably has functions to retrieve the ID, data length and the data of a CANopen message. Based on the explanation, one could tell if the frame is a PDO and derive the sender node's ID from the COB-ID.)

Upvotes: 1

Views: 1056

Answers (2)

Henning
Henning

Reputation: 21

There are two places in the OD, where you can get all the information you need about PDOs that swirl around the bus. That is provided you know of all the connected nodes:

  1. PDO parameters (R: 0x14xx and T: 0x18xx). In each subindex 1 you find the COB-ID that particular PDO uses.
  2. PDO mapping (R: 0x16xx and 0x1Axx): Each subindex greater than 0 contains the mapping of one dictionary Object and where to find it in the 8-byte-bulk of that PDO.

For further information:

Process data exchange with PDOs ("Process Data Objects")

Upvotes: 1

matli
matli

Reputation: 28600

The relationship between PDOs and data is defined in the PDO mapping entries in the Object Dictionary. But that is probably not the easiest way to find out.

Since I don't know what device you are trying to communicate with, I cannot give you any information about its data output. You will have to consult the documentation for the device or ask the manufacturer. However, if you for example have a generic I/O module fully compliant with a specific Device Profile (e.g. 401 for generic I/O modules), it will probably have default mappings according to that device profile.

I recommend that you read CiA DS 301 and also any applicable device profile. Those documents are available from CiA

Upvotes: 2

Related Questions