俞岳軍
(杭州電子科技大學(xué) 計算機學(xué)院,浙江 杭州 310018)
本文提供一種大范圍無線數(shù)據(jù)采集的同步算法。為了便于理解,下面先對本文將要用到的術(shù)語進行解釋。
重量級數(shù)據(jù):系統(tǒng)需要每次都采集到的核心數(shù)據(jù),非取到不可的。
輕量級數(shù)據(jù):系統(tǒng)需要采集到的數(shù)據(jù),但只要基本上能采到就行,某些周期偶然沒有采到,也不要緊。
密集數(shù)據(jù):系統(tǒng)需要短間隔、密集采集的數(shù)據(jù)。
稀疏數(shù)據(jù):系統(tǒng)長間隔才采集一次的數(shù)據(jù),比如3~5 min一次。
自從計算機誕生以來,數(shù)據(jù)采集一直是它的一個重要任務(wù),有關(guān)數(shù)據(jù)采集的論文也是數(shù)不勝數(shù)、汗牛塞棟。但總的看來,這些傳統(tǒng)的數(shù)據(jù)采集技術(shù)是以一種“很嚴肅”的態(tài)度對待數(shù)據(jù)的。比如上下位機系統(tǒng)經(jīng)常采用的232總線、485總線[1],采集數(shù)據(jù)時上位機對某臺下位機發(fā)出數(shù)據(jù)采集命令,下位機用數(shù)據(jù)作為應(yīng)答;如果下位機沒有及時返回數(shù)據(jù),上位機還要重發(fā)命令,直到收到下位機回復(fù)數(shù)據(jù)為止;然后繼續(xù)對其余的下位機進行輪詢。這就是傳統(tǒng)數(shù)據(jù)采集算法的常規(guī)套路。也有采用局域網(wǎng)的,原理其實也是一樣的。這些數(shù)據(jù)采集的方法,優(yōu)點是數(shù)據(jù)肯定能完整地采集,缺點也是顯然的:很耗時、系統(tǒng)復(fù)雜成本高。
在很多工作場合,需要實時獲得大范圍的環(huán)境數(shù)據(jù)信息,比如化工類廠房的溫濕度、蔬菜大棚的溫濕度、某些地質(zhì)構(gòu)造的溫度壓力等等,這可能是一個面信息、也可能是一個體信息,信息量比較大。但是,這些數(shù)據(jù)并不是每個都不可或缺的,偶然少幾個數(shù)據(jù),問題也不大,只要總的方面有所把握就行。并且采集密度也不高,3~5 min采集一次就行了。實際上,這就是“大范圍的輕量級稀疏”數(shù)據(jù)。
這種情況下如果采用傳統(tǒng)的數(shù)據(jù)采集數(shù)據(jù),用485總線或者局域網(wǎng)線布起來,線路眾多復(fù)雜、成本高、軟件編寫復(fù)雜。比如說要布500多個觀測點,如果用網(wǎng)線就要有500多條,如果用標準的485總線[1],那就要(500/32) +1=16條總線。即使是用最新的485總線技術(shù),也要用(500/256)+1=2條總線。
采用無線局域網(wǎng)是一種更好的選擇。目前許多無線芯片功耗極低,自帶電池就可以工作很長時間,安裝方便靈活、不受場地限制。
問題是很多的觀察點又如何和主機進行通信?如果由著它們自由發(fā)送數(shù)據(jù),射頻信號相互沖突,這樣顯然系統(tǒng)就亂了。必須制訂一種高效的通信協(xié)議才行。
本文提供了一種無線局域網(wǎng)的同步技術(shù)。由以下模塊組成。
這是觀察點的具體實現(xiàn)。由基本支撐電路、傳感電路、無線收發(fā)電路組成,負責(zé)數(shù)據(jù)采集和無線發(fā)送。檢測模塊如圖1所示。

圖1 檢測模塊
這是周邊觀察點的數(shù)據(jù)匯集器。由基本支撐電路、無線收發(fā)電路、以太網(wǎng)接口電路組成[2]。負責(zé)數(shù)據(jù)無線接收、整合、有線發(fā)送。數(shù)據(jù)匯集模塊如圖2所示。

圖2 數(shù)據(jù)匯集模塊
這是整個數(shù)據(jù)采集系統(tǒng)的時間基準。由基本支撐電路、無線發(fā)送電路組成,負責(zé)給整個采集系統(tǒng)提供“北京時間”。時標模塊如圖3所示。

圖3 時標模塊
帶網(wǎng)絡(luò)接口功能的計算機系統(tǒng)包括數(shù)據(jù)處理中心(見圖4)。

圖4 數(shù)據(jù)處理中心
工作環(huán)境如圖5所示。

