CAN 技术概要及一些基本知识介绍
■ CAN意为Controller Area Network,控制区域网络。它是一种特别适合于组建互连的设备网络系统或子系统。■ CAN的出现得益于欧洲的汽车制造厂商,最初的开发需求来自BMW与Mercedes汽车制造商,应用于汽车内部的通讯系统,用以减少配线,衔接各个分布式控制器。CAN最初的协议由Bosch公司所开发,具有快速响应和高可靠性,能满足ABS装置和安全气囊等的控制要求,所以得到了迅速的推广及应用,这成为CAN芯片价格的降低和其性能的提高的最大动力。DeviceNet底层以CAN为基础,因此,DeviceNet所使用的CAN芯片通常是其它网络所使用芯片价格的五分之一到十分之一。
■ 一个典型的CAN应用于汽车控制的例子如下所示:
■ CAN的历史与发展
1983: Start of the Bosch internal project to develop an in-vehicle network1986: Official introduction of CAN protocol
1987: First CAN controller chips from Intel and Philips Semiconductors
1991: Bosch’s CAN specification 2.0 published
1991: CAN Kingdom CAN-based higher-layer protocol introduced by Kvaser
1992: CAN in Automation (CiA) international users and manufacturers group established
1992: CAN Application Layer (CAL) protocol published by CiA
1992: First cars from Mercedes-Benz used CAN network
1993: ISO 11898 standard published
1994: 1st international CAN Conference (iCC) organized by CiA
1994: DeviceNet protocol introduction by Allen-Bradley
1995: ISO 11898 amendment (extended frame format) published
1995: CANopen protocol published by CiA
2000: Development of the time-triggered communication protocol for CAN (TTCAN)
■ CAN的汽车用户与开发商
BMW宝马Mercedes梅赛德斯Jaguar Cars美洲虎Rover GroupRolls-Royce罗尔斯罗依斯Saab萨博Volvo沃尔沃Audi/VW奥迪/大众另外还有一些法国,美国,日本的汽车制造商,在他们的高档车型中也使用了CAN BUS,如日产,丰田。
ISO 11898标准
■ CAN与ISO七层模式之间的关系如下图所示:
CAN使用了七层模式中的最下面两层,而把上层的协议留给用户自己进行定义,这可以提供一个灵活多变的数据传输平台,DeviceNet就是这种应用中一个很典型的例子。
■ CAN的应用层协议CAN协议的特性: 高伸缩性的配置; 位元形式的仲裁(Bit wise Arbitration); 报文优先权(Prioritisation of messages); 系统范围的数据连贯性(System wide data consistency); 多路传输接受(Multicast reception); 错误检测与发送(Error detection and error signalling); 自动重新发送损坏的报文(Automatic retransmission of corrupted messages); 区分一个节点暂时性与永久性的错误与自律性的中断有缺陷的节点。
■ 协议说明:目前的修订版是2.0,1993年9月出版,包括两个部分: PartA:指定11 bit的确认区 PartB:指定29 bit的确认区DeviceNet使用其PartA,不使用PartB。
CAN结构
■ CAN的帧格式如下图所示(如看不清请点击图片):
■ 物理信号 总线电平 0 = 显性(dominant) 总线电平 1 = 隐性(recessive) 总线闲置 = 隐性(recessive) *显性电平将覆盖隐性电平如下例所示:
#1 #2 #3 最终总线电平
0 0 0 0
0 0 1 0
0 1 0 0
1 1 1 1
必须所有节点电平为1,总线电平才为1,否则1被0覆盖。
■ CAN实现的信号
使用非屏蔽的双绞线(Unshielded Twisted Pair,UTP)。
CAN_HIGH: 隐性为2.5V,显性为3.5V
CAN_LOW: 隐性为2.5V,显性为1.5V
■ 非零位复原编码(NRZ)
NRZ因为去掉了每位都归零,所以减少了变换的次数,噪音信号随之减少,此技术也使CAN所使用的位元仲裁机制成为可能。但NRZ编码存在一定的缺陷,就是不定性同步问题(Non-determinant Synchronisation),尤其在高传输速率时会出错,而解决的办法就是位元填充技术(Bit-Stuffing)。位元填充技术在每五个连续的相同电平之后插入一个位元的反相电平。
在数据传输时,填充位由收发器(Transceiver)自动加上发送,并在接收时自动去除。
仲裁与错误侦测
■ CSMA/CD与NBDA
CSMA/CD:带碰撞检测的载波侦听多重访问机制,主要用于以太网,它的机制是如果有两个节点同时传输数据,则两个都等待不同的时间后再进行传送,会浪费一定的带宽时间。
NBDA:非破坏性的位元仲裁机制,其原理为节点的数据按一定的方式有优先权(CAN是显性优先),当两个节点发生冲突时,优先权高的继续传送数据,同时优先权低的节点取消发送,因此不会浪费带宽。
■ 仲裁原理如下图:
图中三个节点同时传送数据,但只有第一个节点发送成功,其它节点分别在不同的位仲裁失败而停止发送。最后一行为总线上实际的电平信号。
■ 媒介访问逻辑
一个节点在发送之前,要先等待总线空闲,才能进行传输。
■ CAN的帧类型
数据帧(Data Frame) 用于传输一般的数据信号;
错误帧(Error Frame) 主动错误帧(Error Active Frame) 被动错误帧(Error Passive Frame) 节点离线(Bus Off)
远程帧(Remote Frame) 不含有数据区,DeviceNet不使用;
超载帧(Overload Frame)
■ CAN的错误侦测
位错误(Bit Error);
填充错误(Stuff Error);
应答错误(Ack Error);
校验错误(CRC Error);
页:
[1]