本文介绍CANopen中的SDO download expedited原理,以及在CanFestival中的实现过程。
一、SDO download
当需要写节点中的对象字典的值时,使用SDO download协议。
当对象字典的长度小于或等于4个字节时,使用SDO download expedited。
当对象字典的长度大于4个字节时,使用SDO download normal(segment)。
二、SDO download expedited 帧格式
客户端发送:
其中,n与对象字典的长度有关:
服务器正常响应:
服务器错误响应:
三、CanFestival中的实现
以CanFestival作为服务器为例,收到一个客户端SDO请求后的处理流程如下:
最终通过函数setODentry()写到相应的对象字典。
四、实例
以下为几个SDO download expedited的示例:
序号为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。