燃料电池城市客车数据支持系统设计
扫描二维码
随时随地手机看文章
在“863”国家重大专项燃料电池城市客车项目中,燃料电池发动机占有举足轻重的地位。随着对燃料电池控制研究的逐渐深入,新的控制策略需要了解燃料电池在车用恶劣环境下的性能变化,以及燃料电池同其他部件之间的配合情况。因此,设计专用的燃料电池数据支持系统以记录并分析其运行数据对于分析燃料电池发动机在车用工况下的特性有着十分重要的意义。
传统的车用数据记录系统一般用于记录交通事故发生前一段时间(如15min内)汽车的一些运行参数,其作用类似于飞机上的“黑匣子”。传统车用数据记录系统记录的数据仅为影响到汽车行驶安全的关键参数,如刹车信号、安全气囊等,其存储数据的时间跨度不长,并且随着车辆的运行,新的数据会覆盖前次记录的数据。而燃料电池数据支持系统的设计目的为分析燃料电池客车的运行状态以及燃料电池在车用条件下的性能,需要记录整车所有的运行参数。同时,为了保证记录数据在时间上的完整性,在记录数据被导入数据分析系统进行处理和保存之前,已记录数据不会被覆盖。本文所述的数据支持系统,利用燃料电池控制器的TPU模块作为控制单元,可在既不影响主控制任务实时性又不增加额外控制器的前提下进行数据的存储和时间的获取。
本文所述的数据支持系统,不仅适用于燃料电池发动机控制系统,还具有较强的适应性,稍加改动即可应用于多种控制器。
1 数据支持系统处理器选型
常规的车用数据记录系统有两种方案:直接在控制单元的处理器上进行数据记录功能的开发,或者使用额外的处理器进行数据记录功能的开发。前者的优点是可以直接利用控制程序中的变量作为存储数据,无需进行额外的变量传递和采集,但是处理器在执行数据存储任务时会占用正常工作资源,降低控制单元的实时性能;后者在运行过程中虽然不占用主控制器资源,但是需要通过外部总线、双口RAM、模拟量采集等方式来获取存储数据,设计较为复杂,并且增加成本。总之,两种常用的方案各有利弊。
在燃料电池城市客车控制系统中,燃料电池发动机控制任务较多,加入数据支持系统后,无疑会增加控制器CPU的负担,降低控制的实时性与可靠性。另一方面,燃料电池数据支持系统需要记录的数据较多,如采用单独的处理器,则需要进行大量的数据交换工作,会显著增加成本。本文针对所述两种方案的弊端,设计了一种新的数据支持系统方案——使用燃料电池发动机电控单元处理器中的TPU模块作为数据支持系统的运算单元。
燃料电池控制器数字核心为Freescale公司的MPC5xx系列单片机,相对于其他大部分车用处理器,该系列单片机拥有独特的TPU模块。TPU(Timer Processor Unit),即时间处理单元。在该模块的结构中,包括独立的运算单元、程序空间、内存区域、中断系统、端口,可以认为TPU是一个嵌入在MPC5xx内部的小型微处理器。
同常规的单片机程序不同,TPU模块的程序由微码编写,经过编译器编译后,集成在主程序工程文件中并由下载线烧写到单片机的Flash中。单片机复位完成后,在初始化任务中将TPU程序下载到TPU模块的程序内存,即DPTRAM中(如图1左所示)。在此后的正常运行过程中,CPU总线同DPTRAM断开(如图1右所示),TPU模块通过TPU内部总线从DPTRAM中取指令,并在TPU模块内部的运算单元中执行,TPU拥有独立的RAM区和寄存器进行临时变量的存放。因此,在正常运行过程中,TPU和CPU是相互独立的处理器,TPU的运行不占用CPU资源,从而不会影响主控制任务的实时性。
在程序的正常运行过程中,TPU与CPU之间通过Host Interface(如图2所示)进行连接,CPU可以通过修改HSR寄存器的值来触发TPU运行,TPU可以通过产生CPU中断的方式与CPU交互。此外,CPU和TPU可以通过一段公共的内存单元(Parameter RAM)交换数据。MPC5xx系列单片机拥有两个独立的TPU模块——TPUA和TPUB,共有8 KB的程序存储空间。每个TPU模块拥有16路输入/输出通道,以及256 B的Parameter RAM、2个定时器,并可触发16路中断,能够独立完成较为复杂的任务。
在常规的发动机控制中,TPU常用于柴油机的喷油控制等工作。然而,在燃料电池控制体系中,控制器基于CAN网络控制,TPU模块在实际控制中使用不多。在本文中,使用燃料电池控制器中空闲的TPU模块作为数据支持系统的运算单元,并不影响主控制任务的实时性能。同时,该方案不需要增加单独的控制器单元,简化了硬件设计,节约了成本。因此,该方案可以很好地弥补两种常用车用数据记录方案的缺陷。设计控制部分的框图如图3所示,采用数字核心MPC5xx系列的TPUA控制数据存储模块,TPUB控制时间日历模块。
2 硬件设计
燃料电池数据支持系统的硬件部分包括时间日历模块和数据存储模块两部分。前者的作用是为记录的数据提供时间参考,后者的作用是存储数据。
2.1 时间日历模块
为了在燃料电池发动机电控单元断电后保持数据记录系统时间参考的准确性,采用了独立的时钟芯片DS12CR887来获取当前时间。该芯片集成了时钟振荡器和内置电池,无需外部供电和驱动电路,同TPU的接口为并口。
时钟芯片DS12CR887拥有128 B的内存单元,包括年、月、日、星期、小时、分、秒寄存器以及三个控制寄存器,还有114 B的通用内存。由于内置电池的作用,无论ECU上电与否,时钟芯片都在运行之中;任何时刻,ECU都可以通过并口读取时钟芯片内存得到当前的绝对时间。该芯片对于少于31天的月份可自行调整,还可进行闰年补偿。该时钟芯片精度较高,在25℃的环境下,每月的误差不超过1min。
2.2 数据存储模块
燃料电池数据支持系统记录的数据量大,记录时间跨度长,对存储器的容量要求很高。同时,为了便于嵌入燃料电池电控单元,应尽量减少存储器的体积。除此之外,成本问题也是需要考虑的因素。在比较了U盘、SD卡和EEPROM三种存储器后,选择了容量体积比最大且价格低廉的SD卡作为本数据支持系统的存储设备。
本文采用Kingston公司2 GB的Micro-SD卡作为存储器,Micro-SD卡的体积很小,可以很方便地通过卡座安装在电路板上,便于拆卸。按照一天工作8小时计算,2 GB的容量可以存储140天的运行数据,对于实际记录来说,该性能可以完全满足要求。在设计中,使用数字核心MPC5xx的TPUA模块对Micro-SD卡进行操作,两者之间利用串行SPI协议进行通信。由于Micro-SD卡的供电系统和信号系统都是3.3 V标准,而ECU的数字核心为5 V标准,因此在通信接口之间采用电平转换芯片进行信号转换,并且增加独立的电源模块。该部分的硬件原理如图4所示。
3 软件设计
3.1 时间日历系统软件设计
时钟日历模块中,时钟芯片与单片机的接口为8位地址/数据复用的并行接口。采用Motorola总线读写时序(如图5所示),利用TPU模块的16个端口模拟并口时序对时钟的总线进行操作。时钟芯片DS12CR887出厂时,计时链处于关闭状态,因此,在燃料电池ECU的调试阶段需要校准时钟并使能时钟的计时链。校准的方法为向时间日期寄存器直接写入当前的时间日期,并置位DS12CR887芯片控制寄存器的计时链开启标志位来启动时钟芯片运行。
正常工作后,TPU模块通过读取各内存的数据得到当前的绝对时间,并将各时间变量存入Parameter RAM,CPU通过读取Parameter RAM得到当前的时间。
3.2 数据存储系统软件设计
数据存储模块中,存储器Micro-SD卡采用SPI协议与单片机进行通信。对该芯片的操作时序主要有四种:复位、初始化、读、写。相对于普通的SPI协议,Micro-SD卡通信协议较为复杂,一个基本的操作往往需要持续几千个时钟周期(如图6所示的SD卡写时序),TPU模块的微码编程只能实现比较简单的条件分支以及运算。因此,本文在设计中,优化了程序结构以适应复杂的SPI时序;同时,考虑到TPU的程序内存只有8 KB,在编程时需要注意对程序优化,以节约代码空间。程序运行过程中,CPU和TPU之间的数据交换依然通过Parameter RAM实现。
数字核心MPC561的TPU模块中,Parameter RAM区总共只有256 B,但是SD卡一次写入的最小单位为一个block,即512 B。为了将512 B的变量从CPU连续地写入Micro-SD卡,本文设计了缓存协议,即TPU从RAM区的低地址开始写,每写入128 B后产生TPU中断,通知CPU更新已读区域的数据。这样便保证了TPU对Micro-SD卡写时序操作的连续性,其控制流程如图7所示。
本文设计了一种针对燃料电池城市客车的数据支持系统。该系统可以持续实时记录燃料电池客车的所有运行数据,在运行过程中为燃料电池客车提供绝对时间参照,并配套相应的上位机处理软件对数据进行整理分析。相对于传统的车用数据支持系统,本系统无论从数据记录量上还是时间跨度上都具有明显优势。在处理器的选择方面,本文采用了独特的TPU模块进行控制,使数字核心的资源得到了合理利用,在节约成本的同时不影响主控制任务运行的实时性。经过一段时间的使用,该系统能正常工作,记录的数据对燃料电池的控制策略起到了一定的参考作用。