基于CAN总线的分布式电池管理系统
,受干扰的概率低,每帧信息都有CRC校验及其它检错措施,保证了数据的出错率极低。
3.2 CAN总线设计
CAN总线总体结构如图4所示,在总线的两端配置了两个120Ω的电阻,其作用是总线匹配阻抗,可以增加总线传输的稳定性和抗干扰能力,减少数据传输中的出错率。CAN总线节点结构一般分为两类:一类采用CAN适配卡与PC机相连,实现上位机与CAN总线的通讯;另一类则是由单片机、CAN控制器及CAN驱动器构成,作为一类节点与CAN总线进行数据传输。在本系统中,CAN控制器采用Philips公司生产的SJA1000和82C200,它作为一个发送、接受缓冲器,实现主控制器和总线之间的数据传输;CAN收发器采用PCA82C250芯片,它是CAN控制器和物理总线的接口,主要可以提供对总线的差动发送能力和对CAN控制器的差动接受能力。
图4 CAN总线系统结构图
4 CAN总线的软件设计
CAN总线的三层结构模型为:物理层、数据链路层和应用层。其中物理层和数据链路层的功能由SJA1000完成,系统的开发主要在应用层软件的设计上,它主要由三个子程序:初始化子程序、发送数据和接收数据程序。同时,还包括一些数据溢出中断以及帧出错的处理。
SJA1000在上电硬件复位之后,必须对其进行软件初始化之后才可以进行数据通讯,初始化过程主要包括对其复位模式下配置时钟分频寄存器CDR、总线定时寄存器BTR0和BTR1、验收代码寄存器ACR、验收屏蔽寄存器AMR及输出控制寄存器OCR等,实现对总线的速率、验收屏蔽码、输出引脚驱动方式、总线模式及时钟分频进行定义。具体的流程如图5所示。下面为SJA1000发送和接收数据的流程,基本过程为主控制器将数据保存到SJA1000发送缓冲器,然后对命令寄存器的发送请求TR标志位进行置位开始发送;接收过程为SJA1000将从总线上接收到的数据存入接收缓冲器,通过其中断标志位通知主控制器来处理接收到的信息,接收完毕之后清空缓冲器,等待下次接收,具体的流程如图6和图7所示。
图 5 CAN总线初始化
图 6 CAN的发送数据流程
图 7 CAN接收数据的流程
例如:电池管理系统向整车系统发送总电压的格式,见表1所列。
表1 BCU_VCU_VOLTAGE(0x08)向VCU送回电池组当前的电压
其中,ID为接收节点总线的地址,电压值先乘10取整再发送,0x08表示发送帧的内容为电池组的电压。
5 CAN总线应用问题
在硬件方面必须考虑合理的供电,注意对各个CAN器件的电源、地之间的滤波,以及复位电路的设计;同时在实际进行印刷电路板的设计时,合理布线,要加强地线,增强系统的抗干扰性。
在软件设计时,CAN总线定时器的设置非常关键,BTR0决定传播时间段、相位缓冲段1和相位缓冲段2;BTR1决定同步跳转宽度和分频值。在位定时寄存器中,TSEG1,TSEG2,SJW和BRP设定的值要比其功能值小1,因此设定范围是[0.....N-1]而不是[1.....N]。所以位时间可以由[TSEG1+TSEG2+3]tq或者[同步段+传播段+相位缓冲段1+相位缓冲段2]tq得到,其中,tq由系统时钟tSCL和波特率预分频值BRP决定:tq=BRP/tSCL。同时,还要注意由于不同节点的CAN系统时钟是由不同振荡器提供的,每个节点的实际CAN系统时钟频率与实际位时有一容差,环境温度的变化和振荡器老化影响起始容差,为确保准确地进行数据传输,必须保证每个节点对CAN系统时钟频率都在特定的频率容差限值以内,因此,在选择振荡器时要以对振荡器容差范围要求最高的节点为准。而且,在一个可以扩展的总线结构中,最大节点延迟和总线最大长度必须考虑,一般情况下,延迟为5.5ns/m。
在实际运行中,经常会遇到CAN总线不通或者总线突然关闭现象,其主要原因是由于在数据传输过程中出现丢帧现象,从而引起出错,当错误计数器达到一定时会自动关闭总线,因此,必须在软件设计的过程中,及时对其错误状态ES位进行判别,在出现错误时需对SJA1000进行软件复位,恢复通讯。
6 结语
在"863重大专项"电动汽车的电池管理模块的研制中,就是采用CAN总线通讯的分布式结构。通过对镍氢电池组、锂电池组的台架试验结果表明了系统结构的先进性,实现了各模块的独自功能,工作正常可靠,锂电池组系统的CAN总线的节点数增加到12,在强电磁干扰下,仍能正常工作,而且线路连接十分简单、实用。
两种电池组的参数、测量方法、电池个数、安全要求都不相同,分组也不一样,但系统均能有效地适应,反映出其具有良好的适应性和较大的灵活性。
- 机车空调逆变电源控制系统及其实现(06-21)
- 现场总线在并联逆变电源系统中的应用(06-23)
- 基于CAN总线的蓄电池组充放电集散控制系统的设计(08-04)
- CAN现场总线的时间信息共享技术(08-06)
- 基于CAN总线的A320模拟器硬件仿真方案研究(03-21)
- 一种混合动力电池监测模块的设计实现(05-29)