工业控制 | 能源技术 | 汽车电子 | 通信网络 | 安防监控 | 智能电网 | 移动手持 | 无线技术 | 家用电器 | 数字广播 | 消费电子 | 应用软件 | 其他方案

电路设计->机动车 电动车电路图->汽车电子电路图->新型电动汽车锂电池管理系统的研究与实现 — CAN 总线设计

新型电动汽车锂电池管理系统的研究与实现 — CAN 总线设计

作者:不爱吃窝瓜时间:2015-06-27

5.1 CAN总线简介

控制器局部网(Control Area Network,CAN)是德国Bosch公司为现代汽车应用开发的一种多主机局部网络,CAN总线最初为解决汽车中众多的控制与测试仪器之间的数据交换而开发的。CAN卓越的特性、极高的可靠性和独特的设计,特别适合工业过程监控设备的互连,因此,越来越受到工业界的重视,并已在工业上得到广泛的应用,被公认为最有前途的现场总线之一。

CAN总线是一种串行数据通信协议,通信介质可以是双绞线、同轴电缆或光导纤维,通信速率可达1Mbps.CAN总线通信接口中集成了CAN协议的物理层和数据链路层功能,可完成对通信数据的成帧处理,包括位填充、数据块编码、循环冗余检验、优先级判别等项工作。CAN协议的一个最大特点是废除了传统的站地址编码,而代之以对通信数据块进行编码。采用这种方法的优点可使网络内的节点个数在理论上不受限制,数据块的标识码可由11位或29位二进制数组成,因此可以定义211或229个不同的数据块,这种按数据块编码的方式,可以非常灵活地控制节点的通信对象和通信来源,比如使不同的节点同时接受到相同的数据,这一点在分布式控制系统中非常有用。数据段长度最多为8个字节,可满足通常工业领域中控制命令、工作状态及测试数据的一般要求。同时,8个字节不会占用总线时间过长,从而保证了通信的实时性。CAN协议采用CRC检验并可提供相应的错误处理功能,保证了数据通信的可靠性。CAN具有下列主要特性:

 

  • CAN可以多主方式工作,网络上任意一个节点均可以在任意时刻主动地向网络上的其它节点发送信息,而不分主从,通信方式灵活;
  • CAN可以点对点、点对多点(成组)及全局广播方式传送接收数据;
  • CAN网络上的节点信息可分成不同的优先级,可以满足不同的实时要求;
  • CAN采用非破坏性总线仲裁技术。当两个节点同时向网络上发送数据时,优先级低的节点主动停止数据发送,而优先级高的节点可不受影响地继续传输数据,大大地节约了总线仲裁冲突时间,在网络负载很重的情况下也不会出现网络瘫痪;
  • CAN的直接通信距离最大可达10km(速率小于5kbps),最高通信速率可达1Mbps(此时距离最长为40m)。


正因为CAN总线有着如此卓越的特性,它现已成为汽车车体通信的标准。

5.2 CAN总线通信的基本原理

5.2.1 CAN总线的位数值表示

CAN总线用“显性”(Dominant)和“隐性”(Recessive)两个互补的逻辑值表示“0”和“1”。当在总线上出现同时发送显性和隐性位时,其结果是总线数值为显性(即“0”和“1”的结果为“0”)。如图5.1所示,VCAN-H和VCAN-L为CAN总线收发器与总线之间的两接口引脚,信号是以两线之间的“差分”电压形式出现。

隐性:VCAN_H和VCAN_L均被固定为平均电压电平2.5V,VDIFF近似为0.在总线空闲或“隐性”位期间,发送“隐性”状态。

显性:VCAN_H和VCAN_L为大于阈值的差分电压。VCAN_H大约为3.5V,而VCAN_L大约为2.5V.在报文冲突的时候,显性位的优先级高于隐性位,也就是逻辑“0”优先于逻辑“1”,这是CAN总线冲突处理机制的基础。





5.2.2 CAN的分层结构

根据ISO/OSI参考模型,CAN被分为以下不同层次:

 

