CANopen原理--SDO(download)

本文介绍CANopen中的SDO download expedited原理,以及在CanFestival中的实现过程。

一、SDO download

当需要写节点中的对象字典的值时,使用SDO download协议。
当对象字典的长度小于或等于4个字节时,使用SDO download expedited。
当对象字典的长度大于4个字节时,使用SDO download normal(segment)。

二、SDO download expedited 帧格式

客户端发送:
CANopen原理--SDO(download)_第1张图片
其中,n与对象字典的长度有关:
CANopen原理--SDO(download)_第2张图片
服务器正常响应:
CANopen原理--SDO(download)_第3张图片
服务器错误响应:
CANopen原理--SDO(download)_第4张图片

三、CanFestival中的实现

以CanFestival作为服务器为例,收到一个客户端SDO请求后的处理流程如下:
CANopen原理--SDO(download)_第5张图片
最终通过函数setODentry()写到相应的对象字典。

四、实例

以下为几个SDO download expedited的示例:
CANopen原理--SDO(download)_第6张图片

序号为274的帧:将0xff写入对象字典0x1400:02,即RPDO1的通信类型为255。
序号为276的帧:将0xff写入对象字典0x1401:02,即RPDO2的通信类型为255。
序号为278的帧:将0xff写入对象字典0x1402:02,即RPDO3的通信类型为255。
序号为280的帧:将0xff写入对象字典0x1403:02,即RPDO4的通信类型为255。
序号为282的帧:将0x0064写入对象字典0x1017:00,即心跳产生周期为100ms。
序号为284的帧:将0x007f012c写入对象字典0x1016:01,即127(0x7f)号节点的心跳监控周期为300(0x012c)ms。

你可能感兴趣的:(CANopen)