陸英棟,張 磊,項(xiàng)黎寧,曹平軍
(1.海軍工程大學(xué) 動(dòng)力工程學(xué)院,湖北 武漢 430033;2.國(guó)防大學(xué) 政治學(xué)院,上海 201600;3.91257部隊(duì),浙江 舟山 316000)
目前,在所有船舶動(dòng)力裝置中,只有汽輪機(jī)能利用核能,由于核用汽輪機(jī)蒸汽初始參數(shù)低,汽輪機(jī)級(jí)組都在濕蒸汽區(qū)工作,所以將核用類汽輪機(jī)稱之為飽和蒸汽汽輪機(jī),簡(jiǎn)稱濕汽輪機(jī)[1]。濕汽輪機(jī)的變工況熱力計(jì)算對(duì)檢驗(yàn)設(shè)計(jì)單位設(shè)計(jì)樣機(jī)的合理性、安全性以及已投產(chǎn)使用機(jī)組運(yùn)行的穩(wěn)定性、可靠性具有十分重要的意義[2]。變工況熱力計(jì)算作為掌握濕汽輪機(jī)性能最基礎(chǔ)、最重要的環(huán)節(jié),其計(jì)算程序代碼復(fù)雜多樣。設(shè)計(jì)人員往往是通過(guò)程序源代碼直接進(jìn)行計(jì)算,但對(duì)于實(shí)際操作汽輪機(jī)的使用者來(lái)說(shuō),掌握并使用源代碼進(jìn)行變工況熱力計(jì)算是十分困難的,也降低了使用者的工作效率。為進(jìn)一步提高工作效率,簡(jiǎn)化操作過(guò)程,并為汽輪機(jī)工程相關(guān)領(lǐng)域工作人員提供方便簡(jiǎn)單的參數(shù)輸入及結(jié)果輸出的友好操作界面,本文基于MATLAB GUI實(shí)現(xiàn)對(duì)濕汽輪機(jī)的變工況熱力計(jì)算的人機(jī)交互功能。
圖形用戶界面(GUI)是MATLAB的核心應(yīng)用之一,是通過(guò)窗口、圖標(biāo)、按鈕、菜單、文本等圖形對(duì)象構(gòu)成的界面,利用句柄圖形用戶接口函數(shù)實(shí)現(xiàn)用戶和計(jì)算機(jī)之間的交互操作過(guò)程[3]。基本的圖形用戶對(duì)象可分為3類:用戶界面控件對(duì)象(Uicontrol)、下拉式菜單對(duì)象(Uimenu)和內(nèi)容式菜單對(duì)象(Uicontextmenu)。為了更好理解用戶界面對(duì)象的層次結(jié)構(gòu),圖1為GUI圖形對(duì)象之間的層次樹表。

圖1 GUI圖形對(duì)象之間的層次樹表
MATLAB GUI 與VC++、VB等一系列計(jì)算機(jī)軟件開發(fā)語(yǔ)言相比具有強(qiáng)大的數(shù)據(jù)分析、矩陣運(yùn)算、數(shù)學(xué)建模的的優(yōu)勢(shì),使用GUI開發(fā)人機(jī)交互平臺(tái)可以避免復(fù)雜的界面程序編寫,根據(jù)其內(nèi)置的圖形界面開發(fā)模塊,通過(guò)拖移相關(guān)的圖形用戶對(duì)象,可以直觀的生成滿足開發(fā)者需要的控件要求。從開發(fā)者的角度,GUI的圖形語(yǔ)言具有較VC++、VB以及JAVA更簡(jiǎn)便、高效的特點(diǎn),可以利用強(qiáng)大的圖形開發(fā)環(huán)境(GUIDE)開發(fā)相應(yīng)的應(yīng)用程序[4]。表1為GUI主要控件屬性功能。

