(1)can总线基本概念
来源:互联网 发布:linux makefile. 例子 编辑:程序博客网 时间:2024/05/28 18:43
控制器局域网络(ControllerArea Network 简称CAN)主要用于各种过程(设备)监测及控制。CAN最初是由德国的
Bosch公司为汽车的监测与控制设计的,但由于CAN总线本身的突出特点,其应用领域目前已不再局限于汽车行业
,而向过程工业、机械工业、机器人、数控机床、医疗器械及传感器等领域发展。由于其高性能、高可靠性及独特的
设计,CAN总线越来越受到人们的重视,国际上已经有很多大公司的产品采用了这一技术。CAN已经形成国际标准
(ISO11898),并已成为工业数据通信的主流技术之一。
因此做汽车电子的公司招聘嵌入式软件或电子工程师时可能要求会can总线。
1.CAN的帧
CAN总线定义了四种不同的帧,用于总线通讯。
1、最常用的是“数据帧”,用于一个节点传送信息到其它任一或所有节点;
2、“远端帧”,基本上是一个数据帧但其中的RTR位被置1,表明这是一个“远端发送请求”,用于一个节点主动要求其它节点发送信息;
3、“错误帧”,如果节点在接收过程中检测到任一在CAN总线协议中定义了的错误信息,它就会发送一个错误帧。
4、“过载帧”,当一个节点正忙于处理接收的信息,需要额外的等待时间接收下一报文时,可以发送过载帧,通知其它节点暂缓发送新报文。
2.通信模式
第一,”载波监测,多主掌控/冲突避免”
这就允许在总线上的任一设备有同等的机会取得总线的控制权来向外发送信息。如果在同一时刻有两个以上的设备
欲发送信息,就会发生数据冲突,CAN总线能够实时地检测这些冲突情况并作出相应的仲裁而不会破坏待传之信息;
“载波监测”的意思是指在总线上的每个节点在发送信息报文前都必须监测到总线上有一段时间的空闲状态。 也就是
简称到总线空闲后还要继续等待一段时间,如果还是空闲,才允许占有。这样做的原因在于数据从一段传送到另外一
段需要时间。在一头检测到总线空闲,有可能另一头正在发送数据,只是数据没有传送到,所以检测不出来。
“多主掌控”的意思是一旦此一空闲状态被监测到,那么每个节点都有均等的机会来发送报文。
“冲突避免”是指在两个以上节点同时发送信息时,节点本身首先会检测到出现冲突,然后采取相应的措施来解决这一
冲突情况。此时优先级高的报文先发送,低优先级的报文发送会暂停。在CAN总线协议中是通过一种非破坏性的仲裁
方式来实现冲突检测。这也就意味着当总线出现发送冲突时,通过仲裁后原发送信息不会受到任何影响。所有的仲裁
判别都不会破坏优先级高的报文信息内容,也不会对其发送产生任何的时延。
如何实现非破坏性的位仲裁?
为了达到这种“非破坏性的位仲裁方式”,CAN总线协议必须满足一些前提条件。首先,必须定义两种逻辑状态——
在这里叫作“支配位(DOMINANT)” (又称“显性”电平)和“顺从位(RECESSIVE)”(又称 “隐性”电平);然后,节点
在发送过程中必须检测刚刚发出的状态是否就是信息中所描述的内容。在CAN总线的定义中,逻辑0为支配位,逻辑1为顺从位。
型地,CAN总线为“隐性”(逻辑1)时,CAN_H和CAN_L的电平为2.5V(电位差为0V);CAN总线为“显性”(逻辑
0)时,CAN_H和CAN_L的电平分别是3.5V和1.5V(电位差为2.5V),如下图所示。
支配位一定会在和顺从位的判别过程中获胜,换句话说,报文标记区(报文仲裁专用区域)的值越小,其优先级就越高。
例:假定有两个节点在同一时刻发送一个报文,每个节点都会监测总线以便了解欲发送的信息状态是否确实出现在
总线上。一个优先级较低的报文在某一时刻会发送一个“顺从位”但是检测回来的却是“支配位”。此时这个节点被仲裁为
发送权取消,立刻停止发送报文的工作。优先级较高的报文继续发送直到完整的报文发送完毕。在刚才冲突仲裁中被
取消发送权的节点将等待总线的下一个空闲期并自动地再次尝试发送。
第二,基于报文的通讯,信息报文在传送时不是基于目的站点地址;
这就允许不同的信息以“广播”的形式发送到所有节点并且可在不改变信息格式的前提下对报文进行不同配置;
CAN总线是一个基于报文而不是基于站点地址的协议。也就是说报文不是按照地址从一个节点传送到另一个节
点。CAN总线上报文所包含的内容只有优先级标志区和欲传送的数据内容。所有节点都会接收到在总线上传送的报
文,并在正确接后发出应答确认。至于该报文是否要做进一步的处理或被丢弃将完全取决于接收节点本身。同一个报
文可以发送给特定的站点或许多站点,就看你怎样去设计你的网络和系统。
基于报文的这种协议另外一个好处是新的节点可以随时方便地加入到现有的系统中,而不需对所有节点进行重新编程以便它们能识别这一新节点。一旦新节点加入到网络中,它就开始接收信息,判别信息标识,然后决定是否作处理
或直接丢弃。
第三,CAN总线是一种高速的,具备复杂的错误检测和恢复能力的高可靠性强有力的网络。
(1)高速性: CAN总线一开始是为汽车工业而设计的,如果要使这一市场能够接受它,一个能高效处理出错情况的
通讯协议是至关重要的。在发布了2.0B版的CAN总线技术规范后,其最大的通讯速率已经比1.0版提高了8倍,达1M
位/秒,在这种速率下,即便是对时间要求非常关键的参数也可以通过CAN总线传输而不必担心其时延。
(2)CAN总线协议有一套完整的差错管理机制,能够自动地检测出这些错误信息,由此保证了被传信
息的正确必性和完整性。
错误类型
每个CAN总线上的节点都有一个出错计数器用以记录各种错误发生的次数。取决于出错的严重性,通过这些计数器就
可以确认这些节点是否应工作到降级模式;
总线上的节点可以从正常工作模式(正常收发数据和出错信息)降级到消极工作模式(只有在总线空闲时才能取得
控制权),或者到关断模式(和总线隔离)。
对于一些经常出错的节点直接将之与总线隔离。
CAN总线上各节点还有能力监测是短期的干扰还是永久性的故障,并采取相关的应对措施,这种特性被叫做“故障
界定隔离”。采取了这种故障界定隔离措施后,故障节点将会被及时关断,不会永久占用总线。这一点对关键信息能在
总线上畅通无阻地传送是非常重要的。
CAN总协议另外一个有用的特性是一个节点可以主动要求其它节点发送信息。这种特性叫做“远端发送求”(RTR)。
和上例不同之处在于,节点并不等待信息的到来,而是主动去索取。
如,汽车中的中央安全系统会频繁地更新一些象安全气袋等关键传感器的信息。
但是有些信息如油压传感器或电池电压传感器可能不会也不需要经常收到。为了确保了解这些设备是否工作正常
,系统必须定期地要求此类设备发送相关的信息以便检查整个系统的工作情况。设计人员就可以利用这一“远端发送请
求”特性来减少网络的数据通讯量,同时维持整个系统的完整性。
3.can总线技术特点
由于其采用了许多新技术及独特的设计与一般的通信总线相比,CAN总线的数据通信具有突出的可靠性、实时性
和灵活性。其特点可概括如下:
1.CAN为多主工作方式,网络上任意以节点均可在任意时刻主动的地向网络上其它节点发送信息,而不分主从。
2.CAN网络上的节点信息分为不同的优先级,可满足不同的实时要求,高优先级的数据最多可在134μs内得到传输。
3.CAN采用非破坏性总线仲裁技术,当多个节点同时向总线发送信息时,优先级较低的节点会主动退出发送,而最
高优先级的节点可不受影响的继续传输数据。
4.CAN程序通过报文滤波即可实现点对点、一点对多点及全局广播等几种方式传送接收数据,无需专门的“调度”。
6.CAN上的节点数主要取决于总线驱动电路,目前可达128个;报文标识符可达2032种(CAN2.0A),而扩展标准
(CAN2.0B)的报文标识符几乎不受限制。
7.采用短帧结构,传输时间短,受干扰概率低,具有良好的检错效果。
8.CAN的每帧信息都有CRC校验及其它检错措施,保证了数据出错率极低。
9.CAN的通信介质可为双绞线、同轴电缆或光纤,选择灵活。
10.CAN节点在错误严重的情况下具有自动关闭输出的功能,以使总线上其它节点的操作不受限制。
can总线有两种技术规范,该技术规范包括A和B两部分:
下文主要介绍CAN技术规范2.0B。
- (1)can总线基本概念
- CAN总线(1)
- CAN总线(软件篇1)
- CAN 总线入门教程(1)
- CAN总线
- can总线
- CAN总线
- CAN总线
- CAN总线
- CAN 总线
- can总线
- can总线
- CAN总线
- can总线
- CAN总线
- CAN总线
- CAN总线
- CAN总线
- Apache与Nginx的优缺点比较
- cocos2dx编写安卓应用Android-studio
- Anacoda安装Pacakge
- The type javax.servlet.http.HttpServletRequest cannot be resolved. It is indirectly referenced from
- Ride中将tuple数组类型转换为String字符串类型
- (1)can总线基本概念
- mysql数据库的函数
- 关于Map函数的想法
- 音频
- Codeforces Round #418 (Div. 2)
- TensorFlow的基本理论知识(一)
- 函数的子模性质
- 一个上啦加载下拉刷新
- Qt5.8 按钮弹出菜单