本系统采用8051 系列的C 语言进行软件编程,按照模块化设计思想进行编写,包括主程序、CAN 初始化程序、CAN发送数据程序、CAN 接收数据程序、A /D 转换及定时中断程序等。CAN初始化程序用来实现CAN 工作时的参数设置,主要包括工作方式的设置、时钟输出寄存器的设置、接受屏蔽寄存器和接收代码寄存器的设置、总线定时器的设置、输出控制寄存器的设置、中断允许寄存器的设置和总线波特率的设置。系统主程序流程设计如图4 所示,主要包括初始化和主循环部分。
图4 系统主程序流程图
3 基于USB-CAN的数据采集
LabVIEW主要用于仪器控制、数据采集、数据分析等领域,是一个功能强大、方便灵活的虚拟仪器开发环境,它提供了大量的连接机制,通过DLLs、共享库、ActiveX等途径实现与外部程序代码或软件系统的连接。
本系统的上位机设计采用USB-CAN模块与电池管理系统BMU进行数据通信,通过USB-CAN模块对CAN总线上的数据进行实时采集。Virtual CAN Interface(VCI)函数库是专门为ZLGCAN设备在PC上使用而提供的应用程序接口。库里的函数从ControlCAN.dll中导出,在LabVIEW中可以通过调用动态链接库的方法直接使用这些库函数实现对电池组数据的实时显示、存储与分析,更好的记录电池组动态的各个参数。上位机主要功能是对电压、电流、温度数据实时曲线显示,数据记录与历史数据显示,并且对电池组参数进行统计分析,包括动态运行过程中单节电池最高电压、最低电压、最大输出电流、最大反向制动电流、瞬时功率、累计消耗能量等参数。VCI 函数的使用流程如图5 所示。实践证明此方法高效可靠,能够很好地满足数据采集的要求。
图5 VCI 函数的使用流程图