表1 GUI主要控件屬性功能
應(yīng)用GUI開發(fā)一個(gè)完整的人機(jī)交互平臺(tái)的基本過(guò)程可分為以下3個(gè)步驟。
1)事先明確交互平臺(tái)設(shè)計(jì)任務(wù)、功能以及需要用到的控件對(duì)象類型,并添加到GUI中。
2)利用GUI自帶的布局工具,對(duì)前期添加的控件進(jìn)行合理布局,布局時(shí)充分考慮使用方便性,符合使用者的行為邏輯,在滿足功能布局時(shí),盡可能保證界面美觀。
3)設(shè)置控件屬性,編寫相關(guān)控件回調(diào)函數(shù)(Callback Function),內(nèi)嵌計(jì)算程序,保證所設(shè)計(jì)的GUI能正確響應(yīng)操作者的指令。
濕汽輪機(jī)變工況性能分析模塊類別較多,其中最重要、最核心的模塊是級(jí)的熱力計(jì)算模塊,該模塊中包括壓力級(jí)的熱力計(jì)算、調(diào)節(jié)級(jí)的變工況計(jì)算、級(jí)內(nèi)超音速出口速度計(jì)算、水蒸氣性質(zhì)計(jì)算模塊以及汽輪機(jī)整機(jī)變工況熱力計(jì)算。將所有腳本程序函數(shù)化是實(shí)現(xiàn)人機(jī)交互函數(shù)調(diào)用的基礎(chǔ),本文以汽輪機(jī)調(diào)節(jié)級(jí)和壓力級(jí)耦合計(jì)算模塊為例,詳細(xì)敘述函數(shù)化過(guò)程。圖2是汽輪機(jī)整機(jī)耦合算法計(jì)算流程圖。
濕汽輪機(jī)整機(jī)的耦合計(jì)算是把調(diào)節(jié)級(jí)和壓力級(jí)作為一個(gè)整體來(lái)進(jìn)行計(jì)算,調(diào)節(jié)級(jí)和壓力級(jí)單級(jí)都是根據(jù)逆順序算法,先從級(jí)后向級(jí)前計(jì)算,再由級(jí)前向級(jí)后計(jì)算,整個(gè)機(jī)組是先計(jì)算壓力級(jí)組,得到壓力級(jí)組的級(jí)前狀態(tài),并作為調(diào)節(jié)級(jí)的起算點(diǎn),再計(jì)算調(diào)節(jié)級(jí)。在計(jì)算過(guò)程中,每一級(jí)的級(jí)前計(jì)算狀態(tài)都是前一級(jí)的級(jí)后狀態(tài),以此為相鄰兩級(jí)之間的數(shù)據(jù)耦合點(diǎn)[5]。
在計(jì)算開始前,我們單憑整機(jī)級(jí)后排汽點(diǎn)K的壓力值仍然無(wú)法確定該點(diǎn)的熱力狀態(tài)參數(shù),必須事先估計(jì)汽輪機(jī)整機(jī)的內(nèi)效率ηi,根據(jù)公式Δhi=ηiΔht計(jì)算整機(jī)的比焓降,其中Δht為汽輪機(jī)的理想等熵比焓降,以此確定整機(jī)級(jí)后排汽比焓,通過(guò)壓力和比焓值,確定K的狀態(tài)。圖3為整機(jī)耦合的熱力計(jì)算過(guò)程簡(jiǎn)圖。


圖2 汽輪機(jī)整機(jī)耦合算法計(jì)算流程圖

