摘要:怎么让现场总线通讯愈加安稳牢靠,不丢掉,这向来都是工程师们难以解决的问题。本文将运用世界标准的通讯协议来展现怎样才能搭建好握手通讯。
服务数据目标SDO(Service data object)
SDO首要用于CANopen主站对从节点的参数装备。服务承认是SDO的最大的特色,为每个音讯都生成一个应对,确保数据传输的准确性。如图 1所示,这就像快递,需求收方签收后,给寄方发送一个现已签收的承认才算完结一次投递。
图 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所示。
图 2 SDO通讯准则
快速SDO协议(Expedited SDO protocol)
最常用最常见的SDO协议是快速SDO,所谓快速,便是1次来回就搞定。条件是读取和写入的值不能大于32位。如图 3所示,为快速SDO协议的示意图。指令中直接包含了要读写的索引、子索引、数据。可谓直接射中。
快速SDO的难点在于CS指令符的回忆,需求读者保藏这个示意图。
图 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所示。
图 4 一般SDO下载协议
上传协议upload protocol 如图 5所示。
图 5 一般SDO上传协议