一、引言
隨著計(jì)算機(jī)和網(wǎng)絡(luò)技術(shù)的發(fā)展,基于TCP/IP協(xié)議的有線以太網(wǎng)為工業(yè)監(jiān)控網(wǎng)絡(luò)帶來(lái)了一個(gè)新的時(shí)代,這是因?yàn)榛赥CP/IP協(xié)議的有線以太網(wǎng)相對(duì)于以往的工業(yè)控制網(wǎng)絡(luò)有更高的通信帶寬,能滿足不斷增長(zhǎng)的數(shù)據(jù)通信的需要。然而對(duì)于作業(yè)點(diǎn)分散、環(huán)境惡劣、遠(yuǎn)程監(jiān)控為特點(diǎn)的工業(yè)現(xiàn)場(chǎng),特別是存在突發(fā)、小數(shù)據(jù)量傳輸?shù)膱?chǎng)合,以有線來(lái)做通信媒介顯然已不太合適,這迅速推動(dòng)了無(wú)線通信技術(shù)在工業(yè)控制領(lǐng)域的發(fā)展。
GPRS(General Packet Radio System)的出現(xiàn),為構(gòu)建低成本的無(wú)線工業(yè)監(jiān)控網(wǎng)絡(luò)提供了可能, GPRS是架構(gòu)在傳統(tǒng)的GSM網(wǎng)絡(luò)之上的一種標(biāo)準(zhǔn)化的分組交換數(shù)據(jù)業(yè)務(wù),提供端到端的廣域的無(wú)線 IP鏈接。由于GPRS采用了分組交換技術(shù),在通信過(guò)程中不需要建立和保持電路,且存在呼叫建立時(shí)間極短,提供實(shí)時(shí)在線、按流量計(jì)費(fèi)、大的覆蓋區(qū)域等特點(diǎn),在遠(yuǎn)程突發(fā)性數(shù)據(jù)傳輸中,相對(duì)于有線網(wǎng)絡(luò)有不可比擬的優(yōu)越性。另外,采用大功率、電信專(zhuān)線、衛(wèi)星通信等方式構(gòu)建的監(jiān)控網(wǎng)絡(luò),組網(wǎng)成本很高,特別對(duì)大范圍、分散的遠(yuǎn)程監(jiān)控系統(tǒng)基本上是不可行的。采用GPRS構(gòu)建的工業(yè)遠(yuǎn)程監(jiān)控系統(tǒng),其構(gòu)建成本(粗略估計(jì))僅為有線網(wǎng)絡(luò)的十分之一,而且運(yùn)行成本亦很低。正是由于這些優(yōu)點(diǎn),基于GPRS構(gòu)建的監(jiān)控系統(tǒng)正在成為當(dāng)今的熱點(diǎn)領(lǐng)域之一。
二、GPRS監(jiān)控系統(tǒng)的構(gòu)建
作為監(jiān)控系統(tǒng)關(guān)鍵部分的GPRS DTU(Data Transmission Unit)的設(shè)計(jì)顯得尤為重要,因?yàn)橄到y(tǒng)的穩(wěn)定性和可靠性要由GPRS DTU來(lái)實(shí)現(xiàn)。目前國(guó)內(nèi)外很多公司開(kāi)發(fā)的基于GPRS的監(jiān)控系統(tǒng),其GPRS DTU只實(shí)現(xiàn)了TCP/IP協(xié)議,所有的通信聯(lián)絡(luò)都由監(jiān)控主機(jī)來(lái)實(shí)現(xiàn),這種模式在有線網(wǎng)絡(luò)上是可行的,但是在無(wú)線網(wǎng)絡(luò)上就不合適了,因?yàn)闊o(wú)線網(wǎng)絡(luò)上有太多的異常,而這些異常應(yīng)該劃分到底層協(xié)議中去。
通過(guò)對(duì)目前開(kāi)發(fā)的產(chǎn)品及GPRS網(wǎng)絡(luò)的傳輸特性進(jìn)行分析研究,我們提出了一個(gè)比較實(shí)用的、易于實(shí)現(xiàn)的基于GPRS的監(jiān)控系統(tǒng)(如圖1)。該系統(tǒng)由GPRS DTU、GPRS AS(Access Server)、監(jiān)控主機(jī)、數(shù)據(jù)備份服務(wù)器、新浪郵件服務(wù)器(Mail Server)組成,監(jiān)控主機(jī)與GPRS AS通過(guò)1OM/100M的以太網(wǎng)互連,一直不停的交流各自的負(fù)荷信息和各種動(dòng)態(tài)表。GPRS AS是整個(gè)監(jiān)控系統(tǒng)的通信聯(lián)絡(luò)中心,負(fù)責(zé)設(shè)備群的遠(yuǎn)程接入(本文主要論述GPRS DTU的實(shí)現(xiàn),GPRS AS的實(shí)現(xiàn)暫不論述)。
下面詳細(xì)介紹GPRS DTU的硬件及其軟件的具體實(shí)現(xiàn)。
三、GPRS DTU的硬件實(shí)現(xiàn)
在本系統(tǒng)中,GPRS DTU的硬件框圖如圖2所示,主要的硬件芯片:CPU采用ARM S3CA510B,通信模塊采用MC35(西門(mén)子的GPRS Modem)。
ARM芯片S3CA510B通過(guò)RS232串口與 GPRS通信模塊MC35連接,ARM芯片完成對(duì)MC35模塊的初始化和數(shù)據(jù)收發(fā)功能;同時(shí)擴(kuò)展 MMX232標(biāo)準(zhǔn)串口與微控制單元MCU(Micro - Control Unit)進(jìn)行數(shù)據(jù)交換。

