游積平,崔哲虎,高建秋,鐘晨,趙博,鄭凱,林俊君
(1.廣東省人工影響天氣辦公室,廣東廣州 510080;2.中國(guó)氣象科學(xué)研究院,北京 100081)
基于Socket技術(shù)的飛機(jī)增雨遠(yuǎn)程通信平臺(tái)的實(shí)現(xiàn)
游積平1,崔哲虎2,高建秋1,鐘晨1,趙博1,鄭凱1,林俊君1
(1.廣東省人工影響天氣辦公室,廣東廣州510080;2.中國(guó)氣象科學(xué)研究院,北京100081)
介紹了飛機(jī)增雨的空地傳輸串口通信技術(shù)、計(jì)算機(jī)網(wǎng)絡(luò)端口Socket技術(shù)和互聯(lián)網(wǎng)信息加密傳輸技術(shù),通過具有公網(wǎng)IP地址的服務(wù)器為信息轉(zhuǎn)發(fā)平臺(tái),以無線數(shù)字電臺(tái)結(jié)合互聯(lián)網(wǎng)為通信載體,在Windows操作系統(tǒng)平臺(tái)下利用C++Builder語言搭建異步、非阻塞和多線程的遠(yuǎn)程飛機(jī)增雨信息傳輸平臺(tái),實(shí)現(xiàn)了增雨飛機(jī)與地面之間的遠(yuǎn)程通信。
計(jì)算機(jī)技術(shù)與應(yīng)用;套接字技術(shù);飛機(jī)增雨;遠(yuǎn)程通信;空地傳輸
游積平,崔哲虎,高建秋,等.基于Socket技術(shù)的飛機(jī)增雨遠(yuǎn)程通信平臺(tái)的實(shí)現(xiàn)[J].廣東氣象,2016,38(4):70-73.
2010年中國(guó)氣象局為推進(jìn)全國(guó)人工影響天氣工作機(jī)制體制創(chuàng)新,加強(qiáng)跨?。▍^(qū))聯(lián)合作業(yè),統(tǒng)籌考慮天氣系統(tǒng)上下游相關(guān)地方人工增雨的有利條件,組織開展規(guī)模化的作業(yè),旨在提高區(qū)域性作業(yè)水平和服務(wù)整體效益,推動(dòng)建立跨省(區(qū))人影作業(yè)機(jī)制。目前我國(guó)大部分省均已開展飛機(jī)增雨的業(yè)務(wù)工作,飛機(jī)增雨作為實(shí)現(xiàn)跨省、跨區(qū)域作業(yè)的一個(gè)主要手段,空地通信能夠科學(xué)有效地指揮飛機(jī)開展增雨作業(yè),只有了解飛機(jī)的實(shí)際飛行情況,結(jié)合地面的氣象資料及時(shí)指導(dǎo)飛機(jī)增雨作業(yè),才能提高飛機(jī)增雨效率。飛機(jī)增雨空地通信方式主要有無線電臺(tái)[1-3]、北斗衛(wèi)星[4-5]等。北斗衛(wèi)星雖然具有通信遠(yuǎn)、不受地形影響等特點(diǎn),但其帶寬窄、費(fèi)用高,每次只能發(fā)送幾十個(gè)字節(jié)的短信,不能傳輸圖像、數(shù)據(jù)文件,且需在飛機(jī)上方安裝北斗衛(wèi)星天線,一定程度上影響北斗衛(wèi)星在飛機(jī)增雨業(yè)務(wù)中的應(yīng)用。利用數(shù)字無線電臺(tái)在其有效半徑(200 km)范圍內(nèi)進(jìn)行空地信息通信,實(shí)現(xiàn)較大數(shù)據(jù)文件的傳輸,而且具有安裝簡(jiǎn)單、價(jià)格低廉等特點(diǎn),若結(jié)合互聯(lián)網(wǎng)通信技術(shù),建立基于Socket技術(shù)的遠(yuǎn)程通信平臺(tái),對(duì)開展飛機(jī)跨省增雨作業(yè),實(shí)現(xiàn)地面與飛機(jī)甚至飛機(jī)與飛機(jī)之間的遠(yuǎn)程通信,有效提高全國(guó)人工增雨作業(yè)規(guī)?;?、集約化和區(qū)域云水資源利用率具有重要意義。
1.1互聯(lián)網(wǎng)通信與串口通信的銜接
目前互聯(lián)網(wǎng)通信主要利用Socket技術(shù),通過公網(wǎng)IP地址的服務(wù)器實(shí)現(xiàn)C/S模式下多個(gè)客戶端機(jī)器之間的有效連接。服務(wù)器端作為一個(gè)轉(zhuǎn)發(fā)數(shù)據(jù)包的機(jī)器,主要負(fù)責(zé)將某一用戶發(fā)來的數(shù)據(jù)包轉(zhuǎn)送到另一用戶和管理所有在線用戶的信息。而對(duì)于客戶端在向服務(wù)器端的Socket發(fā)出連接請(qǐng)求并與服務(wù)器建立連接后,就可以通過Internet傳輸數(shù)據(jù)和文件,其傳輸方式主要有阻塞、同步和非阻塞、異步等。飛機(jī)增雨的空地?cái)?shù)據(jù)傳輸通過飛機(jī)上的PC機(jī)與地面上PC機(jī)之間的串口通信,無線數(shù)字電臺(tái)是實(shí)現(xiàn)空地之間通信的載體,而與地面數(shù)字電臺(tái)和互聯(lián)網(wǎng)連接的PC機(jī)既是客戶端又是服務(wù)器端,對(duì)于互聯(lián)網(wǎng)來說,該P(yáng)C機(jī)是客戶端,但對(duì)于增雨飛機(jī)來說,該P(yáng)C機(jī)相當(dāng)于服務(wù)器端,解析由互聯(lián)網(wǎng)傳來的數(shù)據(jù)包信息并通過串口轉(zhuǎn)發(fā)到增雨飛機(jī)上的電腦。同時(shí),解析由增雨飛機(jī)上串口傳來的信息轉(zhuǎn)發(fā)到互聯(lián)網(wǎng)其它用戶。當(dāng)從互聯(lián)網(wǎng)Client Socket控件On Read事件中的Receive Buf函數(shù)獲得數(shù)據(jù)包并進(jìn)行解析,若該數(shù)據(jù)包是發(fā)給增雨飛機(jī)的,則通過串口通信YbCommDevice控件中的Write Package函數(shù)將此數(shù)據(jù)包發(fā)出;同樣,當(dāng)從串口通信Yb Comm Device控件On Package事件中Read Package的函數(shù)獲得的數(shù)據(jù)包進(jìn)行解析,若此數(shù)據(jù)包是發(fā)給地面互聯(lián)網(wǎng)用戶的,則通過互聯(lián)網(wǎng)通信Socket控件的Send Buf函數(shù)將此數(shù)據(jù)包發(fā)送給公網(wǎng)IP地址的服務(wù)器,并由此服務(wù)器轉(zhuǎn)發(fā)數(shù)據(jù)包到指定的互聯(lián)網(wǎng)客戶。通過互聯(lián)網(wǎng)和串口通信的銜接技術(shù)從而實(shí)現(xiàn)增雨飛機(jī)與地面互聯(lián)網(wǎng)多個(gè)客戶端用戶的數(shù)據(jù)交流。
1.2人影數(shù)據(jù)傳輸?shù)募用芎徒饷芗夹g(shù)
由于互聯(lián)網(wǎng)中的數(shù)據(jù)信息傳輸大多數(shù)是沒有經(jīng)過加密處理,對(duì)于人工影響天氣的作業(yè)指令發(fā)送和增雨飛機(jī)的實(shí)時(shí)航跡傳輸?shù)纫恍┲匾畔⑷菀妆粋陕牻厝。踔翋阂獯鄹?,為保證在互聯(lián)網(wǎng)中人影數(shù)據(jù)傳輸?shù)陌踩珕栴},飛機(jī)增雨遠(yuǎn)程通信平臺(tái)在互聯(lián)網(wǎng)數(shù)據(jù)傳輸中采用了目前技術(shù)上較為成熟的對(duì)稱密鑰加密方法對(duì)人影作業(yè)信息進(jìn)行加密處理,對(duì)稱加密算法是一種傳統(tǒng)的密碼算法,在互聯(lián)網(wǎng)中不同節(jié)點(diǎn)之間的加密解密雙方擁有相同的密鑰,在互聯(lián)網(wǎng)的客戶端發(fā)出數(shù)據(jù)信息前進(jìn)行加密,到達(dá)服務(wù)器后進(jìn)行解密,了解數(shù)據(jù)包的屬性和接收方,然后對(duì)數(shù)據(jù)包進(jìn)行加密轉(zhuǎn)送到接收端,接收端對(duì)數(shù)據(jù)包進(jìn)行解密。因此在互聯(lián)網(wǎng)的數(shù)據(jù)傳輸過程中其安全性主要依靠于密鑰的保管。
2.1通信架構(gòu)
空地通信系統(tǒng)采用了有線互聯(lián)網(wǎng)結(jié)合數(shù)字電臺(tái)的無線通信網(wǎng)絡(luò)數(shù)據(jù)傳輸方式。其中有2個(gè)通信端節(jié)點(diǎn)是非常重要的,一個(gè)Socket服務(wù)器端節(jié)點(diǎn),所有通信端均登錄到Socket服務(wù)器,由Socket服務(wù)器組織各通信節(jié)點(diǎn)之間的通信,完成互聯(lián)網(wǎng)之間數(shù)據(jù)包轉(zhuǎn)發(fā)的任務(wù);另一個(gè)重要的通信節(jié)點(diǎn)是既連接數(shù)字電臺(tái)又連接互聯(lián)網(wǎng)的地空連接端,在地面上的互聯(lián)網(wǎng)通信節(jié)點(diǎn)與飛機(jī)的通信要通過地空連接端,它實(shí)際起到一個(gè)互聯(lián)網(wǎng)節(jié)點(diǎn)與增雨飛機(jī)之間的地空通信互傳的作用。增雨飛機(jī)上有2個(gè)電臺(tái),一個(gè)電臺(tái)與GPS定位設(shè)備相連,負(fù)責(zé)將增雨飛機(jī)的定位信息向地面發(fā)送,并由地空連接端將增雨飛機(jī)的實(shí)時(shí)定位信息轉(zhuǎn)送到互聯(lián)網(wǎng)端的其它節(jié)點(diǎn);另一個(gè)電臺(tái)用于空-地通信,通過地空連接端,實(shí)現(xiàn)將互聯(lián)網(wǎng)上的其它節(jié)點(diǎn)與增雨飛機(jī)之間的互送信息。對(duì)于互聯(lián)網(wǎng)端,在地面上只要通過Internet,登錄到廣東省人影辦的Socket服務(wù)器,就可實(shí)現(xiàn)與增雨飛機(jī)的實(shí)時(shí)通信。飛機(jī)增雨遠(yuǎn)程通信網(wǎng)絡(luò)拓?fù)鋱D見圖1。
2.2信息流程
飛機(jī)增雨遠(yuǎn)程空地通信系統(tǒng)的建立是基于互聯(lián)網(wǎng)的Socket技術(shù)和無線電臺(tái)的串口通信技術(shù),其通信信息流程見圖2。
圖1 基于Socket技術(shù)飛機(jī)增雨遠(yuǎn)程通信網(wǎng)絡(luò)拓?fù)鋱D
在互聯(lián)網(wǎng)端的服務(wù)器監(jiān)聽特定的一個(gè)端口,等待客戶端的連接請(qǐng)求,在接到互聯(lián)網(wǎng)客戶端的連接請(qǐng)求時(shí),服務(wù)器就為它建立一個(gè)連接,并把該連接的有關(guān)信息加入到用戶鏈表。在建立連接的過程中,服務(wù)器與客戶機(jī)都被分配一個(gè)本地端口,并將套接字綁定到各自的端口上進(jìn)行通信。廣東飛機(jī)增雨遠(yuǎn)程空地通信平臺(tái)利用C+ +Builder編程語言進(jìn)行開發(fā)建設(shè),采用非阻塞、異步通信連接方式,在互聯(lián)網(wǎng)的客戶端和地空連接端分別將ClientSocket控件的ClientType屬性設(shè)置為ctNonBlocking(非阻塞連接)、端口號(hào)Port =11000;服務(wù)器端的ServerSocket的ServerType屬性同樣設(shè)置為ctNonBlocking、端口號(hào)Port= 11000。當(dāng)服務(wù)器端的Socket進(jìn)行讀或?qū)憰r(shí),客戶端和地空連接端就會(huì)觸發(fā)OnRead或OnWrite異步讀或?qū)懯录M?,?dāng)客戶端的Socket試圖進(jìn)行讀或?qū)憰r(shí),服務(wù)器端的Socket也會(huì)觸發(fā)On-Read或OnWrite異步讀或?qū)懯录?。并利用C++Builder語言提供的TThread類完成多線程的文件傳輸功能。同時(shí),在互聯(lián)網(wǎng)通信過程中均使用了對(duì)稱密鑰加密方法進(jìn)行加密,增雨飛機(jī)終端通過地空連接端登錄到服務(wù)器,作為一個(gè)單獨(dú)的客戶加入到服務(wù)器的用戶鏈表中,實(shí)現(xiàn)與其它用戶進(jìn)行通信。
圖2 基于Socket技術(shù)飛機(jī)增雨遠(yuǎn)程通信信息流程圖
2.3設(shè)計(jì)思路
飛機(jī)增雨遠(yuǎn)程通信平臺(tái)的研發(fā)是充分利用廣東人影現(xiàn)有的計(jì)算機(jī)、網(wǎng)絡(luò)條件進(jìn)行的。包括目前已有的無線數(shù)字電臺(tái)、公網(wǎng)IP地址的服務(wù)器、計(jì)算機(jī)、GPS定位設(shè)備、3G無線上網(wǎng)卡以及飛機(jī)增雨作業(yè)外場(chǎng)的ADSL有線寬帶網(wǎng)等硬件,通過軟件開發(fā)將這些設(shè)備有效地連接一起。同時(shí),設(shè)計(jì)每個(gè)通信包的數(shù)據(jù)結(jié)構(gòu)和信息標(biāo)識(shí),數(shù)據(jù)包中前4個(gè)字節(jié)分別代表要傳輸該數(shù)據(jù)包的信息。其中$NU$用戶#1:代表新用戶進(jìn)入;$ CL$用戶#1:代表該在線用戶退出;$SE$用戶1 #1用戶2#2:代表用戶1向用戶2發(fā)送文字信息;$AU$用戶名#1:代表該用戶向所有在線用戶群發(fā)信息;$FI$用戶1#1用戶2#2文件名#3文件大小#4每次傳輸文件包的大小#5:代表用戶1向用戶2發(fā)送要傳輸?shù)奈募畔ⅲ瑢⒁獋鬏數(shù)奈募?、文件大小以及每次傳輸?shù)據(jù)包的大小告知用戶2;$FT$用戶1#2用戶2#2:代表用戶1向用戶2發(fā)送文件內(nèi)容;$FE$用戶1#1用戶2# 2:代表用戶1向用戶2發(fā)送文件最后一個(gè)數(shù)據(jù)包等,其中$、#1、#2、#3、#4、#5均為分隔符。通過計(jì)算機(jī)的串口通信與互聯(lián)網(wǎng)通信的有效銜接,在互聯(lián)網(wǎng)傳輸過程中利用公網(wǎng)IP地址的服務(wù)器解析數(shù)據(jù)包內(nèi)容識(shí)別用戶和轉(zhuǎn)發(fā)數(shù)據(jù)包,從而實(shí)現(xiàn)了多個(gè)用戶對(duì)增雨飛機(jī)的遠(yuǎn)程通信(圖3)。
圖3 增雨飛機(jī)空地通信平臺(tái)界面
其中通信平臺(tái)界面右上角的在線用戶可以是多個(gè)互聯(lián)網(wǎng)用戶或者增雨飛機(jī)的用戶,選擇不同的用戶名就可以向其發(fā)送信息或發(fā)送文件。
廣東飛機(jī)增雨遠(yuǎn)程空地平臺(tái)之間的串口通信速率為19 200 bit/s(波特率bps)、輸入輸出緩沖均為8 192 byte(字節(jié)),為解決由于互聯(lián)網(wǎng)傳輸速率快而空地串口傳輸速率慢容易造成數(shù)據(jù)緩沖溢出等問題,適當(dāng)降低有線互聯(lián)端的傳輸速率,在由地面互聯(lián)客戶端向增雨飛機(jī)傳輸文件過程中,每個(gè)數(shù)據(jù)包大小設(shè)定1 024 byte,而數(shù)據(jù)包之間的時(shí)間間隔設(shè)定2 s,即每隔2 s發(fā)送一個(gè)數(shù)據(jù)包,這樣較好地解決了互聯(lián)網(wǎng)與無線網(wǎng)之間由于傳輸速率差別所造成的數(shù)據(jù)緩沖溢出。
廣東飛機(jī)增雨遠(yuǎn)程空地平臺(tái)已經(jīng)投入實(shí)際飛機(jī)人工增雨業(yè)務(wù)使用,每年3—5月開展飛機(jī)增雨作業(yè)中,在廣東省氣象局安放一臺(tái)具有公網(wǎng)IP的計(jì)算機(jī)作為SOCKET服務(wù)器,以深圳機(jī)場(chǎng)或佛山機(jī)場(chǎng)或湛江機(jī)場(chǎng)作為空地通信的地面接收、發(fā)送及中轉(zhuǎn)節(jié)點(diǎn),而在互聯(lián)網(wǎng)上作為其它的通信網(wǎng)節(jié)點(diǎn),組成一個(gè)全方位、空地為一體的遠(yuǎn)程通信平臺(tái),其業(yè)務(wù)應(yīng)用通信方式及網(wǎng)絡(luò)節(jié)點(diǎn)布局見圖4。
圖4 基于SOCKET技術(shù)的飛機(jī)增雨遠(yuǎn)程通信方式及網(wǎng)絡(luò)節(jié)點(diǎn)連接示意圖
在業(yè)務(wù)應(yīng)用中,不同的通信連接方式在不同的地點(diǎn)均可實(shí)現(xiàn)與空中飛行的增雨飛機(jī)之間進(jìn)行通信聯(lián)系和文件傳輸,且地面上各個(gè)通信網(wǎng)絡(luò)節(jié)點(diǎn)也可相互通信。增雨飛機(jī)作為其中一個(gè)網(wǎng)絡(luò)節(jié)點(diǎn)能與地面任何地點(diǎn)上的網(wǎng)絡(luò)節(jié)點(diǎn)進(jìn)行通信。同時(shí),通過增雨飛機(jī)上的其中一個(gè)數(shù)字電臺(tái)每隔2 s就實(shí)時(shí)向地面?zhèn)鬏敽桔E,在地面上各個(gè)網(wǎng)絡(luò)節(jié)點(diǎn)能同時(shí)接收并實(shí)時(shí)顯示增雨飛機(jī)的航跡,從而實(shí)現(xiàn)了在地面不同地點(diǎn)利用互聯(lián)網(wǎng)實(shí)時(shí)監(jiān)控增雨飛機(jī)的能力。
1)利用有線互聯(lián)網(wǎng)結(jié)合無線數(shù)字電臺(tái)的綜合通信技術(shù),實(shí)現(xiàn)了飛機(jī)增雨的遠(yuǎn)程空地傳輸,大大拓寬飛機(jī)增雨的空地通信距離,有利于我國(guó)組織開展跨省、跨區(qū)域的飛機(jī)增雨作業(yè)。
2)客戶端可采用多種通信方式連上互聯(lián)網(wǎng)并登錄到Socket服務(wù)器,就可以實(shí)現(xiàn)與增雨飛機(jī)的通信。
3)利用互聯(lián)網(wǎng)的Socket技術(shù)和空地串口通信技術(shù)的原理,可以實(shí)現(xiàn)增雨飛機(jī)與增雨飛機(jī)之間的通信聯(lián)絡(luò)。
4)由于數(shù)據(jù)無線電臺(tái)的傳輸距離有限,一般在半徑200 km左右,因此地面接收天線的位置和飛機(jī)作業(yè)區(qū)域不宜太遠(yuǎn)。
[1]游積平,馮永基,林俊君,等.飛機(jī)增雨遠(yuǎn)程遙控催化作業(yè)的實(shí)現(xiàn)[J].氣象,2007,33(9):103-106.
[2]阮征,彭浩,周國(guó)春,等.信息空地傳輸顯示系統(tǒng)及試用[J].氣象,2005,31(7):80-84.
[3]樊鵬,陳保國(guó),郭強(qiáng),等.飛機(jī)人工增雨空地傳輸網(wǎng)絡(luò)系統(tǒng)[J].氣象科技,2005,33(3):260-263.
[4]陳農(nóng),鄭凱,孫利民.黑龍江省飛機(jī)人工增雨空地傳輸系統(tǒng)業(yè)務(wù)化設(shè)計(jì)與研制[J].黑龍江氣象,2008,25(2):26-27.
[5]王文新,王金民,劉國(guó)進(jìn),等.飛機(jī)人工增雪空地傳輸系統(tǒng)的研制及應(yīng)用[J].科技創(chuàng)新導(dǎo)報(bào),2008(6):166 -171.
TP39
A
10.3969/j.issn.1007-6190.2016.04.018
2015-12-10
中國(guó)氣象科學(xué)研究院項(xiàng)目“飛機(jī)探測(cè)空地實(shí)時(shí)通信系統(tǒng)”
游積平(1964年生),男,本科,高級(jí)工程師,主要從事人工影響天氣工作。E-mail:jpyou@grmc.gov.cn