基于软件组件库的柴油机ECU软件设计与实现*
2016-04-11张付军葛彦悟
李 欢,黄 英,张付军,赵 宇,葛彦悟
(北京理工大学机械与车辆学院,北京 100081)
基于软件组件库的柴油机ECU软件设计与实现*
李 欢,黄 英,张付军,赵 宇,葛彦悟
(北京理工大学机械与车辆学院,北京 100081)
为提高基于模型的嵌入式软件的开发效率,利用软件组件技术,在MATLAB/Simulink平台上提出了基于软件组件库的嵌入式控制软件开发流程。以车用柴油机控制系统为应用对象建立了柴油机ECU软件组件库,并按提出的软件开发流程进行了完整的柴油机ECU软件开发与实现。验证阶段的仿真和试验结果表明:基于软件组件库开发的ECU软件,具有较高的可重用性、可维护性和控制精度;组件的清晰划分使控制原型易于迅速构建;组件设计充分考虑了代码实现的特点,使软件易于实现;基于软件组件库的开发流程有利于提高嵌入式控制软件开发效率。
柴油机;嵌入式软件开发;软件组件库;快速控制原型;自动代码生成
前言
随着仿真技术在深度和广度上的发展,应用仿真技术研究控制问题已经成为主要的研究手段。汽车电控系统控制精度要求越来越高,其内嵌控制算法也越来越复杂,相应控制单元软件日趋复杂庞大。基于模型的软件开发作为嵌入式控制软件开发中的一项重要手段应运而生。图1所示是典型的基于模型的嵌入式软件开发V流程[1]。
图1 嵌入式软件开发V流程
基于模型的V流程开发从功能需求定义,控制策略的设计与实现,到产品代码的生成,模型贯穿于整个设计阶段,其中较为关键的是快速控制原型(rapid control prototype, RCP)阶段。传统的开发方法中RCP仅被下载到快速原型平台用于初期策略验证,后期代码由人工编写,通常不考虑快速原型的代码实现问题。但随着自动代码生成技术的广泛应用[2-4],RCP阶段的控制模型直接影响着代码转化效率和代码质量。然而从控制模型到嵌入式代码通常还需做大量的工作,如模型定标、浮点与定点运算的转换、结合实时操作系统的任务调度、模型与任务之间的映射和结合硬件的I/O接口配置等[5-6]。在此过程中需将验证的Simulink模型进一步转化、修改以适应产品硬件。因传统的开发只单独考虑算法的实现,而非代码的实现,故通常这一过程容易存在功能划分和执行速率划分不清晰、内聚性低,模型算法间耦合多和层次化与模块化程度弱等不足,而带来以下问题:
(1) 自动代码生成时模块向任务的映射不明确,接口不清晰,增加了模型到代码转换的难度;
(2) 模型不便于后期修改和单独调试;
(3) 层次化与模块化程度低,影响了模型的可重用性和可移植性。
近年来,汽车领域提出了开放的、标准化的软件构架AUTOSAR,目的是将汽车应用软件从底层硬件中抽象出来,脱离于操作系统,使控制人员更专注于功能和应用软件的实现,并在应用层软件中引入了组件开发的概念[7-8]。图2为基于AUTOSAR标准的嵌入式控制软件体系与传统体系的对比,可见新的软件构架体系减少了功能应用软件与硬件的直接耦合,并突出了层次化的思想。此外,专业的代码生成工具经过模型配置,自动生成符合特定硬件平台和操作系统的代码时,需要详细考虑模型的标准化,如New Eagle Software公司利用其专业工具RapidHawk将层次化的Simulink控制原型配置到产品硬件平台上[1]。其核心思想都是致力于控制系统模型的层次化、模块化、高内聚和低耦合[9],从而提高软件开发效率。
图2 嵌入式控制软件体系结构
可以看出,基于模型的开发、快速原型和自动代码生成等技术大大提高了控制系统开发效率,然而控制模型的层次化、标准化、可重用性和模型与代码实现的相互关系等问题尚未有系统研究。
综上所述,若在快速原型阶段能充分考虑软件实现(代码生成)阶段的特点,设计一个层次化、模块化、可重用度高和方便配置的软件组件模型库和基于该组件库的开发流程,为嵌入式控制软件开发提供一个通用的研究平台,即可弥补上述传统开发流程中的不足,缩短快速原型开发周期,提高整个软件开发效率。因此,本文中结合软件组件技术[10-11],在MATLAB/Simulink平台下,在传统V流程基础上提出了基于软件组件库的嵌入式控制软件开发流程,如图3所示,并以车用柴油机控制系统为对象设计了其控制软件组件库,并按照提出的开发流程进行了完整的柴油机ECU软件设计与实现,从而验证了开发流程的有效性。
图3 基于软件组件库的嵌入式控制软件开发流程
1 组件库架构设计
嵌入式控制软件一般包含针对特定对象的诸多控制功能,所建立的软件组件模型库是所有功能组件的集合和封装。要使组件库成为通用的软件开发平台,要求组件库具备可扩展性。对于汽车动力系统控制软件组件库而言,要求具备针对不同动力部件类型和不同控制策略的可扩展性,包括横向扩展和纵向扩展。横向扩展是通过丰富模型库内容而将模型库应用在各种不同的控制对象上,如汽油机、柴油机、变速器和动力传动一体化系统等;而纵向扩展意味则是不断丰富控制策略、计算算法等内容,使得该软件组件库所能提供的功能更加完善。因此,组件库的结构层次和软件组件的划分尤为重要。
1.1 组件库的结构层次
基于组件库构建的快速原型最大的特点之一是层次化程度高。层次化建模的基础是系统的可分解性,即系统可分解为若干个存在相互作用的子系统,子系统本身又可进一步分解。对每个子系统都建立模型,就形成了层次化,模块化的系统模型。
软件组件模型库层次化,模块化的目的是通过以下3点提高控制软件的开发效率:
(1) 增强软件的可重用性,既包括系统内功能组件的重复调用,也包括不同控制系统间控制组件的可重用性,尽可能多地复用模型和元件也是对以往项目中获得且经改进了的知识的继承和储备;
(2) 降低模型耦合程度,复杂系统被划分为较小子系统,每个模块后期可以单独修改和调试;
(3) 增强功能内聚性和软件的可配置性与可移植性,使组件具有灵活的结构和清晰的接口。
模型库的开发在Simulink平台下完成,按照功能分类分级构造模型库的软件层次体系,将模型库划分成组件层和元素层两个层次,如图4所示。
图4 控制软件组件模型库结构层次
组件层:根据不同的划分原则,控制软件可划分为各种不同的组件。对于柴油机控制系统,该层包含了柴油机控制所需的所有组件,不同组件具有不同的功能。
元素层:元素层是各种不同组件或子组件的下层,它是针对各种功能的详细控制策略和算法实现的。元素层中的通用模块是MATLAB本身提供的各种模块;自定义代码主要是指实现特殊计算的C程序代码,通过Embedded MATLAB和S函数等方式封装。软件实现时,元素层是底层任务代码的模块化实现。
组件库是一种有效的组件管理和检索的工具。结合模型库的方式管理组件,使组件及基于组件搭建的控制模型便于管理、扩展、集成和二次开发。
组件库结构层次的具体实现在于软件组件的划分和各个组件下的详细设计,即组件层和元素层的设计。
1.2 软件组件的划分
软件组件划分是将复杂系统根据功能划分成几个较小的、相对简单的子系统,这些子系统是相对独立的可重用的组件模型,子系统最底层就是详细的算法片段。不同的组件和子系统在代码生成时将映射到不同的任务,组件化后的代码映射关系更加清晰,使软件方便配置;组件化的系统模型便于单独调试,在修改错误、增加功能和方便移植等方面具有显著的优势。
1.2.1 组件划分原则
(1) 高内聚,低耦合原则
软件组件一般根据不同的功能进行划分,即考虑功能内聚性,将具有相同或相似功能的部分划分为同一组件,因而各个组件相对独立。同时兼顾时间内聚性,即根据不同的执行速率来指导组件划分,最终共同达到减少模型耦合的目的。
(2) 可重用性原则
组件或子组件是软件复用的基本单位。可重用性需要考虑两个方面,一是不同的功能组件或子组件在控制系统内可复用,比如不同的计算任务都需要进行滤波算法,则该子组件可在控制软件模型中重复调用,以减少软件的冗余,精简代码;二是较大的组件在不同的控制系统或硬件平台上的重用,如发动机调速器组件,在不同发动机控制系统上复用时只需更新控制参数即可。
1.2.2 软件需求分析
软件组件划分的原则确立之后,须对控制系统进行软件功能的需求分析,图5为柴油机控制系统功能简图。柴油机控制软件主要完成数据采集、工况判断、控制计算、输出驱动和通信等功能。
1.2.3 组件划分
根据上述软件组件划分原则和车用柴油机控制软件需求分析,柴油机控制系统软件组件划分如图6所示。
图5 柴油机电控系统逻辑结构示意图
图6 柴油机控制系统软件组件划分
柴油机控制系统软件包括数据采集组件、数据库组件、工况判断组件、控制组件、计算组件、输出驱动组件、通信组件和故障诊断组件。功能复杂,控制任务较多的组件还可进一步细分为不同的子组件,如控制组件还可根据不同工况分为起动控制、怠速控制等。计算组件中包含了滤波、PID和神经网络等常用集成算法子组件。
组件层设计完成了控制系统所需的各个功能模块和接口定义,下一步是对各个组件进行详细设计。
1.3 软件组件详细设计
组件库的详细设计过程主要是根据划分好的软件组件,在各组件或子组件下进行了元素层的不同功能算法和控制策略的详细建模过程,也就是元素层的详细设计。软件实现,即模型向代码转换时,元素层的内容将映射到操作系统中的不同任务代码。限于篇幅本文中仅举例介绍工况判断组件和控制组件的设计过程。
1.3.1 工况判断组件
工况判断组件的功能是根据发动机和车辆的各种信息进行综合判断,将发动机的运行状态分成几个具有代表性的工况,根据不同的工况由控制组件实施不同的控制策略。同时,工况划分可根据不同的控制功能或精度要求进行扩展。依照发动机不同的工作状态和状态切换条件,可得到柴油机工况切换的状态图,如图7所示。图中字母表示状态切换条件,如A为系统加电,B为起动开关打开等。
图7 柴油机工况切换图
根据状态切换条件,在Simulink/Stateflow中完成了柴油机工况判断组件的设计,如图8所示。该组件中包含了两个工况判断子组件,Chart 1是柴油机工况判断组件,Chart 2是针对动力传动一体化控制系统的工况判断组件。软件实现时,工况判断组件将对应生成操作系统中的工况判断任务代码。
图8 工况判断组件
图9 控制组件
1.3.2 控制组件
针对柴油机的控制任务主要是控制喷油量和喷油提前角,根据发动机所处的工况不同,喷油量和喷油提前角的控制策略也不同。因此,可根据常见工况将控制组件进一步拆分成6个子组件:起动、怠速、调速、停机、换挡和保护控制子组件。图9为发动机不同工况的控制组件和正常工况组件的元素层算法模型。在针对硬件平台的软件实现时,调速控制子组件的元素层将映射到调速控制任务的底层代码。
图10 软件组件库列表
1.3.3 组件模型库
组件层各种不同的组件将集中在一起,构成了软件组件模型库。它既是嵌入在Simulink环境下的控制软件组件统一管理和检索的工具,也是一个快速构建控制原型的软件开发平台。图10为本文中所建的柴油机控制软件组件库。图11为软件组件库内部子系统展示。
图11 软件组件及其子组件
模型库内部进行了算法集成和组件封装,建模时可像使用普通Simulink模块那样将不同的组件直接添加到所需控制模型中,配置接口,快速构建控制原型。这样的集成设计有利于控制原型的层次化、可维护性和后期调试。
2 组件模型库的实现与应用
本文中建立的控制软件组件模型库属于应用层软件设计,也即控制策略的软件实现,软件组件设计中功能内聚性和执行时间内聚性考虑了与底层代码的映射,因而与硬件能较好地结合,通用性较好。针对不同的硬件平台只需要完成模型定标和数据输入输出接口的设计,便可进行软件实现,即生成产品代码。本文中首先在快速原型平台MicroAutoBox上进行了柴油机控制原型的软件实现和应用,通过硬件在环仿真完成了基于RCP的虚拟标定;然后对RCP进行自动代码生成,并将代码下载到产品控制器中进行台架试验验证,即环境在环测试。
2.1 快速构建控制原型
运用建立的控制软件组件库,结合单体泵柴油机控制策略和图5,通过配置组件迅速构建了6缸单体泵柴油机的快速控制原型,它包括数据采集、数据存储、工况判断、通信、控制计算和输出驱动等组件。应用MicroAutoBox快速原型平台需进行实时接口(real time interface, RTI)配置。分别在数据采集组件中配置曲轴凸轮轴信号处理硬件接口和数模转换接口,在输出驱动组件中配置喷油脉宽调制驱动接口,即完成RTI输入输出实时接口配置。6缸单体泵柴油机快速控制原型如图12所示。
图12 6缸单体泵柴油机快速控制原型
2.2 基于快速控制原型的硬件在环仿真
因MicroAutoBox支持浮点运算,故在RCP阶段,控制模型无需定标,直接将模型编译下载到MicroAutoBox快速原型平台,即可通过硬件在环仿真完成上层控制软件的初步验证,主要包括控制策略验证和控制参数虚拟标定。控制对象采用了运行在硬件在环仿真对象平台AutoBox上已经过稳态和动态试验数据校核[12]的虚拟柴油机平均值模型,该模型满足精度要求。图13和图14分别为硬件在环仿真(HIL)平台原理和实物图。
图13 硬件在环测试平台原理图
图14 硬件在环测试平台实物图
通过HIL仿真首先完成了基于模型的柴油机全程调速PID参数整定,然后对柴油机的定矩加速和定速增矩动态过程进行了仿真验证。本文中采用工程中最常用的经验法来整定PID参数[13-14],将得到的参数MAP写入数据库组件,然后进行了仿真验证。在第10和20s时分别进行油门递增(0~35%)和负载递增(0~500N·m)的仿真,控制结果如图15所示。
图15 定矩加速、定速增矩过程的HIL仿真结果
由图可见,转速超调量约为100r/min(超调率约7.5%),调节时间3s左右,至此,满足控制要求,柴油机快速控制原型得到了初步验证。
2.3 自动代码生成与台架试验验证
快速控制原型验证完成后,需要完成模型到代码的转换。代码转化效率直接取决于控制模型的层次化和内聚性。本文中采用基于Targetlink的自动代码生成技术,将RCP转换成了产品代码,其流程如图16所示。
图16 基于Targetlink的自动代码生成流程
基于Targetlink自动代码生成主要包含以下步骤:(1)模型转化,将控制模型从Simulink无缝连接到Targetlink环境下,为后续工作做准备;(2)模型定标,它直接影响生成代码的控制精度,Targetlink软件提供了自动定标功能,对于系统庞大的控制软件自动定标精度难以保障,因此还需由经验丰富,对对象(如柴油机)控制系统中传递的数据变量有全面把握的对象软件工程师采用手动定标方式完成;(3)仿真测试,在将代码下载到控制器之前,须进行仿真和测试,包括模型在环仿真、软件在环仿真和处理器在环仿真。模型在环仿真是对控制模型的逻辑验证,而软件和处理器的在环仿真则是对C代码的验证。通过仿真可指导控制模型的反复修改,以使生成的代码达到最优。
最终生成的控制代码经集成后被下载到搭载MC68376微处理器的产品ECU中,并针对仿真中的柴油机定速增矩动态过程进行了台架测试。测试时所采用的控制参数为第2.2节中基于模型标定得到的参数。图17为定速增矩过程的台架测试结果与对应的硬件在环仿真结果的对比。
图17 定速增矩过程仿真与试验结果对比
由图可见,在基于平均值模型整定得到的全程调速PID参数控制下,试验结果超调量约为76r/min(超调率约5.6%),调节时间约为4s,与基于快速原型的硬件在环仿真结果相近,从而验证了自动生成代码的精度和基于软件组件库搭建的发动机快速控制原型的控制精度。
3 结论
(1) 基于ECU软件组件模型库建立的快速控制原型具有层次化、模块化和可重用度高的特点,方便模型的修改、扩展、集成和二次开发,利于模型向代码转化和与底层操作系统的结合,加快了软件的实现。
(2) 利用软件组件库可根据需求快速构建对象控制系统的控制原型,便于充分利用以往的知识和经验储备。组件库可随着开发次数的增多而不断扩展和更新,形成逐渐完善的控制软件开发平台,不断提升开发效率。
(3) 软件实现中,柴油机快速原型阶段的硬件在环测试、基于模型的虚拟标定、自动代码生成和台架测试,验证了基于组件库开发的控制软件的控制精度,表明基于软件组件库的开发流程有利于提高嵌入式控制软件的开发效率。
[1] LAWRIE R, BRUNEMANN G. An architecture based design process for deploying control software on production hardware using RapidHawk[C]. SAE Paper 2003-01-0853.
[2] 杭勇,刘学瑜.利用代码自动生成技术实现柴油机电控系统控制算法的开发[J].内燃机工程,2005,26(2):9-12.
[3] 祝轲卿,王俊席,吴晨楠,等.基于Targetlink的嵌入式系统控制软件开发[J].系统仿真学报,2007,19(7):1476-1479.
[4] 杭勇,刘学瑜.快速原型工具在高压共轨柴油机控制系统开发中的应用[J].现代车用动力,2004(4):22-25.
[5] RAI D, JESTIN T, VITKIN L. Model-based development of AUTOSAR-compliant applications: exterior lights module case study[C]. SAE Int. J. Passeng. Cars-Electron. Electr. Syst,2009,1(1):84-91.
[6] VIJAYAGOPAL R, MICHAELS L, ROUSSEAN A, et al. Automated model based design process to evaluate advanced component technologies[C]. SAE Paper 2010-01-0936.
[7] SANDMANN G, THOMPSON R. Development of AUTOSAR software components within model-based design[C]. SAE Paper 2008-01-0383.
[8] 胡琦,李红,赵民德,等.基于AUTOSAR的电控汽油机ECU软件设计与实现[J].浙江大学学报(工学版),2011,45(6):1119-1123.
[9] ROBERT C, Martin.敏捷软件开发:原则、模式与实践[M].北京:清华大学出版社,2003.
[10] 郭孔辉.基于MATLAB的车辆组件模型库的设计与实现[J].吉林大学学报(工学版),2006,36(6):866-870.
[11] WU R, LI H, YAO M, et al. A hierarchical modeling method for AUTOSAR software components[C]. International Conference on Computer Engineering and Technology (ICCET),2010 2nd International Conference on,2010,4:V4-184-V4-188.
[12] LI R, HUANG Y, LI G, et al. Calibration and validation of a mean value model for turbocharged diesel engine[J]. Advances in Mechanical Engineering,2013,5(2).
[13] 袁银南,朱磊,杨鲲,等.实现柴油机全程电子调速PID参数整定的仿真研究[J].内燃机工程,2006,27(1):23-28.
[14] 冯启山,殷承良,张云侠,等.混合动力汽车发动机调速系统研究[J].内燃机学报,2005,23(2):162-167.
Design and Implementation of Diesel Engine ECU SoftwareBased on Software Components Library
Li Huan, Huang Ying, Zhang Fujun, Zhao Yu & Ge Yanwu
SchoolofMechanicalEngineering,BeijingInstituteofTechnology,Beijing100081
To enhance the efficiency of model-based embedded software development, a procedure for embedded control software development based on software components library is proposed with MATLAB/Simulink platform. With the control system of vehicular diesel engine as application object, an ECU software components library for diesel engine is built and the development and implementation of complete diesel engine ECU software are conducted according to the software development procedure proposed. The results of simulation and test in ve-rification phase show that the diesel engine ECU software developed based on software components library has higher reusability, maintainability and control accuracy. The clear classification of software components makes control prototype easy to build rapidly, the design of software components take the features of code implementation into full consideration, making software easy to implement, and the development procedure based on software components library is conducive to enhancing the development efficiency of embedded control software.
diesel engine; embedded software development; software components library; rapid control prototype; automatic code generation
*部委基础科研项目(D2220112901)资助。
2016224
原稿收到日期为2015年12月23日,修改稿收到日期为2016年2月27日。