圖3 汽輪機(jī)整機(jī)耦合算法熱力過(guò)程簡(jiǎn)圖
濕汽輪機(jī)整機(jī)的變工況熱力計(jì)算函數(shù)命名為wet_steam.m,用于對(duì)汽輪機(jī)整個(gè)機(jī)組進(jìn)行額定工況和變工況下的熱力計(jì)算,其基本結(jié)構(gòu)是將函數(shù)Pressure.m、Control.m和Supersonic.m進(jìn)行耦合,其中函數(shù)Pressure.m、Control.m和Supersonic.m分別為壓力級(jí)單級(jí)熱力計(jì)算函數(shù)、調(diào)節(jié)級(jí)單級(jí)熱力計(jì)算函數(shù)和級(jí)內(nèi)超音速出口速度計(jì)算函數(shù)[6]。
計(jì)算開始前,同樣事先通過(guò)xlsread將整機(jī)的通流部分結(jié)構(gòu)尺寸讀入MATLAB數(shù)據(jù)庫(kù),再在計(jì)算時(shí)調(diào)用相應(yīng)級(jí)的通流部分結(jié)構(gòu)尺寸。函數(shù)wet_steam.m的輸入?yún)?shù)有:進(jìn)汽質(zhì)量流量qm、水蒸氣進(jìn)汽壓力P0、水蒸氣進(jìn)汽溫度t0、級(jí)組排汽壓力P2、預(yù)估排汽比焓值h1、轉(zhuǎn)速n、軸端汽封效率ηe和發(fā)電機(jī)發(fā)電效率ηm。函數(shù)wet_steam.m的輸出參數(shù)為汽輪機(jī)組的整機(jī)性能參數(shù)。
根據(jù)事先確定的濕汽輪機(jī)熱力計(jì)算平臺(tái)的設(shè)計(jì)任務(wù)和功能要求,為實(shí)現(xiàn)各個(gè)功能單獨(dú)運(yùn)行,且實(shí)現(xiàn)數(shù)據(jù)共享,采用GUI對(duì)各個(gè)功能部分進(jìn)行圖形用戶界面設(shè)計(jì),編寫相應(yīng)GUI對(duì)象控件的回調(diào)函數(shù)。整個(gè)計(jì)算平臺(tái)由1個(gè)主界面和4個(gè)子模塊界面(調(diào)節(jié)級(jí)單級(jí)計(jì)算模塊、壓力級(jí)單級(jí)計(jì)算模塊、整機(jī)熱力計(jì)算模塊和水蒸氣性質(zhì)計(jì)算器模塊)構(gòu)成。用戶根據(jù)功能需求可以通過(guò)界面上的按鈕在主界面和子界面模塊中切換。
主界面是操作者進(jìn)入計(jì)算平臺(tái)的第一個(gè)用戶界面,包括平臺(tái)標(biāo)題、功能選擇列表、計(jì)算平臺(tái)使用說(shuō)明和退出系統(tǒng)按鈕。功能選擇列表中包括4個(gè)子界面按鈕,分別對(duì)應(yīng)4個(gè)不同計(jì)算模塊,用戶任意點(diǎn)擊其中一個(gè)按鈕,界面就會(huì)切換到相應(yīng)的子界面模塊中。主界面布局如圖4所示。

圖4 計(jì)算平臺(tái)主界面布局
為實(shí)現(xiàn)點(diǎn)擊鼠標(biāo)單擊功能按鈕,系統(tǒng)能準(zhǔn)確切換到對(duì)應(yīng)的模塊中,需要編寫相應(yīng)按鈕的回調(diào)函數(shù)。以按鈕“調(diào)節(jié)級(jí)單級(jí)計(jì)算”為例,找到按鈕的回調(diào)函數(shù),并對(duì)其進(jìn)行修改,修改內(nèi)容如下:
function pushbutton1_Callback(hObject, eventdata, handles)
%hObject handle to pushbutton1 (see GCBO)
%eventdata reserved - to be defined in a future version of MATLAB
%handles structure with handles and user data (see GUIDATA)
clc; % 當(dāng)單擊按鈕時(shí),清空所有MATLAB輸入面上的錯(cuò)誤信息,并關(guān)閉當(dāng)前窗口
clear all;
delete(gcf);
run(′Control.m′)
此時(shí),當(dāng)鼠標(biāo)單擊“調(diào)節(jié)級(jí)單級(jí)計(jì)算”按鈕,MATLAB后臺(tái)執(zhí)行上述命令,實(shí)現(xiàn)系統(tǒng)自動(dòng)進(jìn)入子模塊“調(diào)節(jié)級(jí)單級(jí)計(jì)算平臺(tái)”,如圖5所示。

