陳昊天,張 琨,鄧康耀,2,王 真,崔 毅,2
(1.上海交通大學(xué) 動(dòng)力機(jī)械與工程教育部重點(diǎn)實(shí)驗(yàn)室,上海 200240;2.高新船舶與深海開發(fā)裝備協(xié)同創(chuàng)新中心,上海 200240;3.天際汽車科技有限公司,上海 201821)
仿真模型和軟件在發(fā)動(dòng)機(jī)的研究和設(shè)計(jì)工作中起著十分重要的作用。在發(fā)動(dòng)機(jī)基礎(chǔ)研究過程中,仿真分析可以獲得試驗(yàn)難以測(cè)量的參數(shù),更深入地探尋宏觀、微觀機(jī)理和規(guī)律;在設(shè)計(jì)開發(fā)過程中,可以預(yù)先得知發(fā)動(dòng)機(jī)的性能并加以改進(jìn),減少對(duì)試驗(yàn)的依賴,降低開發(fā)成本,顯著提高開發(fā)效率。
在發(fā)動(dòng)機(jī)工作過程仿真方面,國外在20世紀(jì)70年代就開發(fā)了充滿-排空模型(filling and empty model)[1]、一維特征線計(jì)算模型[2],到20世紀(jì)90年代又開發(fā)出了基于有限容積法的模型[3]。在這些模型和算法的基礎(chǔ)上,開發(fā)了具有圖形化界面、通用的商業(yè)軟件,市場(chǎng)占有率比較高的有美國GAMMA Tech公司的GT-Power、奧地利AVL公司的Boost、英國Ricardo公司的WAVE等。國內(nèi)也在20世紀(jì)80年代開展了發(fā)動(dòng)機(jī)性能仿真研究,并不斷改進(jìn)仿真算法以提高計(jì)算精度和效率[4-5]。國內(nèi)雖然在發(fā)動(dòng)機(jī)性能仿真算法研究方面基本與國外同步,但是在通用性能軟件開發(fā)方面與國外仍有較大差距。開發(fā)具有自主知識(shí)產(chǎn)權(quán)的發(fā)動(dòng)機(jī)仿真軟件,對(duì)提升發(fā)動(dòng)機(jī)的設(shè)計(jì)開發(fā)水平尤其是非常規(guī)用途發(fā)動(dòng)機(jī)開發(fā),具有重要的意義。
程序開發(fā)的一個(gè)難點(diǎn)在于實(shí)際問題的抽象化及模型的選擇。本文中介紹了一種發(fā)動(dòng)機(jī)性能仿真軟件的開發(fā)思路,將復(fù)雜的發(fā)動(dòng)機(jī)物理模型抽象成可以編程實(shí)現(xiàn)的數(shù)學(xué)模型,并基于此開展了一種全新的發(fā)動(dòng)機(jī)性能仿真軟件開發(fā)工作;為發(fā)動(dòng)機(jī)的關(guān)鍵計(jì)算組件提供了多種計(jì)算模型,可以使用戶根據(jù)建模的需求進(jìn)行選擇。另一個(gè)難點(diǎn)在于程序要有較多的功能和較好的通用性。本文中建立了一個(gè)通用程序架構(gòu),可以實(shí)現(xiàn)多種性能仿真計(jì)算模式,包括穩(wěn)態(tài)下的一維詳細(xì)計(jì)算、容積法計(jì)算、實(shí)時(shí)計(jì)算及瞬態(tài)計(jì)算,且便于開發(fā)工作者對(duì)其進(jìn)行修改和擴(kuò)展。其中,實(shí)時(shí)計(jì)算是相較于當(dāng)前的商用軟件增加的一種計(jì)算功能,可應(yīng)用于發(fā)動(dòng)機(jī)控制,如硬件在環(huán)系統(tǒng)的開發(fā)[6]。除此之外,基于QT開發(fā)了軟件的前后處理圖形界面,為軟件的使用提供了極大的便利。
本研究搭建了新穎的性能仿真程序框架并完成了軟件開發(fā)工作,包含了目前商用軟件欠缺的實(shí)時(shí)計(jì)算功能,為發(fā)動(dòng)機(jī)性能仿真軟件的開發(fā)和發(fā)展提供了新的思路。
軟件的組成主要包含可視化的建模界面、實(shí)現(xiàn)多種求解功能的求解程序和可視化的后處理繪圖界面三部分。用戶需要在界面上從已經(jīng)建立好的模型庫中選擇子模型,根據(jù)模型的需要鍵入實(shí)際的發(fā)動(dòng)機(jī)結(jié)構(gòu)參數(shù)等;建模工作完成后,預(yù)處理生成接口文件,由求解程序去讀取并計(jì)算;計(jì)算結(jié)果輸出到設(shè)置路徑下,然后由后處理界面讀取。軟件流程示意圖如圖1所示。
圖1 軟件執(zhí)行流程
求解程序是仿真軟件的核心,其優(yōu)劣一定程度上取決于程序框架的好壞。以容積法求解功能為例,介紹求解程序的框架搭建和設(shè)計(jì)思想。本研究的求解程序基于C++語言開發(fā)。
發(fā)動(dòng)機(jī)物理模型的主要組件包括環(huán)境、增壓器、中冷器、進(jìn)排氣容積、氣門、氣缸等,各個(gè)組件之間相互連接組成完整的模型,所以可以采用圖論的基本理論把模型抽象成一個(gè)有向圖[7]。各個(gè)組件代表各個(gè)節(jié)點(diǎn),組件之間的連接關(guān)系代表有向圖的邊,各個(gè)節(jié)點(diǎn)之間通過有向邊來進(jìn)行數(shù)據(jù)的傳遞,如圖2所示。圖中,E為環(huán)境,K為壓氣機(jī),T為渦輪,I為中冷器,V為氣門,C為氣缸,P為容積。
圖2 發(fā)動(dòng)機(jī)模型有向圖
基于這個(gè)假設(shè),可以定義兩個(gè)類,組件類用Component表示,連接類用Link表示。組件類代表有向圖的節(jié)點(diǎn),如圖3所示。連接類表示有向圖的邊,如圖4所示。組件類中定義幾個(gè)通用的接口,ReadFromCase() 表示數(shù)據(jù)的讀?。籙pdateParameter()表示某個(gè)組件的迭代計(jì)算,取決于開發(fā)者選取的算法,是發(fā)動(dòng)機(jī)仿真模型的核心;WriteOutput()表示計(jì)算結(jié)果的輸出和傳遞。連接類包含了兩個(gè)指針,分別指向上游和下游的組件,用來表征連接關(guān)系。
圖3 組件類示意圖
圖4 連接類示意圖
組件類只是一個(gè)抽象類,對(duì)發(fā)動(dòng)機(jī)模型的各個(gè)部件,也會(huì)寫實(shí)際的類來繼承組件類,如氣缸類Cylinder,進(jìn)排氣容積類Volume等。然后根據(jù)需求,對(duì)組件類中的接口進(jìn)行重寫,如氣缸類需要增加燃燒過程計(jì)算函數(shù)Combustion()等,進(jìn)排氣容積類需要增加傳熱計(jì)算函數(shù)Heattransfer()等,增壓器類需要增加圖譜插值函數(shù)Interpolation()等,如圖5所示。容積法計(jì)算模式下需要寫7個(gè)子類,如表1所示。為了方便開發(fā)者對(duì)源程序進(jìn)行修改或補(bǔ)充(如增加新的計(jì)算部件),采用C++設(shè)計(jì)模式中工廠模式來設(shè)計(jì)框架,ComponentFactory類為組件工廠類,getComponent()則為創(chuàng)建組件對(duì)象的函數(shù)。此外,為了提升程序的通用性,發(fā)動(dòng)機(jī)特有的參數(shù)在界面中輸入而不是在程序內(nèi)部修改。
圖5 Component類的繼承和工廠模式
在組件類和連接類定義完成之后,要實(shí)現(xiàn)不同的計(jì)算功能,還需要設(shè)定不同功能下程序的算法,如設(shè)定需要調(diào)用的模型、模型的調(diào)用次序及計(jì)算終止的判斷。以穩(wěn)態(tài)計(jì)算為例介紹求解器的執(zhí)行過程。首先要?jiǎng)?chuàng)建組件類和連接類對(duì)應(yīng)的對(duì)象;然后從界面讀取輸入的參數(shù),進(jìn)行初始化;完成之后根據(jù)設(shè)定的迭代步長(zhǎng)及選定的算法進(jìn)行迭代計(jì)算,并進(jìn)行對(duì)象之間的數(shù)據(jù)交互;然后每個(gè)循環(huán)結(jié)束進(jìn)行收斂判別,全部收斂則結(jié)束,否則調(diào)整參數(shù)重新計(jì)算直到收斂。執(zhí)行過程如圖6所示。
表1 組件類的子類
圖6 求解程序運(yùn)算流程
程序的框架設(shè)計(jì)好之后,需要將發(fā)動(dòng)機(jī)各個(gè)組件的計(jì)算模型寫進(jìn)其對(duì)應(yīng)的計(jì)算單元中。為了滿足用戶的不同建模需求,發(fā)動(dòng)機(jī)關(guān)鍵組件如氣缸、進(jìn)排氣道、渦輪增壓器等包含了多種計(jì)算模型。
氣缸模型主要包含燃燒模型和缸內(nèi)傳熱模型。燃燒模型包括零維模型[8]、多區(qū)模型[9-10]、KIVA耦合計(jì)算模型。傳熱模型采用Woschni模型[11]。
在一維計(jì)算模式中,進(jìn)排氣管道流動(dòng)用一階擬線性偏微分方程描述,用守恒型的有限體積法離散,求解格式包括一階ROE格式、二階TVD格式[12-13]及三階ENO格式[14]。
管接頭計(jì)算包括定壓模型、壓力損失模型和動(dòng)量守恒邊界模型[13,15]。定壓模型假定接頭處為等壓、等熵流場(chǎng)。壓力損失模型則考慮了管道接頭處的壓降。邊界處均采用特征線法計(jì)算。
對(duì)于渦輪增壓器,程序中提供了3種計(jì)算方法。一種是直接輸入渦輪和壓氣機(jī)的脈譜圖,利用流量、壓比、轉(zhuǎn)速、效率之間的關(guān)系,通過拉格朗日插值得到數(shù)據(jù)點(diǎn)的參數(shù)。由于插值函數(shù)的存在會(huì)限制程序的計(jì)算速度,因此提供了另一種快速計(jì)算方法,用多項(xiàng)式擬合圖譜中的轉(zhuǎn)速線和效率線,然后程序執(zhí)行過程中直接調(diào)用多項(xiàng)式計(jì)算數(shù)據(jù)點(diǎn)的參數(shù)。上面兩種方法需要提供準(zhǔn)確的脈譜圖,并且不具有預(yù)測(cè)性?;谇皟煞N方法存在的局限性,程序中提供了一種基于增壓器詳細(xì)結(jié)構(gòu)參數(shù)的預(yù)測(cè)模型[16]。
在容積法計(jì)算模式中,中冷器和進(jìn)排氣容積主要是以一階微分方程的形式進(jìn)行熱動(dòng)力參數(shù)的計(jì)算[17]。在瞬態(tài)計(jì)算模式下,要考慮曲軸系和渦輪增壓器軸的動(dòng)力學(xué)方程[18]。
軟件包含幾種主要的計(jì)算功能,一維計(jì)算、容積法計(jì)算及實(shí)時(shí)計(jì)算。不同的計(jì)算模式選擇的算法會(huì)有所區(qū)別。針對(duì)微分方程的求解方法,一維計(jì)算采取四階龍格庫塔法,容積法采用預(yù)報(bào)校正法,實(shí)時(shí)計(jì)算為了減少迭代次數(shù),采用歐拉法。
針對(duì)渦輪增壓器的計(jì)算方法,一維計(jì)算和容積法計(jì)算采取脈譜圖插值或者預(yù)測(cè)模型。實(shí)時(shí)計(jì)算為了提升模型的計(jì)算速度,采用多項(xiàng)式擬合法,在程序計(jì)算過程中避免了插值。
此外,針對(duì)多缸機(jī)的計(jì)算方法,一維計(jì)算考慮各缸之間不均性,對(duì)每個(gè)氣缸都進(jìn)行詳細(xì)的計(jì)算。而實(shí)時(shí)計(jì)算模式下,只對(duì)第一缸進(jìn)行詳細(xì)計(jì)算,其他氣缸的計(jì)算結(jié)果根據(jù)發(fā)火順序,對(duì)第一缸的計(jì)算結(jié)果進(jìn)行相位偏移來獲得,從而減少氣缸計(jì)算過程中內(nèi)部子函數(shù)的執(zhí)行次數(shù),提升計(jì)算速度。
仿真程序的框架和模型算法編程實(shí)現(xiàn)之后,結(jié)合前后處理界面,整個(gè)軟件就可以完成預(yù)期的計(jì)算功能,但是仍然需要驗(yàn)證軟件計(jì)算的合理性。以某型中速柴油機(jī)為例,介紹軟件仿真計(jì)算操作過程,并與試驗(yàn)結(jié)果進(jìn)行對(duì)比,驗(yàn)證軟件計(jì)算的精度。柴油機(jī)的主要參數(shù)如表2所示。
表2 發(fā)動(dòng)機(jī)參數(shù)
在軟件的可視化建模界面中,首先選定計(jì)算模式,然后根據(jù)發(fā)動(dòng)機(jī)的實(shí)際結(jié)構(gòu),利用模型庫搭建模型。分別采用一維計(jì)算模式和容積法計(jì)算模式對(duì)計(jì)算機(jī)型進(jìn)行建模,建好的模型如圖7和圖8所示。
圖7 一維計(jì)算模型
圖8 容積法計(jì)算模型
對(duì)建好的一維模型和容積法模型進(jìn)行穩(wěn)態(tài)工況的計(jì)算,將計(jì)算結(jié)果與25%、50%、75%、90%、100%負(fù)荷穩(wěn)態(tài)運(yùn)行工況下的試驗(yàn)數(shù)據(jù)進(jìn)行對(duì)比,對(duì)比結(jié)果如圖9所示。本文中考慮了幾種主要性能參數(shù),包括增壓壓力、燃油消耗率、最高燃燒壓力、渦前排溫及渦前壓力。其中,容積法計(jì)算結(jié)果和試驗(yàn)值的最大誤差為3.88%,一維計(jì)算結(jié)果和試驗(yàn)值的最大誤差為2.50%。
圖9 一維計(jì)算和容積法模型精度對(duì)比
此外,容積法計(jì)算和一維計(jì)算可以對(duì)進(jìn)排氣壓力波進(jìn)行預(yù)測(cè),100%負(fù)荷下計(jì)算結(jié)果如圖10所示。壓力波均值最大誤差為0.43%,滿足精度要求。
圖10 進(jìn)排氣壓力波對(duì)比
實(shí)時(shí)計(jì)算即模型一個(gè)循環(huán)的計(jì)算時(shí)間小于實(shí)際發(fā)動(dòng)機(jī)運(yùn)行時(shí)間的計(jì)算。將實(shí)時(shí)率ηREAL-TIME作為衡量程序?qū)崟r(shí)性的指標(biāo),其含義就是發(fā)動(dòng)機(jī)一個(gè)循環(huán)實(shí)際運(yùn)行的時(shí)間tactul與計(jì)算一個(gè)循環(huán)的時(shí)間tcalculate的比值,表達(dá)式見式(1)。
(1)
實(shí)時(shí)率越大,表示程序相對(duì)于實(shí)際循環(huán)的計(jì)算速度越快,越能滿足實(shí)時(shí)性的要求。在實(shí)際工程中,為了避免數(shù)據(jù)交互等因素造成的延遲,在滿足精度的同時(shí),要盡可能地提高實(shí)時(shí)率。
本研究中的發(fā)動(dòng)機(jī)標(biāo)定轉(zhuǎn)速為600 r/min,實(shí)際發(fā)動(dòng)機(jī)一個(gè)循環(huán)的時(shí)間為200 ms。在不同的計(jì)算模式下,滿足的實(shí)時(shí)性如表3所示(測(cè)試環(huán)境為AMD 3550H CPU)。
表3 不同計(jì)算模式的實(shí)時(shí)性對(duì)比
可以看出,一維計(jì)算的實(shí)時(shí)率最低,計(jì)算速度最慢;實(shí)時(shí)計(jì)算模式的實(shí)時(shí)率很高,可以很好地滿足發(fā)動(dòng)機(jī)實(shí)時(shí)性的要求,因此可以在實(shí)時(shí)控制上得到很好的應(yīng)用。
在程序計(jì)算收斂之后,打開生成的計(jì)算結(jié)果文件可以在軟件的后處理界面進(jìn)行圖形的繪制。以缸壓和放熱率曲線為例,上述模型的缸壓曲線和放熱率曲線如圖11和圖12所示。
圖11 缸壓曲線繪圖
圖12 放熱率曲線繪圖
在目前市面上應(yīng)用較為廣泛的商用軟件 GT-Power 上完成柴油機(jī)的建模和計(jì)算,與本文中所開發(fā)的仿真軟件進(jìn)行計(jì)算精度的對(duì)比,如表4所示。可以看出,本文中開發(fā)的性能仿真軟件和商用軟件相比計(jì)算精度基本相當(dāng),最大誤差均反映在增壓器轉(zhuǎn)速,GT-Power誤差為1.49%,本研究開發(fā)軟件為1.40%。
表4 與商用軟件的計(jì)算精度對(duì)比
(1) 基于面向?qū)ο蟮能浖_發(fā)思想設(shè)計(jì)的通用發(fā)動(dòng)機(jī)性能仿真軟件框架,可以實(shí)現(xiàn)多種穩(wěn)態(tài)和瞬態(tài)計(jì)算模式(一維、容積法、實(shí)時(shí))。
(2) 軟件所包含的可視化建模界面、后處理界面可以有效地完成模型搭建工作及計(jì)算結(jié)果的圖形繪制。
(3) 以某型中速柴油機(jī)為例,進(jìn)行了多種穩(wěn)態(tài)工況下的一維、容積法和實(shí)時(shí)計(jì)算。與試驗(yàn)結(jié)果對(duì)比表明軟件有較高的計(jì)算精度;實(shí)時(shí)計(jì)算完全能滿足實(shí)時(shí)分析的要求,實(shí)時(shí)率可以達(dá)到3.92;計(jì)算精度與商用軟件基本相當(dāng)。