孫四海,楊紀(jì)明,肖 磊,周章文,王壯壯
(空軍工程大學(xué) 研究生院,西安 710038)
隨著航空工業(yè)的發(fā)展,數(shù)字式調(diào)節(jié)器已經(jīng)逐步取代模擬式調(diào)節(jié)器成為航空發(fā)動(dòng)機(jī)電子控制系統(tǒng)的主流。數(shù)字式調(diào)節(jié)器承擔(dān)著航空發(fā)動(dòng)機(jī)全部工作狀態(tài)的控制任務(wù),其工作情況不僅制約著航空發(fā)動(dòng)機(jī)性能發(fā)揮,也影響到戰(zhàn)斗機(jī)的飛行安全[1]。為提供良好的數(shù)字式調(diào)節(jié)器檢測條件,保障航空發(fā)動(dòng)機(jī)性能發(fā)揮,在此利用先進(jìn)電子技術(shù)和虛擬儀器技術(shù)研發(fā)設(shè)計(jì)了數(shù)字式調(diào)節(jié)器綜合檢測系統(tǒng),成功應(yīng)用于某發(fā)動(dòng)機(jī)大修廠。
數(shù)字式調(diào)節(jié)器功能復(fù)雜,需要完成包括N1和N2最大轉(zhuǎn)速調(diào)節(jié)、低壓渦輪后最高燃?xì)鉁囟萾4調(diào)節(jié)、喘振保護(hù)、高低壓壓氣機(jī)進(jìn)氣導(dǎo)向器角度調(diào)節(jié)等在內(nèi)的20多項(xiàng)控制任務(wù)[2-3]。這也導(dǎo)致了數(shù)字式調(diào)節(jié)器信號(hào)復(fù)雜,包括輸出的離散電壓信號(hào)、線性電壓信號(hào)、占空比信號(hào)、狀態(tài)信號(hào),輸入的多路頻率信號(hào)、傳感器信號(hào)、開關(guān)信號(hào)等,多種不同類型的信號(hào)形式。檢測系統(tǒng)不僅需要準(zhǔn)確采集數(shù)字式調(diào)節(jié)器輸出信號(hào),還需要模擬發(fā)動(dòng)機(jī)傳感器信號(hào)和眾多開關(guān)信號(hào)。
數(shù)字式調(diào)節(jié)器綜合檢測系統(tǒng)由下位機(jī)硬件和上位機(jī)軟件兩部分組成,系統(tǒng)原理如圖1所示。
圖1 數(shù)字式調(diào)節(jié)器綜合檢測系統(tǒng)的原理Fig.1 Principle of digital regulator integrated detection system
由C8051F系列單片機(jī)及周圍電路和阿爾泰USB3121高速數(shù)據(jù)采集卡組成的硬件部分是檢測系統(tǒng)的控制核心,主要包括電源、傳感器模擬、信號(hào)采集與調(diào)理等模塊。
軟件部分利用LabVIEW虛擬儀器平臺(tái)編寫,軟件主體結(jié)構(gòu)使用獨(dú)立式數(shù)據(jù)采集模式與交互式數(shù)據(jù)采集模式相結(jié)合的方式構(gòu)成,利用改進(jìn)設(shè)計(jì)的生產(chǎn)者與消費(fèi)者結(jié)構(gòu)、狀態(tài)機(jī)結(jié)構(gòu)、LabVIEW基本函數(shù)和阿爾泰USB3121數(shù)據(jù)采集卡提供的LabVIEW的庫函數(shù)文件完成軟件設(shè)計(jì)。
選擇NC604串口服務(wù)器作為軟硬件通信中介,電源和數(shù)據(jù)采集卡采用串行總線控制[4]。
作為數(shù)字式調(diào)節(jié)器的離線綜合檢測系統(tǒng),系統(tǒng)工作時(shí)需要為調(diào)節(jié)器傳感器接口提供模擬傳感器信號(hào),用于模擬發(fā)動(dòng)機(jī)工作狀態(tài)和環(huán)境參數(shù)。
其中,滑油溫度Tm,燃油溫度Tt,發(fā)動(dòng)機(jī)進(jìn)口溫度T1-1和起動(dòng)機(jī)進(jìn)口溫度T1-2由高精度電阻箱提供信號(hào);高低壓轉(zhuǎn)子轉(zhuǎn)速N1/N2,起動(dòng)機(jī)轉(zhuǎn)速Ntc和發(fā)動(dòng)機(jī)振動(dòng)值Fb由C8051F60單片機(jī)控制的直接數(shù)字頻率合成器DDS(direct digital synthesize)提供信號(hào);低壓壓氣機(jī)導(dǎo)流葉片角度α1信號(hào)由單片機(jī)數(shù)模轉(zhuǎn)換器 DAC(digital to analog converter)直接控制生成;高壓壓氣機(jī)導(dǎo)流葉片角度α2,發(fā)動(dòng)機(jī)進(jìn)口壓力P1,滑油壓力Pm,T型傳感器壓差ΔPCK由高精度DAC模塊和信號(hào)調(diào)制電路提供信號(hào)。
所用信號(hào)生成方案成熟可靠,所模擬的傳感器特性與真實(shí)傳感器特性一致[5]。
3.2.1 I/O 信號(hào)采集與輸出
數(shù)字式調(diào)節(jié)器I/O信號(hào)多達(dá)80路以上,包含0 V/3.3 V(TTL,transistor transistor logic)電平標(biāo)準(zhǔn)靜態(tài)數(shù)字輸出、0 V/27 V工業(yè)電平標(biāo)準(zhǔn)靜態(tài)數(shù)字輸入和輸出、0V/12V工業(yè)電平標(biāo)準(zhǔn)靜態(tài)數(shù)字輸入和輸出??刂戚敵鰰r(shí),通過I2C總線控制多片PCF8574AT芯片,經(jīng)過光電耦合電路驅(qū)動(dòng)0 V/27 V信號(hào)輸出;采集輸入時(shí),信號(hào)經(jīng)過分壓電路和CD4050邏輯電平轉(zhuǎn)換芯片,再由PCF8574T芯片經(jīng)I2C總線輸入控制器。
采用這種串并行轉(zhuǎn)換的輸入輸出形式,節(jié)約了控制器的I/O端口資源,也提高了系統(tǒng)集成度。
3.2.2 數(shù)據(jù)采集卡和DAC模塊
系統(tǒng)采用阿爾泰公司USB3121數(shù)據(jù)采集卡采集模擬量參數(shù)。USB3121為一款多功能數(shù)據(jù)采集卡,可提供32RSE/NRSE通道,16通道DIFF模擬量輸入,4通道模擬量同步輸出,16路可編程I/O,1路計(jì)數(shù)器。核心采用1片16位ADC芯片,輸入量程為-10~10 V,-5~5 V,-2~2 V,-1~1 V;支持按需單點(diǎn)采樣、有限點(diǎn)采樣和連續(xù)采樣,最高采集速率可達(dá)500 kS/s。
DAC模塊采用TLV5610IWD數(shù)模轉(zhuǎn)換器和OPA2277運(yùn)算放大器組成的電壓跟隨器,為傳感器模擬模塊提供模擬信號(hào)。TLV5610IWD是一款8通道、12位數(shù)模轉(zhuǎn)換器,具有1個(gè)靈活的串行端口,具備轉(zhuǎn)換速度快、可靠性高等特點(diǎn)。該模塊為部分傳感器模擬模塊提供信號(hào)。
3.2.3 參數(shù)電壓和波形采集
由于需要采集多達(dá)48路參數(shù)電壓信號(hào)和3路波形信號(hào),并需滿足一定的采集精度和速度要求,檢測系統(tǒng)使用USB3121數(shù)據(jù)采集卡32RSE/NRSE通道中的6個(gè)AI模擬量輸入通道作為參數(shù)電壓和波形采集通道,4個(gè)數(shù)字量輸入輸出DIO(digital input/output)通道作為控制通道。其中,48路參數(shù)電壓信號(hào)由4個(gè)DIO通道控制ADG 406模擬開關(guān)控制接入,經(jīng)電壓跟隨器和隔離放大器處理之后由3個(gè)模擬量輸入AI通道分時(shí)采集輸出,每個(gè)模擬開關(guān)控制16路參數(shù)信號(hào)采集,最后由軟件控制同步顯示,電壓采集電路如圖2所示。
3路波形信號(hào),直接采用USB3121數(shù)據(jù)采集卡的3個(gè)AI通道采集,硬件設(shè)計(jì)方面通過電壓跟隨器和隔離放大器對(duì)電壓信號(hào)做匹配阻抗和隔離放大的處理,以提高波形采集精度。
圖2 電壓采集電路Fig.2 Voltage acquisition circuit
下位機(jī)軟件是檢測系統(tǒng)的核心,直接控制硬件模塊完成數(shù)據(jù)采集和系統(tǒng)控制等功能。軟件的主要組成有設(shè)備初始化、存儲(chǔ)空間初始化、開啟內(nèi)部中斷服務(wù)、串口服務(wù)函數(shù)、設(shè)備中斷函數(shù)、看門狗等。
系統(tǒng)上電后,將對(duì)各模塊設(shè)備和存儲(chǔ)進(jìn)行初始設(shè)置,開啟系統(tǒng)內(nèi)部中斷服務(wù);在主循環(huán)內(nèi)串口服務(wù)函數(shù)經(jīng)UART0將采集的數(shù)據(jù)發(fā)送給上位機(jī),UART1向指定存儲(chǔ)空間內(nèi)發(fā)送緩存數(shù)據(jù),當(dāng)UART0收到上位機(jī)發(fā)送符合規(guī)定格式和長度要求的控制指令時(shí),系統(tǒng)將調(diào)用task_Update()執(zhí)行命令(控制參數(shù)和動(dòng)作開關(guān))。下位機(jī)獲取和發(fā)送數(shù)據(jù)每隔50 ms進(jìn)行1次。主函數(shù)流程如圖3所示。
系統(tǒng)采用LabVIEW 2014虛擬儀器平臺(tái)編寫上位機(jī)軟件。后臺(tái)程序采用多路并行數(shù)據(jù)采集與交互式結(jié)構(gòu)相結(jié)合的方式構(gòu)建框架,利用多重消費(fèi)者與生產(chǎn)者模式嵌套和狀態(tài)機(jī)相結(jié)合的形式具體設(shè)計(jì),按照軟件維護(hù)性和可讀性要求將軟件模塊化封裝,兼顧軟件操作性能與數(shù)據(jù)采集速度,使其能配合硬件完成系統(tǒng)功能。前面板按功能區(qū)劃分,采用LabVIEW通用控件與自定義控件設(shè)計(jì),參考使用人員意見布置功能模塊位置,以提供良好的人機(jī)環(huán)境。軟件界面如圖4所示。
圖3 主函數(shù)流程Fig.3 Main function flow chart
圖4 軟件界面Fig.4 Software interface
4.2.1 軟件框架構(gòu)建
(1)改進(jìn)生產(chǎn)者與消費(fèi)者結(jié)構(gòu)
生產(chǎn)者與消費(fèi)者結(jié)構(gòu)是LabVIEW編程中最常用的軟件結(jié)構(gòu),它能使軟件具有良好的操作性能和采集能力。普通的生產(chǎn)者與消費(fèi)者包含1個(gè)“生產(chǎn)者循環(huán)”、1個(gè)“消費(fèi)者循環(huán)”及把2個(gè)循環(huán)相連接的“數(shù)據(jù)隊(duì)列”,其基本結(jié)構(gòu)如圖5。
圖5 普通生產(chǎn)者與消費(fèi)者結(jié)構(gòu)Fig.5 Common producer and consumer structure
在生產(chǎn)者循環(huán)中While循環(huán)和事件結(jié)構(gòu)將前面板觸發(fā)的事件由“元素入隊(duì)列”函數(shù)輸入隊(duì)列,在消費(fèi)者循環(huán)中利用“元素出隊(duì)列”函數(shù)和條件結(jié)構(gòu)識(shí)別不同事件,進(jìn)入條件結(jié)構(gòu)的不同分支,執(zhí)行對(duì)應(yīng)分支的程序內(nèi)容[6]。
該檢測系統(tǒng)軟硬件通信通道較多,信息交互也比較復(fù)雜,為此改進(jìn)設(shè)計(jì)了普通生產(chǎn)者與消費(fèi)者結(jié)構(gòu),使系統(tǒng)可以同時(shí)采集和控制多個(gè)數(shù)據(jù)通道。改進(jìn)的生產(chǎn)者與消費(fèi)者結(jié)構(gòu)如圖6所示。
圖6 改進(jìn)的生產(chǎn)者與消費(fèi)者結(jié)構(gòu)Fig.6 Improved producer and consumer structure
首先,在普通的“生產(chǎn)者循環(huán)”與“消費(fèi)者循環(huán)”之間加入了1個(gè)“信息連接循環(huán)”的中間結(jié)構(gòu)。該結(jié)構(gòu)中可同時(shí)連接多個(gè)數(shù)據(jù)隊(duì)列引用。其次,創(chuàng)建多個(gè)“消費(fèi)者”循環(huán)通道(圖6中設(shè)置1組,系統(tǒng)中使用了5組),前面板操作觸發(fā)的事件在中間循環(huán)中進(jìn)入對(duì)應(yīng)條件分支,再通過隊(duì)列數(shù)據(jù)將信息傳遞給對(duì)應(yīng)的“消費(fèi)者循環(huán)”,即用操作隊(duì)列和數(shù)據(jù)隊(duì)列將“生產(chǎn)者循環(huán)”和單個(gè)數(shù)據(jù)采集與控制循環(huán)連接,實(shí)現(xiàn)多通道并行采集和控制。
另外,在單個(gè)數(shù)據(jù)采集與控制循環(huán)中嵌套使用多個(gè)狀態(tài)機(jī)結(jié)構(gòu),程序?qū)⒏鶕?jù)狀態(tài)機(jī)預(yù)設(shè)狀態(tài)和用戶操作狀態(tài)選擇執(zhí)行對(duì)應(yīng)的采集控制程序,從而實(shí)現(xiàn)單個(gè)通道數(shù)據(jù)采集與硬件控制的雙重功能。
(2)狀態(tài)機(jī)結(jié)構(gòu)
LabVIEW中狀態(tài)機(jī)結(jié)構(gòu)就是利用While循環(huán)嵌套一個(gè)條件結(jié)構(gòu),用自定義枚舉常量控制每一個(gè)循環(huán)條件結(jié)構(gòu)所執(zhí)行的分支,每個(gè)分支中執(zhí)行的程序代碼即為該分支對(duì)應(yīng)的狀態(tài)行為。對(duì)于獨(dú)立工作的并行設(shè)備來說,其下一個(gè)循環(huán)狀態(tài)只受設(shè)備當(dāng)前狀態(tài)決定,狀態(tài)執(zhí)行的順序是固定的,本系統(tǒng)USB3121采集卡的控制程序中采用的就是獨(dú)立狀態(tài)機(jī)結(jié)構(gòu);對(duì)于交互式并行設(shè)備來說,其下一個(gè)循環(huán)狀態(tài)受當(dāng)前狀態(tài)決定和其他交互設(shè)備狀態(tài)共同決定。
由圖6可見,系統(tǒng)中5路串口控制程序的“消費(fèi)者循環(huán)”中采用的就是交互式控制的狀態(tài)機(jī),其工作狀態(tài)受當(dāng)前程序狀態(tài)和前面板用戶操作狀態(tài)決定。
4.2.2 軟件模塊設(shè)計(jì)
(1)TCP數(shù)據(jù)讀取子 VI
數(shù)據(jù)讀取子VI是軟硬件系統(tǒng)連接的關(guān)鍵,也是所有參數(shù)顯示和控制的基礎(chǔ)。TCP數(shù)據(jù)讀取子VI程序如圖7所示,其中使用的核心函數(shù)是“讀取TCP數(shù)據(jù)”函數(shù),根據(jù)上下位機(jī)通信協(xié)議,嵌套使用2個(gè)共用While循環(huán)的獨(dú)立式狀態(tài)機(jī),自動(dòng)從網(wǎng)絡(luò)端口中獲取一幀完整的數(shù)據(jù),并能通過數(shù)據(jù)內(nèi)容判斷數(shù)據(jù)讀取狀態(tài)和網(wǎng)絡(luò)連接狀態(tài)發(fā)送給其他功能模塊。
圖7 TCP數(shù)據(jù)讀取子VI程序Fig.7 TCP data read sub VI program
根據(jù)網(wǎng)絡(luò)可能出現(xiàn)的網(wǎng)絡(luò)異常情況和網(wǎng)絡(luò)延時(shí)情況,該模塊特別設(shè)計(jì)了網(wǎng)絡(luò)自動(dòng)重連功能和延時(shí)等待功能,增強(qiáng)了上位機(jī)軟件的健壯性。
(2)數(shù)據(jù)解析 VI
根據(jù)軟硬件通信協(xié)議數(shù)據(jù)幀的格式,每個(gè)數(shù)據(jù)幀都包括:2個(gè)字節(jié) “幀頭”、1個(gè)字節(jié) “設(shè)備ID”、1個(gè)字節(jié)“數(shù)據(jù)長度”、若干字節(jié)“數(shù)據(jù)”和2個(gè)字節(jié)“幀尾”。
軟件解析數(shù)據(jù)的基本方法是利用“搜索/拆分字符串”“截取字符串”和“強(qiáng)制類型轉(zhuǎn)換”等函數(shù)將每個(gè)數(shù)據(jù)幀的不同組分拆分,對(duì)數(shù)據(jù)幀框架進(jìn)行判斷,處理后輸出“設(shè)備ID”“解析狀態(tài)”“指令類型”“數(shù)據(jù)字節(jié)”和“指令碼”等內(nèi)容供后續(xù)模塊使用。
(3)指示燈信號(hào)解析
系統(tǒng)采集的指示燈信號(hào)眾多,解析模塊采用2個(gè)數(shù)據(jù)簇嵌套,將一幀完整數(shù)據(jù)字節(jié)中的每一位全部解析,由簇直接輸出。處理時(shí)“字符串至字節(jié)數(shù)組轉(zhuǎn)換”函數(shù)將多字節(jié)數(shù)據(jù)轉(zhuǎn)換為字節(jié)數(shù)組,數(shù)組中一個(gè)元素即為一個(gè)字節(jié)的十進(jìn)制表示,這些元素順序通過“數(shù)據(jù)索引隧道”進(jìn)入For循環(huán),每個(gè)元素經(jīng)過 “數(shù)值至布爾數(shù)組轉(zhuǎn)換”“反轉(zhuǎn)一維數(shù)組”和“索引數(shù)組”等函數(shù)轉(zhuǎn)換為8個(gè)數(shù)據(jù)位,每一個(gè)數(shù)據(jù)位代表一個(gè)指示燈信號(hào)。經(jīng)過多次循環(huán)之后,數(shù)據(jù)字節(jié)中的所有指示燈信號(hào)都存入輸出簇輸出給之后的功能模塊。指示燈數(shù)據(jù)解析程序如圖8所示。
圖8 指示燈數(shù)據(jù)解析Fig.8 Indicator data analysis
(4)參數(shù)電壓與波形采集
參數(shù)電壓與波形采集程序框架采用獨(dú)立狀態(tài)機(jī)結(jié)構(gòu),默認(rèn)執(zhí)行參數(shù)電壓采集循環(huán),當(dāng)前面板“波形參數(shù)采集”開關(guān)變化時(shí),狀態(tài)機(jī)將切換通道執(zhí)行波形數(shù)據(jù)采集循環(huán),采集完畢后自動(dòng)切換回參數(shù)電壓采集循環(huán)中。狀態(tài)機(jī)分支中,調(diào)用“庫函數(shù)節(jié)點(diǎn)”功能函數(shù)作為每一個(gè)功能模塊的執(zhí)行函數(shù),USB 3121數(shù)據(jù)采集卡的庫函數(shù)文件由阿爾泰公司提供[7]。采用“庫函數(shù)節(jié)點(diǎn)”編程使得程序有較好的可讀性,功能模塊封裝高度集成,采用統(tǒng)一的控制流程,具有良好的移植性。該模塊的采集控制流程如圖9所示。
圖9 電壓和波形采集控制流程Fig.9 Voltage and waveform acquisition and control flow chart
系統(tǒng)通過硬件通電調(diào)試、基本信號(hào)檢測、軟硬件聯(lián)調(diào)試驗(yàn)、系統(tǒng)整機(jī)與數(shù)字式調(diào)節(jié)器聯(lián)機(jī)測試等測試工作,所有參數(shù)采集正常,控制信號(hào)誤差范圍符合國軍標(biāo)要求,系統(tǒng)連續(xù)工作時(shí)間滿足設(shè)計(jì)要求,人機(jī)環(huán)境設(shè)計(jì)良好。目前該系統(tǒng)已經(jīng)成功應(yīng)用于某發(fā)動(dòng)機(jī)大修廠數(shù)字式調(diào)節(jié)器的檢修工作中。