CAN是Controller Area Network 的缩写(如下称为CAN),是ISO国际标准化的串行通讯协议。在汽车产业中,出于对安全性、温馨性、方便性、低公害、低成本的要求,各类各样的电子控制系统被开发了出来。因为这些系统之间通讯所用的数据类型及对可靠性的要求不尽相同,由多条总线构成的状况不少,线束的数量也随之增长。为适应"减小线束的数量"、"经过多个LAN进行大量数据的高速通讯"的须要,1986 年德国电气商博世公司开发出面向汽车的CAN 通讯协议。此后CAN 经过ISO11898 及ISO11519 进行了标准化,在欧洲已经是汽车网络的标准协议。数组
CAN 的高性能和可靠性已被认同,并被普遍地应用于工业自动化、船舶、医疗设备、工业设备等方面。现场总线是当今自动化领域技术发展的热点之一,被誉为自动化领域的计算机局域网。它的出现为分布式控制系统实现各节点之间实时、可靠的数据通讯提供了强有力的技术支持。安全
CAN总线是德国BOSCH公司从80年代初为解决现代汽车中众多的控制与测试仪器之间的数据交换而开发的一种串行数据通讯协议。它是一种多主总线,通讯介质能够是双绞线、同轴电缆或光导纤维,通讯速率最高可达1Mbps。网络
CAN总线通讯接口中集成了CAN协议的物理层和数据链路层功能,可完成对通讯数据的成帧处理,包括位填充、数据块编码、循环冗余检验、优先级判别等项工做。异步
CAN协议的一个最大特色是废除了传统的站地址编码,而代之以对通讯数据块进行编码。采用这种方法的优势可以使网络内的节点个数在理论上不受限制,数据块的标识符可由11位或29位二进制数组成,所以能够定义2或2个以上不一样的数据块,这种按数据块编码的方式,还可以使不一样的节点同时接收到相同的数据,这一点在分布式控制系统中很是有用。数据段长度最多为8个字节,可知足一般工业领域中控制命令、工做状态及测试数据的通常要求。同时,8个字节不会占用总线时间过长,从而保证了通讯的实时性。CAN协议采用CRC检验并可提供相应的错误处理功能,保证了数据通讯的可靠性。CAN卓越的特性、极高的可靠性和独特的设计,特别适合工业过程监控设备的互连,所以,愈来愈受到工业界的重视,并已公认为最有前途的现场总线之一。分布式
CAN总线采用了多主竞争式总线结构,具备多主站运行和分散仲裁的串行总线以及广播通讯的特色。CAN总线上任意节点可在任意时刻主动地向网络上其它节点发送信息而不分主次,所以可在各节点之间实现自由通讯。CAN总线协议已被国际标准化组织认证,技术比较成熟,控制的芯片已经商品化,性价比高,特别适用于分布式测控系统之间的数据通信。CAN总线插卡能够任意插在PC AT XT兼容机上,方便地构成分布式监控系统。oop
只有2根线与外部相连,而且内部集成了错误探测和管理模块。性能
CAN总线特色:测试
(1) 数据通讯没有主从之分,任意一个节点能够向任何其余(一个或多个)节点发起数据通讯,靠各个节点信息优先级前后顺序来决定通讯次序,高优先级节点信息在134μs通讯。大数据
(2) 多个节点同时发起通讯时,优先级低的避让优先级高的,不会对通讯线路形成拥塞; (3) 通讯距离最远可达10KM(速率低于5Kbps)速率可达到1Mbps(通讯距离小于40M)。(4) CAN总线传输介质能够是双绞线,同轴电缆。CAN总线适用于大数据量短距离通讯或者长距离小数据量,实时性要求比较高,多主多从或者各个节点平等的现场中使用。编码
国际标准化组织ISO对通讯系统的详细划分如图31所示
图31 ISO国际标准化组织对通讯系统的划分
CAN总线规范定义了ISO模型中的物理层和数据链路层。
在SylixOS在应用层和数据链路层中间还加了一层系统层,上层应用经过调用操做系统提供的相应的接口实现对底层数据链路层的操做和控制。
图32 CAN总线协议层框图
一些国际组织定义了应用层,如CIA组织的CANopen、ODVA组织的DeviceNet等,也有一些用户根据需求自行设计应用层。
CAN总线有ISO11898和ISO11519两个通讯标准,此两个标准中差分电平的特性不相同如图4-3所示。
图43 ISO11898和ISO11519标准
ISO11898和ISO11519-2的CAN_H和CAN_L的电平值是不同的(注:通过CAN控制器出来的信号是TTL 电频(RX和TX),RX 或TX 的TTL电平通过CAN收发器之后出来的是CAN_H和CAN_L的差分信号)。如今用的大多数器件采用的都是ISO11898协议。
为什么CAN要采起差分信号传输数据?
双绞线上传输差分信号,共振干扰使信号线上产生相同幅度和相位的该扰脉冲如图44所示。
图44CAN总线传输时CAN_H和CAN_L电平信号图
线路受到共模信号干扰后,信号差值不变,信号依然正确传输。
CAN总线采用的是异步串行通讯的方式没有时钟线,按照约定的频率采样数据如图15所示。
图55异步串行通讯采样介绍
采用同步采样会带来一些,因为没有时钟线,信号的接收者内部定时采集数据,因为系统时钟的误差,或者波特率的误差会产生数据的读取错误如图56所示。
图56波特率采样误差
CAN总线是如何进行同步的呢?如图57所示。
图57CAN信号同步
CAN总线以信号跳变沿做为同步时刻,有效的把累计偏差限制在两个跳变沿之间。
可是这样作任然有一个问题,就是在长时间连续高电平或者低电平中后仍然会有较大的累计偏差,仍然会有数据出错的状况。
CAN总线的设计者们也考虑到了这种状况如图58所示。
图58 CAN同步机制
在连续的5个相同的位以后插入一个相位,产生一个跳变沿,再结合上面以信号跳变沿做为同步时刻,有效消除了累计偏差保证了CAN总线数据的可靠性(注:填充的这个相位是硬件上自动完成无需软件设计完成)
《项目驱动--CAN-BUS现场总线基础教程----周立功,黄晓清》。
《现场总线技术及其应用第二版–清华大学出版社》。