ICode9

精准搜索请尝试: 精确搜索
首页 > 其他分享> 文章详细

1句话,揭开CAN总线的神秘面纱

2021-04-08 16:53:14  阅读:228  来源: 互联网

标签:揭开 孔丙火 总线 电平 发送 面纱 ID 仲裁


关键词:CAN总线 现场总线 仲裁 多主 帧ID

摘要:用一句话概括CAN总线的基本特征:CAN总线是一种基于“先来后到、无损仲裁”机制、多主(无主)结构、具有帧ID、应用数据最多8个字节、采用差分电平的国际标准现场总线。虽然没有面面俱到,但体现了CAN总线的重点特色,有利于对CAN总线有一个清晰的认识。

1.总述

一句话:

CAN总线是一种基于“先来后到、无损仲裁”机制、多主(无主)结构、具有帧ID、应用数据最多8个字节、采用差分电平的国际标准现场总线。

2.先来后到、无损仲裁

这是孔丙火(微信公众号:孔丙火)的一个体会。“先来后到”是指在总线空闲的时候,任何一个CAN节点都可以发起总线通信,白话就是都可以发送数据,谁先来,谁先发,一个节点已经在发送了,就不能被打断了。“无损仲裁”是解决如果两个节点同时发的时候,怎么来决定到底是谁发送。仲裁就是通过数据帧的ID部分来比较,直观来看,就是ID小的能发出去,ID大的自动退出,这与帧ID的机构、CAN驱动电路有关。所谓“无损”,就是一个节点仲裁失败后,它要发送的数据不会丢失,而是等到CAN总线的下一个空闲期再尝试发送,直至发送成功。所以,一般对实时性要求高的节点可以把其帧ID设置的小一些,保证在发送发生冲突的时候,其数据可以优先发出去。

3.多主(无主)结构

其实,无主是一个特色,无主也可以说成无从。单单说多主,特色并不是很明显,其他现场总线,像Profibus,也是多主结构,但Profibus是多主多从,而CAN总线是多主无从,每个节点的地位相对来说是平等,都可以主动发起数据,区别就在于帧ID的优先级不同。

4.ID和应用数据

孔丙火(微信公众号:孔丙火)认为,说起CAN总线,不能不提帧ID,这是无损仲裁的一个基础。CAN总线数据帧大体上可以分为帧ID和应用数据两个部分,之所以说大体上,是因为还包括帧起始、ACK位、CRC位等,那些不是我们阐述的重点。

帧ID的一个用途就是仲裁,说起仲裁,不得不说总线电平。CAN总线具有位同步机制,若总线上有两个以上的节点同时发送数据,则进行逐位比较,先发送帧ID部分,且先发送帧ID的高位,每个节点发送一位后,同时会接收这一位,如果要发送的电平与接收到的电平不一致,则认为自身仲裁失败,退出发送,等待下一次发送。总线电平分为隐性电平和显性电平,隐性电平逻辑上为1,显性电平逻辑上为0,最先发送显性电平的节点会取得仲裁胜利,这主要是因为显性电平可以覆盖隐性电平,孔丙火在之前的文章中专门做过阐述。

应用数据最多8个字节,所以,CAN总线是一个短帧结构。短帧结构实时性高,抗干扰性更好。当然,其也有缺点,当需要发送大量的数据的时候,传输效率就会低了,这方面就不如Modbus了,因为Modbus一次最多可以发送100多个字(word)的数据。

5.学习CAN总线的要点(一点浅见)

如果是使用CAN总线,孔丙火(微信公众号:孔丙火)认为,只需要对CAN的一些知识有一个大体的了解即可,对于不同的项目再有针对性地去深入研究,不需面面俱到,因为CAN总线说起来简单,其实细节有很多,单就一个仲裁时序和同步的问题,想起来都很少脑筋,以前感兴趣的时候,在网上查过,没几篇文章能讲清楚。但实际使用,无需关心这些问题,如果是PLC上使用,根据手册做相应的配置即可,如果是单片机使用,麻烦一点的,需要自己写寄存器,像STM32这种操作简单的,直接调库函数就行了。但像位时间采样点这种基本的问题,还是要知道的。

如果是研究总线本身的,或者是做CAN总线监测设备(不单单是数据监测,还有总线质量等)的,则需要对CAN总线本身的特性,做比较深入的研究了。 

文章在公众号(孔丙火)同步推出,欢迎查看更多系列文章。

单片机、PLC、嵌入式软硬件的设计经验分享,秉承“点点滴滴皆智慧”的理念,以实际项目为单元阐述知识点,一起分享,共同交流。

image.png                                        

 

 


标签:揭开,孔丙火,总线,电平,发送,面纱,ID,仲裁
来源: https://blog.51cto.com/2773203/2692637

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有