Chapter 8 Using SDO Protocol API | PCI-DMC-A01 / PCI-DMC-B01
8-2 Revised March, 2012
8.1 CANopen SDO protocol
※Sample SDO Packet Format for CANopen 1 – Index Read/Write successful
When Index read is “Successful”, the return value is in the following format:
Table 8.2
Field
name:
Datatype Index low Index high Sub index Data1 Data2 Data3 Data4
Command 0x40 0x64 0x60 0x00 0x00 0x00 0x00 0x00
Return 0x43 0x64 0x60 0x00 0x11 0x22 0x33 0x44
Table description:
(1) Read Feedback PUU (CANopen's Index is set as 0x6064 and SubIdx set as 0x00).
(2) Datatype is set as 0x40 to indicate read.
(3) Datatype is then returned as 0x43.
If the returned Datatype is 0x43, then the data received is 32bit [Data1~Data4 all valid].
If value is 0x4b, then the data received is 16bit [Data1~Data2 are valid].
If value is 0x4f, then the data received is 8bit [Data1 is valid].
(4) Data1~Data4 fields are read from the low Word first. Higher invalid data are all 0.
The value returned by the above table to indicate that it has received Feedback PUU is
therefore 0x44332211.
When Index write is “Success”, the return value is in the following format:
Table 8.3
Field
name:
Datatype Index low Index high Sub index Data1 Data2 Data3 Data4
Command 0x2b 0x40 0x60 0x00 0x08 0x00 0x00 0x00
Return 0x60 0x40 0x60 0x00 0x00 0x00 0x00 0x00
Table description:
(1) Write control code ControlWord (CANopen's Index is set as 0x6040 and SubIdx set as
0x00).
(2) Datatype set to 0x2b to indicate write.
(3) If entered Datatype value is 0x23 this means the data being written is 32bit [Data1~Data4
all valid].
Input value of 0x2b means data being written is 16bit [Data1~Data2 are valid].
Input value of 0x2f means data being written 8bit [Data1 is valid].
(4) If the returned Datatype is 0x60, this means the write was successful; Data1 ~ Data4
returned at this time are not applicable.