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

时间: 2024-03-17 16:49:34 |   作者: 大巴箱体

  总线最初为解决汽车中众多的控制与测试仪器之间的数据交换而开发的。CAN卓越的特性、极高的可靠性和独特的设计,很适合工业过程监控设备的互连,因此,慢慢的受到工业界的重视,并已在工业上得到普遍的应用,被公认为最有前途的现场总线之一。

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

  CAN可以多主方式工作,网络上任意一个节点均可以在任意时刻主动地向网络上的其它节点发送信息,而不分主从,通信方式灵活;

  CAN采用非破坏性总线仲裁技术。当两个节点同时向网络上发送数据时,优先级低的节点主动停止数据发送,而优先级高的节点可不受影响地继续传输数据,大大地节约了总线仲裁冲突时间,在网络负载很重的情况下也不可能会出现网络瘫痪;

  CAN的直接通信距离最大可达10km(速率小于5kbps),最高通信速率可达1Mbps(此时距离最长为40m)。

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

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

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

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

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

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

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

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

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

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

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

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

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