canopen服务器协议,CANOpen协议如何保证通讯不丢帧?-通信/网络-与非网

本文详细介绍了CANopen服务数据对象(SDO)通讯协议,重点阐述了其握手通讯机制,确保数据在CAN总线上的稳定、可靠传输。快速SDO和普通SDO协议的原理和应用场景被详细解析,对于需要传输超过32位数据的情况,普通SDO协议通过分帧传输确保数据完整性。通过对这些协议的理解,工程师可以更好地实现CANopen网络中的参数配置和关键数据交换。

摘要:如何让现场总线通讯更加稳定可靠,不丢失,这向来都是工程师们难以解决的问题。本文将运用国际规范的通讯协议来展示怎样才能搭建好握手通讯。

服务数据对象 SDO(Service data object)

SDO 主要用于 CANopen 主站对从节点的参数配置。服务确认是 SDO 的最大的特点,为每个消息都生成一个应答,确保数据传输的准确性。如图 1 所示,这就像快递,需要收方签收后,给寄方发送一个已经签收的确认才算完成一次投递。

d2356d7a93f9854d9cfb16bf2dd2c172.png

图 1  SDO 与快递签收

在一个 CANopen 系统中,通常 CANopen 从节点作为 SDO 服务器,CANopen 主节点作为客户端(称为 CS 通讯)。SDO 客户端通过索引和子索引,能够访问 SDO 服务器上的对象字典。这样 CANopen 主节点可以访问从节点的任意对象字典项的参数,并且 SDO 也可以传输任何长度的数据(当数据长度超过 4 个字节时就拆分成多个报文来传输)。

通讯原则(communication principle)

SDO 的通讯原则非常单一,发送方(客户端)发送 CAN-ID 为 600h+Node-ID 的报文,其中 Node-ID 为接收方(服务器)的节点地址,数据长度均为 8 字节;

接收方(服务器)成功接收后,回应 CAN-ID 为 580h+Node-ID 的报文。这里的 Node-ID 依然是接收方(服务器)的节点地址,数据长度均为 8 字节。如图 2 所示。

6590c45426ab02d8a0968a38f2df9a0e.png

图 2  SDO 通讯原则

快速 SDO 协议(Expedited SDO protocol)

最常用最常见的 SDO 协议是快速 SDO,所谓快速,就是 1 次来回就搞定。前提是读取和写入的值不能大于 32 位。如图 3 所示,为快速 SDO 协议的示意图。命令中直接包含了要读写的索引、子索引、数据。可谓直接命中。

快速 SDO 的难点在于 CS 命令符的记忆,需要读者收藏这个示意图。

0f3ba2077173f1046f27a5320523535c.png

图 3  快速 SDO 示意图

通过快速 SDO,可以直接对 CANopen 节点的对象字典中的值进行读取和修改,所以在做参数配置之外,也经常作为关键性数据传输之用。比如 CANopen 控制机器人的电机转动角度时,就使用 SDO 来传输,保证可靠到达。

普通 SDO 协议(Normal SDO protocol)

当需要传输的值超过 32 位时,就不能使用快速 SDO 传输。必须使用普通 SDO 进行分帧传输。在应用中较少用到,一般用于 CANopen 节点的程序固件升级,或者做网关转换 MVB 总线之类数据最大可达 256 位的应用。

普通 SDO 协议难点在于分包逻辑与 CS 命令符的变化。依然难以记忆,需要读者将以下示意图进行收藏。

当然普通 SDO 的 CAN 帧 ID 与快速 SDO 相同,依然发送方(客户端)发送的报文 CAN-ID 为 600h+Node-ID,接收方(服务器)成功接收后,回应 CAN-ID 为 580h+Node-ID 的报文。

下载协议 download protocol 如图 4 所示。

79a466cff6a2e129871e9faee3c057fb.png

图 4  普通 SDO 下载协议

上传协议 upload protocol 如图 5 所示。

dce40946447f9e4cc06c3b3d0afc47b7.png

图 5  普通 SDO 上传协议

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值