梁 波,宋 瑩,王 博,3,郭 建
(1.湘潭大學材料與光電物理學院,湖南 湘潭 411105;2.中國科學院計算技術研究所計算機體系結構國家重點實驗室,北京 100190;3.西安交通大學電子與信息工程學院,西安 710049)
隨著現代信息技術的飛速發展,數據中心的規模越來越大。當前數據中心存在局部溫度過高和整體過度制冷的嚴重問題。局部溫度過高會造成該區域電路元器件易老化、易出故障等,從而給數據中心帶來不能穩定、正常的工作等問題[1]。為了避免系統過熱,許多數據中心存在過度制冷的問題,給數據中心帶來巨大的能量消耗,造成浪費,大幅度地提高數據中心的運行成本。綠色和平組織評估當前全球數據中心的功率約310 ×108W[2],并且功率隨著數據中心規模的擴大而增加。Garter[3]數據中心消耗的電能中有1/3~1/2 的被用于制冷。于是設計通過降低制冷能耗來節能的作業或虛擬機調度算法成為當前的研究熱點之一[4-5]。對大量服務器或機房中若干關鍵部位溫度的實時監控,為避免數據中心出現局部溫度過熱和過度制冷問題提供依據,是數據中心高效管理必不可少的工作。細粒度、高頻度的溫度監控有利于提供準確、及時的溫度信息,從而及時預測、發現數據中心熱點,為數據中心進行下一步避免由于系統過熱造成的故障和由于空調溫度設置過低造成的能耗浪費提供支持。因此,設計多點溫度的高頻實時采集系統顯得尤為重要。
在溫度采集方面,文獻[6-7]利用熱電偶、熱敏電阻或鉑電阻等溫度傳感器作為溫度器件,再通過測量傳感器兩端的電勢差,間接測量出溫度值,用這種方法測溫占用控制器端口多,電路結構復雜,不利于對多點溫度采集。文獻[8-9]利用總線接口實現對多點溫度的采集,但由于基于單總線協議,為了實現單總線上的可擴展性,必須通過標識每一個監測點的身份,并在每一次通信中使用。各測量點身份的識別操作將會導致大量的通信時間開銷,然而,一方面一個DS18B20 將溫度轉換12 位數字最大轉換時間為750 ms,一個下位機如果連接10 個DS18B20全部采集一次需要7.5 s;另一方面,CPU 是服務器的主要熱貢獻點,CPU 的溫度又與CPU 的利用率直接關聯,在實際環境中,CPU 的利用率可以在瞬間上升到100%,測得某些服務器的出風口溫度在1 s 時間間隔中上升的溫度超過1°C。因此,不利于多點的高頻實時采集。文獻[9-11]中采用一對一的無線傳輸(即一個無線接收端接收一個無線發送端數據),很浪費資源,不便于管理。實際溫度采集中,溫度數據之間相關度高[12],若不對數據進行處理,數據傳輸效率低、無線模塊功耗大,大大縮減了采用移動電源供電時系統的使用壽命。
為了達到多點高頻實時溫度采集的目的,本文提出的系統采用上、下位機的結構,將STC90C58RD作為系統的控制器、DS18B20 作為溫度采集傳感器、nRF24L01 作為無線通信芯片,從硬件電路設計和軟件設計2 個方面對系統進行優化,從而實現系統多點溫度的高頻實時采集。負責溫度的多點采集、采集數據的壓縮和發送,利用單片機多個I/O 端口,連接多個DS18B20[13]溫度傳感器進行多點溫度采集,單片機對采集到的數據進行數據壓縮后,由nRF24L01[14]無線收/發送芯片發送給上位機;上位機面向多個下位機,負責溫度數據收集、還原、數據傳輸至服務器管理節點,由單片機控制nRF24L01 無線收/發芯片依次接收各下位機傳輸的數據,并進行數據還原處理,再由單片機通過串口將數據傳輸給服務器管理節點;在Linux 系統上編寫串口驅動程序,用于溫度數據接收、顯示及將溫度數據寫入Mysql 數據庫,方便管理及溫度過高報警等,系統結構如圖1 所示。整個系統組網靈活,控制可靠,管理方便,系統容量大,兼容Linux 系統,易于編程。

