[讨论] CAN总线的包ID与设备的关系

bigbat   2024-3-17 11:29 楼主

和朋友聊起来CAN总线,我一直以为设备和包ID是绑定关系,也就是一个设备的功能和包ID是固定地,一个设备可以有多个功能,每个功能就绑定一个ID,例如:温湿度计有两个参数,温度,湿度,露点。那么参数就可以分配三个ID。

但是朋友说:can总的ID是包的特性,所以没有限制ID和设备是必须绑定地,所以任何设备都可以发送其它设备的ID。

不知道各位如何理解,请各位科普一下。

回复评论 (13)

简单理解,两点:

(1)CAN的ID是协议的一部分。 - 表示你可以随便定义。

(2)CAN通过ID来过滤数据帧。- 方便你自定义、过滤不同的设备/协议。

点赞  2024-3-18 15:37

不考虑使用场景,任何设备都可以发送任何ID的can信号。但是实际不是,比如车载,每个设备能发哪些,都是严格规定的,尤其网关帧和诊断帧。楼主没有理解can id和can message的区别,温度,湿度可以在一个can id下面。要是上canfd的协议,还可以从can id看出谁发的,发给谁    水有点深


点赞 (1) 2024-3-18 15:46

我的理解是:CAN的每一个MESSAGE包,必须有一个ID,这个ID是为了标志这个消息是发给谁的,而不管谁发的,所以才有上面的问题。只要我上面的理解是正确地就可以。至于是不是应该管理设备和消息的对应关系就无所谓了。

点赞  2024-3-18 16:02
引用: 数码小叶 发表于 2024-3-18 15:46 不考虑使用场景,任何设备都可以发送任何ID的can信号。但是实际不是,比如车载,每个设备能发哪些,都是严 ...

我说的是协议层的东西,不是管理与应用,can的包只有一个ID,而不像TCP/IP包那样有两个地址字段。

点赞  2024-3-18 16:04

can id 还是包id?

默认摸鱼,再摸鱼。2022、9、28
点赞  2024-3-18 17:04
引用: bigbat 发表于 2024-3-18 16:04 我说的是协议层的东西,不是管理与应用,can的包只有一个ID,而不像TCP/IP包那样有两个地址字段。

标准can没有,但是上了协议后就有了,源地址与目的地址,一个普普通通的ID,包含的信息可不少

点赞  2024-3-18 22:12
在接收到这个ID的时候,能够将带着的数据作为温度的数据;CAN的ID是在软件层面设计的,所以不同的设备可以发送同一个ID,也就是你朋友说的没有限制ID和设备必须是绑定的。
点赞  2024-3-19 09:32

can id和设备的关系就是名称,你喊对方什么名称,对方知道就可以,不设置filter的话,所有设备都可以收到总线上所有的数据,只不过知道了名称,或者说想要的数据,就取了用,不关心的不搭理就可以

点赞  2024-3-19 09:42
引用: LitchiCheng 发表于 2024-3-19 09:42 can id和设备的关系就是名称,你喊对方什么名称,对方知道就可以,不设置filter的话,所有设备都可以收到总 ...

可以看看周立功的can easy begin

点赞  2024-3-19 09:43

你所理解的ID可能是以为是硬件固件的地址,实际上CAN的ID,也是来标识为了有达到高效的通信方式,过滤掉一些他不关心的信息,但是他不是固定的,是在配置中指定的。一个设备可以绑定好几个ID。

本帖最后由 lugl4313820 于 2024-3-19 16:32 编辑
点赞  2024-3-19 16:30
引用: lugl4313820 发表于 2024-3-19 16:30 你所理解的ID可能是以为是硬件固件的地址,实际上CAN的ID,也是来标识为了有达到高效的通信方式,过滤掉一 ...

CAN的协议只定义了ISO 7层的物理层和数据链路层,消息ID的功能用来管理消息的目标也是用来管理消息的优先级。

在应用时也就是过滤器的设置,就像RS485的地址一样

点赞  2024-3-19 18:40
引用: bigbat 发表于 2024-3-19 18:40 CAN的协议只定义了ISO 7层的物理层和数据链路层,消息ID的功能用来管理消息的目标也是用来管理消息的优先 ...

其相比485又好一些,485就是一问一答,他这里可以在总线空闲下随便说话。

点赞  2024-3-19 21:40
引用: lugl4313820 发表于 2024-3-19 21:40 其相比485又好一些,485就是一问一答,他这里可以在总线空闲下随便说话。

rs485没有优先级管理,can是有优先级管理的,所can在多机通讯时可以得到更好的实时性,而且can的物理特性为各设备占用总线的电气设计是可以“线与”的,485则没有要求,只要求是差分信号而已,RS485的地址信号是通过增加信号长度实现的,CAN是通过线与,所以我只说和rs485的地址相似。

点赞  2024-3-20 09:50
电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 京公网安备 11010802033920号
    写回复