李 歡,黃 英,張付軍,趙 宇,葛彥悟
(北京理工大學機械與車輛學院,北京 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 組件庫的結構層次
基于組件庫構建的快速原型最大的特點之一是層次化程度高。層次化建模的基礎是系統的可分解性,即系統可分解為若干個存在相互作用的子系統,子系統本身又可進一步分解。對每個子系統都建立模型,就形成了層次化,模塊化的系統模型。
軟件組件模型庫層次化,模塊化的目的是通過以下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模塊那樣將不同的組件直接添加到所需控制模型中,配置接口,快速構建控制原型。這樣的集成設計有利于控制原型的層次化、可維護性和后期調試。
本文中建立的控制軟件組件模型庫屬于應用層軟件設計,也即控制策略的軟件實現,軟件組件設計中功能內聚性和執行時間內聚性考慮了與底層代碼的映射,因而與硬件能較好地結合,通用性較好。針對不同的硬件平臺只需要完成模型定標和數據輸入輸出接口的設計,便可進行軟件實現,即生成產品代碼。本文中首先在快速原型平臺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,與基于快速原型的硬件在環仿真結果相近,從而驗證了自動生成代碼的精度和基于軟件組件庫搭建的發動機快速控制原型的控制精度。
(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日。