S3CA510B是由Samsung公司生產(chǎn)的基于以太網(wǎng)應(yīng)用系統(tǒng)的高性價(jià)比16/32位RISC微控制器,內(nèi)含一個(gè)由ARM公司設(shè)計(jì)的16/32位 ARM7TDMI RISC處理器,ARM7TDMI低功耗、高性能的16/32核,最適合用于對(duì)價(jià)格及功耗敏感的應(yīng)用場(chǎng)合,如:工業(yè)控制、移動(dòng)電話、嵌入式應(yīng)用等。
MC35是西門(mén)子公司生產(chǎn)的GPRS無(wú)線通信模塊,雙頻EGSM900和GSMl800(GSM Phase2+),支持聲音、數(shù)據(jù)、SMS(短消息)、FAX(傳真);進(jìn)行GPRS數(shù)據(jù)傳輸時(shí),工作電流只有360mA,空閑時(shí)電流為15mA;數(shù)據(jù)上傳速度達(dá)到21.4Kbps,下載速度更是高達(dá)85.6Kbps;用戶可通過(guò)AT指令與MC35進(jìn)行命令與數(shù)據(jù)的交互,MC35是通過(guò) RS232雙向串行通道與用戶連接的。MC35的主要優(yōu)點(diǎn)是永久在線連接、快速的數(shù)據(jù)存儲(chǔ)及更快的數(shù)據(jù)傳輸速度。
系統(tǒng)ROM選用一片16Mbit的HY29LVl60來(lái)構(gòu)建16位的Flash存儲(chǔ)芯片,其存儲(chǔ)容量為2MB,對(duì)于我們的系統(tǒng)此容量已經(jīng)足夠;Flash存儲(chǔ)器在系統(tǒng)中用于存放程序的代碼,系統(tǒng)上電或復(fù)位后從此獲取指令并開(kāi)始執(zhí)行,因此要將存有程序代碼的Flash存儲(chǔ)器配置到ROM/SRAM/FLASH BankO,即將S3CA510B的nRCS<0>(pin75)接至 HY29LV-160的CE#端。
系統(tǒng)采用32位的SDRAM存儲(chǔ)器系統(tǒng),即采用兩片HY57V641620來(lái)構(gòu)建32位的RAM存儲(chǔ)系統(tǒng),其單片容量為8MB。這能充分發(fā)揮32位 CPU的數(shù)據(jù)處理能力,滿足嵌入式操作系統(tǒng)及各種相對(duì)較復(fù)雜的算法的運(yùn)行要求。
四、GPRS DTU的軟件實(shí)現(xiàn)
GPRS DTU的軟件實(shí)現(xiàn)由操作系統(tǒng)、TCP/IP協(xié)議、PPP協(xié)議以及一些應(yīng)用軟件等組成。
(一)應(yīng)用軟件部分
這部分通常跟MCU(微控制單元)聯(lián)系緊密,主要是控制MCU進(jìn)行數(shù)據(jù)采集,或者是控制 MCU進(jìn)行相關(guān)操作。
(二)操作系統(tǒng)部分
操作系統(tǒng)采用的是原碼公開(kāi)的uC/OS-Ⅱ,uC/OS -Ⅱ采用C語(yǔ)言和匯編語(yǔ)言,其中絕大部分是C語(yǔ)言,結(jié)構(gòu)簡(jiǎn)單。且可移植性非常好,已經(jīng)成功移植到了ARM芯片上,而且在移植過(guò)程中,只需修改跟操作系統(tǒng)相關(guān)的部分即可。
(三)TCP/IP協(xié)議部分
GPRS核心網(wǎng)絡(luò)基于IP技術(shù),因此,基于 GPRS的監(jiān)控系統(tǒng)的DTU需要利用TCP/IP協(xié)議來(lái)完成GPRS業(yè)務(wù)數(shù)據(jù)的裝幀和拆幀,以及保證數(shù)據(jù)在網(wǎng)絡(luò)中的安全可靠傳輸。
本設(shè)計(jì)中TCP/IP協(xié)議采用的是瑞士計(jì)算機(jī)科學(xué)院的Adam Dunkels等開(kāi)發(fā)的一套用于嵌入式系統(tǒng)的源代碼開(kāi)放的TCP/IP協(xié)議棧1wip。1wip支持多網(wǎng)絡(luò)接口下的IP轉(zhuǎn)發(fā)、支持ICMP協(xié)議、支持PPP協(xié)議、支持DHCP協(xié)議、動(dòng)態(tài)分配IP地址等特點(diǎn)。
lwip中所有的TCP/IP協(xié)議都在一個(gè)進(jìn)程(對(duì)uC/OSⅡ來(lái)說(shuō),進(jìn)程即系統(tǒng)任務(wù))當(dāng)中,這樣 TCP/IP協(xié)議棧就和內(nèi)核分開(kāi)了,不再限定于特定的操作系統(tǒng)內(nèi)核,這便于協(xié)議棧在不同操作系統(tǒng)間的移植。之所以把所有TCP/IP協(xié)議都放在一個(gè)進(jìn)程內(nèi),也是為了減少任務(wù)切換的次數(shù)(若把協(xié)議的每一層作為一個(gè)單獨(dú)的進(jìn)程,當(dāng)接收一個(gè)tcp segment時(shí),要進(jìn)行多次任務(wù)切換),任務(wù)切換是很浪費(fèi)時(shí)間的。
下面是創(chuàng)建一個(gè)和TCP/IP相關(guān)的新進(jìn)程的代碼示例:
#define LWIP-STK-SIZE 10*1024
//和tcp/ip相關(guān)任務(wù)的堆棧大小
#define LWIP-TASK-MAX 5
//和tcp/ip相關(guān)任務(wù)最多數(shù)目
#define LWIP-START-PRIO 5
//和tcp/ip相關(guān)任務(wù)的起始優(yōu)先級(jí)
OS-STK LWIP-TASK-STK[LWIP-TASK-MAX]
[LWIP-STK-SIZE];//和tcp/ip相關(guān)堆棧區(qū)
0 u8-t curr-prio-offset:
sys-thread-t;sys-systhread-new(void(*function)(void*arg),void*arg,int prio)
{//略
}
(四)PPP協(xié)議部分
業(yè)務(wù)數(shù)據(jù)按照TCP或UDP的格式封裝成 TCP數(shù)據(jù)包或者UDP數(shù)據(jù)包,然后加上IP報(bào)頭和報(bào)尾封裝成IP數(shù)據(jù)報(bào)。由于處理器與無(wú)線通信模塊的通信遵循PPP(Point to Point Protoc01)協(xié)議,因而需要將IP數(shù)據(jù)報(bào)按照PPP的幀格式封裝成PPP幀,然后才能通過(guò)串口傳給無(wú)線通信模塊。
PPP協(xié)議包含三個(gè)組成部分:
1.壓縮多協(xié)議自尋址數(shù)據(jù)包的方法。
2.用于建立、設(shè)定和測(cè)試數(shù)據(jù)鏈路連接的LCP(Link Control Protoc01)。
3.一族用于建立、設(shè)定不同網(wǎng)絡(luò)層協(xié)議的 NCP(Network Control Protoc01)。
此外,還要涉及具體的PAP(Password Authen- tication Protocol,密碼認(rèn)證協(xié)議)和IPCP(Internet Protocol Control Protocol,Internet協(xié)議控制協(xié)議)等。
DTU要跟外部網(wǎng)絡(luò)建立連接,首先要附著在 GPRS網(wǎng)上,然后發(fā)起PDP(Packet Data Protocol,分組數(shù)據(jù)協(xié)議)上下文激活過(guò)程。只有通過(guò)此過(guò)程,DTU才能與GGSN(Gateway GPRS Support Node,網(wǎng)關(guān)GPRS支持點(diǎn))建立一條邏輯通路,才能跟外部網(wǎng)絡(luò)建立連接,從而使數(shù)據(jù)以IP報(bào)的形式進(jìn)行傳送。分組協(xié)議上下文激活過(guò)程如下:
(1)系統(tǒng)發(fā)送AT指令給無(wú)線通信模塊要求建立連接,在指令中包含系統(tǒng)想要連接的APN(Access Point Name,訪問(wèn)點(diǎn)名稱);
(2)系統(tǒng)發(fā)送PPP LCP幀給無(wú)線模塊,此LCP幀的配置選項(xiàng)告訴無(wú)線通信模塊想要鑒定的協(xié)議是PAP(Password Authentication Protoc01)(在配置中賦值為C023),不是CHAP(Challenge Handshake Authentication Protoc01)(在配置選項(xiàng)中賦值為 C223);
(3)系統(tǒng)開(kāi)始進(jìn)行PAP認(rèn)證,認(rèn)證通過(guò)后,無(wú)線通信模塊將對(duì)系統(tǒng)給以回應(yīng),表明承認(rèn)其身份,并且會(huì)將用戶ID和密碼儲(chǔ)存下來(lái);
(4)系統(tǒng)通過(guò)發(fā)送NCP—IPCP配置請(qǐng)求信息給無(wú)線模塊,幀內(nèi)IP地址為空,表明請(qǐng)求動(dòng)態(tài)分配IP地址;
(5)無(wú)線模塊向SGSN發(fā)送激活PDP上下文的請(qǐng)求信息;GPRS網(wǎng)絡(luò)經(jīng)過(guò)認(rèn)證后動(dòng)態(tài)分配一個(gè)IP地址;SGSN向無(wú)線模塊發(fā)送激活PDP上下文接受消息;
(6)無(wú)線模塊發(fā)送NCP—IPCP配置回應(yīng)幀給系統(tǒng),回應(yīng)幀中包含了被動(dòng)態(tài)分配的IP地址。
至此,PDP上下文激活過(guò)程全部完成,DTU與外部數(shù)據(jù)網(wǎng)之間的數(shù)據(jù)通道建立起來(lái)了。PDP上下文激活過(guò)程如圖(3)所示:

