(西南科技大學(xué) 信息工程學(xué)院,四川 綿陽 621010)
橋梁在當(dāng)今交通運(yùn)輸中起著重要作用。為了保障橋梁結(jié)構(gòu)的安全性及穩(wěn)定性,橋梁的結(jié)構(gòu)健康監(jiān)測是非常有必要的。由于橋梁結(jié)構(gòu)健康監(jiān)測大多采用分布式系統(tǒng),因此,精確的時(shí)間同步技術(shù)和統(tǒng)一的時(shí)鐘標(biāo)準(zhǔn)對分布式多傳感器數(shù)據(jù)融合及分析非常重要。文獻(xiàn)[1]和文獻(xiàn)[2]描述了時(shí)間同步技術(shù)對于橋梁結(jié)構(gòu)健康監(jiān)測的必要性及精確性。除此之外,時(shí)間同步技術(shù)在環(huán)境監(jiān)測[3-4]、醫(yī)療監(jiān)護(hù)[5]和數(shù)據(jù)融合[6]等應(yīng)用方面,同樣起到了至關(guān)重要的作用。因此,時(shí)間同步技術(shù)在無線傳感器網(wǎng)絡(luò)許多應(yīng)用領(lǐng)域均具有重要的研究意義。
近年來,針對不同領(lǐng)域的實(shí)際應(yīng)用環(huán)境,國內(nèi)外學(xué)者提出了許多時(shí)間同步算法及改進(jìn)算法[7-12],文獻(xiàn)[7]提出了一種參考廣播時(shí)間同步算法(Reference Broadcast Synchronization,RBS),該算法采用只記錄接收節(jié)點(diǎn)時(shí)間戳的方式,避免了發(fā)送節(jié)點(diǎn)引入的延遲誤差,從而取得較高的時(shí)間同步精度,但存在計(jì)算量復(fù)雜等問題。文獻(xiàn)[8]提出了一種雙向成對時(shí)間同步算法TPSN(Timing-Sync Protocol for Sensor Network),該算法采用分級雙向的同步方式,減小通信過程中延遲因素,同樣達(dá)到了較高的同步精度,但是算法本身沒有對節(jié)點(diǎn)時(shí)鐘漂移進(jìn)行估計(jì)及補(bǔ)償。文獻(xiàn)[9]提出了一種泛洪時(shí)間同步算法(Flooding Time Synchronization Protocol,FTSP),該算法采用單向廣播消息及在MAC層標(biāo)記時(shí)間戳的方式,減小了收、發(fā)節(jié)點(diǎn)通信過程中的延遲誤差,整體性能優(yōu)于RBS算法和TPSN算法。文獻(xiàn)[10]和文獻(xiàn)[11]都在CC2530平臺上,采用SFD(Start of Frame Delimiter)硬件捕獲機(jī)制對FTSP算法進(jìn)行實(shí)現(xiàn),試驗(yàn)結(jié)果表明單跳網(wǎng)絡(luò)中平均同步誤差分別為5.82 μs和5.613 μs,但是都沒有對多跳網(wǎng)絡(luò)進(jìn)行同步測試,同時(shí)也沒有考慮異常數(shù)據(jù)對算法同步精度及穩(wěn)定性的影響問題。文獻(xiàn)[12]針對異常數(shù)據(jù)對算法同步精度的影響,提出了有限加權(quán)最小二乘的FTSP算法,并在NS2平臺上進(jìn)行仿真試驗(yàn),試驗(yàn)結(jié)果表明該算法有效提高了時(shí)間同步精度,但是不具有實(shí)際工程應(yīng)用價(jià)值等問題。
本文針對上述文獻(xiàn)[10]~文獻(xiàn)[12]所存在的問題、橋梁結(jié)構(gòu)健康監(jiān)測無線數(shù)據(jù)同步采集的高精度需求問題,以及影響時(shí)間同步精度的幾種延遲因素問題[13],設(shè)計(jì)了一種基于SFD硬件捕獲機(jī)制的改進(jìn)FTSP時(shí)間同步算法。該算法通過硬件捕獲的方式有效地降低了收、發(fā)節(jié)點(diǎn)通信過程中的延遲因素;采用了迭代加權(quán)最小二乘法對實(shí)時(shí)更新的觀測數(shù)據(jù)對進(jìn)行線性擬合,有效解決了采用傳統(tǒng)最小二乘擬合時(shí),異常數(shù)據(jù)點(diǎn)對時(shí)間同步精度及穩(wěn)定性的影響,為后續(xù)的無線傳感器網(wǎng)絡(luò)橋梁結(jié)構(gòu)健康監(jiān)測無線數(shù)據(jù)同步采集提供了可靠保障。
經(jīng)典的FTSP是基于Sender-Receiver的時(shí)間同步算法[9],它是使用單向廣播消息實(shí)現(xiàn)收、發(fā)節(jié)點(diǎn)之間的時(shí)間同步,最終目的是使整個(gè)網(wǎng)絡(luò)實(shí)現(xiàn)時(shí)間同步。經(jīng)典FTSP算法廣播時(shí)間同步消息形式如圖1所示。
圖1 經(jīng)典FTSP算法時(shí)間同步消息廣播形式
經(jīng)典FTSP算法是從發(fā)送節(jié)點(diǎn)的前導(dǎo)碼字節(jié)Preamble開始無線廣播時(shí)間同步消息,在SYNC字節(jié)發(fā)送完成后,在MAC層中給以后發(fā)送的每個(gè)字節(jié)標(biāo)記時(shí)間戳。同理,接收節(jié)點(diǎn)在接收完SYNC字節(jié)后,同樣給以后接收的每個(gè)字節(jié)標(biāo)記上時(shí)間戳。這樣,在收、發(fā)節(jié)點(diǎn)處便可獲得多個(gè)時(shí)間戳。其中,CRC字節(jié)用于驗(yàn)證消息是否已損壞。當(dāng)時(shí)間同步消息傳輸完成后,接收節(jié)點(diǎn)通過對捕獲的時(shí)間戳進(jìn)行處理,便可獲得多個(gè)時(shí)間對(全局時(shí)間,本地時(shí)間)。最后采用最小二乘法對時(shí)鐘漂移進(jìn)行線性擬合估計(jì)及補(bǔ)償,使得收、發(fā)節(jié)點(diǎn)時(shí)間達(dá)到同步。
FTSP時(shí)間同步算法需要些通過線性回歸算法對節(jié)點(diǎn)的時(shí)鐘漂移進(jìn)行估計(jì)及補(bǔ)償。由一元線性回歸模型[14],可得線性回歸方程為
y=a+bx+ε
(1)
式中,a,b為方程的回歸系數(shù);a為截距;b為斜率。在FTSP算法中,a為時(shí)鐘偏移(offset);b為時(shí)鐘漂移(skew);ε為服從正態(tài)分布的回歸值與測量值之間的隨機(jī)誤差。
將式(1)回歸方程改寫為向量的形式,表示如下。
Y=a+bx+ε=Xβ+ε
(2)
式中,β=(a,b)′為未知估計(jì)參數(shù),X=(1,x)。
由式(2)可知,需要對未知參數(shù)β=(a,b)′進(jìn)行估計(jì)。經(jīng)典的FTSP算法采用的估計(jì)方法為普通最小二乘法(Ordinary Least Squares,OLS)[14,15],該方法主要是通過最小化殘差平方和的方式,擬合出數(shù)據(jù)的最佳匹配直線,從而實(shí)現(xiàn)對未知參數(shù)的估計(jì)。令殘差平方和為目標(biāo)函數(shù)Q(β),則有
(3)
對式(3)進(jìn)行求導(dǎo),得到βOLS的估計(jì)方程為
(4)
(5)
(6)
(7)
較之經(jīng)典的FTSP算法,設(shè)計(jì)了一種基于SFD硬件捕獲機(jī)制的改進(jìn)FTSP算法,該算法采用了硬件捕獲及迭代加權(quán)最小二乘估計(jì)的方式,減少了傳輸過程中延遲因素及異常數(shù)據(jù)點(diǎn)所帶來的影響,從而有效地提高了時(shí)間同步精度及穩(wěn)定性。改進(jìn)FTSP算法廣播時(shí)間同步消息形式如圖2所示。
圖2 SFD的FTSP算法時(shí)間同步消息廣播形式
為實(shí)現(xiàn)時(shí)間同步,在一個(gè)給定信息中必須存在一個(gè)根節(jié)點(diǎn)(點(diǎn)對點(diǎn)單跳網(wǎng)絡(luò)時(shí),即為發(fā)送節(jié)點(diǎn)),發(fā)送節(jié)點(diǎn)在遇到SFD字節(jié)時(shí),觸發(fā)SFD中斷,同時(shí)在該字節(jié)的末尾標(biāo)記一個(gè)發(fā)送時(shí)間戳TG,并將該時(shí)間戳插入到MAC層的時(shí)間同步消息中發(fā)送出去。同理,接收節(jié)點(diǎn)在接收消息時(shí),遇到SFD字節(jié)時(shí),同樣觸發(fā)SFD中斷,并在該字節(jié)末尾標(biāo)記一個(gè)本地接收時(shí)間戳TL。當(dāng)一條時(shí)間同步消息發(fā)送完成時(shí),可以獲得一組時(shí)間對(TG,TL)。
之后,采用周期性廣播消息的方式,獲取更多的時(shí)間對,用來計(jì)算本地時(shí)鐘和全局時(shí)鐘的時(shí)鐘偏移;對于計(jì)算所獲得的若干個(gè)時(shí)鐘偏移,采用迭代加權(quán)最小二乘法來估測接收節(jié)點(diǎn)的本地時(shí)鐘漂移;根據(jù)擬合結(jié)果,對接收節(jié)點(diǎn)本地時(shí)鐘進(jìn)行補(bǔ)償及調(diào)整,使得收、發(fā)節(jié)點(diǎn)時(shí)間達(dá)到同步。
經(jīng)典的FTSP算法,采用普通最小二乘法線性擬合估計(jì)的時(shí)鐘漂移時(shí),異常數(shù)據(jù)點(diǎn)會對擬合曲線造成較大的誤差干擾,影響時(shí)間同步精度及其穩(wěn)定性,因此,抑制或消除異常數(shù)據(jù)點(diǎn)對FTSP算法的影響顯得非常必要。
為了能夠有效地抑制異常數(shù)據(jù)點(diǎn)對FTSP 算法同步精度及穩(wěn)定性的影響,對其進(jìn)行了改進(jìn),采用了一種迭代加權(quán)最小二乘法(Iteratively Reweighted Least Squares,IRLS)[15]對時(shí)鐘漂移回歸系數(shù)進(jìn)行估計(jì)。該方法主要思想是:根據(jù)回歸殘差的大小合理確定各數(shù)據(jù)點(diǎn)的權(quán)值ωi,對于殘差值較大的數(shù)據(jù)點(diǎn)分配較小的權(quán)值,對于殘差值較小的數(shù)據(jù)點(diǎn)分配較大的權(quán)值。權(quán)值合理確定完畢后,再建立加權(quán)最小二乘估計(jì)方程,最后通過反復(fù)迭代改進(jìn)各權(quán)值的系數(shù),直至達(dá)到試驗(yàn)理想結(jié)果。
令優(yōu)化后的目標(biāo)函數(shù)Q(β)為
Q(β)=∑ρ((Yi-Xiβ)2)=∑ωi(Yi-Xiβ)2=min
(8)
對式(8)目標(biāo)函數(shù)進(jìn)行求導(dǎo),得到βIRLS的估計(jì)方程。
∑φ(ri)Xi=0
(9)
為了使IRLS估計(jì)具有穩(wěn)健性,對殘差進(jìn)行標(biāo)準(zhǔn)化,可得
(10)
式中,s為殘差尺度;med表示取中位數(shù)。
令殘差權(quán)重ωi=φ(ri/s)/ri,將式(10)標(biāo)準(zhǔn)化殘差ui代入式(9)估計(jì)方程中得
(11)
將式(11)向量化之后得
XTω·u=XTω·ε=0
(12)
將式(2)代入式(12)得
XTωY=XTωXβ
(13)
求得βIRLS為
βIRLS=(XTωX)-1XTωY
(14)
為了對改進(jìn)FTSP算法進(jìn)行試驗(yàn)驗(yàn)證,對試驗(yàn)的硬件開發(fā)平臺及軟件程序進(jìn)行了設(shè)計(jì)。
試驗(yàn)硬件平臺主要采用的是TI公司生產(chǎn)的CC2530芯片,該芯片是一款符合ZigBee標(biāo)準(zhǔn)的片上系統(tǒng)(SoC)芯片,它具有優(yōu)良的射頻收發(fā)性能及增強(qiáng)型的8051 MCU。利用CC2530芯片作為本試驗(yàn)算法實(shí)現(xiàn)的解決方案,不但能夠有效地降低節(jié)點(diǎn)的成本及體積,而且更具有實(shí)際應(yīng)用價(jià)值。傳感器收、發(fā)節(jié)點(diǎn)硬件平臺結(jié)構(gòu)框圖如圖3所示。
圖3 傳感器收、發(fā)節(jié)點(diǎn)硬件平臺結(jié)構(gòu)框圖
由圖3可知,傳感器收、發(fā)節(jié)點(diǎn)硬件平臺主要由CC2530芯片、傳感器擴(kuò)展板、電源底板、串口、顯示屏和天線等組成。
針對硬件平臺的操作需要通過軟件設(shè)計(jì)實(shí)現(xiàn)的需求,本試驗(yàn)使用IAR8.1工具作為開發(fā)環(huán)境對算法進(jìn)行了軟件設(shè)計(jì)??傮w程序設(shè)計(jì)流程圖如圖4所示。
針對單跳及多跳網(wǎng)絡(luò)同步過程中的根節(jié)點(diǎn)及非參考路由節(jié)點(diǎn)工作性質(zhì)的不同,由圖4可知,本實(shí)驗(yàn)將軟件設(shè)計(jì)分為了廣播和同步兩個(gè)部分。
圖4 軟件設(shè)計(jì)程序流程圖
廣播部分程序設(shè)計(jì)描述為:① 對CC2530芯片、系統(tǒng)配置資源及時(shí)間同步消息包序列號seqnum進(jìn)行初始化;② 啟動(dòng)定時(shí)器定時(shí)廣播周期為30 s,定時(shí)時(shí)間到,則廣播時(shí)間同步消息包(包含序列號seqnum和本地時(shí)間戳Tstamp);③ 判斷廣播時(shí)間同步消息包是否損壞;④ 當(dāng)判斷時(shí)間同步消息包完整無損時(shí),則表示成功廣播一次時(shí)間同步消息包,同步包序列號seqnum加1,以此周期循環(huán)便可實(shí)現(xiàn)所提算法的廣播部分。
同步部分程序設(shè)計(jì)描述為:① 當(dāng)接收到廣播時(shí)間同步消息包(收到時(shí)刻的序列號seqnum_R)時(shí),判斷接收的時(shí)間同步消息包是否為最新的序列號;② 當(dāng)判斷為最新序列號的同步消息包時(shí),則計(jì)算本節(jié)點(diǎn)與廣播節(jié)點(diǎn)的時(shí)鐘偏移;③ 將計(jì)算得到的數(shù)值保存到實(shí)時(shí)更新的數(shù)據(jù)對(time,offset)數(shù)組中,當(dāng)數(shù)組長度≥8時(shí),采用迭代加權(quán)最小二乘法對實(shí)時(shí)更新的數(shù)據(jù)對進(jìn)行線性擬合估計(jì);④ 對擬合估計(jì)后的時(shí)鐘漂移進(jìn)行補(bǔ)償,最終提高了本地節(jié)點(diǎn)與廣播節(jié)點(diǎn)的時(shí)間同步精度及穩(wěn)定性。
為了驗(yàn)證改進(jìn)FTSP算法的有效性,對最小二乘法估計(jì)(OLS)和迭代加權(quán)最小二乘法估計(jì)(IRLS)分別在點(diǎn)對點(diǎn)單跳網(wǎng)絡(luò)和多跳網(wǎng)絡(luò)完成試驗(yàn)測試,試驗(yàn)環(huán)境和參數(shù)為:常溫室內(nèi)環(huán)境,傳感器節(jié)點(diǎn)使用3.3 V直流供電,無線傳輸距離為1 m,單次試驗(yàn)時(shí)間為30 min。
點(diǎn)對點(diǎn)單跳網(wǎng)絡(luò)試驗(yàn)是節(jié)點(diǎn)時(shí)間同步性能的一個(gè)重要指標(biāo),為了驗(yàn)證改進(jìn)FTSP算法的有效性,在上述試驗(yàn)環(huán)境下進(jìn)行了多次試驗(yàn),選取試驗(yàn)較好的一組數(shù)據(jù),利用Matlab軟件進(jìn)行同步誤差計(jì)算及繪圖,得到圖5所示的點(diǎn)對點(diǎn)單跳網(wǎng)絡(luò)同步中,F(xiàn)TSP算法改進(jìn)前及改進(jìn)后的試驗(yàn)結(jié)果對比圖。
圖5 單跳網(wǎng)絡(luò)FTSP算法改進(jìn)前后試驗(yàn)結(jié)果對比圖
由圖5可知,5 min前,同步誤差幅度波動(dòng)較大,這里的同步誤差原因是由傳感器節(jié)點(diǎn)本身晶振的不穩(wěn)定及算法補(bǔ)償性能決定的。5 min后,同步誤差收斂于穩(wěn)定的范圍內(nèi)(圖5中放大的小坐標(biāo)圖),改進(jìn)后的FTSP算法(IRLS估計(jì))與改進(jìn)前的FTSP算法(OLS估計(jì))相比,同步誤差有了很大的降低,且穩(wěn)定性也有所提高。對圖5試驗(yàn)數(shù)據(jù)進(jìn)行統(tǒng)計(jì)分析,得到如表1所示的單跳網(wǎng)絡(luò)FTSP算法改進(jìn)前后誤差對比統(tǒng)計(jì)表。
表1 單跳網(wǎng)絡(luò)FTSP算法改進(jìn)前后誤差對比統(tǒng)計(jì)表
由表1分析可知,單跳網(wǎng)絡(luò)同步0~5 min時(shí),同步誤差幅度較大,主要由兩節(jié)點(diǎn)初始同步時(shí)晶振不穩(wěn)定所造成。同步5 min之后,時(shí)鐘偏移和時(shí)鐘漂移開始共同補(bǔ)償,誤差開始收斂,并趨于穩(wěn)定。此時(shí)可以看出單跳網(wǎng)絡(luò)中,改進(jìn)前FTSP算法(OLS估計(jì)),最大同步誤差為14 μs,最小同步誤差為1 μs,平均同步誤差為5.515 μs;而改進(jìn)后的FTSP算法(IRLS估計(jì)),最大同步誤差為5 μs,最小同步誤差為1 μs,平均同步誤差為3.148 μs。改進(jìn)后的FTSP算法與改進(jìn)前的FTSP算法相比較,最大同步誤差降低了64.29%,平均同步誤差降低了42.92%,誤差波動(dòng)較平穩(wěn)。表明了改進(jìn)后的FTSP算法在單跳網(wǎng)絡(luò)中,很好地抑制了異常數(shù)據(jù)點(diǎn)對同步精度及穩(wěn)定性的影響。
由上述試驗(yàn)結(jié)果可知,改進(jìn)的FTSP算法在點(diǎn)對點(diǎn)單跳網(wǎng)絡(luò)中很好地抑制了異常數(shù)據(jù)對同步精度的影響,為了進(jìn)一步驗(yàn)證改進(jìn)FTSP算法在橋梁結(jié)構(gòu)健康監(jiān)測的多跳網(wǎng)絡(luò)中時(shí)間同步效果及異常數(shù)據(jù)對同步精度的影響,根據(jù)橋梁結(jié)構(gòu)形狀,選取了4個(gè)傳感器節(jié)點(diǎn)組成的3跳鏈狀網(wǎng)絡(luò)拓?fù)浣Y(jié)構(gòu)進(jìn)行多次試驗(yàn),選取試驗(yàn)較好的一組數(shù)據(jù),利用Matlab軟件進(jìn)行同步誤差計(jì)算及繪圖,得到如圖6所示的多跳網(wǎng)絡(luò)同步中,F(xiàn)TSP算法改進(jìn)前及改進(jìn)后的試驗(yàn)結(jié)果對比圖。
圖6 多跳網(wǎng)絡(luò)FTSP算法改進(jìn)前后試驗(yàn)結(jié)果對比圖
由圖6可知,當(dāng)同步誤差收斂后,改進(jìn)后的FTSP算法(IRLS估計(jì))和改進(jìn)前的FTSP算法(OLS估計(jì))相比,同步誤差同樣有了很大的降低。對圖6試驗(yàn)數(shù)據(jù)進(jìn)行統(tǒng)計(jì)分析,得到如表2所示的多跳網(wǎng)絡(luò)FTSP算法改進(jìn)前后誤差對比統(tǒng)計(jì)表。
表2 多跳網(wǎng)絡(luò)FTSP算法改進(jìn)前后誤差對比統(tǒng)計(jì)表
由表2分析可知,3跳網(wǎng)絡(luò)同步5 min之后,誤差趨于穩(wěn)定范圍內(nèi)。此時(shí)可以看出3跳網(wǎng)絡(luò)中,改進(jìn)前FTSP算法(OLS估計(jì)),最大同步誤差為31 μs,最小同步誤差為1 μs,平均同步誤差為12.668 μs;而改進(jìn)后的FTSP算法(IRLS估計(jì)),最大同步誤差為18 μs,最小同步誤差為1 μs,平均同步誤差為9.167 μs。改進(jìn)后的FTSP算法與改進(jìn)前的FTSP算法相比較,最大同步誤差降低了41.94%,平均同步誤差降低了27.64%,誤差波動(dòng)較平穩(wěn)。表明了改進(jìn)后的FTSP算法在多跳網(wǎng)絡(luò)中,同樣很好地抑制了異常數(shù)據(jù)點(diǎn)對同步精度及穩(wěn)定性的影響。
本文在采用最小二乘估計(jì)的經(jīng)典FTSP算法上進(jìn)行了改進(jìn),設(shè)計(jì)一種基于SFD硬件捕獲機(jī)制的迭代加權(quán)最小二乘估計(jì)FTSP時(shí)間同步算法。該算法通過硬件捕獲的方式有效地減少了發(fā)送、訪問、傳輸和接收等延遲誤差,以及通過迭代加權(quán)最小二乘估計(jì)有效地抑制了異常數(shù)據(jù)的干擾。并在同樣的試驗(yàn)環(huán)境下,對改進(jìn)前后的FTSP算法,分別在單跳網(wǎng)絡(luò)和多跳網(wǎng)絡(luò)中進(jìn)行同步測試。
試驗(yàn)結(jié)果表明,在單跳網(wǎng)絡(luò)和多跳網(wǎng)絡(luò)中,與經(jīng)典的FTSP算法相比,改進(jìn)FTSP算法均明顯地提高了時(shí)間同步精度及穩(wěn)定性。正如文獻(xiàn)[1]所描述的橋梁結(jié)構(gòu)健康監(jiān)測可以接受時(shí)間同步誤差小于1 ms,滿足了橋梁結(jié)構(gòu)健康監(jiān)測無線傳感器網(wǎng)絡(luò)同步數(shù)據(jù)采集高精度的需求,未來將會從低功耗方面對算法進(jìn)行研究。