欢迎光临北京汇智慧众汽车技术研究院官网!

CAN总线知识总结

发布时间:2024-04-17 16:19:40 人气:51

1.jpg

01报文

报文是以帧(Frame)的格式发送,每帧又有七个部分:

起始段(Start Of Frame-SOF):1bit ;

仲裁段(Arbitration Field):12bits或30bits。包含标识符位(Identifier field-ID)和远程发送请求位(Remote Transfer Request-RTR)。

控制段(Control Field):6 bits。扩展标识符位(Identifier Extension bit-IDE,1 bit);保留位0(Reseved bit0-r0,1 bit);数据长度编码位(Data Length Code-DLC,4 bits)。

数据段(Data Field):发送数据的内容,最多8个字节。

循环校验段(CRC Field):包括循环校验序列(CRC Sequence)15bits (用于校验传输是否正确)和界定符(Delimiter,DEL)1bit(表示循环校验序列的结束)。

确认段(ACK Field):包括确认位(ACK SLOT)1 bit(节点收到正确的CRC序列时,发送端的ACK位被置位) 和界定符(Delimiter,DEL)1 bit(隐性信号)。

结束段(End of Frame-EOF):7 bits,隐性信号,表示帧的结束。

2.png

Frame

3.png

DLC的编码规则:表示该帧实际发送的数据的长度(以字节为单位)

CAN总线的标准帧和扩展帧主要决定帧ID的长度,标准帧的帧ID长度是11位,帧ID的范围是000-7FF。扩展帧的帧ID长度是29位,帧ID的范围是0000 0000-1FFF FFFF。

CANopen帧ID最多是11位的,因此是标准帧;而SAE 1939协议通常是18XX XXXX的帧ID,是29位的,因此是扩展帧。

区别是仲裁段与控制段有所不同:

仲裁段包括五个部分:

基本标识符位(Base identifier-Base ID),11 bits,与标准格式的标识符相同;

替代远程请求位(Substitute Remote Request Bit,SRR),1 bit,隐性信号;

扩展位(Identifier Extension bit,IDE),1 bit,标识扩展帧还是标准帧;

扩展标识ID位(Extended Identifier, Extended ID),18 bits,存放扩展标识ID;

远程发送请求位(Remote Transmission Request,RTR),1 bit,数据帧中为显性信号,远程帧中为隐性信号;

控制段:6 bits,与标准帧不同的是:用保留1(r1)取代了标准帧的IDE,r0和DLC是一样的;也就是说,扩展帧有两个保留位r1 和r0,这两个保留位均需要发送显性信号。

02 CAN ID

CAN ID 和 CAN 报文的关系:CAN ID是CAN报文的组成部分,穿插在CAN报文中,具体如下图,解析报文时用到的主要是帧ID和数据两部分。

4.jpg

下蓝色框中29位 CAN ID,红色框为8字节的数据

ID是赋给帧的,不是直接给节点的。在CAN协议里,报文的标识符不代表节点的地址,而是跟报文的内容相关的。因此,发送者以广播的形式把报文发送给所有的接收者。节点在接收报文时,根据标识符(CAN ID)的值决定软件是否需要该报文;如果需要,就拷贝到SRAM里;如果不需要,报文就被丢弃且无需软件的干预。

CAN总线ID作用

1、主要用作CAN总线的仲裁使用,所以一般来说网络上的每个节点(向总线上发送)的ID应该有所不同。ID值越低,报文优先级越高,在两组不同ID报文同时上线时候,仲裁机制使得ID值低的占用总线,ID值高的退出。

2、ID域可以是11位和29位,其值和含义可以由用户自定义,可以用作高层协议的管理,比如CANopen等协议中把ID的部分做为“源地址”,部分作为“目的地址”,这样CAN报文从哪来到哪去都清晰了。

3、ID的另一个作用是配合接收方滤波使用,就是说一般接收的滤波器可以设定接收ID的范围等,用于过滤掉不需要接收的信息,减轻CPU的处理负担。

远程帧与数据帧的区别

远程帧和数据帧区别是远程帧的RTR位为1,且没有数据段。远程帧的作用是发送特定的CAN ID(注意不是向特定的CAN ID发送),然后对应的ID的CAN节点收到远程帧之后,自动返回一个数据帧。

03 CAN总线负载计算

例:假设CAN总线波特率为1M Baud,总线发送时间间隔为10ms,报文为数据帧(8个字节数据),那么10ms内总线能够支持的最大报文数量是多少?

第一步:根据通讯波特率计算10ms总共可以发送多少bit

(1000000/1000)*10=10000bit

第二步:计算最长的一帧报文有多少bit

1sof + 29id + 1lde + 1rtr + 1ssr + 2r + 4dlc + 8*8data + 16crc + 2ack + 7eof = 128bit

第三步:计算10ms内可以支持的报文数目

10000/128 = 78

当10ms间隔的报文数超过78条时就会出现丢帧,总线饱和。

CAN总线负载率一般要求在30%左右。

我们的宗旨

我们专注于此,

并全身心的投入其中,

愿意汇“智”,更愿意“慧(惠)”众!

我们提供新能源汽车系统化理实结合的技术培训方案。

——感谢选择我们的汽修精英!

我们提供从教师执教到学生就业等的全过程教育方案。

——感谢选择我们的职业院校! 

我们提供工艺标准、保障完整、客户满意的解决方案。

——感谢选择我们的相关企业!

我们倡导品学兼优,创新发展,诚意汇智,真心慧众。

——感谢选择我们的合作伙伴!

我们与您携手营造中国新能源汽车技术第一品牌的愿景。

——感谢选择我们的各界朋友!

咨询电话:

18518951802(微信同号)

E-mail:

train@bjhzhz.com

bjhzhz@vip.163.com


11.jpg

关注“汇智易学”公众号

免费获取更多新能源汽车课程资源

文章来源于网络,如有侵权请联系删除