摘 要: 本文介绍了美国Cygnal公司新近推出的单片机C8051F020在汽车整车控制器中的应用。在分析了整车控制器的功能需求后,研制出了控制器的硬件平台,并在此硬件平台上搭建了实时操作系统的软件系统框架,实现了各个功能模块的软件设计,包括数据采集、控制器局域网(CAN)总线通信和控制策略数值计算等。
整车控制器的功能分析
本文的汽车整车控制器是为国家863重大专项——“燃料电池城市客车”开发研制的。燃料电池城市客车的结构如图1所示。与传统汽车的主要不同是动力源由发动机改为电动机,同时由燃料电池和辅助电池组合提供电能。这样车上的主要能量转换方式就是将电能转换成机械能。
汽车的整车控制器是整个汽车的大脑,它接受到驾驶员的踏板信号和其它信号,然后作出相应的判断,控制下层各个部件作出动作,驱动汽车正常行驶,并尽可能实现比较高的能量效率。所以说整车控制器是整个汽车的核心控制部件,它的优劣直接影响着汽车的可靠性和其它性能。
图1 燃料电池城市客车结构简图
图2 整车控制器功能框图
在此,首先分析一下燃料电池城市客车整车控制器的功能需求。第一,整车驱动系统由驱动电机、燃料电池、蓄电池、DC/DC转换器等部件组成,各个部件之间的信号通过CAN总线来传递,因而整车控制器必须具有CAN总线接口;第二,虽然采用CAN总线可以大大简化系统的布线复杂程度,但从实时性和安全性的角度出发,有一部分信号还要由整车控制器直接采集,包括制动踏板、油门踏板以及其它一些数字量信号;第三,整车控制器还要提供一些对相应部件进行直接控制的信号通道,包括D/A转换和数字量输出等等;第四,为保证驾驶员的安全操作和对汽车控制的可视化,采用了外接液晶显示器以及触摸屏的方式来显示一些重要的信号量,因此选用了一个串行通信口(UART)。
C8051F020的主要功能和资源
基于以上的功能分析,我们最终选用了Cygnal单片机的特点,C8051F020型号的单片机作为整车控制器的核心器件CPU。其主要功能和资源包括:多达32路12位ADC(速度为100kHz)或高达500kHz的8位ADC;2路12位DAC和2路模拟比较器;内部高精度基准电源、可编程增益放大器和温度传感器;精确的VDD监视器;4K片内RAM、64K片内FLASH以及64K外部数据存储器接口;64位I/O口线,所有口线均可编程为弱上拉或推挽输出;可同时使用的硬件SMBUS/I2C串行总线和SPI串行总线及两个UART串口;16 位可编程计数器/定时器阵列带5 个捕获/比较模块;5个通用16 位计数器/定时器;专用的看门狗定时器和双向复位等等;独特的数字交叉开关阵列(Digital Crossbar),可将内部系统资源定向分配到P0,P1和P2;
其内部资源的功能框图从略。
整车控制器的功能框图
通过比较整车控制器的功能需求和Cygnal单片机的特点可知,C8051F020芯片是一款非常适合用于汽车整车控制器的芯片。根据该单片机的特点,我们设计了控制器的整体框架(如图2)。
首先,在外部总线上扩展了一片32K的RAM,设计采用61C256,这样的RAM容量足够满足实时操作系统及所需控制参数和变量的需求。其次,我们选用独立的CAN控制器芯片SJA1000扩展了一个CAN接口,用于和各个部件之间进行数据通信。同时,由于C8051F020的很多片内资源都是和数字I/O口复用的,所以需要利用片内的数字交叉开关来选择决定某个I/O口工作在何种方式;设计中选用了一片可编程逻辑芯片CPLD-EPM7128,利用它可以方便地配置芯片的各个I/O口和片内资源,同时可以实现对一些外扩设备的译码以及逻辑电路的设计等,这样不仅节省了大量的外部译码芯片,同时还增加了系统的灵活性。此外,设计中利用一个串口(UART)与液晶显示器及触摸屏相连,提供了良好的司机交互操作界面。最后考虑到芯片内部已经具有A/D、D/A等资源,我们只选用了其中的4路A/D用于模拟量采集和2路D/A用于输出控制,同时设计了8路数字量输入(DI)和4路数字量输出(DO)。出于对系统的电磁兼容性和安全性方面的考虑,我们对相应的信号都采取了滤波和光电隔离措施。
完成以上所有的硬件功能设计后,一般来说,就应该按照经验用传统的软件方法来编写汽车整车控制器的软件系统。然而,近年来嵌入式实时操作系统的普及为我们的软件设计提供了一套新的解决思路。
嵌入式实时操作系统RTX51
针对中小型控制系统来说,mC/OS-II是目前最流行的、源码公开、几乎免费的RTOS。mC/OS-II具有执行效率高,占用空间小,实时性能优良和可扩展性强等特点,最小内核可编译至2k。通常来讲,是一种比较好的选择方案。但是,我们在项目初期的实践中证明mC/OS-II在8 位MCS51单片机系统中的效果并不是非常理想。因此,我们选用了一个最适用于8051家族单片机的实时多任务操作系统RTX51。在Keil C51的集成开发环境下,选用RTX51还具备如下优点:
?使用便捷,当用户在集成开发环境里打开目标选项对话框,选择目标操作系统以后,链接器便会自动添加合适的RTX-51库文件;
?完全支持C51具有的浮点操作功能、可重入功能和中断功能;
?对于8051系列单片机具有友好的用户界面来进行RTX51的配置;
?使用灵活,仅需占用少量的系统资源,也能够应用于实时性要求较高的系统中。
RTX51具有两种不同的版本:RTX51 Full和RTX51 Tiny。
在燃料电池城市客车的整车控制器中,由于整个被控系统相对比较复杂,同时考虑到将来可能的系统扩展,我们采用了功能较强的RTX51 Full版本。
RTX51 Full可适用于大多数8051系列单片机,但是必须针对不同的单片机进行相应的配置。由于Cygnal的C8051系列单片机是比较新型的MCS51单片机,所以RTX51并没有为此系列单片机提供专门的配置。因此,我们首先找到了一个与C8051系列单片机比较接近的单片机Infienon C515单片机,然后比较这两种单片机的异同,修改RTX51为Infienon C515专门提供的配置,即可得到我们所需的配置。修改的部分如下:
INT_EN_MASK_NUMBER EQU 3
?RTX_IE DATA 0A8H
?RTX_IEN1DATA 0E6H
?RTX_IEN2 DATA 0E7H
如上所述,RTX51与C51编译器是完全集成在一个uVision的集成环境中,作为RTX51应用程序只要求用户将RTX51.H头文件包含进来,并且选择编译选项Target中的operating为RTX51 Full即可。
整车控制器的软件设计思路
燃料电池城市客车明显区别于传统汽车的一个主要特点就是:传统汽车由司机根据自己的意愿,操纵油门踏板和制动踏板来直接控制汽车的运行状态;而燃料电池城市客车的油门踏板并没有和底层部件直接相连,而是通过将踏板信号采集进入多能源动力总成控制系统,再根据一定的控制策略,最终确定汽车的实际运行状态。
由此可见,对于燃料电池城市客车而言,对司机控制命令的信号采集和对司机意图的解释变得至关重要。因此,整车控制器的主要任务就是采集司机的各种控制信号(包括钥匙位置、制动踏板、油门踏板和档位信息等等),正确判断司机的实际驾驶意图,协调控制汽车各个部件的工作,对整车进行有效的控制。
根据整车控制器所需完成的功能,我们结合RTOS分解其各项功能并制定出相对独立的任务。目前,我们制定了以下几个任务:
任务0 系统初始化及控制策略数值计算:
初始化单片机的相关配置,启动所有其它的任务。随后进行控制策略的数值计算。
任务1 发送CAN信息:
当任务0完成了控制策略数值计算后,通过CAN总线发送相应的控制命令。
任务2 模数转换A/D:
采集油门踏板和制动踏板的信号,并进行数字滤波。这些信号将提供给任务0进行控制策略的计算。
任务3 数字量的输入和输出:
读入钥匙位置、紧急开关信号等数字量,输出Ready等信号。这些信息将提供给任务0来判断汽车应该选择的工作模式,同时在液晶屏幕上进行相应的状态显示。
任务4 故障诊断:
判断单片机系统工作是否正常,CAN通信是否正常,并且给出相应的报警信号。
中断1 接收CAN信息:
接收其它控制器节点发来的CAN信息,并且按照CAN协议把接收到的数据信息进行相应的转换。
上述各任务的程序流程图从略。
结语
C8051F020这款单片机具有较快的运行速度和丰富的内部资源,非常适合用于汽车整车控制器的开发。我们在搭建出其硬件平台的基础上,又开发了基于实时操作系统的软件系统,并且实现了数据采集、输出控制、液晶显示以及CAN总线通信等功能。实时操作系统的实施让我们的软件设计思路产生了很大的变化,使我们能够更方便地进行复杂软件的设计。可以这样说,实时操作系统的引入提高了软件设计的起点,同时提高了软件设计的效率。
|