圖1 系統結構
本文系統采用一個上位機對應多個下位機的結構,實現系統的多點高頻實時溫度采集,其中下位機
該系統涉及軟、硬件部分的設計和開發,分別從硬件設計和軟件設計角度闡述對于上述上位機和下位機部分的設計思路。
溫度傳感器的選擇,直接決定了系統的溫度采集頻率、測量精度、可靠性和穩定性等。由于單片機的I/O 端口資源有限,為了最大化利用I/O 資源,本系統采用的是美國DALLAS 半導體公司的數字化溫度傳感器DS18B20。該傳感器與傳統的熱敏電阻相比,能直接讀出被測溫度,不需要進行A/D 轉換占用單片機的I/O 端口,并可以通過編程實現9 位~12位的數字值讀取,提供-55 ℃~125 ℃的測量范圍,分辨度在12 bit 時最高達到0.062 5°,最大轉換時間為75 0ms。在-10°~85°范圍內,誤差±0.5°,供電3.3 V~5.5 V,使用微處理器作為控制機時,可以直接使用I/O 端口驅動傳感器芯片。但DS18B20 基于單總線協議,為了實現單總線上的可擴展性,必須通過ROM ID 來標識每一個監測點的身份,而且對總線上的DS18B20 的操作只能依次進行,大大增加了系統的采集周期,不利于多點溫度的高頻實時采集,但利用單片機的各I/O 口連接各DS18B20 的電路設計,比較容易就解決了該問題。
本文系統采用具有高速、低功耗、抗干擾能力強的STC 單片機。其中,STC90C58RD[15]內部集成了32 KB 閃存和1280BSRAM,比較適合需要存儲大量處理代碼的無線高頻溫度采集系統。用單片機的P0.0~P0.7,P1.0~P1.7 和P3.0~P3.7 引腳實現與24 個DS18B20 的連接,即一個I/O 端口分別連接一個DS18B20 溫度傳感器,直接使用單片機I/O 端口號標識監測點身份,通過軟件編寫跳過ROM 指令,提高溫度采集系統的采集頻率,溫度傳感器連接電路如圖2 所示。

圖2 溫度傳感器連接電路
另外,DS18B20 的供電方式采用外加電源方式,即DS18B20 的VCC 引腳需接入外部+5 V 電源,以保證I/O 線不需要強加上拉,這樣能提高采集溫度的精度。
為了不占用更多的串口,及便于數據的統一收集與管理,本系統采用Nordic 公司推出的高集成的單片無線收發芯片nRF24L01,實現數據的無線傳輸。nRF24L01 為單片射頻收發芯片,工作于2.4 GHz全球開放的ISM 頻段,最高工作速率為2 Mb/s,片內集成了頻率合成器、功率放大器、晶體振蕩器、調制器等功能模塊,采用高效的QFSK 調制,抗干擾能力非常強[15-16]。具有126 個頻道,滿足多點通信和跳頻通信的需要,內置硬件CRC 校驗和點對多點通信地址控制,只需用少量的外圍器件就能完成無線通信模塊的搭建,同時簡化了射頻電路的設計。
時鐘晶振采用16 MHz 無源晶振,nRF24L01 可以采用單邊天線或環形天線,天線的頻率和阻抗必須與射頻芯片匹配,以獲得最大的傳輸功率,減少無效的功率損耗。通常情況下,天線的阻抗為50 Ω 左右,與射頻芯片不匹配,因此,外圍電路接入了電感L1,L2,L3 和電容C5,C6 等器件作為網絡匹配,并抑制高頻噪聲,nRF24L01 芯片外圍接口電路如圖3所示。

圖3 nRF24L01 芯片外圍接口電路
nRF24L01 芯片與單片機的接口可以采用I/O直接連接,這樣可以非常方便地與各種高低速單片機進行通信,同時也有利于單片機與其他端口的通信。本文中nRF24L01 芯片與STC90C58RD 的連接圖如圖4 所示。

圖4 STC89C58RD 與nRF24L01 的連接圖
STC90C58RD 單片機有一個全雙工的串行通信口,單片機和服務器之間進行串行通信時必須有一個電平轉換電路,因為服務器的串口是RS232 電平,而單片機的串口是TTL 或CMOS 電平,這里采用MAX232 等系列芯片進行轉換。
為簡化電路設計,統一供電電源,設計中選用USB 提供5 V;由于nRF24L01 的工作電壓為1.9 V~3.6 V,選用AMS 公司生產的AMS1117-3.3 電源芯片,該芯片將5 V 電壓轉換成3.3 V 電壓輸出、精度在±1%以內、穩定性高,而且有限制電流和熱保護的功能。為了防止干擾,提高系統的穩定性,在ASM117-3.3V 芯片的電壓輸入輸出端口并聯了消噪電容器,nRF24L01 供電電路如圖5 所示,其中C13 和C15 采用10 μF 的膽電解電容器,C14 和C16選用0.1 μF 的陶瓷電容器。

