王宇陽,丁 濤,周鳳華,張 寧
(中國航發(fā)上海商用航空發(fā)動機制造有限責(zé)任公司,上海 201306)
當(dāng)前國內(nèi)航空發(fā)動機試驗具有時間緊、型號多、任務(wù)大、可靠性要求高等特點,常常造成試驗設(shè)備和人力資源緊張。而為匹配每次試驗科目的參數(shù)要求,試驗常伴隨著對發(fā)動機電子控制系統(tǒng)(EEC)、測試接口設(shè)備(TIE)的調(diào)整——目前的試驗狀態(tài)是在發(fā)動機停車后進行,費時費力。如果能夠在試驗進行過程中在線調(diào)整發(fā)動機參數(shù),將極大地減少試驗的時間成本[1-3]。然而,試車臺數(shù)采系統(tǒng)的主要功能是實現(xiàn)傳感器信號的采集和顯示,其本身設(shè)計并不具有復(fù)雜的控制邏輯,不能滿足在線調(diào)整發(fā)動機參數(shù)需要的快速、可靠、復(fù)雜性的要求[4-6]。
隨著軟件技術(shù)的發(fā)展,大部分的應(yīng)用系統(tǒng)供應(yīng)商會提供軟件開發(fā)工具包(SDK),軟件開發(fā)人員可以利用SDK輔助開發(fā)外圍第三方應(yīng)用程序[7]。某科研試車臺數(shù)采系統(tǒng)的SDK中提供了ExteralHook接口,該接口包含一套封裝于動態(tài)鏈接庫中的函數(shù),開發(fā)者可以利用該接口訪問數(shù)采系統(tǒng)的當(dāng)前值表(cur?rentvaluetable,CVT)。為此,本文介紹一種基于該ExteralHook 接口的試車臺在線調(diào)參系統(tǒng)的設(shè)計。該系統(tǒng)將復(fù)雜的邏輯控制寫入調(diào)參軟件,把經(jīng)過軟件處理的數(shù)據(jù)發(fā)送到試車臺數(shù)采系統(tǒng),再通過數(shù)采系統(tǒng)的ARINC429 和MOXA 板卡,與EEC、TIE 建立通信連接,從而實現(xiàn)在線調(diào)參功能。
由于EEC 和TIE 的通道資源緊張,為盡可能減小其通信負(fù)擔(dān),需要減少用于在線調(diào)參功能的通道數(shù)量。試驗時調(diào)參參數(shù)可能有幾十個,但一次只需調(diào)整一個,因此在線調(diào)參系統(tǒng)和發(fā)動機使用ID值和調(diào)參值兩個通道。在發(fā)動機中預(yù)先寫入一個ID 值與調(diào)參值的映射關(guān)系表,調(diào)參操作時僅需試車臺發(fā)送ID值和調(diào)參值,隨后與EEC和TIE中的映射表對比,即能識別在線調(diào)參參數(shù)。
同時,根據(jù)ARINC429通信協(xié)議,數(shù)據(jù)包的最大值決定了協(xié)議中maxparameter 屬性的取值,由于調(diào)參值參數(shù)范圍不同,且只有一個發(fā)送調(diào)參值的通道,這就導(dǎo)致需要使用maxparameter為定值的通道去發(fā)送maxparameter數(shù)值不同的調(diào)參值。為解決這個問題,ID值和調(diào)參值通道使用BNR編碼,規(guī)定14位到29位是有效數(shù)據(jù)位,故協(xié)議能發(fā)送的最大浮點數(shù)為215=32 768,將ARINC429 板卡調(diào)參值通道的maxpa?rameter屬性設(shè)定為32 768。系統(tǒng)發(fā)送調(diào)參值前,在線調(diào)參軟件附加一個縮放比例Ratio,Ratio為32 768與maxparameter的比值。如發(fā)送調(diào)參值為100,那么系統(tǒng)實際發(fā)送值為100×32 768÷128=25 600。發(fā)動機接收數(shù)據(jù)后,根據(jù)上述方法進行反算,即可得到有效參數(shù)值。
為使在線調(diào)參系統(tǒng)軟件具有較強的實時性和良好的人機交互界面,同時結(jié)合某型發(fā)動機研制項目的特殊需求,對在線調(diào)參軟件提出以下技術(shù)要求:
(1) 軟件能自動測試Socket接口連接情況;
(2) 軟件使用多線程技術(shù);
(3) 軟件界面分為在線調(diào)參主界面和燃燒室專業(yè)參數(shù)調(diào)節(jié)界面;
(4) 軟件界面具有快速安全可靠的操作邏輯;
(5) 軟件界面顯示的發(fā)動機反饋值可靠、準(zhǔn)確;
(6) 對于某些調(diào)參參數(shù),需具有特殊的邏輯功能(如參數(shù)微調(diào),設(shè)置調(diào)節(jié)臺階,參數(shù)鎖定等);
(7) 軟件需比對發(fā)送值與反饋值,且考慮通信延遲性的影響;
(8) 燃燒室專業(yè)參數(shù)調(diào)節(jié)時能實現(xiàn)線性插值計算等性能計算功能。
目前流行的一種異步通信方式為套接字(Sock?et),兩個網(wǎng)絡(luò)應(yīng)用程序進行通信,各自通信連接其中的一個端點。通信時,其中的一個網(wǎng)絡(luò)應(yīng)用程序?qū)⒁獋鬏數(shù)囊欢涡畔懭肫渌谥鳈C的Socket中。該Socket通過網(wǎng)絡(luò)接口卡的傳輸介質(zhì)將這段信息發(fā)送到另一個主機的Socket 中,使這段信息能傳送到其他應(yīng)用程序中[8]。試車臺在線調(diào)參系統(tǒng)中,一個Socket端口為數(shù)采系統(tǒng)主機,負(fù)責(zé)處理ARINC429總線(EEC)和RS422總線(TIE)信號;另一個Socket端口為在線調(diào)參計算機。數(shù)采系統(tǒng)主機從在線調(diào)參計算機接收數(shù)據(jù),分別通過ARINC429 總線和RS422 總線將數(shù)據(jù)包發(fā)送至EEC 和TIE,同時也接收它們的反饋信號并將其傳回在線調(diào)參計算機。具體結(jié)構(gòu)如圖1所示。
圖1 在線調(diào)參系統(tǒng)總體架構(gòu)Fig.1 Adjusting-parameter online system structure
基于在線調(diào)參軟件需求分析,軟件采用分層設(shè)計[9]。軟件分為人機交互層和系統(tǒng)交互層兩層,其結(jié)構(gòu)如圖2所示。人機交互層使用QT Designer進行開發(fā),具有操作靈活、方便、準(zhǔn)確、穩(wěn)定、數(shù)據(jù)顯示可靠的人機交互界面,包括試驗時對發(fā)動機的調(diào)參控制、重要參數(shù)顯示。系統(tǒng)交互層負(fù)責(zé)調(diào)參軟件與數(shù)采系統(tǒng)實時通信,處理人機交互層操作事件,進行性能計算等工作。
圖2 在線調(diào)參軟件分層結(jié)構(gòu)Fig.2 Adjusting-parameter online system software hierarchical structure
ExternalHook 接口包含了一套動態(tài)鏈接庫,實現(xiàn)方法封裝在EPHL.dll中。在動態(tài)鏈接庫EPHL.dll中,封裝了一系列的結(jié)構(gòu)體和函數(shù),定義在頭文件EPHL.h中。主要使用的結(jié)構(gòu)體為:
(1) eEPHL_RETURN結(jié)構(gòu)體,用于儲存數(shù)采系統(tǒng)返回的特殊狀態(tài)信息,也是很多API 函數(shù)的返回類型。
eEPHL_RETURN 主要用于軟件獲取在線調(diào)參計算機端口與數(shù)采系統(tǒng)的Socket 連接信息,如果返回EPHL_OK,則連接正常;反之,則根據(jù)返回類型提示錯誤信息。
(2) eEPHL_CONN_TYPE 結(jié)構(gòu)體,用于儲存數(shù)采系統(tǒng)主機端口與軟件端口的連接類型。
結(jié)構(gòu)體儲存通信數(shù)據(jù),而API 函數(shù)用于軟件對于數(shù)采系統(tǒng)CVT 的訪問。由于通道數(shù)據(jù)都是常用類型,即C++內(nèi)建類型,如浮點型、布爾型、整型等,所以不需要設(shè)計額外的結(jié)構(gòu)體或類來儲存數(shù)據(jù)。
主要使用的API函數(shù)原型如下:
(1) eEPHL_RETURN EPHL_write_channel(char*name,float*value)
寫入數(shù)采系統(tǒng)通道。
(2) eEPHL_RETURN EPHL_read_channel(char*name,float*value)
讀取數(shù)采系統(tǒng)通道。
(3) eEPHL_RETURN EPHL_close(void)
關(guān)閉數(shù)采系統(tǒng)Socket端口。
(4) eEPHL_RETURN EPHL_init(eEPHL_CONN_TYPE conn_type,char*serv_key);
打開數(shù)采系統(tǒng)Socket端口。
應(yīng)用程序的本質(zhì)是消息循環(huán),每次循環(huán)應(yīng)用程序和操作系統(tǒng)都有消息交換[10]。在線調(diào)參軟件打開Socket 端口后,需要持續(xù)不間斷地和數(shù)采系統(tǒng)交換消息,沒有入口處理人機交互層傳遞下來的事件消息。因此設(shè)計了雙線程機制:界面線程和后臺通信線程。界面線程處理調(diào)參主界面的操作事件,燃燒室調(diào)節(jié)界面的操作事件和插值運算;后臺通信線程處理調(diào)參軟件與數(shù)采系統(tǒng)以及軟件界面之間的通信。線程間的通信結(jié)構(gòu)如圖3所示。
圖3 線程間通信Fig.3 Inter-thread communication
界面線程通信包括:主界面接收來自后臺通信線程的數(shù)采系統(tǒng)數(shù)據(jù),發(fā)送和接收燃燒室調(diào)參界面的數(shù)據(jù);燃燒室調(diào)參界面接收來自主界面的數(shù)據(jù)。后臺通信線程包括:訪問數(shù)采系統(tǒng)CVT,傳遞數(shù)采系統(tǒng)數(shù)據(jù)給主界面線程,接收主界面線程的操作事件。
線程間通信通過使用信號與槽機制,后臺通信線程寫入計時器,當(dāng)開啟該線程以后,觸發(fā)計時器,以0.1 s一次的頻率訪問數(shù)采系統(tǒng)CVT,在每個循環(huán)結(jié)束時觸發(fā)數(shù)據(jù)發(fā)送信號,發(fā)送到界面線程的主界面槽中來完成數(shù)據(jù)傳遞;主界面寫入計時器,循環(huán)刷新顯示控件,在每個循環(huán)結(jié)束時觸發(fā)數(shù)據(jù)發(fā)送信號,將數(shù)據(jù)發(fā)送到燃燒室在線調(diào)節(jié)界面相應(yīng)槽中,更新該界面的參數(shù)。
軟件中主要的信號與槽的連接函數(shù)如下:
(1) connect(this,SIGNAL(RunBackProcess()),backprocess,SLOT(m_SlotStartInit()))
連接主界面后臺線程觸發(fā)信號和后臺通信線程槽函數(shù)。
(2) connect(backprocess,&BackProcess::m_Data?Transfer,this,&MainWindow::m_Update)
連接后臺通信線程傳輸信號和主界面刷新槽函數(shù)。
(3) connect(this,&MainWindow::m_toFuelDistri?bution,m_FuelDistribution,&Dialog::m_Update);
連接主界面與燃燒室調(diào)節(jié)界面?zhèn)鬏斝盘柵c調(diào)節(jié)界面刷新槽函數(shù)。
5.3.1 軟件初始化通信自檢工作流程
軟件初始化流程如圖4 所示。打開軟件時,程序調(diào)用主界面構(gòu)造函數(shù),構(gòu)造函數(shù)調(diào)用軟件初始化通信自檢函數(shù),根據(jù)自檢情況判斷軟件當(dāng)前與數(shù)采系統(tǒng)的通信狀態(tài)。當(dāng)且僅當(dāng)API 函數(shù)返回EPHL_OK 時才會通過自檢,反之則顯示未通過自檢。自檢完成后,顯示在線調(diào)參軟件主界面。
圖4 軟件初始化流程Fig.4 Software initialization flow chart
5.3.2 軟件與數(shù)采系統(tǒng)通信工作流程
軟件與數(shù)采系統(tǒng)通信流程如圖5所示。用戶在點擊左上角主界面的“connect”開關(guān)后,軟件開啟后臺線程。后臺線程每個循環(huán)從數(shù)采系統(tǒng)CVT 中提取和寫入數(shù)據(jù),循環(huán)計時為0.1 s。每個循環(huán)結(jié)束時,后臺線程和主界面線程進行一次通信,此時主界面接收和發(fā)送與數(shù)采系統(tǒng)的通信數(shù)據(jù)。
圖5 軟件與數(shù)采系統(tǒng)通信流程Fig.5 Communication flow chart between software and acquisition system
5.3.3 調(diào)參流程
程序初始化時,設(shè)置調(diào)參ID值缺省值為255,調(diào)參值缺省值為0。255為EEC/TIE接收的無效參數(shù),發(fā)動機在接收到該參數(shù)時不會觸發(fā)任何動作。調(diào)參工作流程如圖6 所示。調(diào)參操作時,首先打開調(diào)參開關(guān),在需求調(diào)參的通道輸入調(diào)參值,軟件會自動計算當(dāng)前調(diào)參值對應(yīng)的調(diào)參ID 值。然后點擊“注入”按鈕,軟件進行如下流程:如果調(diào)參開關(guān)此時未打開,則提示用戶打開調(diào)參開關(guān),并且不改變當(dāng)前調(diào)參ID 值和調(diào)參值;如果調(diào)參開關(guān)打開,但輸入調(diào)參值超過該調(diào)參值量程范圍,則提示用戶確認(rèn)參數(shù)值是否正確,并且不改變當(dāng)前調(diào)參ID 值和調(diào)參值;如果調(diào)參開關(guān)打開,且輸入調(diào)參值滿足調(diào)參量程范圍,則軟件計算當(dāng)前通道調(diào)參ID 值,再根據(jù)ARINC429 協(xié)議計算當(dāng)前調(diào)參值浮點數(shù)到整數(shù)的轉(zhuǎn)換數(shù)值,并按需計算調(diào)參值為負(fù)時的補碼,把計算結(jié)果發(fā)送到后臺線程的調(diào)參ID和調(diào)參值變量,后臺線程再將調(diào)參ID和調(diào)參值變量發(fā)送到發(fā)動機,隨后主界面線程停滯2 s等待接收EEC/TIE反饋ID值和調(diào)參值,最后將反饋ID值和調(diào)參值反算后與系統(tǒng)發(fā)送的ID值和調(diào)參值進行比對。如果比對結(jié)果一致,彈出提示窗口,點擊彈窗的“OK”按鈕后,軟件自動關(guān)閉調(diào)參開關(guān),完成整個調(diào)參流程;如果比對結(jié)果不一致,彈出提示窗口,點擊“OK”按鈕后,調(diào)參ID值和調(diào)參值變更為缺省值,并且不關(guān)閉調(diào)參開關(guān),等待下一輪輸入。
圖6 調(diào)參工作流程Fig.6 Adjusting-parameter working flow chart
5.3.4 增減量調(diào)節(jié)按鈕流程
增減量調(diào)節(jié)按鈕分別用于調(diào)節(jié)可調(diào)靜止葉片角度鎖定值和主燃級M%燃油分配比例。增減量調(diào)節(jié)按鈕流程見圖7。除增量臺階設(shè)置外,主燃級M%燃油分配比例調(diào)參還具有調(diào)節(jié)最大值設(shè)置功能。調(diào)節(jié)時,程序讀取當(dāng)前臺階設(shè)置和調(diào)節(jié)最大值,如果符合調(diào)節(jié)條件,則更改調(diào)節(jié)值并填入?yún)?shù)值調(diào)節(jié)框;如果不符合條件,則彈出警告窗且維持原調(diào)節(jié)值不變。
圖7 增減量調(diào)節(jié)按鈕流程Fig.7 Increase/decrease adjusting button flow chart
燃燒室相關(guān)的性能參數(shù)調(diào)節(jié)為在線調(diào)參較為重要的調(diào)節(jié)流程,通過燃燒室的參數(shù)調(diào)節(jié)能完成主燃級打開等關(guān)鍵單項試驗科目。
燃燒室在線調(diào)節(jié)界面數(shù)據(jù)顯示主要分為三部分:目標(biāo)P2%計算值顯示,重要參數(shù)顯示和開關(guān)量顯示。目標(biāo)P2%顯示的輸入為目標(biāo)M%值,用戶輸入M%,點擊“Apply”按鈕,從主界面線程提取當(dāng)前EEC 的燃油流量,使用M%和燃油流量計算出目標(biāo)P2%,并自動填充到P2%比例調(diào)節(jié)的調(diào)參值框。同時,該界面在主窗口調(diào)用構(gòu)造函數(shù)時實例化,后臺線程啟動后循環(huán)向燃燒室在線調(diào)節(jié)界面對象中的變量發(fā)送數(shù)據(jù),燃燒室界面顯示對象中的重要參數(shù)。燃油分配在線可調(diào)標(biāo)志和主燃級可調(diào)標(biāo)志開關(guān)指示燈初始化為0,每次點擊按鈕時,均會改變指示燈開關(guān)量狀態(tài)。
調(diào)參值中的P2%比例通過主燃級M%比例自動插值得到,插值流程如圖8 所示。點擊界面上的“Apply”按鈕時,程序讀取當(dāng)前輸入M%值和機載傳感器燃油流量,計算P1M,經(jīng)過線性插值計算P2M,再使用燃油流量和P2M計算出P2%比例,然后自動填入調(diào)參框中。
圖8 主燃級M%到P2%插值流程Fig.8 Primary fuel M%level to P2%level interpolation flow chart
為實現(xiàn)友好、簡潔的人機交互界面,使用QT Designer作為人機交互界面開發(fā)工具。根據(jù)某型發(fā)動機具體要求,設(shè)計了如圖9、圖10所示界面。
圖9 是在線調(diào)參主界面,包括EEC 調(diào)參界面和TIE調(diào)參界面。界面菜單欄的“connect”按鈕實現(xiàn)在線調(diào)參系統(tǒng)與發(fā)動機的通信連接(開啟后臺通信線程),左上角的“調(diào)參開關(guān)”實現(xiàn)在打開此開關(guān)時發(fā)動機才能觸發(fā)調(diào)參動作,并配有反饋指示燈。EEC 調(diào)參界面中,每個調(diào)參值有參數(shù)輸入框、“注入”按鈕、EEC 反饋A/B 通道值,其中VSV 角度鎖定調(diào)參值還有+-微調(diào)按鈕以及微調(diào)按鈕臺階設(shè)置。TIE 界面中,每個調(diào)參值有參數(shù)輸入框、“注入”按鈕、TIE 反饋值。界面右邊的“燃油分配調(diào)節(jié)”按鈕,用于打開圖10所示的燃燒室燃油分配在線調(diào)節(jié)界面。
圖9 在線調(diào)參系統(tǒng)主界面Fig.9 Main interface of parameter-adjusting online system
圖10 燃燒室調(diào)節(jié)界面Fig.10 Combustor adjusting interface
圖10 左邊顯示了一些調(diào)節(jié)過程中需要關(guān)注的重要參數(shù),其中左上方的兩個按鈕用于打開燃燒室調(diào)節(jié)參數(shù)的鎖定狀態(tài)。右邊為一些操作控件,可以實現(xiàn)設(shè)置調(diào)節(jié)最大值、調(diào)節(jié)臺階、微調(diào)、發(fā)送調(diào)參值等動作。
利用ExternalHook編寫的在線調(diào)參程序配合試車臺數(shù)采系統(tǒng)現(xiàn)有環(huán)境,極大地提高了航空發(fā)動機試車中在線調(diào)參的實用性。同時,友好的人機交互界面和交互層邏輯,增加了在線調(diào)參操作過程中的容錯能力;對調(diào)參操作進行了簡化,提高了航空發(fā)動機試車的效率。經(jīng)過某型核心機與整機長時間的試車準(zhǔn)備階段驗證,此系統(tǒng)可靠、安全、穩(wěn)定,對于航空發(fā)動機試車在線調(diào)參科目的實現(xiàn)有一定的參考意義。