俞岳軍
(杭州電子科技大學(xué) 計(jì)算機(jī)學(xué)院,浙江 杭州 310018)
本文提供一種大范圍無線數(shù)據(jù)采集的同步算法。為了便于理解,下面先對(duì)本文將要用到的術(shù)語進(jìn)行解釋。
重量級(jí)數(shù)據(jù):系統(tǒng)需要每次都采集到的核心數(shù)據(jù),非取到不可的。
輕量級(jí)數(shù)據(jù):系統(tǒng)需要采集到的數(shù)據(jù),但只要基本上能采到就行,某些周期偶然沒有采到,也不要緊。
密集數(shù)據(jù):系統(tǒng)需要短間隔、密集采集的數(shù)據(jù)。
稀疏數(shù)據(jù):系統(tǒng)長間隔才采集一次的數(shù)據(jù),比如3~5 min一次。
自從計(jì)算機(jī)誕生以來,數(shù)據(jù)采集一直是它的一個(gè)重要任務(wù),有關(guān)數(shù)據(jù)采集的論文也是數(shù)不勝數(shù)、汗牛塞棟。但總的看來,這些傳統(tǒng)的數(shù)據(jù)采集技術(shù)是以一種“很嚴(yán)肅”的態(tài)度對(duì)待數(shù)據(jù)的。比如上下位機(jī)系統(tǒng)經(jīng)常采用的232總線、485總線[1],采集數(shù)據(jù)時(shí)上位機(jī)對(duì)某臺(tái)下位機(jī)發(fā)出數(shù)據(jù)采集命令,下位機(jī)用數(shù)據(jù)作為應(yīng)答;如果下位機(jī)沒有及時(shí)返回?cái)?shù)據(jù),上位機(jī)還要重發(fā)命令,直到收到下位機(jī)回復(fù)數(shù)據(jù)為止;然后繼續(xù)對(duì)其余的下位機(jī)進(jìn)行輪詢。這就是傳統(tǒng)數(shù)據(jù)采集算法的常規(guī)套路。也有采用局域網(wǎng)的,原理其實(shí)也是一樣的。這些數(shù)據(jù)采集的方法,優(yōu)點(diǎn)是數(shù)據(jù)肯定能完整地采集,缺點(diǎn)也是顯然的:很耗時(shí)、系統(tǒng)復(fù)雜成本高。
在很多工作場(chǎng)合,需要實(shí)時(shí)獲得大范圍的環(huán)境數(shù)據(jù)信息,比如化工類廠房的溫濕度、蔬菜大棚的溫濕度、某些地質(zhì)構(gòu)造的溫度壓力等等,這可能是一個(gè)面信息、也可能是一個(gè)體信息,信息量比較大。但是,這些數(shù)據(jù)并不是每個(gè)都不可或缺的,偶然少幾個(gè)數(shù)據(jù),問題也不大,只要總的方面有所把握就行。并且采集密度也不高,3~5 min采集一次就行了。實(shí)際上,這就是“大范圍的輕量級(jí)稀疏”數(shù)據(jù)。
這種情況下如果采用傳統(tǒng)的數(shù)據(jù)采集數(shù)據(jù),用485總線或者局域網(wǎng)線布起來,線路眾多復(fù)雜、成本高、軟件編寫復(fù)雜。比如說要布500多個(gè)觀測(cè)點(diǎn),如果用網(wǎng)線就要有500多條,如果用標(biāo)準(zhǔn)的485總線[1],那就要(500/32) +1=16條總線。即使是用最新的485總線技術(shù),也要用(500/256)+1=2條總線。
采用無線局域網(wǎng)是一種更好的選擇。目前許多無線芯片功耗極低,自帶電池就可以工作很長時(shí)間,安裝方便靈活、不受場(chǎng)地限制。
問題是很多的觀察點(diǎn)又如何和主機(jī)進(jìn)行通信?如果由著它們自由發(fā)送數(shù)據(jù),射頻信號(hào)相互沖突,這樣顯然系統(tǒng)就亂了。必須制訂一種高效的通信協(xié)議才行。
本文提供了一種無線局域網(wǎng)的同步技術(shù)。由以下模塊組成。
這是觀察點(diǎn)的具體實(shí)現(xiàn)。由基本支撐電路、傳感電路、無線收發(fā)電路組成,負(fù)責(zé)數(shù)據(jù)采集和無線發(fā)送。檢測(cè)模塊如圖1所示。
圖1 檢測(cè)模塊
這是周邊觀察點(diǎn)的數(shù)據(jù)匯集器。由基本支撐電路、無線收發(fā)電路、以太網(wǎng)接口電路組成[2]。負(fù)責(zé)數(shù)據(jù)無線接收、整合、有線發(fā)送。數(shù)據(jù)匯集模塊如圖2所示。
圖2 數(shù)據(jù)匯集模塊
這是整個(gè)數(shù)據(jù)采集系統(tǒng)的時(shí)間基準(zhǔn)。由基本支撐電路、無線發(fā)送電路組成,負(fù)責(zé)給整個(gè)采集系統(tǒng)提供“北京時(shí)間”。時(shí)標(biāo)模塊如圖3所示。
圖3 時(shí)標(biāo)模塊
帶網(wǎng)絡(luò)接口功能的計(jì)算機(jī)系統(tǒng)包括數(shù)據(jù)處理中心(見圖4)。
圖4 數(shù)據(jù)處理中心
工作環(huán)境如圖5所示。
圖5 工作環(huán)境示范
所謂的同步算法,就是說工作環(huán)境中的所有檢測(cè)模塊、所有數(shù)據(jù)匯集模塊,都以時(shí)標(biāo)模塊發(fā)出的信號(hào)為基準(zhǔn)開始工作。
時(shí)標(biāo)模塊向各檢測(cè)模塊、各數(shù)據(jù)匯集模塊發(fā)出時(shí)標(biāo)射頻信號(hào),同步啟動(dòng)它們;檢測(cè)模塊、數(shù)據(jù)匯集模塊開始工作,數(shù)據(jù)匯集模塊接收周邊檢測(cè)模塊發(fā)來的數(shù)據(jù)射頻信號(hào),進(jìn)行整合,經(jīng)過一個(gè)階段的時(shí)間,形成一個(gè)不一定完整的數(shù)據(jù)幀;各數(shù)據(jù)匯集模塊把各自的不一定完整的數(shù)據(jù)幀發(fā)給數(shù)據(jù)處理中心,形成一個(gè)完整的數(shù)據(jù)幀[3]。如此往復(fù),采集到一系列有價(jià)值的數(shù)據(jù)。
對(duì)于各檢測(cè)模塊,把采集到的數(shù)據(jù)根據(jù)各自的模塊號(hào)有序地發(fā)送到各數(shù)據(jù)匯集模塊。而在工作環(huán)境中,數(shù)據(jù)匯集模塊可以是多個(gè),不止一個(gè),對(duì)于同一個(gè)檢測(cè)模塊發(fā)過來的信號(hào),會(huì)被多個(gè)數(shù)據(jù)匯集模塊接收到,在數(shù)據(jù)處理中心收到多個(gè)數(shù)據(jù)匯集模塊發(fā)來的數(shù)據(jù)時(shí),重復(fù)的數(shù)據(jù)可以刪除。
同時(shí),多個(gè)數(shù)據(jù)匯集模塊的存在是很有好處的,因?yàn)闄z測(cè)模塊發(fā)出射頻信號(hào)的作用距離是有限的,對(duì)于一個(gè)比較大的工作環(huán)境,會(huì)很容易超出這個(gè)作用距離。分布多個(gè)數(shù)據(jù)匯集模塊可以有效地降低這個(gè)風(fēng)險(xiǎn),因?yàn)檫@個(gè)數(shù)據(jù)匯集模塊收不到時(shí),可以由其他的數(shù)據(jù)匯集模塊接收到。
實(shí)際上,從檢測(cè)模塊到數(shù)據(jù)匯集模塊這一步,相當(dāng)于把數(shù)據(jù)進(jìn)行了壓縮,減少了網(wǎng)絡(luò)有線傳送的流通量。而采用多個(gè)數(shù)據(jù)匯集模塊,相當(dāng)于提高了無線信號(hào)接收能力。
因?yàn)?,各檢測(cè)模塊都是根據(jù)時(shí)標(biāo)同步開啟的,射頻信號(hào)是根據(jù)模塊號(hào)有序發(fā)送的,所以,它們各自之間是不會(huì)相互沖突的。
首先各模塊打開,進(jìn)入就緒狀態(tài),等待時(shí)標(biāo)模塊發(fā)出的開始信號(hào)。
時(shí)標(biāo)模塊的工作流程如圖6所示。
圖6 時(shí)標(biāo)模塊的工作流程
時(shí)標(biāo)模塊發(fā)出的信息格式如圖7所示。
圖7 時(shí)標(biāo)模塊發(fā)出的信息格式
而各檢測(cè)模塊的工作流程如圖8所示。
圖8 各檢測(cè)模塊的工作流程
檢測(cè)模塊的信息格式如圖9所示。
圖9 檢測(cè)模塊的信息格式
因?yàn)楦鳈z測(cè)模塊根據(jù)模塊號(hào)延時(shí)了相應(yīng)的間隔,才開始干正事,所以,各檢測(cè)模塊發(fā)出的數(shù)據(jù)射頻是不會(huì)沖突的,它們相互間錯(cuò)開了,如圖10所示。
圖10 各檢測(cè)模塊發(fā)出的數(shù)據(jù)射頻錯(cuò)開
考慮到工作時(shí)間久了,會(huì)發(fā)生時(shí)間漂移,所以,工作了一天,讓它們和時(shí)標(biāo)模塊重新對(duì)表。
各數(shù)據(jù)匯集模塊工作流程如圖11所示。
數(shù)據(jù)處理中心將各個(gè)數(shù)據(jù)匯集模塊發(fā)來的信息,刪除重復(fù)的數(shù)據(jù),進(jìn)行整合,形成對(duì)整個(gè)環(huán)境的映像,不斷地記錄映像,就會(huì)形成一個(gè)時(shí)期環(huán)境的數(shù)據(jù)映像。
在實(shí)際操作中可以用nRF24L01作為無線發(fā)送模塊。為了減少時(shí)間漂移,檢測(cè)模塊、數(shù)據(jù)匯集模塊、時(shí)標(biāo)模塊應(yīng)采用高精度的有源晶振。
我們用32個(gè)檢測(cè)模塊,2個(gè)數(shù)據(jù)匯集模塊、1個(gè)時(shí)標(biāo)模塊、1個(gè)電腦主機(jī)進(jìn)行了小范圍的測(cè)試,效果是很好的。理論上,有500個(gè)觀察點(diǎn),每隔12 ms一個(gè)觀察點(diǎn)發(fā)送采集到的數(shù)據(jù),那么6 s就可以整個(gè)范圍掃描一遍,這是非常理想的方法。
圖11 各數(shù)據(jù)匯集模塊工作流程
各數(shù)據(jù)匯集模塊的數(shù)據(jù)格式如圖12所示。
圖12 各數(shù)據(jù)匯集模塊的數(shù)據(jù)格式
[1]李廣弟.單片機(jī)基礎(chǔ)[M].北京:北京航空航天大學(xué)出版社,1994.
[2]周立功.深入淺出Cortex-M3 LPC178x/177x[Z].廣州:廣州致遠(yuǎn)電子公司,2013.
[3]理查德·史蒂芬.TCP/IP協(xié)議詳解卷1[M].吳英,譯.北京:機(jī)械工業(yè)出版社,2008.