圖5 工作環(huán)境示范
所謂的同步算法,就是說工作環(huán)境中的所有檢測模塊、所有數(shù)據(jù)匯集模塊,都以時標模塊發(fā)出的信號為基準開始工作。
時標模塊向各檢測模塊、各數(shù)據(jù)匯集模塊發(fā)出時標射頻信號,同步啟動它們;檢測模塊、數(shù)據(jù)匯集模塊開始工作,數(shù)據(jù)匯集模塊接收周邊檢測模塊發(fā)來的數(shù)據(jù)射頻信號,進行整合,經(jīng)過一個階段的時間,形成一個不一定完整的數(shù)據(jù)幀;各數(shù)據(jù)匯集模塊把各自的不一定完整的數(shù)據(jù)幀發(fā)給數(shù)據(jù)處理中心,形成一個完整的數(shù)據(jù)幀[3]。如此往復(fù),采集到一系列有價值的數(shù)據(jù)。
對于各檢測模塊,把采集到的數(shù)據(jù)根據(jù)各自的模塊號有序地發(fā)送到各數(shù)據(jù)匯集模塊。而在工作環(huán)境中,數(shù)據(jù)匯集模塊可以是多個,不止一個,對于同一個檢測模塊發(fā)過來的信號,會被多個數(shù)據(jù)匯集模塊接收到,在數(shù)據(jù)處理中心收到多個數(shù)據(jù)匯集模塊發(fā)來的數(shù)據(jù)時,重復(fù)的數(shù)據(jù)可以刪除。
同時,多個數(shù)據(jù)匯集模塊的存在是很有好處的,因為檢測模塊發(fā)出射頻信號的作用距離是有限的,對于一個比較大的工作環(huán)境,會很容易超出這個作用距離。分布多個數(shù)據(jù)匯集模塊可以有效地降低這個風(fēng)險,因為這個數(shù)據(jù)匯集模塊收不到時,可以由其他的數(shù)據(jù)匯集模塊接收到。
實際上,從檢測模塊到數(shù)據(jù)匯集模塊這一步,相當(dāng)于把數(shù)據(jù)進行了壓縮,減少了網(wǎng)絡(luò)有線傳送的流通量。而采用多個數(shù)據(jù)匯集模塊,相當(dāng)于提高了無線信號接收能力。
因為,各檢測模塊都是根據(jù)時標同步開啟的,射頻信號是根據(jù)模塊號有序發(fā)送的,所以,它們各自之間是不會相互沖突的。
首先各模塊打開,進入就緒狀態(tài),等待時標模塊發(fā)出的開始信號。
時標模塊的工作流程如圖6所示。

圖6 時標模塊的工作流程
時標模塊發(fā)出的信息格式如圖7所示。

圖7 時標模塊發(fā)出的信息格式
而各檢測模塊的工作流程如圖8所示。

圖8 各檢測模塊的工作流程
檢測模塊的信息格式如圖9所示。

圖9 檢測模塊的信息格式
因為各檢測模塊根據(jù)模塊號延時了相應(yīng)的間隔,才開始干正事,所以,各檢測模塊發(fā)出的數(shù)據(jù)射頻是不會沖突的,它們相互間錯開了,如圖10所示。

圖10 各檢測模塊發(fā)出的數(shù)據(jù)射頻錯開
考慮到工作時間久了,會發(fā)生時間漂移,所以,工作了一天,讓它們和時標模塊重新對表。
各數(shù)據(jù)匯集模塊工作流程如圖11所示。
數(shù)據(jù)處理中心將各個數(shù)據(jù)匯集模塊發(fā)來的信息,刪除重復(fù)的數(shù)據(jù),進行整合,形成對整個環(huán)境的映像,不斷地記錄映像,就會形成一個時期環(huán)境的數(shù)據(jù)映像。
在實際操作中可以用nRF24L01作為無線發(fā)送模塊。為了減少時間漂移,檢測模塊、數(shù)據(jù)匯集模塊、時標模塊應(yīng)采用高精度的有源晶振。
我們用32個檢測模塊,2個數(shù)據(jù)匯集模塊、1個時標模塊、1個電腦主機進行了小范圍的測試,效果是很好的。理論上,有500個觀察點,每隔12 ms一個觀察點發(fā)送采集到的數(shù)據(jù),那么6 s就可以整個范圍掃描一遍,這是非常理想的方法。

圖11 各數(shù)據(jù)匯集模塊工作流程
各數(shù)據(jù)匯集模塊的數(shù)據(jù)格式如圖12所示。

圖12 各數(shù)據(jù)匯集模塊的數(shù)據(jù)格式
[1]李廣弟.單片機基礎(chǔ)[M].北京:北京航空航天大學(xué)出版社,1994.
[2]周立功.深入淺出Cortex-M3 LPC178x/177x[Z].廣州:廣州致遠電子公司,2013.
[3]理查德·史蒂芬.TCP/IP協(xié)議詳解卷1[M].吳英,譯.北京:機械工業(yè)出版社,2008.