您好,我是一名学习canopen的学生。 Canopen中的COB-ID和CAN标识符有什么关系? 我在CIA主页上看到COB-ID不是CAN ID,但是我不明白
例如,如果一个 PDO 通过 CAN 总线传输,它将从 CANopen 帧转换为 CAN 帧。 CAN标识符不会使用COB-ID的节点ID进行转换吗? 此时的COB-ID根据功能码的不同而有所不同,但比较混乱的是CAN标识符每个设备只有一个。
总结一下我的问题,我想知道 CANopen 在通过 CAN 总线发送消息时如何转换标识符。
Node ID和COB ID是不同的东西
节点 ID 是 CANopen 设备(在连接器中)的硬编码 ID。
COB ID 是 CAN 标识符(11 位或 29 位)和 RTR
bit 1:请求,0:数据
CAN 标识符本身包含优先级。
在一些(?)CANopen 标准中,如 CiA-301,一些 COB-ID 范围或值被保留。
见: https://en.wikipedia.org/wiki/CAN_bus#Frames
https://www.can-cia.org/standardization/specifications/ CiA-301 V4.2.0 §7.3.5 (要下载你需要登录,但它是免费的)
Node-ID基本上就是can行中的设备名称。如果你想控制设备,你需要用那个名字来访问它。每个设备都有不同的节点 ID,因此您可以单独控制每个设备。您可以创建该名称,并且可以根据需要进行更改。这些设备通常带有默认的节点 ID。您可以在设备的数据表中看到它。例如,默认 Node-ID=1。
COB-ID(s) 包含 Node-ID(s) 并且 COB-ID(s) 有一个标准。
正如您在链接上看到的表格。如果你想使用 PDO 发送和接收数据,例如你想使用 PDO1 并且你的设备的节点 ID 是 1.
所以你的 COB-ID 是 180+Node-id=181(你可以从设备中获取数据(信息))与 PDO1
和 200+node-id=201(您可以将数据(命令)发送到设备)与 PDO1
cob id是根据Node-ID和请求类型(例如SDO,PDO)计算的。 https://web.archive.org/web/20180816162140/http://www.canopensolutions.com/english/about_canopen/predefined.shtml