圖5 調(diào)節(jié)級(jí)單級(jí)熱力計(jì)算平臺(tái)界面圖
濕汽輪機(jī)熱力計(jì)算平臺(tái)實(shí)際實(shí)現(xiàn)計(jì)算功能是在子模塊界面中,每一個(gè)子模塊中有可能還有一層子模塊。每個(gè)子模塊中的控件對(duì)象類型和其實(shí)現(xiàn)的功能均相似,區(qū)別在于其調(diào)用的計(jì)算函數(shù)不同。因此,本文以“汽輪機(jī)整機(jī)耦合熱力計(jì)算平臺(tái)”這個(gè)子模塊的GUI設(shè)計(jì)為例說(shuō)明其實(shí)現(xiàn)過(guò)程。汽輪機(jī)整機(jī)耦合熱力計(jì)算平臺(tái)界面控件對(duì)象大致可分為4類:靜態(tài)文本,包括標(biāo)題和輸入、輸出參數(shù)名稱以及輸出計(jì)算結(jié)果的顯示欄;可編輯文本,主要是輸入?yún)?shù)框中的初始參數(shù)輸入欄;按鈕類,包括繪圖按鈕以及功能型按鈕;按鈕組,包括整機(jī)輸入?yún)?shù)組、整機(jī)熱力參數(shù)匯總組和曲線圖組。
通過(guò)修改、編寫控件對(duì)象的回調(diào)函數(shù),實(shí)現(xiàn)各個(gè)控件的顯示和功能實(shí)現(xiàn)。具體實(shí)現(xiàn)過(guò)程如下:
1)靜態(tài)文本修改字符串String為需要顯示的字符,輸出結(jié)果處String清空,如修改靜態(tài)文本text1的String為“進(jìn)汽流量”,將輸出結(jié)果處的text18的String清空。
2)輸入框中的可編輯文本的字符串String可根據(jù)用戶輸入值改變,如在進(jìn)汽流量后輸入數(shù)字19,可編輯文本Edit1的String自動(dòng)變成19。
3)編輯按鈕的回調(diào)函數(shù),使當(dāng)鼠標(biāo)單擊按鈕時(shí)實(shí)現(xiàn)預(yù)定功能,以按鈕“開始計(jì)算”為例,當(dāng)點(diǎn)擊按鈕“開始計(jì)算”后,系統(tǒng)自動(dòng)讀取輸入框中的數(shù)據(jù),并開始計(jì)算,截取部分回調(diào)函數(shù)源代碼如下:
function pushbutton2_Callback(hObject, eventdata, handles)
%hObject handle to pushbutton2 (see GCBO)
%eventdata reserved - to be defined in a future version of MATLAB
%handles structure with handles and user data (see GUIDATA)
G_S=get(handles.edit1,′String′); %讀入整機(jī)蒸汽進(jìn)汽流量
. . .
G_S=str2num(G_S); %字符轉(zhuǎn)數(shù)字
. . .
global RHO %設(shè)置反動(dòng)度矩陣為全局變量
. . .
run(′wet_steam.m′) %執(zhí)行汽輪機(jī)整機(jī)熱力計(jì)算
set(handles.text11,′String′,XXX); %輸出計(jì)算結(jié)果
圖6為用戶利用計(jì)算平臺(tái)對(duì)汽輪機(jī)進(jìn)行變工況熱力計(jì)算的可視化結(jié)果。
本文基于已有汽輪機(jī)各類型級(jí)的熱力計(jì)算編寫的腳本程序,通過(guò)輸入輸出參數(shù)提取,將其改寫為函數(shù)程序,并通過(guò)MATLAB GUI開發(fā)了汽輪機(jī)變工況熱力計(jì)算平臺(tái),主要總結(jié)如下。
1)介紹了MATLAB圖形用戶界面的構(gòu)成及使用說(shuō)明,描述了各個(gè)GUI控件對(duì)象的功能及使用時(shí)機(jī),并規(guī)劃了軟件的開發(fā)步驟。

圖6 變工況下整機(jī)熱力計(jì)算平臺(tái)可視化結(jié)果
2)將汽輪機(jī)各個(gè)級(jí)類型的熱力計(jì)算模塊函數(shù)化,使其可以相互調(diào)用,簡(jiǎn)化控件對(duì)象回調(diào)函數(shù)的編程步驟,使程序更具有可讀性。
3)詳細(xì)介紹了計(jì)算平臺(tái)主界面和子界面的編寫過(guò)程,實(shí)現(xiàn)主界面和子界面模塊相互自由切換,舉例介紹了控件對(duì)象回調(diào)函數(shù)的編寫方法,并通過(guò)實(shí)例計(jì)算,證明軟件的可行性,操作平臺(tái)具有友好的人機(jī)交互界面和良好的用戶體驗(yàn)。