总线通讯协议

Bus protocol

CANopen 总线协议报文分析
CANPro 协议分析平台中的 CANopen 协议分析插件有两种,一是 Block_CANopen,用于分析支持块传输的 CANopen 协议报文,二是 CANopen,用于分析不支持块传输的CANopen 协议报文。更多CANopen 协议请看CANopen 总线协议


之所以作这样的区分,是因为 CANopen 协议中的块传输的报文是上下文相关的,要识别块传输报文需要知道之前传输的报文信息,但是 CANPro 协议分析平台只针对当前的 CAN 帧进行分析,因此无法识别块传输报文,而且只根据当前 CAN 帧判断可能会将块传输报文误认为是其他的 SDO 报文。

因此,对于支持块传输的 CANopen 协议,在遇到 SDO 报文时,只显示它的节点 ID 和数据域,不再判断它是属于 SDO 中具体的哪种类型。不支持块传输的 CANopen 协议则会识别出 SDO 报文的具体类型。

下面对 Block_CANopen 协议中的每一类报文进行详细介绍:

1、 NMT Error Control NMT 错误控制报文
(1)、Node ID 从节点的 ID 标识
(2)、Node Status 节点状态信息

2、 Node Guarding Request 节点保护请求报文,用于获取从节点状态
(1)、Node ID 从节点的 ID 标识

3、 NMT Module Control NMT 模块控制报文
(1)、NMT Command NMT 命令标识
(2)、Node ID 从节点的 ID 标识

4、 SYNC 同步报文

5、 EMCY 紧急错误报文
(1)、Error Code 紧急报文的错误码
(2)、Error Register 紧急报文的错误寄存器
(3)、Manufacturer Specific 厂商自定义的错误码

6、 TIME 时间报文
(1)、Time Stamp 时间报文中的时间戳信息,已解析为时间

7、 PDO PDO 报文
(1)、PDO Object PDO 通讯对象
(2)、Node ID 从节点的 ID 标识
(3)、PDO Data PDO 对象数据

8、 Remote PDO 远程 PDO 报文,用于请求 PDO 传输
(1)、PDO Object PDO 通讯对象
(2)、Node ID 从节点的 ID 标识

9、 SDO SDO 报文
(1)、SDO Object SDO 通讯对象
(2)、Node ID 从节点的 ID 标识
(3)、Data Field SDO 对象数据

CANopen 协议与
Block_CANopen协议的报文定义都相同,只有对 SDO 报文的解释与 Block_CANopen 不同,这里不再赘述,CANopen 协议中定义的各种 SDO 报文如下:

1、Initiate SDO Download Request 初始化 SDO 下载请求报文
(1)、Node ID 从节点的 ID 标识
(2)、Object Index 对象索引值
(3)、Object Sub-index 对象子索引值
(4)、Transfer Type 指示传输类型为快速传输还是一般的分段传输
(5)、Size Indicator 指示报文是否标识了传输量
(6)、Bytes Not Data 数据域中无效的字节数,只有快速传输才有效
(7)、Bytes Downloaded 下载的数据字节数,只有分段传输才有效
(8)、SDO Data SDO 数据域,只有快速传输才有效

2、Initiate SDO Download Response 初始化 SDO 下载响应报文
(1)、Node ID 从节点的 ID 标识
(2)、Object Index 对象索引值
(3)、Object Sub-index 对象子索引值

3、Download SDO Segment Request SDO 分段下载请求报文
(1)、Node ID 从节点的 ID 标识
(2)、Toggle Bit 触发位
(3)、Whether More Segments 标识是否最后一个分段
(4)、Bytes Not Data 数据域中无效的字节数
(5)、SDO Data SDO 数据域

4、Download SDO Segment Response SDO 分段下载响应报文
(1)、Node ID 从节点的 ID 标识
(2)、Toggle Bit 触发位

5、Initiate SDO Upload Request 初始化 SDO 上传请求报文
(1)、Node ID 从节点的 ID 标识
(2)、Object Index 对象索引值
(3)、Object Sub-index 对象子索引值

6、Initiate SDO Upload Response 初始化 SDO 上传响应报文
(1)、Node ID 从节点的 ID 标识
(2)、Object Index 对象索引值
(3)、Object Sub-index 对象子索引值
(4)、Transfer Type 指示传输类型为快速传输还是一般的分段传输
(5)、Size Indicator 指示报文是否标识了传输量
(6)、Bytes Not Data 数据域中无效的字节数,只有快速传输才有效
(7)、Bytes Downloaded 上传的数据字节数,只有分段传输才有效
(8)、SDO Data SDO 数据域,只有快速传输才有效

7、Upload SDO Segment Request SDO 分段上传请求报文
(1)、Node ID 从节点的 ID 标识
(2)、Toggle Bit 触发位

8、Upload SDO Segment Response SDO 分段上传响应报文
(1)、Node ID 从节点的 ID 标识
(2)、Toggle Bit 触发位
(3)、Whether More Segments 标识是否最后一个分段
(4)、Bytes Not Data 数据域中无效的字节数
(5)、SDO Data SDO 数据域

9、Abort SDO Transfer SDO 传输中止报文
(1)、SDO Object SDO 通讯对象(是 Server 还是 Client)
(2)、Node ID 从节点的 ID 标识
(3)、Object Index 对象索引值
(4)、Object Sub-index 对象子索引值
(5)、Abort Code 中止代码,表示传输中止的原因