(1)物理层(Physical Layer)物理层是将ECU连接至总线的电路实现,它由三部分组成:

  • 物理信令(PLS)实现与位表示、定时和同步相关的功能;
  • 物理媒体附属装置(PMA)实现总线发送/接受的功能电路并提供总线故障检测方法。
  • 媒体相关接口(MDI)实现物理媒体和MAU之间的机械和电气接口。


(2)数据链路层(Data Link Layer)包含以下两个子层:

  • 介质访问控制子层MAC(Medium Access Control)是CAN协议的核心。它把接收到的报文提供给LLC子层,并接收来自LLC子层的报文。MAC子层负责报文分帧、仲裁、应答、错误检测和标定。MAC子层也受一个名为"故障界定"(Fault Confinement)的管理实体监管。此故障界定为自检机制,以便把永久故障和短时扰动区别开来。
  • 逻辑链路控制子层LLC(Logic Link Control)涉及报文滤波、过载通知、以及恢复管理。


CAN的ISO/OSI参考模型的层结构如图5.2所示。





5.3 CAN系统的硬件结构

CAN系统结构如图5.3:



CAN系统中有两类节点:一类由CAN接口卡和PC机组成,CAN接口卡可以是PCI卡、ISA卡,也可接在PC机的并行口上;另一类由单片机、CAN控制器、CAN收发器组成。这里主要介绍单片机节点,在每个节点上,单片机主要用于系统的计算及信息处理功能;CAN控制器主要用于系统的通信;CAN收发器主要用于增强系统的驱动能力。系统的发送过程是:单片机将外围设备或其它节点传送过来的信息处理后,按CAN规范规定的格式将其写入CAN控制器的发送缓冲区,并启动发送命令,把数据发送到CAN总线上;接受过程是:CAN控制器从CAN总线上自动接受数据,并经过滤后存入CAN接受缓冲区,且向单片机发出中断请求,此时单片机可从CAN接受缓冲区读取要接受的数据。

CAN总线在设计时应注意一点:总线两端各有一个120Ω的电阻,这对于匹配总线阻抗起相当重要的作用。否则,数据通信的抗干扰性及可靠性大大降低,甚至无法通信。管理系统中共有9块测量板,一个中央处理模块,一个显示模块,一个SOC估计模块,一个与整车通讯模块,一个专家诊断模块。所以CAN总线上共有14个节点。他们的连接如图5.4所示:



在系统中,CAN节点的CAN控制器采用SJA1000, SJA1000是一种独立的CAN控制器,主要用于移动目标和一般工业环境中的区域网络控制。SJA1000具有两种操作模式:

 

  • BasicCAN模式:与它的前款PCA82C200兼容的模式
  • PeliCAN模式:扩展模式。这种模式全面支持CAN2.0B协议。

 

SJA1000的模块结构如图5.5所示。



SJA1000是CAN总线接口电路的核心,主要完成CAN的通讯协议,CAN收发器采用PCA82C250,它的主要功能是提高CAN总线的保护和驱动功能,它们之间通过6N137光藕进行隔离,节点结构如图5.6.





5.4 CAN系统的软件设计

CAN总线的软件设计主要是3个部分:初始化、发送与接收数据、检错机制,下面分别加以介绍。



5.4.1初始化

SJA1000在上电硬件复位之后,必须对其进行软件初始化之后才可以进行数据通讯,初始化过程主要在其复位模式下配置时钟分频寄存器CDR、总线定时寄存器BTR0和BTR1、验收代码寄存器ACR、验收屏蔽寄存器AMR及输出控制寄存器OCR等,实现对总线的速率、验收屏蔽码、输出引脚驱动方式、总线模式及时钟分频进行定义。

为了可靠收发数据,SJA1000的工作频率不能低于单片机的频率。系统中,单片机80C552的晶体振荡器频率为12MHz,而SJA1000的晶振频率为16MHz. SJA1000的通讯波特率由BTR0、BTR1、晶振等参数共同决定。表5.1列出了一组推荐的BTR0、BTR1值,标注*符号的值是由CiA协会推荐的标准值。

 

 



