图5CAN总线初始化
图6CAN的发送数据流程
图7CAN接收数据的流程
例如:电池管理系统向整车系统发送总电压的格式,见表1所列。
表1BCU_VCU_VOLTAGE(0x08)向VCU送回电池组当前的电压
其中,ID为接收节点总线的地址,电压值先乘10取整再发送,0x08表示发送帧的内容为电池组的电压。
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进行软件复位,恢复通讯。
在"863重大专项"电动汽车的电池管理模块的研制中,就是采用CAN总线通讯的分布式结构。通过对镍氢电池组、锂电池组的台架试验结果表明了系统结构的先进性,实现了各模块的独自功能,工作正常可靠,锂电池组系统的CAN总线的节点数增加到12,在强电磁干扰下,仍能正常工作,而且线路连接十分简单、实用。
两种电池组的参数、测量方法、电池个数、安全要求都不相同,分组也不一样,但系统均能有效地适应,反映出其具有良好的适应性和较大的灵活性。
上一篇:一种新的光伏电池MPPT算法