圖5 nRF24L01 供電電路
DS18B20 溫度傳感器將溫度轉換成12 位數字的最大轉換時間為750 ms。為了提高系統對多點溫度的采樣頻率,本設計中,利用I/O 端口號和下位機編號的組合唯一地確定監測點身份,在對DS18B20 進行溫度讀取前,單片機依次對各溫度傳感器ROM 操作時直接發送“CCH”跳過指令,無需進行器件的身份識別,從而節省了對每個DS18B20 身份識別的時間;對DS18B20 操作時需要嚴格遵循其讀寫時序,即對DS18B20 操作時需要保證命令的執行時間,可以通過單片機I/O 端口依次操作各傳感器,即只需要一個延遲時間,就可滿足各個傳感器操作所需的延遲時間,從而節省采集所需的時間,如溫度傳感器進行溫度轉換時12 位溫度轉換的最大轉換時間為750 ms,由于向多個DS18B20 芯片寫入指令是由下位機MCU 通過一次發送操作實現的,因此各個DS18B20 芯片能夠大致在同一時間內并行地執行溫度轉換指令,所以下位機MCU 只需要等待一個溫度轉換時間750 ms 即可;各I/O 口可以同時控制各DS18B20 的溫度采集操作,而采用“一總線”連接時,對各DS18B20 的操作需依次進行,從而將系統的采樣頻率提高到1 Hz。下位機對溫度采集的流程如圖6 所示。

圖6 下位機溫度采集流程
由于數據中心的各個關鍵部件的溫度變化相對比較緩慢,相鄰時刻溫度值的相關性高,因此可以采用數據壓縮處理來減少無線傳輸的數據量,從而提高無線傳輸的效率,同時也降低無線發送/接收模塊的功耗。
在下位機中,將溫度數據用二維數組根據溫度傳感器的順序依次保存在下位機的單片機緩存中,對于任一個溫度傳感器所采集的數據,只需對本次溫度采集中該溫度傳感器采集到的溫度數據與預存的該溫度傳感器的溫度數據進行比較,如A 溫度傳感器的溫度采集值與預存的A 溫度傳感器采集溫度值進行比較,如果每對溫度的差值小于所設定的閾值,則不需要將采集的溫度數據傳輸給無線發送模塊,如果某一對或某幾對溫度的差值大于所設定的閾值,則把相應用此次溫度變化后的溫度值取代原來存儲在緩存對應位置中的溫度值,并將變化后的溫度值傳輸給無線發送模塊,由無線發送模塊傳輸給上位機。
在上位機中,同樣將溫度數據用二維數組根據溫度傳感器的順序依次保存在上位機的單片機緩存中。如果該時刻沒有接收到某下位機傳來的數據,用上一次該下位機傳來的溫度數據代替本次的溫度數據并傳給服務器管理節點;如果接收到了某下位機傳來的數據,對上一次該下位機傳來的溫度數據更新、上傳給服務器管理節點,并重新保存該溫度數據。
本文選用增強型的ShockBurstTM模式。該模式可以使得雙向鏈接協議執行起來更為容易、高效,即發送方要求終端設備在接收到數據后又答應信號,以便于發送方檢測有無數據丟失,一旦數據丟失,則通過重新發送功能將丟失的數據恢復。增強型的ShockBurstTM模式可以同時控制應答機重發功能而無需增加MCU 工作量。
增強型ShockBurstTM下的數據格式如圖7 所示,在發射數據時自動添加前導碼和CRC 效驗碼,再接收數據時自動移去前導碼和CRC 效驗碼。由于節點一次發送的有效數據寬度最大為32 Byte,而從DS18B20讀出的十六進制溫度數據,需要占2 Byte,所以一次最多只能發送16 個十六進制表示的溫度值。下位機一次對24 個傳感器采集溫度后,通過前后0.5 s的2 次數據的傳輸來完成24 個溫度數據的傳輸。