总线上的14个节点数据接收发送的主要关系是:9块测量板向总线上发送所测量的各单电池电压温度信息,同时接受中央处理模块发出的均衡信号;SOC估计单元向总线上发送SOC等相关信息,同时接收中央处理模块的各参数信息;专家诊断模块要向显示模块发送诊断的相关信息,同时接收总线上各模块发出的信息;中央处理单元既要向总线上发送总电压、总电流和环境温度,同时接收测量板的均衡信息;显示控制模块和与整车通讯模块接收各个模块发送到总线上的数据,同时与整车通讯模块还将数据传给整车。数据流图如图5.7:



对应上面的数据流图,我们定义了CAN控制器的验收码寄存器(ACR)和验收屏蔽寄存器(AMR)。定义的原则是:各个节点模块只接收与自己有关的数据而屏蔽其它数据。譬如9块测量板之间发送到总线上的数据应该是互不相关的,而且它们的数据量很大,所以必须两两加以屏蔽。我们采取的是BasicCAN模式,由于显示控制模块和与整车通讯模块所接收的数据完全一样,所以这俩个节点的验收码寄存器(ACR)和验收屏蔽寄存器(AMR)可以设计的相同。具体各节点的ACR和AMR的定义如表5.2:

5.4.2发送与接收数据



在本系统中,每一个模块的CAN发送都采用查询方式来控制,接收采用中断方式来控制,这里最好把CAN中断优先级设为高优先级。发送时,CPU检查SJA1000状态寄存器中“发送缓冲器状态”标志(TBS),若发送缓冲器处于“释放”状态,则CPU将发送的信息传送到SJA1000的发送缓冲器,然后将命令寄存器里的“发送请求”标志(TR)置位,启动发送,发送期间,TBS处于“锁定”状态,此时CPU不能访问发送缓冲器;发送成功结束时,TBS处于“释放”状态,这时CPU就可以访问发送缓冲器,进行下一次发送操作。接收时,当SJA1000已接收一条信息,并且这条信息已通过验收滤波器且已放在接收FIFO中,那么SJA1000会产生一个接收中断,CPU立刻起作用,将接收到的信息存到信息暂存器,然后对SJA1000的命令寄存器的“释放接收缓冲器”标志(RR)置位,这样一次中断接收就算完成。接收和发送数据的流程图如图5.8.

 

5.4.3检错机制

SJA1000的BasicCAN模式提供了完善的检错机制,它提供了8个中断源,除了发送中断、接收中断和唤醒中断外,其余5个都是通信过程中出现的各种意外状态的反映。当接收FIFO满了,但还在接收其它信息,这时SJA1000就会置位状态寄存器中的数据溢出状态位,并产生一个数据溢出中断通知CPU数据溢出。当本节点与其它节点总线竞争失败丢失仲裁权时,SJA1000将会立即产生一个仲裁丢失中断,并且当前丢失仲裁的具体位号将被捕捉进仲裁丢失捕捉寄存器,这样便于我们分析总线竞争的情况。

当发送或接收数据时,发生任何一种错误,比如位错、格式错、填充错等情况,SJA1000将会立即产生总线错误中断,同时当前错误的位置被捕捉入错误代码捕捉寄存器,通过读取寄存器值并查表可知道当前错误发生的情况。SJA1000还定义了发送错误计数器和接收错误计数器,当错误产生时,根据不同类型错误的严重性,计数器加相应的值。根据错误计数器的值,定义了错误的三种状态:当错误计数器的值在0-127之间为错误激活状态;当计数器的值在127-255之间为错误消极状态;当计数器的值高于255则处于总线关闭状态。同时SJA1000定义一个错误报警限额寄存器,默认为96,当上述任意两个计数器的值超过限额寄存器的值时,SJA1000状态寄存器的错误状态位将置位;当计数器的值超过255时,状态寄存器的总线状态位将置位,总线关闭,本节点模块自动脱离CAN总线。当错误状态位或总线状态位发生变化时,SJA1000将立即产生错误警告中断,以便CPU采取相应的处理措施。当CAN控制器在错误消极状态处变化则产生错误消极中断。这种做法是合理的,因为一个节点模块如果经常出错,就应该自动脱离总线,免得干扰其它节点的正常通信,这也是CAN总线的一个突出优点。

在节点处于总线关闭状态脱离总线时,SJA1000将置位复位请求位进入复位状态,如果没有CPU的干预来清除复位请求位,则节点将一直处于总线关闭状态。



评论

技术专区