吳幫明,伍川輝
(西南交通大學(xué)機(jī)械工程學(xué)院,四川 成都 610031)
利用GPRS覆蓋廣、高效、經(jīng)濟(jì)的突出特點(diǎn),該文介紹了一種采用GPRS通信模塊進(jìn)行遠(yuǎn)程數(shù)據(jù)傳輸,可供多用戶對(duì)車輛狀態(tài)進(jìn)行遠(yuǎn)程實(shí)時(shí)監(jiān)控的系統(tǒng),著重介紹了基于GPRS的組網(wǎng)方式和以C++Builder為開發(fā)平臺(tái)快速組建服務(wù)器、監(jiān)控端的軟件編程方法。
GPRS的理論帶寬171.2 Kb/s,實(shí)際帶寬約40~100 Kb/s,分組交換接入時(shí)間少于1 s,能夠提供快速即時(shí)的TCP/IP連接,它具有網(wǎng)絡(luò)覆蓋廣、計(jì)價(jià)按流量計(jì)算、實(shí)時(shí)在線的優(yōu)點(diǎn),特別適用于間斷的、突發(fā)性的或頻繁的、少量的數(shù)據(jù)傳輸,也適用于偶爾的大量數(shù)據(jù)傳輸,完全滿足數(shù)據(jù)采集及監(jiān)控的雙向數(shù)據(jù)信息傳輸。GPRS傳輸系統(tǒng)示意圖如圖1所示。
根據(jù)數(shù)據(jù)中心服務(wù)器接入Internet的不同方式,基于GPRS的傳輸系統(tǒng)有以下4種應(yīng)用組網(wǎng)方案:
圖1 GPRS傳輸系統(tǒng)示意圖
(1)數(shù)據(jù)中心服務(wù)器直接使用固定的IP地址;
(2)數(shù)據(jù)中心服務(wù)器沒有合法的IP地址,但連接的路由器有固定合法的IP地址;
(3)數(shù)據(jù)中心服務(wù)器采用動(dòng)態(tài)IP地址;
(4)數(shù)據(jù)中心服務(wù)器通過專線方式直接連接到GPRS網(wǎng)絡(luò)。
該文應(yīng)用的是第3種組網(wǎng)方式。這種組網(wǎng)方式的服務(wù)器端沒有固定的IP址,它通過ADSL等調(diào)制解調(diào)器連接到Internet獲得動(dòng)態(tài)IP地址,這時(shí)服務(wù)器端就需要安裝動(dòng)態(tài)域名解析服務(wù)程序,GPRS模塊上的服務(wù)端IP和端口號(hào)設(shè)置為數(shù)據(jù)中心服務(wù)器的域名和偵聽端口號(hào)。
采用這種方案,首先要聯(lián)系DNS服務(wù)商申請(qǐng)一個(gè)域名,服務(wù)器端接入Internet后,與DNS服務(wù)器進(jìn)行連接,將當(dāng)前獲得的動(dòng)態(tài)IP報(bào)告給DNS服務(wù)器。GPRS模塊上電后,首先采用域名尋址方式連接DNS服務(wù)器,再由DNS服務(wù)器找到服務(wù)器公網(wǎng)動(dòng)態(tài)IP,這樣就可以在兩者之間建立通信。
對(duì)于一些應(yīng)用相對(duì)簡單、終端數(shù)量的容量和實(shí)時(shí)性要求不高或者運(yùn)行經(jīng)費(fèi)有限的應(yīng)用,可采用動(dòng)態(tài)IP的簡單網(wǎng)絡(luò)模式。
系統(tǒng)由數(shù)據(jù)采集端、服務(wù)器端和用戶監(jiān)控端3個(gè)單元組成。數(shù)據(jù)采集端的微處理器通過串口和GPRS模塊連接,將經(jīng)過AD轉(zhuǎn)換的數(shù)據(jù)(如振動(dòng)加速度、位移、應(yīng)力等)按規(guī)定的協(xié)議組合為報(bào)文,通過GPRS模塊經(jīng)由GPRS網(wǎng)絡(luò)發(fā)送到Internet上具有IP地址的服務(wù)器上。服務(wù)器端通過網(wǎng)絡(luò)編程接收從Internet上發(fā)送過來的數(shù)據(jù),經(jīng)過處理后轉(zhuǎn)發(fā)給用戶監(jiān)控端。用戶監(jiān)控端也是通過網(wǎng)絡(luò)編程接收從服務(wù)器端發(fā)來的數(shù)據(jù),經(jīng)過處理后將數(shù)據(jù)直觀地顯示在界面上,完成實(shí)時(shí)監(jiān)控。
對(duì)于開發(fā)無線數(shù)據(jù)傳輸系統(tǒng),監(jiān)控軟件只能自主開發(fā),沒有現(xiàn)成的軟件可以使用。另外,該軟件自主開發(fā)后,對(duì)于系統(tǒng)后期優(yōu)化和調(diào)整以及升級(jí)換代較為有利。
服務(wù)器端軟件的主要功能是從網(wǎng)絡(luò)上接收來自GPRS模塊或監(jiān)控端傳來的數(shù)據(jù)報(bào)文,并解析報(bào)文得到原始數(shù)據(jù),再根據(jù)使用需要對(duì)數(shù)據(jù)進(jìn)行相應(yīng)處理;監(jiān)控端軟件的主要功能是接受來自服務(wù)器端傳來的數(shù)據(jù)報(bào)文并進(jìn)行分析處理實(shí)現(xiàn)遠(yuǎn)程監(jiān)控。
編寫軟件使用的是C++Builder自帶的SrverSocket控件和ClientSocket控件,它們使用Socket(套接字)來實(shí)現(xiàn)信息的傳輸,利用這兩個(gè)控件就能實(shí)現(xiàn)網(wǎng)絡(luò)編程。
添加一個(gè)服務(wù)端Socket控件ServerSocket到Form就使應(yīng)用成為一個(gè)TCP/IP服務(wù)器。服務(wù)端ServerSocket的重要屬性、事件和方法使用如下:
(1)ServerSocket和ClientSocket都有Port(端口)屬性,需要一致才能互相通信;
(2)OnClientRead事件,當(dāng) ServerSocket受到?jīng)_擊消息時(shí),在OnClientRead事件中可以獲得Client發(fā)送過來消息;
(3)ServerSocket使用 SocketServer->Socket->Connection[0]->ReceiveBuf(byte 類型的數(shù)組,信息長度)來接受數(shù)據(jù);使用SocketServer->Socket->Connection[0]->SendBuf(byte類型的數(shù)組,信息長度)來發(fā)送數(shù)據(jù)。
為了運(yùn)行可靠,可以在服務(wù)器端使用多個(gè)ServerSocket控件,并根據(jù)功能分為兩類。一類負(fù)責(zé)處理和GPRS模塊的通信,一類負(fù)責(zé)與監(jiān)控端的通信。該設(shè)計(jì)使用了兩個(gè)控件,ServerSocket1負(fù)責(zé)與GPRS通信,ServerSocket2負(fù)責(zé)與監(jiān)控端通信,要將GPRS傳來的數(shù)據(jù)轉(zhuǎn)發(fā)給監(jiān)控端,主程序片段如下:
添加一個(gè)客戶端Socket控件 ClientSocket到Form就使應(yīng)用成為一個(gè)TCP/IP客戶??蛻舳薈lientSocket的重要屬性、事件和方法使用如下:
(1)ClientSocket有 Port和 Address屬性,必須與指定服務(wù)器的端口和所在IP地址一致;
(2)OnRead事件,當(dāng)ClientSocket受到?jīng)_擊消息時(shí),在OnRead事件中可以獲得Server發(fā)送過來消息;
(3)ClientSocket使用 SocketClient->Socket->ReceiveBuf(byte類型的數(shù)組,信息長度)來接收信息;使用 SocketClient->Socket->SendBuf(byte類型的數(shù)組,信息長度)來發(fā)送信息。
監(jiān)控端主要是接受來自服務(wù)器端從GPRS傳來的數(shù)據(jù)來進(jìn)行遠(yuǎn)程實(shí)時(shí)監(jiān)控,主程序片段如下:
在數(shù)據(jù)傳輸中必須制定數(shù)據(jù)報(bào)文協(xié)議,數(shù)據(jù)傳輸系統(tǒng)中的報(bào)文協(xié)議如表1所示。
表1 系統(tǒng)中的報(bào)文協(xié)議
此外,還要設(shè)定數(shù)據(jù)傳輸類型,該系統(tǒng)中數(shù)據(jù)采集端采集的振動(dòng)加速度、位移、應(yīng)力信號(hào)經(jīng)過AD轉(zhuǎn)換后是電壓值,最后是將電壓值轉(zhuǎn)換為十六進(jìn)制的編碼進(jìn)行傳送。因此,在接收到數(shù)據(jù)后,要將其還原為原來的電壓值,再根據(jù)每個(gè)通道的傳感器靈敏度值,經(jīng)過進(jìn)一步處理,得到最原始的物理量值。
C++Builder中的套接字以字節(jié)格式來發(fā)送和接收數(shù)據(jù),所以通常先定義一個(gè)字節(jié)數(shù)組來存放接收到的數(shù)據(jù),而數(shù)據(jù)處理就是將這個(gè)字節(jié)數(shù)組轉(zhuǎn)換成原始的物理量值。字節(jié)數(shù)組處理步驟如下:
(1)從數(shù)據(jù)流中取出兩字節(jié),判斷是否為起始位標(biāo)識(shí);
(2)從起始位后取出規(guī)定長度的數(shù)據(jù),計(jì)算校驗(yàn)和是否與最后一位的校驗(yàn)碼相等;
(3)把各通道位的兩個(gè)字節(jié)還原為原來的數(shù)字,再進(jìn)一步處理得到具有物理意義的數(shù)值。
該設(shè)計(jì)方法為遠(yuǎn)程實(shí)時(shí)監(jiān)控中服務(wù)器端和監(jiān)控端軟件的設(shè)計(jì)提供了一般性方案,與數(shù)據(jù)采集端軟硬件相結(jié)合,可移植于各種應(yīng)用無線數(shù)據(jù)傳輸服務(wù)的遠(yuǎn)程監(jiān)控系統(tǒng)中。利用該思想構(gòu)建的應(yīng)用平臺(tái)已在廣州地鐵直線電機(jī)車輛振動(dòng)追蹤試驗(yàn)中測(cè)試通過,運(yùn)行半年多來,總體上情況良好,運(yùn)行穩(wěn)定,故障率低,數(shù)據(jù)可信度高,達(dá)到了實(shí)時(shí)監(jiān)控列車運(yùn)行狀態(tài)的目的。
[1]鐘章隊(duì),蔣文怡,李紅君.GPRS通用分組無線業(yè)務(wù)[M].北京:人民郵電出版社,2001.
[2]栗玉霞,徐建政,劉愛兵.GPRS技術(shù)在自動(dòng)抄表系統(tǒng)中的應(yīng)用[J].電力自動(dòng)化設(shè)備,2003,23(12):52-54.
[3]溫 泉,李炳煜,焦 毅.基于GPRS的無線數(shù)據(jù)傳輸系統(tǒng)解決方案[J].現(xiàn)代電子技術(shù),2006,29(23):15-17,20.
[4]楊興裕,吳海濱,許松清.GPRS無線傳輸在遠(yuǎn)程圖像監(jiān)控系統(tǒng)中的應(yīng)用[J].微計(jì)算機(jī)信息,2005,21(3):64-65.
[5]程 展,蔣 鵬.基于GPRS的城市污水排放監(jiān)控系統(tǒng)子站設(shè)計(jì)[J].機(jī)電工程,2008,25(2):41-43.
[6]李平江,周倫彬,張寶峰.基于ARM和GPRS的路燈遠(yuǎn)程監(jiān)控系統(tǒng)[J].中國測(cè)試,2009,35(2):53-56.
[7]嚴(yán)雪萍,成 立,韓慶福,等.基于GPRS的遠(yuǎn)程數(shù)據(jù)采集系統(tǒng)設(shè)計(jì)[J].單片機(jī)開發(fā)與應(yīng)用,2008,24(1-2):115-116.
[8]王 磊,許小琳.GPRS無線數(shù)據(jù)傳輸中服務(wù)器端軟件的設(shè)計(jì)和實(shí)現(xiàn)[J].測(cè)控技術(shù),2007,26(11):55-56,63.
[9]何 瑛,王航宇.基于GPRS的分布式灌區(qū)監(jiān)控系統(tǒng)設(shè)計(jì)與實(shí)現(xiàn)[J].電子設(shè)計(jì)工程,2009,17(3):19-21.