1概述
建筑耗能數(shù)量大,比例高,發(fā)達國家建筑用能比例一般為全國總能耗的30%~40%,所占能耗比重很大。在我國,建筑能耗占全社會總能耗的27.6%,而民用建筑能耗中住宅能耗占60%。與之對應(yīng),建筑節(jié)能潛力巨大。
建筑節(jié)能,冬季建筑外窗散熱是一個大問題。國家標準《建筑外窗保溫性能分級及檢測方法》(GB/T8484―2002),要求檢測建筑外窗的傳熱系數(shù),判定建筑外窗的保溫性能等級。檢測標準中采用的檢測設(shè)備如圖1所示。
該裝置是基于穩(wěn)定傳熱原理,采用標定熱箱法檢測窗戶保溫性能。試件一側(cè)為熱箱,模擬采暖建筑冬季室內(nèi)氣候條件,另一側(cè)為冷箱,模擬冬季室外氣候條件。在對試件縫隙進行密封處理,試件兩側(cè)各自保持穩(wěn)定的空氣溫度、氣流速度和熱輻射條件下,測量熱箱中電暖氣的發(fā)熱量,減去通過熱箱外壁和試件框的熱損失,除以試件面積與兩側(cè)空氣溫差的乘積,即可計算出試件的傳熱系數(shù)K值(K值為在穩(wěn)定傳熱條件下,外窗兩側(cè)空氣溫差為1℃,單位時間內(nèi)通過單位面積的傳熱量以W/(m2·K)計。試件傳熱系數(shù)K值按下式計算:
式中:Q為電暖氣的發(fā)熱功率;M1△θ1為熱箱外壁的熱損失;M2△θ2為試件框的熱損失;S·Λ·△θ3為填充板的熱損失;A為試件的面積;△t試件兩側(cè)的溫差。
2系統(tǒng)硬件結(jié)構(gòu)
國標中要求熱箱空氣溫度的設(shè)定范圍為18℃~20℃,冷箱空氣溫度的設(shè)定范圍為-19℃~-21℃,所以裝置中需要兩臺溫度控制儀表,分別用來控制熱室和冷室內(nèi)的溫度。另外,檢測過程中需要用到多個溫度測點的溫度值和電暖氣的加熱功率,故裝置中還需要一臺32路溫度巡檢儀表和一臺功率計。以上智能儀表作為整個測控系統(tǒng)的從機部分,主機部分為通用微型計算機,兩者通過半雙工RS-232/RS-485標準總線接口通信,采用雙絞線進行信號傳輸。在這種系統(tǒng)結(jié)構(gòu)下,作為下位機的智能儀表完成測量控制功能,便于快速構(gòu)造系統(tǒng)并保證測控精度。
由于從機部分的儀表較多,并且通信協(xié)議和通信接口不一致,故系統(tǒng)采用多串口通信。功率計為RS-232接口,故單獨為其分配一個串口;32路溫度巡檢儀和兩個溫度控制儀為RS-485接口,而PC一般只有RS-232接口,需要RS-232/RS-485接口轉(zhuǎn)換器。系統(tǒng)的總體硬件框圖如圖2所示。巡檢儀按國家標準外接的溫度傳感器采用銅一康銅熱電偶,要求的溫度測點很多,所以同類溫度測點的熱電偶可以并聯(lián)。具體裝置尺寸及材質(zhì)、熱箱外壁和試件框熱流系數(shù)標定、試件框的面積劃分、溫度測點的分布、熱電偶的篩選和校驗等詳細要求請參見有關(guān)國家標準。
3系統(tǒng)軟件結(jié)構(gòu)
系統(tǒng)軟件總體框圖如圖3所示。它充分利用了Windows系統(tǒng)允許多進程、多線程的編程特點,開辟了兩個線程;還利用了VC++的面向?qū)ο蟮脑O(shè)計思想,把有關(guān)的數(shù)據(jù)結(jié)構(gòu)及其操作完全封裝類中。系統(tǒng)主要實現(xiàn)的功能有下位機數(shù)據(jù)采集、主界面顯示、實時曲線顯示、數(shù)據(jù)存儲、歷史曲線顯示、檢測結(jié)果測定、檢測報告和歷史報告記錄的瀏覽及打印、數(shù)據(jù)庫清理及維護等。
3.1多線程
系統(tǒng)軟件的進程分成兩個線程:主線程(用戶界面線程)和通信線程(輔助線程)。主線程定時啟動通信線程,通信線程執(zhí)行完一次通信任務(wù)后掛起。主線程能夠提供界面和用戶交互,通常用于處理用戶輸入并響應(yīng)各種事件和消息,而通信線程主要用來進行上位機與下位機之間的通信。主線程由AppWizard生成,下面主要介紹通信線程的設(shè)計。
要創(chuàng)建一個線程,需要調(diào)用函數(shù)AfxBeginThread。該函數(shù)因參數(shù)重載不同而具有兩種版本,分別對應(yīng)輔助線程和用戶界面線程。無論是輔助線程還是用戶界面線程,都需要指定額外的參數(shù)以修改優(yōu)先級、堆棧大小、創(chuàng)建標志和安全特性等。函數(shù)AfxBeginThread返回指向CWinThread類對象的指針。同樣,在CMain-View的構(gòu)造函數(shù)中調(diào)用AfxBeginThread函數(shù):
在啟動通信線程之前,必須為線程的主程序編寫一個全局函數(shù)。這個函數(shù)應(yīng)該返回一個UINT,它應(yīng)該以一個32位值(聲明為IPVOID)作為參數(shù)。在啟動線程的時候,可以使用這個參數(shù)來傳遞任何東西,在AfxBeginThread函數(shù)中傳遞的是this->GetDocument()(文檔類的指針),這樣就可以在輔助線程中使用文檔類的數(shù)據(jù)。在輔助線程中,要采集下位機數(shù)據(jù),然后掛起線程,等待定時器OnTimer函數(shù)恢復(fù)線程。
3.2串口通信
輔助線程的主要工作是PC通過串口采集下位機數(shù)據(jù),PC機的Windows操作系統(tǒng)不提倡應(yīng)用程序直接控制硬件,而是通過Windows操作系統(tǒng)提供的設(shè)備驅(qū)動程序來進行數(shù)據(jù)傳遞?;谏鲜鎏攸c,結(jié)合本系統(tǒng)多串口通信的特點,使用Visual C++6.0集成開發(fā)環(huán)境下封裝好的串口類CSerialPort來設(shè)計串口通信。本系統(tǒng)使用兩個串口,串口3用于與功率計之間的通信,串口4用于與巡檢儀及溫控儀之間的通信。
從機通信協(xié)議以巡檢儀為例簡述如下:波特率設(shè)置為2 400 bit/s,幀格式為1個起始位,8個數(shù)據(jù)位,1個停止位。巡檢儀采用ASCII碼傳輸,其下傳命令幀格式如表1所示,儀表返回數(shù)據(jù)幀如圖4所示。每個通道的測量值為16位二進制,最高位為測量值的符號標志位,1為負,0為正。接收到返回數(shù)據(jù)后,在程序中按照協(xié)議對其進行相應(yīng)的處理。
使用CSerialPort類實現(xiàn)雙串口通信,先要在對象所有者窗口類頭文件(.H)中聲明兩個CSerialPort的對象,然后調(diào)用該類的InitPort函數(shù)(主要完成串口號選擇、波特率設(shè)置等串口的初始化設(shè)置),并啟動監(jiān)視串口的工作線程。之后串口接到數(shù)據(jù)后,會以消息的形式發(fā)送到串口的所有者窗口中,只要在該窗口中加入對這些消息的響應(yīng)即可。
數(shù)據(jù)發(fā)送可以使用CSerialPort::WriteToPort(char*string)函數(shù),鑒于本系統(tǒng)中的通信協(xié)議都采用BYTE數(shù)據(jù)類型進行傳送,故把該函數(shù)修改為Serial-Port::WriteToPort(BYTE bWriteBuffer[],int nWfite-BufferSize),bWriteBuffer[]為要發(fā)送的數(shù)據(jù),nWfite-BufferSize為要發(fā)送的字節(jié)個數(shù)。
數(shù)據(jù)接收需要添加消息響應(yīng)函數(shù),首先要在對象所有者窗口類頭文件(.H)中加入串口接收的響應(yīng)函數(shù)聲明。由于沒有自動的消息映射機制,必須在消息映射機制的標志處手工添加:
然后在該窗口類的CPP文件中添加消息映射:
ON_MESSAGE(WM_COMM_RXCHAR,OnCommunication)
最后加入消息處理函數(shù)OnCommunication,在其中進行相應(yīng)的接收數(shù)據(jù)處理即可。
3.3其他部分
系統(tǒng)除了基本測試功能的設(shè)計外,還增加了數(shù)據(jù)存儲、歷史數(shù)據(jù)的查詢、檢測報告的打印等功能。
3.3.1數(shù)據(jù)庫
ODBC(開放式數(shù)據(jù)庫連接)為不同的數(shù)據(jù)庫資源提供一個標準接口,是目前Windows應(yīng)用程序中應(yīng)用最廣泛的數(shù)據(jù)接口,已經(jīng)成為工業(yè)標準。為了方便ODBC使用,MFC針對ODBC原始的簡單的函數(shù)型API,建立了一些抽象類:CDatabase、CRecordset和CRecordView,分別用來支持數(shù)據(jù)庫、記錄集和記錄視圖。MFC的ODBC類與數(shù)據(jù)庫的關(guān)系如圖5所示。
本系統(tǒng)數(shù)據(jù)庫中建立了實時數(shù)據(jù)、歷史數(shù)據(jù)和檢測結(jié)果3張表,故相應(yīng)用到3個CRecordset的派生類,通過這些派生類的對象調(diào)用類中的成員函數(shù),即可進行數(shù)據(jù)的添加、編輯、刪除、查詢等操作。
3.3.2打印
如果單純使用Windows的API函數(shù)來實現(xiàn)打印任務(wù),程序的編寫將會變得非常繁瑣,而利用MFC提供的打印和打印預(yù)覽的應(yīng)用程序框架將會使打印任務(wù)難度大大降低。要有效使用打印的話,必須理解函數(shù)調(diào)用的順序以及知道哪個函數(shù)需要被重載。
1)打印機的設(shè)備環(huán)境和OnDraw()函數(shù)
當程序在打印機上打印的時候,它使用了一個CDC類的設(shè)備環(huán)境對象。這個對象由應(yīng)用程序框架構(gòu)造,并把它作為參數(shù)傳遞給視圖的OnDraw函數(shù)。如果應(yīng)用程序要將顯示結(jié)果在打印機上打印出來,OnDraw()函數(shù)便擔負著雙重任務(wù)。如果正在顯示,OnPaint函數(shù)便調(diào)用OnDraw,并且設(shè)備環(huán)境是顯示器環(huán)境。如果正在打印,OnDraw由另一個CView虛函數(shù)OnPrint調(diào)用,用一個打印機設(shè)備環(huán)境作為參數(shù)。
2)CView::OnPrint函數(shù)
從上面可以看到,基類的OnPrint函數(shù)調(diào)用OnDraw函數(shù),并且OnDraw函數(shù)既可以使用顯示器設(shè)備環(huán)境,也可以使用打印機設(shè)備環(huán)境。在調(diào)用OnPrint函數(shù)之前,將會設(shè)置映射模式。可以重載OnPrint函數(shù)來打印那些未顯示的項目,諸如標題、頁碼等。在重載的OnPrint函數(shù)中,可以選擇不調(diào)用OnDraw函數(shù),來支持打印邏輯,這樣就使打印邏輯與顯示邏輯分開。
4系統(tǒng)功能及其實現(xiàn)
系統(tǒng)功能較多,下面主要介紹主界面、測量界面功能的實現(xiàn)。
4.1主界面
國標規(guī)定熱箱中溫度波動幅度不大于0.1℃,冷箱中溫度波動幅度不大于0.3℃,并且上述溫度的波動不再是單向的,才表示傳熱過程穩(wěn)定,然后方可進行后續(xù)的測量,所以設(shè)定系統(tǒng)運行后的主界面如圖6所示。圖中,左側(cè)實時顯示熱箱、冷箱、試件框等溫度測點的溫度值,右側(cè)繪制熱箱內(nèi)溫度、冷箱內(nèi)溫度和供電電壓的曲線,具體某一點的數(shù)據(jù)還可以通過時間游標來查看,并且在后臺程序中對國標所要求的溫度條件進行判斷,如果滿足,則彈出消息框給出提示,便可進入其他界面進行下一步的檢測。
4.2測量界面
傳熱過程穩(wěn)定之后,每隔30 min測量一次參數(shù):電暖氣加熱功率、熱箱空氣平均溫度、冷箱空氣平均溫度、熱箱外壁內(nèi)外表面面積加權(quán)平均溫度之差、試件框熱側(cè)冷側(cè)表面面積加權(quán)平均溫度之差和填充板兩表面的平均溫差,共測6次。測量界面設(shè)計如圖7所示。進入該界面后將每隔30 min自動測量一次上述參數(shù),測量完畢后將彈出消息框給出提示。設(shè)計中為了實際檢測方便,增加了“手動測量”按鈕,點擊一次該按鈕將測量一次。測量完畢后點擊“計算結(jié)果”按鈕,將進行參數(shù)求平均并計算檢測結(jié)果。另外,根據(jù)用戶需要增加了打印當前數(shù)據(jù)的功能,點擊后進行各參數(shù)及檢測結(jié)果的打印。測量完畢后,點擊“報告編輯”即進入檢測報告編輯界面,進行報告編輯及榆測記錄保存等操作。
5 結(jié)束語
本文介紹了建筑外窗保溫性能檢測系統(tǒng)的組成,并在Visual c++6.0平臺下實現(xiàn)了多串口通信、實時曲線繪制、數(shù)據(jù)庫操作等功能。實際應(yīng)用中表明,該檢測系統(tǒng)操作方便,界面簡潔直觀,檢測過程穩(wěn)定,檢測結(jié)果準確可靠,具有很強的實用價值??紤]到成本及產(chǎn)品化的要求,溫度測量與控制功能也可通過設(shè)計專用的儀表實現(xiàn),有關(guān)工作目前正在進行。