??? 摘 要: 借助內(nèi)容提供商SP的運(yùn)行平臺(tái)構(gòu)建基于短信的無線測(cè)控系統(tǒng)" title="測(cè)控系統(tǒng)">測(cè)控系統(tǒng),拋棄了傳統(tǒng)的手機(jī)對(duì)手機(jī)的通信模式,而將前端改為SP接入,并且給鏈路上的短信封裝了靈活的通信協(xié)議" title="通信協(xié)議">通信協(xié)議,從而在一定程序上提高了系統(tǒng)的整體性能,具有良好的可擴(kuò)展性和移植性。
??? 關(guān)鍵詞: 短信? SP? 通信協(xié)議? 無線測(cè)控
?
??? 目前,無線測(cè)控系統(tǒng)已經(jīng)廣泛地運(yùn)用在車輛監(jiān)控、無線抄表、小區(qū)傳呼、工業(yè)數(shù)據(jù)采集系統(tǒng)等眾多領(lǐng)域之中。常用的無線數(shù)據(jù)傳輸方式主要有以下兩種:無線數(shù)傳電臺(tái)以及公用移動(dòng)通信網(wǎng)。前者雖然實(shí)時(shí)性較高,傳輸速率也較快,但是由于其系統(tǒng)建設(shè)周期長(zhǎng),投資費(fèi)用高以及需要一定高度的基礎(chǔ)設(shè)施與之配合等缺點(diǎn),導(dǎo)致其使用不是非常普遍。近年來,隨著GSM、PHS等網(wǎng)絡(luò)的迅猛發(fā)展,手機(jī)短信網(wǎng)絡(luò)的覆蓋面越來越廣,系統(tǒng)的可靠性越來越高,重要的是該無線網(wǎng)絡(luò)不需要用戶進(jìn)行自行維護(hù)。由于上述原因,在慢速測(cè)控系統(tǒng)中基于手機(jī)短信網(wǎng)絡(luò)的無線測(cè)控系統(tǒng)變得越來越普及。
??? 以往討論較多的基于短信的測(cè)控系統(tǒng)往往是手機(jī)對(duì)手機(jī)的模式[1],即監(jiān)控中心與遠(yuǎn)程終端都是通過手機(jī)模塊來進(jìn)行短信數(shù)據(jù)的互傳。這種模式的主要缺點(diǎn)是很難實(shí)現(xiàn)一點(diǎn)對(duì)多點(diǎn)的數(shù)據(jù)傳輸。本文介紹一種借助內(nèi)容提供商SP(Service Provider)的運(yùn)行平臺(tái)來構(gòu)建基于短信的無線測(cè)控系統(tǒng)。該系統(tǒng)在監(jiān)控中心端通過網(wǎng)絡(luò)直接與移動(dòng)運(yùn)營商的短信網(wǎng)關(guān)相連,避免了在監(jiān)控中心端使用手機(jī)模塊,因此可以較為容易地實(shí)現(xiàn)一點(diǎn)與多點(diǎn)之間的數(shù)據(jù)通信,大大提高了短信收發(fā)的頻率。
1 系統(tǒng)基本結(jié)構(gòu)
??? 本系統(tǒng)在設(shè)計(jì)時(shí)所針對(duì)的短信網(wǎng)絡(luò)是中國電信的PHS網(wǎng)絡(luò)。系統(tǒng)采用一點(diǎn)對(duì)多點(diǎn)的雙向通信方式,一點(diǎn)即為數(shù)據(jù)監(jiān)控" title="數(shù)據(jù)監(jiān)控">數(shù)據(jù)監(jiān)控中心,多點(diǎn)則為多個(gè)遠(yuǎn)程終端。每個(gè)遠(yuǎn)程終端連接一個(gè)受控設(shè)備,受控設(shè)備為支持Modbus協(xié)議的PLC。
??? 本系統(tǒng)的設(shè)計(jì)分成三個(gè)部分:數(shù)據(jù)監(jiān)控中心、遠(yuǎn)程終端以及短信鏈路上的通信協(xié)議。數(shù)據(jù)監(jiān)控中心發(fā)送應(yīng)用于遠(yuǎn)程終端的控制命令,并且接收來自遠(yuǎn)程終端的回復(fù)信息。其前端通過SP方式接入中國電信的PHS短信網(wǎng)關(guān),所有短信的收發(fā)都需通過短信網(wǎng)關(guān)來與短信中心進(jìn)行交互。遠(yuǎn)程終端負(fù)責(zé)連接PLC,接收、解析并傳遞來自監(jiān)控中心的控制命令;同時(shí)將PLC返回的信息以短信形式發(fā)送給數(shù)據(jù)監(jiān)控中心。通信協(xié)議的作用則是為了改善短信鏈路上的固有缺陷,進(jìn)一步提高系統(tǒng)的性能。
??? 系統(tǒng)的拓?fù)浣Y(jié)構(gòu)和分層模型分別如圖1、圖2所示。
?
2 數(shù)據(jù)監(jiān)控中心設(shè)計(jì)
??? 數(shù)據(jù)監(jiān)控中心采用SP方式接入短信網(wǎng)絡(luò),設(shè)計(jì)分成SP接口軟件和人機(jī)交互軟件兩個(gè)部分。
2.1 SP接口軟件
??? 傳統(tǒng)監(jiān)控中心的設(shè)計(jì)是通過一個(gè)或多個(gè)手機(jī)模塊以無線的方式接入短信網(wǎng)絡(luò)[1]。其缺點(diǎn)是增加了系統(tǒng)的硬件成本,更重要的是短信收發(fā)的頻率受到短信模塊自身能力的限制(較好的工業(yè)模塊每秒僅能處理1~2條短信),從而使監(jiān)控中心無法對(duì)多個(gè)終端同時(shí)進(jìn)行訪問,降低了發(fā)送端的實(shí)時(shí)性。在接入方式改為SP以后,監(jiān)控中心就可以以短信網(wǎng)關(guān)作為橋梁,以有線網(wǎng)絡(luò)的方式直接與短信中心進(jìn)行短消息" title="短消息">短消息的交互,因而大幅度提高了數(shù)據(jù)監(jiān)控中心的短信收發(fā)頻率。
??? SP和模塊的發(fā)送性能對(duì)比如表1所示,在進(jìn)行大話務(wù)測(cè)試時(shí),SP每秒5條的發(fā)送成功率亦為100%。與原系統(tǒng)相比,SP還具有以下優(yōu)點(diǎn):(1)減少了短信在空中駐留所帶來的延時(shí)。(2)增加了監(jiān)控中心發(fā)送的數(shù)據(jù)的實(shí)時(shí)性。(3)增強(qiáng)了系統(tǒng)的可靠性(SP與短信網(wǎng)關(guān)底層通過TCP/IP協(xié)議傳遞數(shù)據(jù))。(4)可以同時(shí)收發(fā)短信(收發(fā)依賴于多個(gè)不同的線程);而模塊在一個(gè)時(shí)刻只能處理一個(gè)請(qǐng)求。(5)SP接入為軟件接入,便于前期開發(fā)、后期維護(hù)和系統(tǒng)升級(jí)。
???
??? SP接口軟件負(fù)責(zé)整個(gè)數(shù)據(jù)監(jiān)控中心與短信網(wǎng)關(guān)之間的短消息交互,它與短信網(wǎng)關(guān)之間采用SMGP協(xié)議進(jìn)行通信。SMGP協(xié)議是一個(gè)基于數(shù)據(jù)包的交互式協(xié)議,底層通過TCP/IP協(xié)議傳遞數(shù)據(jù)包,每個(gè)數(shù)據(jù)包都包含請(qǐng)求標(biāo)識(shí),代表數(shù)據(jù)包的用途。SP與短信網(wǎng)關(guān)之間的通信為長(zhǎng)連接[2],并采用Client/Server方式交互信息,SP作為Client端,網(wǎng)關(guān)作為Server端。
??? SP接口軟件在通過SMGP協(xié)議與短信網(wǎng)關(guān)進(jìn)行數(shù)據(jù)交互時(shí)需采用特定的API函數(shù),該類函數(shù)由短信網(wǎng)關(guān)設(shè)備供應(yīng)商提供。最主要的API函數(shù)有以下幾種[2]:
??? InitSMGPAPI(Parameter):初始化短信網(wǎng)關(guān)的API函數(shù),應(yīng)用程序只需調(diào)用一次此函數(shù)。
??? SMGPSendSingle(Parameters):向短消息網(wǎng)關(guān)發(fā)送1條短消息到一個(gè)終端用戶。
??? SMGPSendBatch(Parameters):向短消息網(wǎng)關(guān)發(fā)送1條短消息到多個(gè)終端用戶。
??? GetSendBatchResp(Parameters):讀取群發(fā)的某一條短消息的標(biāo)識(shí)及其發(fā)送結(jié)果。
??? SMGPDeliver(Parameters):連接短消息網(wǎng)關(guān),等待接收屬于本SP的短消息。
??? 因此,SP接口軟件的核心就是利用以上函數(shù)處理好兩個(gè)線程(發(fā)送線程和接收線程)及其分別對(duì)應(yīng)的兩個(gè)緩沖區(qū)(發(fā)送緩沖區(qū)和接收緩沖區(qū))之間的關(guān)系。為了保障SP的發(fā)送性能,發(fā)送線程還配有重發(fā)機(jī)制。SP接口軟件工作流程圖如圖3所示。
?
2.2 人機(jī)交互軟件
??? 人機(jī)交互軟件負(fù)責(zé)與用戶進(jìn)行溝通。其設(shè)計(jì)可分成監(jiān)控軟件、數(shù)據(jù)庫管理軟件和協(xié)議處理軟件三個(gè)部分。
??? 監(jiān)控軟件采用GE Fanuc 的iFIX 軟件。它具有易于擴(kuò)展和集成、易于與數(shù)據(jù)庫相結(jié)合、易于采用分布式網(wǎng)絡(luò)結(jié)構(gòu)等優(yōu)點(diǎn)。本系統(tǒng)中,iFIX用于生成控制遠(yuǎn)程PLC的Modbus監(jiān)控命令。
??? 數(shù)據(jù)庫管理軟件采用SQL Server 2000,它可以方便地與iFIX 進(jìn)行接口。iFIX全面支持ODBC API接口[3],可直接把實(shí)時(shí)數(shù)據(jù)寫入一個(gè)或多個(gè)關(guān)系數(shù)據(jù)庫中,并可將數(shù)據(jù)從關(guān)系數(shù)據(jù)庫寫回到iFIX 實(shí)時(shí)數(shù)據(jù)庫中。
??? 協(xié)議處理軟件主要進(jìn)行通信協(xié)議的處理接收iFIX軟件的Modbus監(jiān)控命令,并將其進(jìn)行協(xié)議封裝后提交給SP接口軟件;同時(shí)將接收緩沖區(qū)內(nèi)的短信進(jìn)行協(xié)議解析,并返回給iFIX。
3 遠(yuǎn)程終端設(shè)計(jì)
3.1硬件設(shè)計(jì)
??? 與傳統(tǒng)的遠(yuǎn)程終端相似,硬件由典型的MCU、存儲(chǔ)器擴(kuò)展、復(fù)位電路、電平轉(zhuǎn)換以及相應(yīng)的短信模塊所組成。另外,由于MCU是通過串口" title="串口">串口上的AT命令與短信模塊進(jìn)行通信的,且MCU與受控的PLC之間的通信也是通過串口上的Modbus命令進(jìn)行的,因此,本系統(tǒng)還需加上串口擴(kuò)展電路,即將原MCU上的串口由一個(gè)轉(zhuǎn)為多個(gè)。硬件核心框圖如圖4所示。
?
3.2 固件設(shè)計(jì)
??? 遠(yuǎn)程終端固件采用C語言設(shè)計(jì),使用μVision3作為開發(fā)環(huán)境。固件結(jié)構(gòu)可以分為三層:UART層、AT命令層以及協(xié)議層。這樣處理的優(yōu)點(diǎn)是結(jié)構(gòu)清晰,便于移植[4]。
??? UART層:該層面向串口數(shù)據(jù)流,它將串口讀寫的函數(shù)進(jìn)行了封裝,并采用中斷驅(qū)動(dòng)模式對(duì)串口數(shù)據(jù)進(jìn)行處理。在中斷服務(wù)程序中,僅對(duì)由固件實(shí)現(xiàn)的兩個(gè)緩沖區(qū)(UART發(fā)送和接收緩沖區(qū))進(jìn)行操作。
??? AT命令層:該層面向手機(jī)模塊,主要完成發(fā)送短信、接收短信和刪除短信這三個(gè)功能。它從UART接收緩沖區(qū)中提取出AT命令,或者生成AT命令并填入U(xiǎn)ART發(fā)送緩沖區(qū)。
??? 協(xié)議層:該層與人機(jī)交互軟件的協(xié)議處理軟件相對(duì)等,主要進(jìn)行通信協(xié)議的處理,將來自AT命令層的短信內(nèi)容進(jìn)行解析,恢復(fù)出原始Modbus控制命令,然后將其發(fā)送給PLC;并將來自PLC的回復(fù)信息按照協(xié)議要求進(jìn)行打包,提交給下一層的AT命令層處理。
4 通信協(xié)議
4.1協(xié)議的特性
??? 短信本身雖然具有一些無法比擬的優(yōu)點(diǎn)(如通信鏈路不需自行維護(hù)),但是它也隱含著一些特殊的缺陷,比如短信到來的無序性(后發(fā)先到)、延時(shí)的不確定性(易產(chǎn)生過期短信)、抗攻擊性弱(無法自行判斷短信是否合法)以及短信內(nèi)容有長(zhǎng)度限制(每條短信116個(gè)字節(jié))。這一系列的缺陷都將給系統(tǒng)的可靠性和實(shí)時(shí)性造成影響,如果不加以適當(dāng)?shù)奶幚韺?huì)導(dǎo)致系統(tǒng)崩潰。因此,本系統(tǒng)在短信鏈路上引入了自定義的通信協(xié)議,即監(jiān)控中心與遠(yuǎn)程終端之間交互的短信均需經(jīng)過該通信協(xié)議進(jìn)行封裝。該協(xié)議提供的主要特性包括:
??? (1)數(shù)據(jù)完整性:配有數(shù)據(jù)校驗(yàn)機(jī)制,確保短信在傳輸過程中沒有傳輸錯(cuò)誤。
??? (2)安全性:自動(dòng)剔除非法短信(包括號(hào)碼非法、內(nèi)容非法以及時(shí)間非法)。
??? (3)可靠性:命令與回復(fù)通過序列號(hào)一一對(duì)應(yīng)。
??? (4)認(rèn)證:配有認(rèn)證機(jī)制,確保短信來自正確的信息源。
??? (5)加密:對(duì)原始數(shù)據(jù)進(jìn)行加密,防止其被未經(jīng)授權(quán)的讀取。
??? (6)分片:對(duì)內(nèi)容過長(zhǎng)的短信進(jìn)行自動(dòng)分割,分別封裝在序列號(hào)相同而分片號(hào)不同的短信中予以發(fā)送;接收端將分片短信予以組裝。
??? 通信協(xié)議的幀結(jié)構(gòu)如表2所示。
?
4.2 協(xié)議的處理過程
??? 接收時(shí)協(xié)議處理的實(shí)際上就是對(duì)多消息緩沖區(qū)的維護(hù):程序在內(nèi)存單元中開辟N個(gè)緩沖區(qū)(稱為多消息緩沖區(qū)),用于緩沖接收到的合法短信。每一個(gè)緩沖區(qū)可以容納最多5條分片短信,且該緩沖區(qū)內(nèi)所有短信的序列號(hào)必須相等或者相差N的倍數(shù)(N即為開辟緩沖區(qū)的個(gè)數(shù))。接收方的協(xié)議處理流程圖如圖5所示。
?
??? 表3反映了在網(wǎng)絡(luò)狀況不好時(shí)協(xié)議所帶來的良好性能。從表中數(shù)據(jù)含義可以看出:剔除一條延時(shí)過長(zhǎng)的短信可降低網(wǎng)絡(luò)阻塞的程度,保證其后續(xù)短信能夠按時(shí)到達(dá)。因此,加了協(xié)議的系統(tǒng)比不加協(xié)議的系統(tǒng)其平均延時(shí)從57.6秒降低至15.8秒,大幅度提高了系統(tǒng)的實(shí)時(shí)性能。
?
5 系統(tǒng)運(yùn)行情況
??? 本系統(tǒng)進(jìn)行了測(cè)試以驗(yàn)證系統(tǒng)的可行性。測(cè)試系統(tǒng)采用兩個(gè)遠(yuǎn)程終端及相應(yīng)模擬PLC,PLC站號(hào)定為21和44。數(shù)據(jù)監(jiān)控中心分別以10秒和15秒為間隔同時(shí)向兩臺(tái)PLC發(fā)送Modbus控制命令,且等待回復(fù)時(shí)間均設(shè)為命令的發(fā)送間隔,超時(shí)的回復(fù)短信均作為命令失敗處理。系統(tǒng)測(cè)試結(jié)果如表4所示。
?
??? 從表中可以看出,由于短信固有延時(shí)的存在,只要給回環(huán)系統(tǒng)加了時(shí)延限制,其成功率就無法達(dá)到100%。但是適當(dāng)調(diào)整時(shí)延后,成功率仍可達(dá)到95%左右。因此,本系統(tǒng)適合于數(shù)據(jù)量較小的、突發(fā)性以及對(duì)延時(shí)要求不太高的無線測(cè)控系統(tǒng)。
本文構(gòu)建了一個(gè)基于SP接入的無線測(cè)控系統(tǒng)。該系統(tǒng)較為容易地實(shí)現(xiàn)了一點(diǎn)與多點(diǎn)之間的數(shù)據(jù)通信,提高了監(jiān)控中心端短信的收發(fā)頻率,且靈活的通信協(xié)議進(jìn)一步保障了系統(tǒng)的性能。因此,它可以較為容易地移植到類似的控制領(lǐng)域中去。
參考文獻(xiàn)
[1] 高鋒,季瑞松.基于GSM的短信模塊TC35在遠(yuǎn)程抄表上的應(yīng)用[J].電工技術(shù),2004,9:32-35.
[2]?基于固定電話網(wǎng)的信息終端及綜合信息系統(tǒng)技術(shù)規(guī)范:第七分冊(cè)短消息網(wǎng)關(guān)(SMGP)協(xié)議V2.0.[S].CT/T6.2004.
[3]?汪曉平. PLC可編程控制器系統(tǒng)開發(fā)實(shí)例導(dǎo)航[M].北京:人民郵電出版社,2004:334-365.
[4]?LABROSSE J J.嵌入式系統(tǒng)構(gòu)件[M].北京: 機(jī)械工業(yè)出版社,2002:49-82.