(五)程序流程圖
本DTU采用了uC/0S-II+lwip+PPP的方案,程序流程圖如圖(4)所示。
通上電后,首先進(jìn)行硬件初始化,再對(duì)操作系統(tǒng)初始化,然后進(jìn)行系統(tǒng)文件配置,創(chuàng)建任務(wù),并對(duì)網(wǎng)絡(luò)(TCP/IP,PPP)進(jìn)行初始化,啟動(dòng)多任務(wù)調(diào)度;通過(guò)PPP發(fā)送LCP packets進(jìn)行設(shè)定和測(cè)試數(shù)據(jù)鏈路,跟MC35模塊進(jìn)行鏈接;然后,進(jìn)行PAP認(rèn)證;通過(guò)后,PPP發(fā)送NCP packets選擇和設(shè)定一個(gè)或更多的網(wǎng)絡(luò)層協(xié)議,一旦協(xié)議都被設(shè)定好了,GPRS DTU就可以發(fā)送數(shù)據(jù)了。
DTU創(chuàng)建的一個(gè)任務(wù)發(fā)送短消息給GPRS AS報(bào)告其IP地址,GPRS AS得到DTU的IP地址后,就可以跟DTU進(jìn)行通訊了,基于GPRS的監(jiān)控系統(tǒng)也就構(gòu)建起來(lái)了。
五、結(jié)束語(yǔ)
本文提出了一個(gè)比較實(shí)用的基于GPRS的監(jiān)控系統(tǒng),在此基礎(chǔ)上對(duì)其DTU的軟、硬件實(shí)現(xiàn)給出了一個(gè)完整的解決方案。隨著GPRS網(wǎng)絡(luò)的進(jìn)一步完善,系統(tǒng)的優(yōu)越性就得到更好的體現(xiàn),這將使得其能夠在如電力部門(mén)的電力系統(tǒng)遠(yuǎn)程監(jiān)控、無(wú)人職守電站、電力抄表,水利水電部門(mén)的水文資料收集、河流監(jiān)測(cè)、遠(yuǎn)程環(huán)境監(jiān)控、工業(yè)控制部門(mén)的野外作業(yè)點(diǎn)的數(shù)據(jù)采集、遙控機(jī)器人,通信部門(mén)的遠(yuǎn)端無(wú)人職守機(jī)房監(jiān)控和遠(yuǎn)程維護(hù)等等領(lǐng)域得到廣泛的應(yīng)用。