楊 雙
(深圳市遠東華強導航定位有限公司,河北 石家莊050081)
隨著北斗衛(wèi)星導航系統(tǒng)的不斷發(fā)展和完善,北斗三號[1]報文通信系統(tǒng)解決了北斗一號和北斗二號報文通信功能存在的局限性,北斗三號的短報文能力,與北斗二號相比有了進一步的提升,每次可達1 000個漢字,還可以傳輸圖像、語音等內容,并支持每次560 bit(40個漢字)的全球通信能力[2]。
原來北斗二號通信服務容量最多只有128 字節(jié),這對于傳輸圖片、語音等大容量數(shù)據(jù)幾乎不可能。自北斗三號衛(wèi)星導航系統(tǒng)建設以來,北斗短報文通信服務能力有了顯著的提升。而且各行各業(yè)對使用北斗傳輸圖片、語音等大容量數(shù)據(jù)的需求越來越多,例如在發(fā)生森林災害時,將森林失火照片傳遞到指揮管理中心,以便指揮中心根據(jù)災情制定合理的救援方案;在智慧旅游行業(yè),驢友們在移動信號差的沙漠、山谷等地,相互之間可以使用北斗短報文通信傳遞經歷的風景;在石油勘探行業(yè),利用北斗短報文通信可以將油井的狀態(tài)數(shù)據(jù)傳遞給監(jiān)控平臺,以供生產監(jiān)控平臺進行監(jiān)控和分析,避免油井爆炸等災害的發(fā)生。
本文在探究傳統(tǒng)丟包重傳機制基礎上,提出了一種用于北斗大容量通信的丟包重傳機制,該機制利用北斗收發(fā)終端陣列部署提高北斗短報文通信的時效性,運用丟包重傳機制使得數(shù)據(jù)傳輸更可靠,提高了北斗短報文通信成功率,滿足各行各業(yè)使用北斗傳輸語音、圖片等大容量數(shù)據(jù)的迫切要求,提高北斗應用的廣泛性。
北斗短報文通信[3]作為北斗三號最具特色的服務,可以直接通過衛(wèi)星轉發(fā)實現(xiàn)點對點、點對多點、兼收下屬信息等服務,具有全天候、跨地域、收發(fā)業(yè)務簡單等特點。短報文通信服務包括區(qū)域短報文通信和全球短報文通信兩種。區(qū)域短報文通信利用3顆GEO衛(wèi)星實現(xiàn),具備報文通信及位置報告、應急搜救功能,報文最長長度為1 000個漢字。全球短報文通信利用14顆MEO衛(wèi)星實現(xiàn)覆蓋全球的報文通信服務,報文長度最長40個漢字[4]。
基于北斗短報文的通信服務已在船舶運輸、公路交通、鐵路運輸、海上作業(yè)、漁業(yè)作業(yè)、森林火災預防以及環(huán)境管理監(jiān)測等領域得到了廣泛的應用,覆蓋部隊、公安及海關等其他有特殊指揮調度要求的單位,產生顯著的經濟效應和社會效應。以森林防火、救災減災為例,北斗短報文應急通信技術服務的應用,不僅可以準確及時上報和共享災情信息,還顯著提高了救災減災的決策部署能力和反應能力[5]。
隨著北斗三號系統(tǒng)的建設,北斗短報文通信相比于北斗二號,在通信容量上提升了近10倍,既能傳輸文字,還可傳輸語音和圖片,尤其是在抗震救災等惡劣環(huán)境中,可以通過語音快速將現(xiàn)場情況上報,還可以通過圖片展示災區(qū)的破壞程度。若要提高通信質量,就需要解決北斗大容量通信中丟包問題。針對此問題,本文提出了一種用于北斗大容量通信的丟包重傳機制的實現(xiàn),可實現(xiàn)北斗在圖片、語音等大容量通信中的廣泛應用。
基于北斗的短報文通信服務向用戶提供了短報文通信功能,每條短報文所能發(fā)送的字節(jié)數(shù)有限,因此,一條長報文數(shù)據(jù)需要拆分成多條短報文數(shù)據(jù)后才能由北斗發(fā)送終端逐條發(fā)送給北斗接收終端。北斗接收終端只有收全所有短報文數(shù)據(jù)后,才能重組還原出原始的長報文數(shù)據(jù)。北斗短報文通信屬于無線通信,無線通信信道容易受到外部環(huán)境干擾,使終端之間的數(shù)據(jù)傳輸不可避免地存在數(shù)據(jù)報文丟失或誤碼的情況。
傳統(tǒng)的處理方法是:① 發(fā)送端配備一臺指揮機,接收端配備下屬用戶,所有發(fā)送都由指揮機進行,丟包后重傳也由單一指揮機來處理,效率較低,而且在進行丟包重傳時,發(fā)送端不能執(zhí)行其他的發(fā)送任務。② 接收端接收數(shù)據(jù)后,按照北斗短報文格式解析出電文內容,并按照包頭標識的子包序號組裝成長報文數(shù)據(jù),組包成功后向發(fā)送端發(fā)送信息內容為0的響應包,表示數(shù)據(jù)包完成接收無子包丟失;若組包不成功,存在數(shù)據(jù)子包缺失,根據(jù)解析過程中包頭標識信息定位丟失子包序號,并向發(fā)送端發(fā)送重傳的包序號,同時在預計時間內沒能接收到全部子包,則重復補包操作,最多重復3次;若仍不成功,則放棄本次數(shù)據(jù)包補發(fā),轉而執(zhí)行其他數(shù)據(jù)傳輸流程[6-7]。
這種傳統(tǒng)的丟包重傳機制,能夠在一定程度上提高通信鏈路的可靠性。但是對于包數(shù)較多,大容量數(shù)據(jù)傳輸?shù)那闆r下,通信效率無法得到保證,而且是在單一發(fā)送終端實現(xiàn),通過單一發(fā)送終端按照服務頻度發(fā)送數(shù)據(jù)包,如果發(fā)生丟包重傳,則單一發(fā)送終端丟包重傳。采取這種方式,發(fā)送數(shù)據(jù)包較費時,而且成功率較低,用戶的體驗效果較差。有的方案采用了多個終端陣列,但是對于終端陣列使用分配以及丟包重傳也是采取機械式的方式,沒有合理利用通信鏈路資源。
下面對兩種方式傳輸大容量數(shù)據(jù)所需時間進行比較:
根據(jù)不同的IC卡,北斗三號全球短報文通信頻度預估主要分為1 s、5 s、30 s和60 s,由于全球用戶容量較小,1 s的卡幾乎不發(fā)放,5 s的卡只限特定用戶申請和發(fā)放,大部分普通用戶只能申請30 s和60 s的卡。
按能申請到的最高頻度5 s的卡來計算,如果發(fā)送一張1 MB的圖片,共需要耗時:(1×1 024×1 024×8/14 000)×5=2 995 s=0.8 h,考慮到14 000 bit不可能全部用于傳輸有效數(shù)據(jù),估計傳輸時間在1 h左右。
同樣的數(shù)據(jù)容量如果用30 s的頻度進行傳輸,傳輸耗時則為6 h。
如果采用終端陣列的方案將極大地提高通信帶寬,如果采用32陣列,則傳輸1 MB的數(shù)據(jù)量,5 s卡耗時約0.025 h(1.5 min),30 s卡耗時約0.188 h(11.28 min)。
通過表1可以看出,本文介紹的一種實現(xiàn)北斗大容量數(shù)據(jù)傳輸,在一定程度上解決了丟包影響,而且通信效率和通信容量得到大幅度提升,廣泛應用于各行各業(yè)。
表1 數(shù)據(jù)傳輸量統(tǒng)計表
發(fā)送端發(fā)送分包,根據(jù)分包總個數(shù)選擇終端陣列中的終端。假設終端陣列為N個,共M個任務,第1個任務需要發(fā)送X1個數(shù)據(jù)包,第2個任務需要發(fā)送X2個數(shù)據(jù)包,第M個任務需要發(fā)送Xm個數(shù)據(jù)包。則發(fā)送端對于北斗終端的分配如下:
(1) 如果X1>N,即第一個任務發(fā)送包個數(shù)大于終端陣列,則按照以下分配發(fā)送終端:
北斗終端1傳輸?shù)?包,第N+1,第2N+1,…,第X1-N包;
北斗終端2傳輸?shù)?包,第N+2,第2N+2,…,第X1+1-N包;
以此類推,北斗終端N傳輸?shù)贜包,第2N包,第3N包,…,第X1包(3N 第一個任務完成后,再執(zhí)行第二個任務。 (2) 如果X1+X2+…+Xp≤N(其中P 北斗終端1傳輸[任務1]第1包; 北斗終端2傳輸[任務1]第2包; 以此類推,北斗終端X傳輸[任務1]第X1包。 北斗終端X+1,傳輸[任務2]第1包; 北斗終端X+2,傳輸[任務2]第2包; 以此類推,北斗終端N,傳輸[任務P]第Xp包。 如果是丟包重傳數(shù)據(jù)包[5],則與上述北斗終端分配原理相同。 北斗導航系統(tǒng)在通信時每次傳輸數(shù)量必須限制在14 000 bit以內,因此在進行大容量數(shù)據(jù)傳輸時,需要對其進行分包傳輸。具體是把大數(shù)據(jù)包拆分為系統(tǒng)所允許傳輸數(shù)據(jù)量n個字節(jié)的小數(shù)據(jù)包,然后每個小的數(shù)據(jù)包加上相對應的包頭,包頭中含有數(shù)據(jù)的序列信息,將分包依次發(fā)送出去。接收端在接收到各個數(shù)據(jù)包后,對其進行對比驗證,確認所有數(shù)據(jù)包是否完全接收,完全接收的數(shù)據(jù)包合并分割前的數(shù)據(jù),未完全接收的啟動丟包重傳機制[6]。 北斗三號短報文區(qū)域通信能力可達每次14 000 bit(1 000個漢字),既能傳輸文字,也可以傳輸圖片,并支持560 bit/次(40個漢字)的全球通信能力[7]。 以一張245 kB的圖片,頻度為5 s,通過區(qū)域短報文通信來計算: 245 kB=245×1 024 B=245×1 024×8=2 007 040 bit; 通信次數(shù):M(總包數(shù))=2 007 040/14 000≈144次(144個分包); 144×5=720 s=12 min。 為了縮短發(fā)送所需的時間,采用北斗終端通信陣列,即: 令k=mod(M/N),mod為取余數(shù),0≤k 數(shù)據(jù)分包如圖 1所示。 圖1 數(shù)據(jù)分包示意圖Fig.1 Schematic diagram of data subcontracting 接收方接收到包后,根據(jù)幀唯一標識、總包數(shù)、包序號還原發(fā)送的數(shù)據(jù)內容,數(shù)據(jù)重組如圖 2所示。 圖2 數(shù)據(jù)重組示意圖Fig.2 Data reorganization diagram 整個數(shù)據(jù)發(fā)送過程包括數(shù)據(jù)壓縮[8]、數(shù)據(jù)分包、數(shù)據(jù)發(fā)送和丟包重傳[9]流程。有3種情況: (1) 整個過程未丟包 接收端接收到最后一包數(shù)據(jù),判斷未丟包,通過接收終端陣列告知發(fā)送端信息接收完全。處理流程如圖3所示。 圖3 處理流程圖Fig.3 Processing flow chart (2) 接收端丟失最后一包數(shù)據(jù)的情況下 發(fā)送端向接收端發(fā)送查詢指令,詢問接收端是否接收完全,接收端根據(jù)接收到的包信息,解析出包序號、總包數(shù)等信息,將未接收到的包序號組幀,通過接收終端陣列告知發(fā)送端,發(fā)送端根據(jù)終端繁忙情況,選擇終端陣列進行數(shù)據(jù)重發(fā)。數(shù)據(jù)發(fā)送處理流程如圖4所示。 圖4 數(shù)據(jù)發(fā)送處理流程(發(fā)送端主動發(fā)起詢問)Fig.4 Data transmission processing flow (the sender actively initiates an inquiry) (3) 接收端接收到最后一包數(shù)據(jù),但是中間包有丟失的情況下 接收端接收到最后一包數(shù)據(jù),將未接收到的包序號組幀,通過接收終端陣列告知發(fā)送端,發(fā)送端根據(jù)終端繁忙情況,選擇終端進行數(shù)據(jù)重發(fā)。數(shù)據(jù)發(fā)送處理流程如圖5所示。 圖5 數(shù)據(jù)發(fā)送處理流程(接收端主動反饋接收信息)Fig.5 Data transmission processing flow (receiving end actively feedbacks received information) 重傳包流程如圖6所示。 圖6 重傳包處理流程Fig.6 Retransmission packet processing flow 由于發(fā)送端和接收端采用的是終端陣列,對于接收端反饋的丟包重傳指令,整個陣列終端全部發(fā)送此丟包重傳指令,發(fā)送端接收到一條即可以處理,相比于單一設備,使用終端通信陣列,通信成功率會大大提高。 假設發(fā)送端終端個數(shù)為4,接收端終端個數(shù)為4。 發(fā)送端到接收端發(fā)送流程為:發(fā)送端將大容量信息先進行壓縮,壓縮后的數(shù)據(jù)進行數(shù)據(jù)分包;分包后,平臺處理軟件通過發(fā)送終端陣列發(fā)送數(shù)據(jù);北斗終端通過幀中的終端編號,判斷是否通過自己轉發(fā),如果是,則繼續(xù)轉發(fā),如果不是則丟掉。 接收端接收數(shù)據(jù)處理流程:當發(fā)送端發(fā)送完成后,向接收端發(fā)送查詢是否丟包指令,如果發(fā)送端連續(xù)發(fā)送3遍接收端都沒有反饋,則發(fā)送端不再等待,開始執(zhí)行下一個任務。如果接收端接收到發(fā)送端發(fā)送的查詢丟包指令,則根據(jù)每包的“包序號”識別丟失的包,如果未丟包,則通過4個用戶機通知發(fā)送端“數(shù)據(jù)接收完畢”;如果接收不全,則通過北斗信息將“丟失的包序號”通知發(fā)送端,發(fā)送端接收解析后,將這些包重發(fā),如果丟包重傳指令發(fā)送3遍,發(fā)送端都未返回丟包數(shù)據(jù),則不再等待,關閉此任務,開始執(zhí)行新的任務。 圖7為整個鏈路丟包工作流程圖。 圖7 丟包重傳系統(tǒng)工作流程圖Fig.7 Work flow chart of lost packet retransmission system 以上介紹的是發(fā)送查詢指令查詢接收端是否接收完全,接收端應答此消息。還有一種情況是,接收端已經接收到最后一包數(shù)據(jù),接收端主動判斷是否已經接收完全,并發(fā)送反饋指令,告知發(fā)送端“我已接收完畢”或“我有第X包未接收到”,發(fā)送端如果接收到接收完畢通知,則關閉此任務,如果接收到丟包重傳指令,則開啟丟包重傳流程。實驗結果如表2所示。 表2 通信實驗記錄 從表2可以看出,“北斗”衛(wèi)星系統(tǒng)進行數(shù)據(jù)通信時數(shù)據(jù)丟包還是很嚴重的。數(shù)據(jù)丟包與通信終端性能以及外界干擾都有關系,但是采用了本文提出的終端收發(fā)陣列以及丟包重傳原理后,只有1次補發(fā)失敗,原因是當時信號終端受到強烈干擾,載噪比很低,其他情況丟包重傳都成功了,最差的一次通信成功率達到了98.2%。 發(fā)送端終端個數(shù)為4,接收端終端個數(shù)為4,終端采用頻度為5 s的卡進行圖片發(fā)送測試。 圖片大小為:30.94 kB,壓縮后大小為:13.923 kB,單包傳輸1.5 kB,分為10包,第1~9包為1.5 kB,最后一包為0.423 kB。 4個發(fā)送終端依次發(fā)送第1~10包數(shù)據(jù),發(fā)送完成后,發(fā)送查詢指令,接收端接收到查詢指令后,申請重傳第1、第4包數(shù)據(jù);發(fā)送端分配兩個終端重發(fā)第1、第4包,接收端接收完全后,向發(fā)送端發(fā)送接收完全通知,發(fā)送端接收后,結束此任務。 圖8為發(fā)送端客戶端軟件,選擇一張圖片進行傳輸,圖9是接收端軟件,通信記錄中實時顯示發(fā)送和接收的內容。由圖9可以看出,通過北斗發(fā)送大容量通信,發(fā)送一張30.94 kB的圖片用時僅為13 s,丟包重傳成功率達到100%。而且通過壓縮還原接收到的圖片,圖片質量滿足一般用戶要求,達到了預想效果。 圖8 發(fā)送端運行效果圖Fig.8 Rendering of the sender′s operation 圖9 接收端運行效果圖Fig.9 Receiving end running effect diagram 針對北斗三號衛(wèi)星導航系統(tǒng)需要發(fā)送語音、圖片等大容量信息,提出了平臺及終端架構、終端分配、數(shù)據(jù)包重傳機制等,極大地擴展了北斗衛(wèi)星導航系統(tǒng)的應用。相比于簡單的依靠單一終端重傳包的方式,本文方法應用更靈活,經試驗驗證通信成功率達到98.2%,通信速率可以提高到秒級。但是在環(huán)境受到嚴重干擾時,北斗短報文通信會出現(xiàn)丟包、誤碼的情況,影響了通信的成功率和用戶的體驗效果。如果需要解決此問題,就需要解決北斗短報文通信的傳輸?shù)却龝r間、傳輸速率、丟包及誤碼率等問題。隨著研究技術的不斷進步,北斗大容量信息傳輸將在各個領域得到廣泛應用[10]。3.2 數(shù)據(jù)分包
3.3 數(shù)據(jù)重組
3.4 傳輸流程
3.5 數(shù)據(jù)丟包重傳實現(xiàn)
4 運行效果
5 結束語