1概述
建筑耗能數(shù)量大,,比例高,發(fā)達國家建筑用能比例一般為全國總能耗的30%~40%,,所占能耗比重很大,。在我國,建筑能耗占全社會總能耗的27.6%,,而民用建筑能耗中住宅能耗占60%,。與之對應,建筑節(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í)行完一次通信任務后掛起。主線程能夠提供界面和用戶交互,,通常用于處理用戶輸入并響應各種事件和消息,,而通信線程主要用來進行上位機與下位機之間的通信。主線程由AppWizard生成,,下面主要介紹通信線程的設(shè)計,。
要創(chuàng)建一個線程,需要調(diào)用函數(shù)AfxBeginThread,。該函數(shù)因參數(shù)重載不同而具有兩種版本,,分別對應輔助線程和用戶界面線程。無論是輔助線程還是用戶界面線程,,都需要指定額外的參數(shù)以修改優(yōu)先級,、堆棧大小,、創(chuàng)建標志和安全特性等。函數(shù)AfxBeginThread返回指向CWinThread類對象的指針,。同樣,,在CMain-View的構(gòu)造函數(shù)中調(diào)用AfxBeginThread函數(shù):
在啟動通信線程之前,必須為線程的主程序編寫一個全局函數(shù),。這個函數(shù)應該返回一個UINT,,它應該以一個32位值(聲明為IPVOID)作為參數(shù)。在啟動線程的時候,,可以使用這個參數(shù)來傳遞任何東西,,在AfxBeginThread函數(shù)中傳遞的是this->GetDocument()(文檔類的指針),這樣就可以在輔助線程中使用文檔類的數(shù)據(jù),。在輔助線程中,,要采集下位機數(shù)據(jù),然后掛起線程,,等待定時器OnTimer函數(shù)恢復線程,。
3.2串口通信
輔助線程的主要工作是PC通過串口采集下位機數(shù)據(jù),PC機的Windows操作系統(tǒng)不提倡應用程序直接控制硬件,,而是通過Windows操作系統(tǒng)提供的設(shè)備驅(qū)動程序來進行數(shù)據(jù)傳遞,。基于上述特點,,結(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é)議對其進行相應的處理,。
使用CSerialPort類實現(xiàn)雙串口通信,,先要在對象所有者窗口類頭文件(.H)中聲明兩個CSerialPort的對象,,然后調(diào)用該類的InitPort函數(shù)(主要完成串口號選擇、波特率設(shè)置等串口的初始化設(shè)置),,并啟動監(jiān)視串口的工作線程,。之后串口接到數(shù)據(jù)后,會以消息的形式發(fā)送到串口的所有者窗口中,,只要在該窗口中加入對這些消息的響應即可,。
數(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ù)接收需要添加消息響應函數(shù),,首先要在對象所有者窗口類頭文件(.H)中加入串口接收的響應函數(shù)聲明,。由于沒有自動的消息映射機制,必須在消息映射機制的標志處手工添加:
然后在該窗口類的CPP文件中添加消息映射:
ON_MESSAGE(WM_COMM_RXCHAR,,OnCommunication)
最后加入消息處理函數(shù)OnCommunication,,在其中進行相應的接收數(shù)據(jù)處理即可。
3.3其他部分
系統(tǒng)除了基本測試功能的設(shè)計外,,還增加了數(shù)據(jù)存儲,、歷史數(shù)據(jù)的查詢、檢測報告的打印等功能,。
3.3.1數(shù)據(jù)庫
ODBC(開放式數(shù)據(jù)庫連接)為不同的數(shù)據(jù)庫資源提供一個標準接口,,是目前Windows應用程序中應用最廣泛的數(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張表,,故相應用到3個CRecordset的派生類,,通過這些派生類的對象調(diào)用類中的成員函數(shù),即可進行數(shù)據(jù)的添加,、編輯,、刪除,、查詢等操作。
3.3.2打印
如果單純使用Windows的API函數(shù)來實現(xiàn)打印任務,,程序的編寫將會變得非常繁瑣,,而利用MFC提供的打印和打印預覽的應用程序框架將會使打印任務難度大大降低。要有效使用打印的話,,必須理解函數(shù)調(diào)用的順序以及知道哪個函數(shù)需要被重載,。
1)打印機的設(shè)備環(huán)境和OnDraw()函數(shù)
當程序在打印機上打印的時候,它使用了一個CDC類的設(shè)備環(huán)境對象,。這個對象由應用程序框架構(gòu)造,,并把它作為參數(shù)傳遞給視圖的OnDraw函數(shù)。如果應用程序要將顯示結(jié)果在打印機上打印出來,,OnDraw()函數(shù)便擔負著雙重任務,。如果正在顯示,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ù)庫操作等功能,。實際應用中表明,,該檢測系統(tǒng)操作方便,,界面簡潔直觀,檢測過程穩(wěn)定,,檢測結(jié)果準確可靠,,具有很強的實用價值??紤]到成本及產(chǎn)品化的要求,,溫度測量與控制功能也可通過設(shè)計專用的儀表實現(xiàn),有關(guān)工作目前正在進行,。