馬苗立,倪雪松,李香娜,張 莉
(1.華北科技學(xué)院 電子信息工程學(xué)院 北京 東燕郊 065201;2.華北科技學(xué)院 保衛(wèi)處 北京 東燕郊 065201)
隨著物聯(lián)網(wǎng)和計(jì)算機(jī)技術(shù)的迅速發(fā)展,我國的社會生產(chǎn)越來越智能化[1,2]。然而,在許多軍事或非軍事訓(xùn)練中,報(bào)靶依然采用人工報(bào)靶,這存在諸多問題如:對報(bào)靶者的依賴性比較大;報(bào)靶效率比較低下,不利于指導(dǎo)打靶人員射擊技術(shù)的提高;射擊場子彈橫飛,存在極大的安全隱患等。為了實(shí)現(xiàn)科技強(qiáng)軍推進(jìn)軍隊(duì)現(xiàn)代化,許多智能的設(shè)備被引入到部隊(duì)。為了結(jié)束人工報(bào)靶,一些部隊(duì)通過智能設(shè)備實(shí)現(xiàn)對靶位傳感器的遠(yuǎn)程控制,實(shí)現(xiàn)了打靶報(bào)靶的電子化[3]。但是這些設(shè)備往往是有線通信,需要昂貴的布線成本。一些研究者設(shè)計(jì)了無線通信設(shè)備避免了布線的代價(jià)[4],然而這些無線設(shè)備在復(fù)雜的山區(qū)等環(huán)境中很難保證網(wǎng)絡(luò)的穩(wěn)定性,并且這些網(wǎng)絡(luò)的通用型較差[5,6]。
為了減少對網(wǎng)絡(luò)穩(wěn)定性的依賴并增加其通用性,本文設(shè)計(jì)了一種基于nRF2401的標(biāo)靶數(shù)據(jù)透傳系統(tǒng),它擁有以下優(yōu)點(diǎn):①該協(xié)議設(shè)計(jì)了健全的無線透傳協(xié)議,保證了傳輸數(shù)據(jù)不丟失不重復(fù);②所設(shè)計(jì)的協(xié)議實(shí)現(xiàn)了一對多的通信傳輸,可以根據(jù)需求隨意組建網(wǎng)絡(luò)拓?fù)浣Y(jié)構(gòu);③設(shè)計(jì)了本地存儲機(jī)制,可以防止由于網(wǎng)絡(luò)的不穩(wěn)定性或者數(shù)據(jù)的擁擠造成的數(shù)據(jù)丟失。需要注意的是,本文設(shè)計(jì)的系統(tǒng)僅限于數(shù)據(jù)的傳輸,數(shù)據(jù)直接來自與現(xiàn)有的智能標(biāo)靶系統(tǒng)(河北石家莊某公司的生產(chǎn)的智能標(biāo)靶系統(tǒng))。
目前的部隊(duì)打靶一般配備多個靶位,最后數(shù)據(jù)匯總到一處(教官處)。本文所設(shè)計(jì)的標(biāo)靶數(shù)據(jù)透傳系統(tǒng)的模式是一對多的,即包含了一個主節(jié)點(diǎn)和多個從節(jié)點(diǎn),每一個從節(jié)點(diǎn)對應(yīng)一個靶位,主節(jié)點(diǎn)是數(shù)據(jù)的匯總節(jié)點(diǎn)。每個從節(jié)點(diǎn)與主節(jié)點(diǎn)之間建立連接,從節(jié)點(diǎn)之間不互通,具體拓?fù)浣Y(jié)構(gòu)如圖1所示。在工作過程中,主節(jié)點(diǎn)以一定的頻率依次向從節(jié)點(diǎn)發(fā)送帶有待傳數(shù)據(jù)的握手信息,從節(jié)點(diǎn)在收到主節(jié)點(diǎn)的握手信息后回復(fù)帶有待傳數(shù)據(jù)的應(yīng)答信息。握手信息和應(yīng)答信息里均攜帶著待傳送的數(shù)據(jù)。詳細(xì)的數(shù)據(jù)協(xié)議格式在第三部分進(jìn)行介紹。
圖1 系統(tǒng)網(wǎng)絡(luò)拓?fù)浣Y(jié)構(gòu)
主/從節(jié)點(diǎn)硬件由控制中心(單片機(jī)stm32f103r8t6),網(wǎng)絡(luò)單元(無線射頻模塊nrf2401與信號放大器)組成,還包括了硬件的ID標(biāo)識,RJ45有線網(wǎng)口(W4500)、RS232接口,RS485等一些外圍擴(kuò)展接口。
圖2 系統(tǒng)的硬件框圖
STM32單片機(jī)是目前主流的高性能低成本單片機(jī)[7],擁有充足的外設(shè)資源。本系統(tǒng)采用STM32作為主控芯片(MCU)。
nRF24L01是射頻收發(fā)芯片[8],載波是2.4G,芯片內(nèi)集成了頻率合成器、功率放大器、晶體振蕩器和調(diào)制器等功能模塊。nRF24L01有四種發(fā)射功率,其傳輸距離為15~50 m。為了擴(kuò)大通信距離,除nRF24L01內(nèi)置的放大器,系統(tǒng)還包含了外設(shè)放大器,可以根據(jù)需要選擇不同的型號,以滿足不通的通信距離需求。
主/從節(jié)點(diǎn)可以通過一些預(yù)留的外圍接口與應(yīng)用的其他環(huán)節(jié)連接,預(yù)留接口包括有線網(wǎng)口,一線制接口,RS484串口、RS232串口等。預(yù)留多種接口可以保證系統(tǒng)與多種標(biāo)靶傳感器對接。
為了保證每個節(jié)點(diǎn)都有一個全球唯一的網(wǎng)絡(luò)ID,本系統(tǒng)節(jié)點(diǎn)設(shè)置了節(jié)點(diǎn)的ID標(biāo)識,其網(wǎng)絡(luò)通信地址信息由ID標(biāo)識提供。本系統(tǒng)選擇的ID標(biāo)識芯片為DS2411芯片,該芯片可提供64位(8位家族碼+48位序列號+8位CRC校驗(yàn)碼)的全球唯一序列號[9-10]。本系統(tǒng)利用DS2401芯片中的48位序列號的低40位作為系統(tǒng)節(jié)點(diǎn)的網(wǎng)絡(luò)ID。
本地?cái)?shù)據(jù)存儲單元主要用于對本地?cái)?shù)據(jù)的暫時存儲。在一些條件惡劣,工況復(fù)雜多變的部隊(duì)環(huán)境,無線設(shè)備的網(wǎng)絡(luò)通信穩(wěn)定性很難保證。為了消除無線設(shè)備網(wǎng)絡(luò)的不穩(wěn)定性對整個系統(tǒng)帶來的不利影響,在本系統(tǒng)中設(shè)計(jì)了數(shù)據(jù)的本地存儲機(jī)制。所有接收的數(shù)據(jù)按照順序暫存到本地,當(dāng)網(wǎng)絡(luò)空閑或者穩(wěn)定的時候從本地存儲機(jī)制里調(diào)取待傳輸數(shù)據(jù)。主/從節(jié)點(diǎn)收發(fā)的數(shù)據(jù)可以通過主/從節(jié)點(diǎn)上預(yù)留的接口發(fā)送到下一個處理單元。同樣,其待發(fā)送的數(shù)據(jù)也來源于其預(yù)留的接口。
TDTS的難點(diǎn)之一是保證所傳輸?shù)臄?shù)據(jù)不丟失、不重發(fā)。為了保證系統(tǒng)數(shù)據(jù)準(zhǔn)備無誤的進(jìn)行傳輸,所提出的系統(tǒng)在本地暫存的基礎(chǔ)上設(shè)計(jì)了傳輸協(xié)議,協(xié)議格式如表1所示。
表1 協(xié)議格式
系統(tǒng)中主從節(jié)點(diǎn)擁有相同的協(xié)議格式,協(xié)議長度為32個字節(jié),其中第一個字節(jié)為節(jié)點(diǎn)待發(fā)送的數(shù)據(jù)包ID,第二個字節(jié)為節(jié)點(diǎn)已收到的數(shù)據(jù)包ID。發(fā)送和接收數(shù)據(jù)包ID是一組數(shù)據(jù)的標(biāo)簽,它們均在1~255之間順序循環(huán),其中發(fā)送數(shù)據(jù)包ID是本地待發(fā)送數(shù)據(jù)包的ID,接收數(shù)據(jù)包ID是本地接收到的數(shù)據(jù)包的ID。第三個字節(jié)為發(fā)送數(shù)據(jù)長度,是本地當(dāng)前待發(fā)送數(shù)據(jù)包所攜帶的待傳數(shù)據(jù)的長度,其值在0~29之間。發(fā)送的數(shù)據(jù)為當(dāng)前待發(fā)送數(shù)據(jù)包內(nèi)所攜帶的數(shù)據(jù)。打包時,若待傳數(shù)據(jù)長度M>29,則發(fā)送數(shù)據(jù)長度字節(jié)設(shè)為29,并按照順序選取29個數(shù)據(jù)進(jìn)行傳輸;若待傳數(shù)據(jù)長度M≤29,則設(shè)置發(fā)送數(shù)據(jù)長度為M,并將所有待傳數(shù)據(jù)打包;若待傳數(shù)據(jù)為0,則數(shù)據(jù)包第二個字節(jié)設(shè)為0。為了表述簡單,我們把主節(jié)點(diǎn)發(fā)送的數(shù)據(jù)包稱為握手?jǐn)?shù)據(jù)包,從節(jié)點(diǎn)發(fā)送的數(shù)據(jù)包成為應(yīng)答數(shù)據(jù)包。
本系統(tǒng)為了保證數(shù)據(jù)傳輸?shù)臏?zhǔn)確性,對網(wǎng)絡(luò)傳輸?shù)膮f(xié)議進(jìn)行了詳細(xì)的設(shè)計(jì),對于不同的網(wǎng)絡(luò)故障設(shè)置了不同的處理機(jī)制。為了更好的理解數(shù)據(jù)包的傳輸過程,將整個傳輸過程分為三種情況:主從節(jié)點(diǎn)間不間斷連續(xù)通信的正常情況,如圖3所示;主節(jié)點(diǎn)發(fā)送成功,從節(jié)點(diǎn)應(yīng)答失敗,如圖4所示;主節(jié)點(diǎn)發(fā)送不成功,如圖5所示。主/從節(jié)點(diǎn)的數(shù)據(jù)傳輸過程如下:
圖3 主從節(jié)點(diǎn)正常發(fā)送
圖4 主節(jié)點(diǎn)發(fā)送握手正常,從節(jié)點(diǎn)應(yīng)答不成功
圖5 主節(jié)點(diǎn)發(fā)送握手不成功
步驟1:主節(jié)點(diǎn)將發(fā)送地址切換到某一個從節(jié)點(diǎn)(即切換到準(zhǔn)備向其發(fā)送握手?jǐn)?shù)據(jù)包的從節(jié)點(diǎn)地址),按照表1所示的協(xié)議格式打包握手?jǐn)?shù)據(jù)包向該從節(jié)點(diǎn)(以下統(tǒng)稱從節(jié)點(diǎn))發(fā)送,其中發(fā)送數(shù)據(jù)包ID設(shè)置為當(dāng)前待向從節(jié)點(diǎn)發(fā)送的握手?jǐn)?shù)據(jù)包ID,接收數(shù)據(jù)包ID設(shè)置為已接收到的從節(jié)點(diǎn)的應(yīng)答數(shù)據(jù)包的ID。
步驟2:主節(jié)點(diǎn)發(fā)送數(shù)據(jù)及發(fā)送過程中的故障處理,分為以下三種情況:
① 從節(jié)點(diǎn)沒有接收到主節(jié)點(diǎn)發(fā)送的握手?jǐn)?shù)據(jù)包,從節(jié)點(diǎn)不做響應(yīng)(如圖5所示);
② 從節(jié)點(diǎn)接收到主節(jié)點(diǎn)發(fā)送握手?jǐn)?shù)據(jù)包,并且接收到的握手?jǐn)?shù)據(jù)包ID與已經(jīng)接收到的握手?jǐn)?shù)據(jù)包ID一樣(說明該握手?jǐn)?shù)據(jù)包在上一次傳輸時已經(jīng)接收到了),則從節(jié)點(diǎn)用上一次的應(yīng)答信息進(jìn)行應(yīng)答(即再次通知主節(jié)點(diǎn),該數(shù)據(jù)包信息已收到)(如圖4所示)。
③ 從節(jié)點(diǎn)接收到主節(jié)點(diǎn)發(fā)送的握手?jǐn)?shù)據(jù)包,并且當(dāng)前接收到的握手?jǐn)?shù)據(jù)包ID比已接收到的數(shù)據(jù)包ID大1,說明當(dāng)前接收到的是新的握手?jǐn)?shù)據(jù)包,則解析該握手?jǐn)?shù)據(jù)包所攜帶的數(shù)據(jù)信息,暫存到本地,等待進(jìn)一步的處理。同時將已接收的握手?jǐn)?shù)據(jù)包ID加1,將已發(fā)送的應(yīng)答數(shù)據(jù)包ID加1,并將從節(jié)點(diǎn)按照表1所示的協(xié)議格式打包數(shù)據(jù)包作為應(yīng)答數(shù)據(jù)包發(fā)送給主節(jié)點(diǎn)(如圖3所示)。
步驟3:主節(jié)點(diǎn)接收數(shù)據(jù)及接收過程的故障處理,該步驟分為以下四種情況:
① 在規(guī)定時間內(nèi)主節(jié)點(diǎn)沒有接收到步驟2中從節(jié)點(diǎn)發(fā)送的應(yīng)答數(shù)據(jù)包,此時,這節(jié)點(diǎn)認(rèn)為與步驟2中的從節(jié)點(diǎn)通信失敗。主節(jié)點(diǎn)切換到與下一個從節(jié)點(diǎn)進(jìn)行通信,等下一輪切換到該從節(jié)點(diǎn)繼續(xù)發(fā)送步驟1中的握手?jǐn)?shù)據(jù)包(如圖4~5所示)。
② 主節(jié)點(diǎn)接收到步驟2中從節(jié)點(diǎn)發(fā)送的應(yīng)答數(shù)據(jù)包,若該數(shù)據(jù)包為已接收的應(yīng)該數(shù)據(jù)包,則主節(jié)點(diǎn)丟棄該應(yīng)答數(shù)據(jù)包,并等待下一次輪候時,繼續(xù)發(fā)送步驟2中的握手?jǐn)?shù)據(jù)包;若應(yīng)答數(shù)據(jù)包為新數(shù)據(jù)包,則解析該握手?jǐn)?shù)據(jù)包所攜帶的數(shù)據(jù)信息,暫存到本地,等待進(jìn)一步的處理。同時將已接收的應(yīng)答數(shù)據(jù)包ID加1,將待發(fā)送握手?jǐn)?shù)據(jù)包ID加1。并切換到與下一個節(jié)點(diǎn)進(jìn)行通信(如圖3所示)。
需要注意的是,雖然無線通信的速度可以達(dá)到光速,但是nRF2401與單片機(jī)之間通過SPI接口進(jìn)行通信,這對于網(wǎng)絡(luò)通信是比較耗時的,為了給主從節(jié)點(diǎn)足夠的收發(fā)時間,保證網(wǎng)絡(luò)的穩(wěn)定性,建議主節(jié)點(diǎn)向從節(jié)點(diǎn)發(fā)送握手信息的間隔不要少于3毫秒。
為了驗(yàn)證所提出的系統(tǒng)的有效性,設(shè)計(jì)了以下兩個實(shí)驗(yàn)。其中,實(shí)驗(yàn)一為實(shí)驗(yàn)室測試,實(shí)驗(yàn)二是實(shí)際測試。
將所設(shè)計(jì)的系統(tǒng)按照圖6所示的模型進(jìn)行測試,兩臺PC機(jī)通過RS232與主/從節(jié)點(diǎn)相連,并進(jìn)行數(shù)據(jù)對傳。主節(jié)點(diǎn)以5ms的間隔向從節(jié)點(diǎn)發(fā)送握手信息。在實(shí)驗(yàn)過程中,通過調(diào)節(jié)放大器的放大倍數(shù)、外接功率放大器、加遮擋物和斷電等方式來獲得不同通信距離(能力)的網(wǎng)絡(luò)節(jié)點(diǎn)。如圖7所示。為了充分驗(yàn)證所設(shè)計(jì)的TDTS通信的穩(wěn)定性,本文做了7組實(shí)驗(yàn),實(shí)驗(yàn)結(jié)果如表2所示。其中,第一組實(shí)驗(yàn)是系統(tǒng)在正常情況下的通信情況,實(shí)現(xiàn)了數(shù)據(jù)無差錯的傳輸。第二組和第三組實(shí)驗(yàn)分別模擬了主從節(jié)點(diǎn)故障時,系統(tǒng)的通信情況。第四組實(shí)驗(yàn)?zāi)M了節(jié)點(diǎn)好時壞時系統(tǒng)的通信能力。第五組實(shí)驗(yàn),模擬了系統(tǒng)的應(yīng)對節(jié)點(diǎn)通信故障的能力。第六組和第七組實(shí)驗(yàn)?zāi)M了系統(tǒng)外接功率放大器擴(kuò)充通信距離的能力。從實(shí)驗(yàn)結(jié)果可以看出,對于主從節(jié)點(diǎn)的各種故障,系統(tǒng)具有足夠的應(yīng)對能力。
圖6 測試模型1
表2 測試結(jié)果
為了驗(yàn)證所設(shè)計(jì)系統(tǒng)的實(shí)際應(yīng)用的穩(wěn)定性。將所設(shè)計(jì)的標(biāo)靶數(shù)據(jù)透傳系統(tǒng)應(yīng)用到甘肅某部隊(duì)靶場。具體的應(yīng)用結(jié)構(gòu)如圖7所示,從節(jié)點(diǎn)1-6連接不同的靶位,其中一號靶位通過SPI接口采集數(shù)據(jù),2號靶位通過RS485采集數(shù)據(jù),其余靶位通過RS232接口采集數(shù)據(jù)。為了滿足實(shí)際需要,按照靶場規(guī)模,主節(jié)點(diǎn)在nRF24L01與天線之間級聯(lián)了兩級放大器,使通信距離達(dá)2 km。設(shè)備在該部隊(duì)正常運(yùn)行一年的時間,經(jīng)歷了不同天氣(晴,大風(fēng),大霧,雨、雪)情況。實(shí)驗(yàn)中系統(tǒng)均能正確傳輸靶位數(shù)據(jù)。本實(shí)驗(yàn)驗(yàn)證了所設(shè)計(jì)的系統(tǒng)在實(shí)際應(yīng)用中的有效性。
圖7 應(yīng)用實(shí)例拓?fù)浣Y(jié)構(gòu)
(1) 網(wǎng)絡(luò)的拓?fù)浣Y(jié)構(gòu)靈活,可根據(jù)需要隨意組建網(wǎng)絡(luò)結(jié)構(gòu)。
(2) 系統(tǒng)的數(shù)據(jù)本地暫存機(jī)制克服了無線網(wǎng)絡(luò)通信擁堵引起的數(shù)據(jù)丟失問題。同時,完善的數(shù)據(jù)通信協(xié)議避免了無線網(wǎng)絡(luò)通信不穩(wěn)定引起的漏傳、錯傳、重復(fù)傳等問題,保證了數(shù)據(jù)傳輸?shù)目煽啃浴?/p>
(3) 實(shí)驗(yàn)結(jié)果表明,所設(shè)計(jì)的系統(tǒng)可以保障數(shù)據(jù)傳輸?shù)目煽啃院头€(wěn)定性,通過級聯(lián)放大器的方法,可以擴(kuò)充傳輸距離,目前實(shí)際中已擴(kuò)充至2 km。