未使用的字节是否设置为零以响应 SDO 读取?

Are unused bytes set to zero in response to SDO reads?

我发送 SDO 请求读取一个 1 字节的值,如下所示:

|11 bit COD-ID | byte 0 | byte 1 | byte 2 | byte 3   | byte 4 | byte 5 | byte 6 | byte 7 |
| 0x0601       | 0x40   |      index      | subindex | 0x00   | 0x00   | 0x00   | 0x00   |

设备响应:

|11 bit COD-ID | byte 0 | byte 1 | byte 2 | byte 3   | byte 4 | byte 5 | byte 6 | byte 7 |
| 0x581        | 0x4F   |      index      | subindex | 0xFF   | 0x00   | 0x00   | 0x00   |

0x4F表示返回值只有8位宽,只设置了字节4。字节5、6、7呢?标准保证它们为零吗?

是的,SDO 请求中涉及的 CAN 帧始终具有 8 字节的有效载荷。未使用的字节设置为 0,收件人应忽略。

CiA 301 第 7.2.4.3 节保证了这一点,该节描述了 SDO 协议。