COB-ID的简单理解分析

转载地址:https://blog.csdn.net/jiesunliu3215/article/details/108446470

这里CAN-id和COB-ID是不一样的,参考https://blog.csdn.net/wojiuguowei/article/details/125376319?utm_medium=distribute.pc_relevant.none-task-blog-2defaultbaidujs_baidulandingword~default-0-125376319-blog-108446470.pc_relevant_3mothn_strategy_recovery&spm=1001.2101.3001.4242.1&utm_relevant_index=3
COB-ID的简单理解分析_第1张图片
COB-ID可以理解是CAN-ID。
CANopen 将 CANbus 11 位元的 ID 分为 4 位元的功能码及 7 位元的 CANopen 节点 ID。
这个理解没什么问题。
举个例子,0x1FF是一个PDO的COB-ID,分解一下是0011 1111111,前4个是3,是功能码,表示TPDO1。后7个是节点ID(Node ID),0x7F,127。
再来一个。0x701,分解下,1110 0000001,前4个是14,功能码,表示网络控制-错误控制。后7个是节点ID,1。

NMT:
切换状态机用的
SDO cmd:
data[0]: 0x2F 0x2B 0x23命令 是写入指定位置(primeIndex+subIndex)几个字节的命令

namespace SDOCmd
{
UNS16 W1 = 0x002F; //write 1 byte
UNS16 W2 = 0x002B; //2
UNS16 W3 = 0x0027;
UNS16 W4 = 0x0023; //4
UNS16 WOK = 0x0060; //write ok

UNS16 Read = 0x0040; //read n byte
UNS16 R1 = 0x004F; //return read 1 byte
UNS16 R2 = 0x004B; //2
UNS16 R3 = 0x0047;
UNS16 R4 = 0x0043; //4
UNS16 ERR = 0x0080; //ok
}
分析:
cobid=func+nodeid=PDO1tx+nodeid
cobid=0x180(或其他0x200,0x280等)+nodeid
实际0x180=0011 000 0000 func=0x03= #define PDO1tx 0x03

SDO格式:
COB-ID的简单理解分析_第2张图片

COB-ID的简单理解分析_第3张图片

COB-ID的简单理解分析_第4张图片

你可能感兴趣的:(canopen,COB-ID,CAN-ID)