newlined 发表于 2024-3-1 10:06:37

关于CAN通信的应答位(ACK)的疑问

大家好,正在学CAN,我看了何滨教授关于CAN的视频讲座后,有一个疑问,
假设一个网络内有多个节点,一个节点发出信息后,希望其他的节点都接受,
它发完CRC后,希望其他的节点发出应答位(ACK),
那么这个节点如何知道其他的节点都收到了信息,而且都发出了自己的ACK,谢谢。

LAOXU 发表于 2024-3-1 10:18:32

这是广播发送形式, 像 RS485 类, 都是无应答的.

CAN通信估计也是如此, 这是半双工通讯的通病.

newlined 发表于 2024-3-1 10:27:27

LAOXU 发表于 2024-3-1 10:18
这是广播发送形式, 像 RS485 类, 都是无应答的.

CAN通信估计也是如此, 这是半双工通讯的通病. ...

不会吧,我记得是发完CRC后,需要接收方填写ACK位。

乘风飞扬 发表于 2024-3-1 11:02:29

newlined 发表于 2024-3-1 10:27
不会吧,我记得是发完CRC后,需要接收方填写ACK位。

有一个节点进行应答,数据就发送成功。不能确认所有节点是否都能收到,毕竟有些节点发生故障,例如进入BUS OFF模式,整个网络还是要能够正常工作不受影响。

newlined 发表于 2024-3-1 11:06:08

乘风飞扬 发表于 2024-3-1 11:02
有一个节点进行应答,数据就发送成功。不能确认所有节点是否都能收到,毕竟有些节点发生故障,例如进入BU ...

是这样,明白了,谢谢您的回复。

LAOXU 发表于 2024-3-1 12:06:50

乘风飞扬 发表于 2024-3-1 11:02
有一个节点进行应答,数据就发送成功。不能确认所有节点是否都能收到,毕竟有些节点发生故障,例如进入BU ...

点对点是有应答的,广播发送形式(主机对所有辅机), 是没有应答的, 否则所有辅机应答, 信号叠加乱套了, 主机根本无法正确接收解码.

newlined 发表于 2024-3-1 14:59:24

本帖最后由 newlined 于 2024-3-1 15:16 编辑

LAOXU 发表于 2024-3-1 12:06
点对点是有应答的,广播发送形式(主机对所有辅机), 是没有应答的, 否则所有辅机应答, 信号叠加乱套了,...
您好,谢谢您的回复。我看教程,CAN的帧中,有数据帧,远程帧,错误帧,过载帧,请问主机是如何区分是广播的数据帧还是点对点的数据帧?数据帧中也没有定义是广播的位。

LAOXU 发表于 2024-3-1 16:38:57

以RS485 为例, 地址为 8bit (0-255) , 规定最多连接 辅机 250个, 地址为 0-249, 254或255 为广播地址(对所有辅机), 其他地址 备为.

newlined 发表于 2024-3-2 13:19:37

LAOXU 发表于 2024-3-1 16:38
以RS485 为例, 地址为 8bit (0-255) , 规定最多连接 辅机 250个, 地址为 0-249, 254或255 为广播地址(对 ...

CAN协议中没有专门的广播ID,在一个QQ群中,我也问了这个问题,有位老师是这样回复我的,他说主节点不可能检测到谁没有发ACK,如果想知道大家都收到了信息,就需要每个节点都各自向主节点发从携带自己节点ID的信息。

LAOXU 发表于 2024-3-2 16:55:07

newlined 发表于 2024-3-2 13:19
CAN协议中没有专门的广播ID,在一个QQ群中,我也问了这个问题,有位老师是这样回复我的,他说主节点不可 ...

如果不设地址............. 我想起来了, CAN是靠起始位的高低电平宽度, 作为ID地址.

只能单点通讯(与RS485不同), 不支持广播方式, 如你所说,

要想知道大家都收到了信息,只能主节点依次向各个子节点分别发送信息。
页: [1] 2
查看完整版本: 关于CAN通信的应答位(ACK)的疑问