CAN 总线是一种串行通信协议,具有较高的通信速率的和较强的抗干扰能力,可以作为现场总线应用于电磁噪声较大的场合。
由于CAN 总线本身只定义ISO/OSI 模型中的第一层(物理层)和第二层(数据链路层),通常情况下 CAN 总线网络都是独立的网络,所以没有网络层。
在实际使用中,用户还需要自己定义应用层的协议,因此在 CAN总线的发展过程中出现了各种版本的CAN应用层协议,现阶段最流行的CAN应用层协议:CANopen协议。
CANOpen用来收发数据的通信对象有 SDO(Service Data Object)和 PDO(Process Data Object)
一、协议报文结构

1.1 COB-ID(11/29位)
COB-ID(11) = Function Code(4) + Node ID(7) (或其他),如图所示:

Function Code( 二进制):
EMCY:0001;
PDO:0011, 0100, 0101, 0110, 0111, 1000, 1001, 1010;
SDOrx : 1011;
SDOtx : 1100;
NMT error control : 1110;
NMT : 0000;
SYNC : 0001;
TIME STAMP : 0010;
例子:182H=0001 1000 0010(B)
11bit为 0011 0000 010:前四位0011为功能码PDO,后四位为节点号,10=2即节点为2.
表 1 功能码


1.2 数据域 (0-8字节)

1.3 CMD命令字(数据域1st字节)


1.4 对象索引(数据域2nd-3rd字节)与子索引(数据域4th字节)

通讯对象子协议区(Communication profile area)
定义了所有和通信有关的对象参数,如表 2所示,标绿色底纹的索引范围1000h to 1029h为通用通讯对象,所有CANopen节点都必须具备这些索引,否则将

CAN总线是一种串行通信协议,常用于电磁噪声大的环境。CANOpen是CAN总线上的应用层协议,包括PDO和SDO通信对象。PDO用于实时数据传输,SDO则用于非时间关键数据,确保数据准确性。PDO具有同步和异步传输方式,而SDO每次传输最多4个字节,支持服务确认。两者在对象字典中通过索引和子索引进行数据映射。
最低0.47元/天 解锁文章
1万+





