隨著國民經(jīng)濟(jì)的飛速發(fā)展,人民生活水平的不斷提高,一方面?zhèn)鹘y(tǒng)的由人工完成的電表抄表計(jì)費(fèi)由于工作量大,費(fèi)時(shí)等缺點(diǎn)迫切需要研制遠(yuǎn)程自動(dòng)抄表系統(tǒng);另一方面,現(xiàn)有的網(wǎng)絡(luò)資源,技術(shù)水平也為遠(yuǎn)程自動(dòng)抄表系統(tǒng)的實(shí)現(xiàn)提供了有力的支持。自動(dòng)抄表系統(tǒng)已成為人們關(guān)注的熱點(diǎn)。常見的遠(yuǎn)程抄表系統(tǒng)有有線抄表系統(tǒng),掌上抄表和無線抄表系統(tǒng)三大類。其中有線系統(tǒng)需要數(shù)據(jù)傳輸線,布線繁雜,且費(fèi)用較高,不適合現(xiàn)代化的發(fā)展趨勢;掌上抄表系統(tǒng)需抄表部門或用戶用掌上抄表器抄取數(shù)據(jù),因此費(fèi)時(shí)費(fèi)力。無線系統(tǒng)采用無線收發(fā)設(shè)備傳輸數(shù)據(jù),不需專門架線,系統(tǒng)結(jié)構(gòu)簡單,節(jié)省了人力物力。作者設(shè)計(jì)了一種基于無線收發(fā)模塊Q2358C的遠(yuǎn)程自動(dòng)抄表系統(tǒng)。此系統(tǒng)利用短信收發(fā)模塊,借助現(xiàn)有無線資源CDMA網(wǎng)絡(luò),將電表數(shù)據(jù)以短消息的形式發(fā)送到管理中心,管理中心通過應(yīng)用軟件對數(shù)據(jù)進(jìn)行自動(dòng)處理,然后根據(jù)處理結(jié)果采取相應(yīng)措施。文中主要介紹了遠(yuǎn)程自動(dòng)抄表系統(tǒng)的網(wǎng)絡(luò)結(jié)構(gòu)圖,Q2358C模塊結(jié)構(gòu)圖,以及短信收發(fā)平臺(tái)的設(shè)計(jì)與實(shí)現(xiàn)方法。 1 遠(yuǎn)程自動(dòng)抄表系統(tǒng)結(jié)構(gòu) 1.1 系統(tǒng)結(jié)構(gòu) 圖1為遠(yuǎn)程自動(dòng)抄表系統(tǒng)的網(wǎng)絡(luò)結(jié)構(gòu)圖。系統(tǒng)由電能表、微控制器、無線收發(fā)模塊、CDMA網(wǎng)絡(luò)和計(jì)算機(jī)組成。其中電能表可采用王柏林教授研制的多功能數(shù)字電能表;微控制器由單片機(jī)及其外圍電路組成,是用戶終端的一個(gè)核心部分,它能根據(jù)收發(fā)模塊收到的指令信息采取相應(yīng)的動(dòng)作,若收到的是采集數(shù)據(jù)的指令則首先把采集器記錄的脈沖個(gè)數(shù)乘以每個(gè)脈沖代表的耗電數(shù),然后以短消息的形式發(fā)送到管理中心,若收到的是斷電的指令則向電能表發(fā)出切斷電源的信息;無線收發(fā)模塊在系統(tǒng)中作為信息傳輸平臺(tái),它能把采集到的電表數(shù)據(jù)或控制指令以短消息的形式發(fā)送或接收;CDMA網(wǎng)為無線網(wǎng)絡(luò)資源,該網(wǎng)絡(luò)采用碼分多址技術(shù),容量大,安全性高,實(shí)時(shí)性好;管理中心的計(jì)算機(jī)是整個(gè)網(wǎng)絡(luò)系統(tǒng)的核心,它能向用戶端的控制器發(fā)出采集電表數(shù)據(jù)的指令,然后把接收到的數(shù)據(jù)通過應(yīng)用軟件存儲(chǔ)到數(shù)據(jù)庫,數(shù)據(jù)庫具有存儲(chǔ)、報(bào)表輸出、統(tǒng)計(jì)等功能。計(jì)算機(jī)可與銀行計(jì)算機(jī)系統(tǒng)聯(lián)網(wǎng),實(shí)現(xiàn)自動(dòng)付費(fèi);還可與Internet網(wǎng)絡(luò)相連,為用戶提供電費(fèi)的明細(xì)查詢;用戶還可通過移動(dòng)電話或PDA查詢繳費(fèi)和用電情況,提高了電費(fèi)收繳的透明度。因此效率高,管理方便。 1.2 電力管理終端系統(tǒng)結(jié)構(gòu) 圖2為系統(tǒng)管理終端結(jié)構(gòu)圖。其中PC機(jī)和短信收發(fā)模塊組成了系統(tǒng)的硬件,兩者通過RS232串行方式連接。PC機(jī)通過與模塊之間的AT命令接口實(shí)現(xiàn)模塊的短信收發(fā)功能;短信收發(fā)模塊由Q2358C模塊及其外圍電路組成,接收由PC機(jī)通過串行口發(fā)出的AT指令,然后按照AT指令產(chǎn)生相應(yīng)的動(dòng)作,完成短信收發(fā)。動(dòng)態(tài)鏈接庫和以它為基礎(chǔ)的應(yīng)用程序組成了系統(tǒng)的軟件。 1.3 Q2358C模塊結(jié)構(gòu) Q2358C模塊為WAVECOME公司推出的雙頻CDMA模塊,工作頻段為900MHZ和1800MHZ。能完成語音、數(shù)據(jù)、傳真、短信息服務(wù)以及多種附加業(yè)務(wù)的功能。具有容量大、輻射小、低功耗的特點(diǎn)。模塊具有AT命令集接口,利用此接口可完成模塊的相應(yīng)功能。 Q2358C結(jié)構(gòu)如圖3所示。從圖中可看出模塊主要由電源部分、射頻部分、基帶部分、存儲(chǔ)器和系統(tǒng)連接器組成。RF射頻部分主要包括發(fā)送機(jī)和接收機(jī)。發(fā)射機(jī)用來完成上行變換,接收機(jī)用來完成下行變換。電源部分用來給模塊供電。存儲(chǔ)器包括符合工業(yè)標(biāo)準(zhǔn)的SRAM存儲(chǔ)器和閃存存儲(chǔ)器。系統(tǒng)連接器有60個(gè)管腳,用來提供模塊和外圍電路的連接。模塊的核心部分采用的是QUACCOMM MSM5105,它是基帶處理部分,能完成語音識(shí)別、語音信箱、數(shù)據(jù)壓縮和消除回聲的功能。 2 短信收發(fā)平臺(tái)設(shè)計(jì) 在整個(gè)遠(yuǎn)程抄表系統(tǒng)中,Q2358C模塊用做數(shù)據(jù)和指令傳輸?shù)墓ぞ撸亩绦攀瞻l(fā)功能的實(shí)現(xiàn)對于整個(gè)系統(tǒng)功能的實(shí)現(xiàn)起著決定性的作用。短信不能收發(fā),數(shù)據(jù)和指令也就不能傳輸,系統(tǒng)也就無法工作。下面主要介紹的短信收發(fā)平臺(tái)由PC機(jī)和短信收發(fā)模塊組成,以及通過軟件設(shè)計(jì)實(shí)現(xiàn)短信收發(fā)的方法。 2.1 AT指令與應(yīng)用 AT指令最初由Hayes公司推出,用于對調(diào)制解調(diào)器的控制,現(xiàn)在已演化為一種的標(biāo)準(zhǔn),所有移動(dòng)模塊都支持AT指令。基于Q2358C模塊的AT指令采用的是1.70版本,共240多條,歸納起來可分成通用指令、功能操作指令和安全保護(hù)指令三大類。其中有關(guān)短信息服務(wù)的指令共17條。利用這些AT指令可實(shí)現(xiàn)短信的發(fā)送、接收、列表、閱讀、刪除和存儲(chǔ)等功能。 AT指令的基本格式為:AT+命令字符及相關(guān)設(shè)置參數(shù)。AT為前導(dǎo)符,表示命令的開始;命令字符及相關(guān)設(shè)置參數(shù)表示進(jìn)行何種操作,如:AT+CMGR=〈n〉表示讀索引號(hào)為n的短消息。 AT指令的返回代碼分別以字符和開始和結(jié)束。如果指令的語法不正確,就返回“ERROR”字符;如果指令是正確的,但存在錯(cuò)誤的參數(shù),便返回“+CME ERROR:”或“+CMS ERROR:”。和是不同的錯(cuò)誤代碼;如果指令被成功的執(zhí)行則會(huì)返回“OK”。 2.2 動(dòng)態(tài)鏈接庫 動(dòng)態(tài)鏈接庫(Dynamic-Link Libraries),就是一個(gè)可執(zhí)行模塊(其擴(kuò)展名為.DLL),模塊中包含了可以被其它應(yīng)用程序使用或其它DLLs使用的例程和資源。DLLs的特點(diǎn)在于它的代碼是在運(yùn)行時(shí)動(dòng)態(tài)地鏈接到調(diào)用它的程序中,DLLs一旦加載,就能被多個(gè)應(yīng)用程序或其它DLLs共享。在CDMA短信收發(fā)平臺(tái)的設(shè)計(jì)過程中,作者采用VC的COM組件技術(shù)來建立動(dòng)態(tài)鏈接庫,實(shí)現(xiàn)模塊的短信收發(fā)功能。建立的方法是首先在VC中新建一個(gè)ATL COM工程,然后創(chuàng)建接口SMCC,接著按照最初的設(shè)計(jì)添加其它類,最后完成編碼和調(diào)試。 該組件的接口名稱是SMCC,提供的接口函數(shù)有:Initialize,UnInitialize,SendSMS,ReadSMS,ListSMS,DeleSMS,NextSMS,SetLangAndEncod。其功能分別為:初始化系統(tǒng),打開串口,設(shè)置波特率等參數(shù);關(guān)閉串口,釋放系統(tǒng)資源;發(fā)送短信息;根據(jù)索引讀取一條短信息;根據(jù)短消息狀態(tài)羅列短消息;刪除短消息;在ListSMS后獲得下一條短消息;設(shè)置短消息語言和編碼。 該模塊的內(nèi)部實(shí)現(xiàn)可用圖4所示的類圖描述。其中ISerialComm為串口操作接口,CSerialComm為它的具體實(shí)現(xiàn);ISMParser是短消息內(nèi)容分解接口,可對一條或多條短信息進(jìn)行分解,提取短消息內(nèi)容;SMS_INFO 是短消息結(jié)構(gòu),包含有序列號(hào),消息狀態(tài),呼叫號(hào)碼,服務(wù)中心時(shí)間戳,編碼語言,編碼方法,優(yōu)先級(jí),回叫號(hào)碼;IHandler 是系統(tǒng)消息處理類,處理諸如新消息到來,SIM卡已滿,不完整消息,收到單條消息,收到短消息列表,AT命令正確,錯(cuò)誤等類型的消息;CATFactory 是AT 指令形成類,負(fù)責(zé)各種AT指令的形成,以字符串的形式返回;CSMCC 則為該接口的具體實(shí)現(xiàn),它負(fù)責(zé)總的系統(tǒng)調(diào)度,如:利用CATFactory形成AT指令,用CserialComm發(fā)送接收,利用ISMParser分解返回結(jié)果,以及利用ImessageHandler處理系統(tǒng)消息等。動(dòng)態(tài)鏈接庫的程序流程圖5所示。 2.3 短信收發(fā)應(yīng)用程序設(shè)計(jì) 短信收發(fā)應(yīng)用程序是在VB的開發(fā)環(huán)境下完成的。首先創(chuàng)建一個(gè)工程進(jìn)入操作界面的設(shè)計(jì)窗口,在界面上設(shè)置兩個(gè)文本框和命令按鈕,文本框用來顯示短信內(nèi)容或輸入?yún)?shù),命令按鈕用來啟動(dòng)發(fā)送或接收事件。然后在代碼窗口中編寫應(yīng)用程序代碼。編寫代碼時(shí)首先要調(diào)用動(dòng)態(tài)鏈接庫,方法是在工程菜單中選擇“引用”,然后在出現(xiàn)的對話框中選擇要引用的動(dòng)態(tài)鏈接庫。 2.4 程序調(diào)試 在短信收發(fā)的程序調(diào)試過程中出現(xiàn)了兩個(gè)比較明顯的問題。一個(gè)是串口操作問題,當(dāng)向串口傳送AT指令時(shí),通過串口接收的數(shù)據(jù)卻不是完整信息,要分多次才接收完整。經(jīng)仔細(xì)調(diào)試發(fā)現(xiàn),原來系統(tǒng)硬件部分在收到指令后是分兩次應(yīng)答,先是指令的返回,然后才是指令執(zhí)行結(jié)果,但指令執(zhí)行結(jié)果也不是一次返回,而是有可能分發(fā)多次,而作者在設(shè)置串口模式時(shí)是異步模式,這樣才造成以上的問題。解決辦法是,通過SetCommTimeouts函數(shù)來設(shè)置ReadIntervalTimeout(讀取間隔超時(shí))。由于默認(rèn)的超時(shí)間隔過短,以致還沒讀取完整信息就退出了。將超時(shí)間隔改為10ms就解決問題了。 另一個(gè)比較明顯的問題是當(dāng)采用UNICODE編碼方式發(fā)送短信時(shí),對方手機(jī)接收到的信息不完整,通過程序調(diào)試發(fā)現(xiàn)原來在采用此編碼時(shí),因?yàn)樵紨?shù)據(jù)為ASCII,轉(zhuǎn)換為UNICODE后數(shù)據(jù)大小變?yōu)樵瓉淼膬杀叮畛醴峙涞木彌_區(qū)是按照ASCII的,所以導(dǎo)致部分信息丟失。重新分配緩沖區(qū)即解決問題。 3 結(jié)語 基于CDMA網(wǎng)絡(luò)的遠(yuǎn)程自動(dòng)抄表系統(tǒng)可擴(kuò)展成對多路電表數(shù)據(jù)的傳輸,這樣可充分的利用短信收發(fā)模塊,同時(shí)降低系統(tǒng)的成本。系統(tǒng)覆蓋范圍廣,不受地域限制(只要是無線網(wǎng)絡(luò)覆蓋范圍即可),成本低,能及時(shí)準(zhǔn)確的向用電管理部門提供數(shù)據(jù),且數(shù)據(jù)的分析和處理以及用電管理由系統(tǒng)自動(dòng)完成,因此節(jié)約了人力物力,可避免用電欠費(fèi)問題,提高了管理水平,具有廣闊的應(yīng)用前景。 |