论文部分内容阅读
近年来,随着全球石油资源紧张、大气污染严重和电池技术的提高,电动汽车已被世界公认为21世纪汽车工业改造和发展的主要方向。根据“十五”国家863计划电动汽车重大专项的目标定位和技术路线,结合我国电动汽车发展现状,有关专家认为,我国电动汽车发展应抓住传统汽车向电动汽车过渡的历史机遇,把混合动力电动汽车作为现阶段我国电动汽车发展的重点和方向,率先完成批量生产,实现产业化,取得突破。2002年,吉林大学混合动力汽车课题组承担了国家863计划能源技术领域电动汽车主题/重大专项《解放牌混合动力城市客车多能源动力总成控制系统》课题研究开发任务。在混合动力汽车中,多能源动力总成控制器是一个重要组成部分。总成控制器(HCU)需要通过外设端口和其他电子控制单元(ECU)进行通信。它接收输入信号,然后按照一定的控制策略对这些信号进行分析、处理,最后输出控制信号。本文以该总成控制器为硬件平台,以移植的实时操作系统(RTOS)为软件平台,按照混合动力汽车动力总成的控制策略,设计出多能源动力总成控制软件。HCU的嵌入式微控制器是Intel的16位单片机80C196KC。HCU的输入输出信号主要是模拟量和开关量。HCU主要包括A/D转换电路、D/A转换电路和I/O电路;为了便于HCU与PC机进行通信,设计了串行通信电路;为了满足现代汽车的设计要求,HCU需要通过CAN总线与其他ECU进行CAN通信,设计了CAN通信电路;为了减少外接电磁干扰,选用了两套DC—DC直流隔离电源,提供可靠的电流输出,保证HCU正常工作。嵌入式应用软件开发需要使用交叉开发环境。交叉开发环境是指实现、编译、链接和调试应用程序代码的环境。以开发工具和技术咨询为基础的整体解决方案是迫切需要的。在开发过程中,本人选用了伟福E6000/L型仿真器。该仿真器采用主机+POD组合,通过更换不同的POD,可对各种不同类型的单片机进行仿真。伟福开发环境是一个包括编辑、搜索、执行、仿真器设置等多种功能的集成开发环境,使用非常方便。在伟福开发环境下,对总成控制器的A/D端口、D/A端口、I/O端口、串口和CAN口进行了调试。本文对调试过程和调试方法进行了详细说明,对CAN通信也进行了相关说明。为了满足实时性的要求,简化编程结构,提高系统的稳定性和可靠性,需要采用实时操作系统。本人实现了源码公开的实时嵌入式操作系统——μC/OS-II在16位单片机80C196KC上的移植。μC/OS-II是一个完整的、可移植、可固化、可裁减的占先式多任务内核。为了方便移植,大部分的μC/OS-II代码是用C语言写的,但仍需要用C和汇编语言写一些与处理器相关的代码。单片机80C196KC满足使μC/OS-II正常运行的若干要求。移植μC/OS-II主要是编写OSTaskStkInit()、OSStartHighRdy()、OSCtxSw()、TimerInit()、OSTickISR()和OSIntCtxSw()等几<WP=79>个与处理器相关的函数。另外,还需要定义与编译器相关的数据类型、处理关中断和开中断、规定任务堆栈空间的增长方向、处理任务调度、以及定义对外接口函数等。移植完成后,需要对移植代码进行测试,而这可能是移植中最复杂的一步。根据移植代码本身的特点,可以有步骤的、由简到繁的对移植代码进行测试。如果有些部分出现问题,可以及时发现错误并改正。总成控制器通过A/D端口、D/A端口、I/O输入口、I/O输出口、串口和CAN口与外界进行通信,在设计应用软件时也经常涉及到这些端口。如果针对每个端口编写一个接口函数,那么就可以在编写应用软件时调用这些函数来传送数据,那将是非常方便的。另外,如果能够针对具体应用编写并调试一些具有相对独立性的、高质量的通用函数,将大大简化编程结构,并使程序模块化,这对编码、调试、移植、代码重用等会起到很大作用。因此,本人创建了函数库。根据需要,本文把CAN接口函数单独作为一个函数库,把CAN口以外的接口函数归入一个函数库,另外,还可以把许多有用的函数,比如延时函数、HCU初始化函数等写入函数库。这样就会更加灵活,假如应用软件中不需要CAN通信,就没必要加入CAN接口函数库。接下来,我们对实时操作系统和函数库进行统一测试。在实时操作系统平台上添加多个应用任务,这些任务调用函数库中的函数,并且使用实时操作系统提供的多种管理功能,从而对该实时操作系统和函数库的健壮性进行综合测试。首先构造一个简单的测试程序,检验在加载函数库后μC/OS-II能否正常运行。然后,依次添加各种类型的应用任务,各个任务互不相同,分别从不同的方面对实时操作系统和函数库进行测试,直到有足够多的应用任务在实时操作系统的调度下仍能够正常运行为止。本人创建了指示灯闪烁任务、串口发送任务、使用邮箱通信的任务、串口接收任务、I/O输入输出任务、CAN口发送任务、CAN口接收任务、A/D转换任务、D/A转换任务等13个任务,加上μC/OS-II内部的空闲任务和统计任务两个任务,一共有15个任务。这些任务拥有不同的优先级,是在μC/OS-II的统一调度下运行的,其中,多数任务都调用了延时函数,有些任务之间还进行了通信,这对μC/OS-II的任务管理、时间管理、中断处理、任务之间的通信等方面都进行了测试。这些任务调用了函数库中的函数,这?