圖7 增強型ShockBurstTM模式下的數據包格式
nRF24L01 在接收模式下可以接收6 路不同通道的數據,每一個數據通道使用不同的地址,但是共用相同的頻道。即6 個不同的nRF24L01 設置為發送模式后可以與同一個設置為接收模式的nRF24L01 進行通信,而設置為接收模式的nRF24L01 可以對這6 個發送端進行識別。因此,在代碼中設置上下位機數據通道的發送端及接收端的地址,其中發送端的地址各不相同,接收模塊通過依次匹配各下位機的地址來建立通信,從而保證了每個下位機實時監測的情況可以及時地上傳給上位機。
用C 語言編寫Linux 系統下的串口驅動程序,用于接收單片機通過RS232 傳來的數據,實時顯示及將數據傳遞給Mysql 數據庫。溫度顯示部分用不同顏色來標識各溫度區間的溫度值,如對溫度值小于30 ℃的溫度值用綠色顯示,溫度值在30 ℃~40 ℃的溫度值用粉紅色顯示,溫度值高于40 ℃的溫度值用紅色顯示,便于管理人員一目了然地了解各服務器的實時溫度監控。
針對實驗環境,該系統由1 個上位機與3 個下位機組成,通過對硬件電路和軟件的優化,實現了同時監測多個溫度點、室內50 m 范圍內、以1 Hz 為采集頻率的溫度采集、無線傳輸、匯總及顯示等功能,具有體積小、精度高、實用性強、可靠性高、拓展性好等優點。可對服務器機箱中關鍵部位的溫度進行實時測量,從而為基于數據中心熱交換效率或能量最小化等綠色計算提供有力的溫度測量工具。
測量溫度與標準溫度計測的真實溫度的對比如表1 所示,誤差小于0.5℃,滿足高精度的要求。1 個上位機與6 個下位機系統,且每個下位機接24 個溫度傳感器,沒有對數據進行壓縮處理時的丟包測試如表2所示,其中每次測試時間為10 min,每秒應該接收312 Byte 的數據,理論接收為187 200 Byte。由表可知10 min 中內丟包率小于5%;加入數據壓縮,并將閾值設為0.5 ℃時,減少60%數據量的傳輸,極大提高了無線通信的傳輸效率,同時也降低了無線模塊的能耗,延長了系統選用移動電源供電時的使用壽命。

表1 測量溫度與真實溫度的對比 ℃

表2 丟包測試結果
本文設計了一種基于nRF24L01 的無線多點高頻實時溫度采集系統,通過對系統電路進行改進和對軟件進行優化,實現了多點溫度以1 Hz 采集速率的實時采集與統一收集,同時系統丟包率小于5%,無線傳輸部分數據傳輸量減少60%。該系統滿足實時監控數據中心溫度的要求,相比其他溫度采集系統,克服了采集溫度點數目少、采樣及傳輸頻率低、復雜環境下布線復雜、功耗高、不便于監控等問題,具有較大的實際推廣和應用價值。
[1]江 和,張培銘,翁桂華.基于無線通信的高壓設備溫度監測系統的設計[J].儀器儀表學報,2009,30(9):1969-1975.
[2]Cook G.How Clean is Your Cloud?[EB/OL].(2012-04-17).http://issuu.com/greenpeaceinternational/docs/h owcleanisyourcloud.
[3]Garter Research,Top 10 Techniques to Improve Data Center Cooling Efficiency[EB/OL].(2012-06-27).https://www.gartner.com/doc/1998515.
[4]Orgerie A C,Assuncao M D D,Lefevre L.A Survey on Techniques for Improving the Energy Efficiency of Large Scale Distributed Systems[J].ACM Computing Surveys,2014,46(4):1-35.
[5]Jing S Y,Ali S,She K,et al.State-of-the-Art Research Study for Green Cloud Computing[J].The Journal of Supercomputing,2013,65(1):445-468.
[6]趙敏華,李 莉,呼 娜.基于無線傳感器網絡的水質監測系統設計[J].計算機工程,2014,40(2):92-96.
[7]張修太,胡雪惠,翟亞芳,等.基于PT100 的高精度溫度采集系統設計與實驗研究[J].傳感技術學報,2010,23(6):812-815.
[8]侯俊才,侯莉俠,胡景清,等.基于單總線技術的溫室大棚多點溫度采集系統[J].農機化研究,2012,(8):152-155.
[9]李世芳,趙 佩.基于STC89C58RD+芯片的無線多點溫度采集系統設計[J].安徽農業科學,2010,38(24):13556-13557.
[10]丁 輝,姚慶文,宦 娟,等.基于nRF2401 的鹽度和溫度無線網絡檢測的研究[J].東北師大學報:自然科學版,2013,45(4):71-76.
[11]李 閃,黃小莉,胡 兵,等.基于nRF24L01 的無線智能溫度監測系統[J].儀表技術與傳感器,2011,(12):52-54,57.
[12]程 劍,李 平,朱海榮.WSN 中基于區間小波的偶合數據壓縮算法[J].計算機工程,2011,37(9):150-152.
[13]DALLAS 公司.DS18B20 使用手冊[Z].2003.
[14]Semiconductor N.Single Chip 2.4 GHz Transceiver nRF24L01 [EB/OL].(2007-07-01).http://www.nordicsemi.com.
[15]宏晶科技.STC90C51/RD +系列單片機器件手冊[Z].2009.