Using the ``--pdo`` (or ``-p``) parameter one can inspect the current PDO configuration, this are the CoE parameters available for synchronous read and write::
$ sudo ec-info eth0 -p -t12
terminal no 12
7000:02 OUT 0 1
7000:03 OUT 0 2
7000:04 OUT 0 3
7000:11 OUT 2 H
7010:01 OUT 4 0
7010:02 OUT 4 1
7010:03 OUT 4 2
7010:21 OUT 6 H
6000:02 IN 0 1
6000:03 IN 0 2
6000:04 IN 0 3
...
The first columns shows the CoE address, the second shows OUT for data written
to the terminal, IN for those read from it. The third column indicates the byte
adress in the synchronous datagram, and the last column either the bit within
that byte, or an indicator of the ssize of the parameter. The meaning of the
parameters can be found in the terminal's documentation, or possibly via the
``--sdo`` parameter.
The CoE adresses shown here following a pattern that at least Beckhoff
Automation follows: the 7xxx:xx range are the output parameters, the 6xxx:xx
range are the input parameters.
The ``--sdo`` (or ``-s``) paramter shows the terminal's self description of
parameters. This self description, however, varies in quality depending on the
vendor. Let's go through some of the output::
$ sudo ec-info eth0 -s -t12
terminal no 12
1000:
0: Device type UNSIGNED32 (32 bit) flags 7
1008:
0: Device name VISIBLE_STRING (48 bit) flags 7
1009:
0: Hardware version VISIBLE_STRING (16 bit) flags 7
100A:
0: Software version VISIBLE_STRING (16 bit) flags 7
1011:
1: SubIndex 001 UNSIGNED32 (32 bit) flags 3F
1018:
1: Vendor ID UNSIGNED32 (32 bit) flags 7
2: Product code UNSIGNED32 (32 bit) flags 7
3: Revision UNSIGNED32 (32 bit) flags 7
4: Serial number UNSIGNED32 (32 bit) flags 7
...
The output usually starts with some identification of the device itself. Note
that the output is grouped by CoE groups, so in the example the adress of the
serial number (last line) would be 1018:4. Adding the ``--values`` (or ``-v``)
parameter also shows the current values of the CoE parameter, for numbers both
in decimal and hexadecimal::
$ sudo ec-info eth0 -s -v -t12
terminal no 12
1000:
0: Device type UNSIGNED32 (32 bit) flags 7
5001 1389
1008:
0: Device name VISIBLE_STRING (48 bit) flags 7
ES7031
'ES7031'
1009:
0: Hardware version VISIBLE_STRING (16 bit) flags 7
13
'13'
100A:
0: Software version VISIBLE_STRING (16 bit) flags 7
13
'13'
1011:
1: SubIndex 001 UNSIGNED32 (32 bit) flags 3F
0 0
1018:
1: Vendor ID UNSIGNED32 (32 bit) flags 7
2 2
2: Product code UNSIGNED32 (32 bit) flags 7
460795986 1B773052
3: Revision UNSIGNED32 (32 bit) flags 7
1703936 1A0000
4: Serial number UNSIGNED32 (32 bit) flags 7
72315 11A7B
...
Later on, the actual functionality of the terminal is shown. As an example, a
stepper motor terminal might be enabled with a boolean value, and a velocity
may be set::
7010:
1: Enable BOOLEAN (1 bit) flags 47
0 0
2: Reset BOOLEAN (1 bit) flags 47
0 0
3: Reduce torque BOOLEAN (1 bit) flags 47
0 0
11: Position UNSIGNED32 (32 bit) flags 47
0 0
21: Velocity INTEGER16 (16 bit) flags 47
0 0
So in this example, CoE address 7010:21 is a 16 bit integer that sets the drive