【发布时间】:2020-09-14 22:39:04
【问题描述】:
我正在编写自己的 CANOpen 堆栈,我想使用 C 实现 SDO 服务器。 CiA CANOpen 应用层文档指定 SDO 请求和确认帧如下所示:
还有一些解释如下:
根据我对这张图片的解码,我推测我应该在 SDO 确认帧中发送 8 个字节,但是这 7 个字节将只包含 0。
这是正确的吗?
PS:如果图片不清楚,请见谅。
【问题讨论】:
我正在编写自己的 CANOpen 堆栈,我想使用 C 实现 SDO 服务器。 CiA CANOpen 应用层文档指定 SDO 请求和确认帧如下所示:
还有一些解释如下:
根据我对这张图片的解码,我推测我应该在 SDO 确认帧中发送 8 个字节,但是这 7 个字节将只包含 0。
这是正确的吗?
PS:如果图片不清楚,请见谅。
【问题讨论】:
几乎正确。一个 SDO CAN 帧总是包含 8 个字节,其中未使用的字节为 0。
但是,确认帧有 4 个非零字节。第一个字节是命令说明符(在本例中为 0x60)。接下来的三个是“多路复用器”:两个字节用于对象索引(小端序)和一个字节用于子索引。
【讨论】: