<meter id="pryje"><nav id="pryje"><delect id="pryje"></delect></nav></meter>
          <label id="pryje"></label>

          新聞中心

          EEPW首頁(yè) > 設(shè)計(jì)應(yīng)用 > 基于CDMA的車載終端數(shù)據(jù)通信設(shè)計(jì)

          基于CDMA的車載終端數(shù)據(jù)通信設(shè)計(jì)

          作者: 時(shí)間:2010-12-23 來(lái)源:網(wǎng)絡(luò) 收藏

          在傳統(tǒng)的移動(dòng)網(wǎng)絡(luò)中,很多網(wǎng)絡(luò)問(wèn)題需要工程師或者技術(shù)人員攜帶儀表駕車路測(cè)來(lái)發(fā)現(xiàn)。這種測(cè)試方法在以往的網(wǎng)絡(luò)優(yōu)化測(cè)試中已采用多年,存在系統(tǒng)復(fù)雜、人員管理不方便、效率低下等問(wèn)題。且每個(gè)技術(shù)人員或工程師都不可能負(fù)責(zé)太多的基站小區(qū)優(yōu)化工作和問(wèn)題分析。為此,建立無(wú)線網(wǎng)絡(luò)質(zhì)量自動(dòng)監(jiān)測(cè)系統(tǒng)的工作是有必要的。

          本文引用地址:http://www.ex-cimer.com/article/260593.htm

          簡(jiǎn)介

          組成

          圖1為的結(jié)構(gòu)圖,車載數(shù)據(jù)終端主要包括單片機(jī)(rabbit2000)、GPS模塊、 手機(jī)模塊、GSM手機(jī)模塊、鐵電存儲(chǔ)器、電源變換模塊等。其中,模塊負(fù)責(zé)所采集數(shù)據(jù)的無(wú)線傳輸。

          圖1 車載終端結(jié)構(gòu)圖

          車載終端工作原理

          車載終端的工作原理可以描述為數(shù)據(jù)采集、數(shù)據(jù)處理及存儲(chǔ)、數(shù)據(jù)上傳幾個(gè)過(guò)程。其中數(shù)據(jù)采集讀取GPS模塊返回的消息,提取經(jīng)緯度信息,通過(guò)GSM和 模塊分別采集CDMA和GSM網(wǎng)絡(luò)質(zhì)量參數(shù);數(shù)據(jù)處理及存儲(chǔ)根據(jù)經(jīng)緯度信息判斷車輛行駛距離,由此距離判斷是否記錄該次采集的數(shù)據(jù),上傳數(shù)據(jù)時(shí)再?gòu)蔫F電中讀取這些數(shù)據(jù);數(shù)據(jù)上傳通過(guò)簡(jiǎn)單IP實(shí)現(xiàn)與監(jiān)控中心的連接,并實(shí)時(shí)檢測(cè)連接狀態(tài),連接中斷則立即重新連接,保證數(shù)據(jù)能實(shí)時(shí)地上傳給監(jiān)控中心。

          數(shù)據(jù)傳輸?shù)膶?shí)現(xiàn)

          硬件連接

          本文中采用了MG815+模塊及UIM卡,硬件連接如圖2所示。圖中左側(cè)為UIM卡連接參考電路,右側(cè)為MG815+模塊連接參考電路。由于模塊串口輸出電平為3.8V,而Rabbit串口輸出電平為5V,因此在兩者之間增加了串口電平轉(zhuǎn)換芯片NC7WZ07,以提升Rabbit和模塊之間串口通信的可靠性。

          圖2 MG815+及UIM卡的硬件連接圖

          AT(Attention) 指令最初由 Hayes 公司推出,主要用于對(duì)調(diào)制解調(diào)器的控制,現(xiàn)在已演化為一種標(biāo)準(zhǔn),所有移動(dòng)模塊都支持 AT 指令。雖然不同廠家的手機(jī)模塊都參照 GSM 協(xié)議,但格式還是有所不同,開(kāi)發(fā)過(guò)程中一定要認(rèn)真參考廠家給的資料。AT 指令格式如下:

          都以“AT”開(kāi)頭,以結(jié)束,例如 “ATE0rn”

          返回格式:跟AT指令相關(guān)的字符串>,例如,對(duì)于上一AT命令的返回為“ATE0rnrnOKrn” 。

          連接的建立

          TCP的連接建立經(jīng)過(guò)以下過(guò)程:

          ① 建立撥號(hào)連接,AT命令為AT+ZPPPOPENrn。

          ② 建立TCP連接,AT 命令為AT+ZIPSETUP=SOCKET_NUM, IP_AD, PORT_NUM rn,例如AT+ZIPSETUP=1,211.136.18.171,5000rn。

          ③ TCP連接成功建立后,可以發(fā)送數(shù)據(jù),AT命令為AT+ZIPSEND=, rrn,例如AT+ZIPSEND=1,4rgoodrn,發(fā)送的數(shù)據(jù)為“good”。

          這里所用到的查詢命令及各命令返回說(shuō)明包括:

          ①查詢撥號(hào)連接狀態(tài)命令:AT+ZPPPSTATUSrn

          返回有三種狀態(tài):撥號(hào)連接建立rn+ZPPPSTATUS: OPENEDrnrnOKrn

          撥號(hào)連接斷開(kāi) rn+ZPPPSTATUS: CLOSEDrnr nOKrn

          正在撥號(hào) rn+ZPPPSTATUS: * rnrnOKrn

          ②查詢TCP連接狀態(tài)命令:AT+ZIPSTATUS= SOCKET_NUM rn

          返回有三種狀態(tài):TCP連接建立 rn+ZIPSTATUS: ESTABLISHEDrnrnOKrn

          TCP連接失敗 rn+ZIPSTATU S:CLOSEDrnrnOKrn

          正在建立連接 rn+ZIPSTATUS:SYN_SENTrnrn OKrn

          數(shù)據(jù)的發(fā)送和接收

          模塊從TCP通道接收到數(shù)據(jù)后,由串口返回消息:+ZIPRECV:0,1,, rn,例如,+ZIPRECV: 0,10,1234567890rn,則TCP通道接收的數(shù)據(jù)為1234567890。

          +ZIPRECV為異步消息,在任意時(shí)刻返回,在接收該消息時(shí)要注意。

          數(shù)據(jù)傳輸?shù)能浖O(shè)計(jì)

          終端與監(jiān)控中心以報(bào)文形式交互數(shù)據(jù),報(bào)文包括數(shù)據(jù)包(采集的數(shù)據(jù)信息)、心跳包(定時(shí)發(fā)送,以維持網(wǎng)絡(luò)連接)以及校時(shí)請(qǐng)求,以上均由終端主動(dòng)發(fā)起,監(jiān)控中心回復(fù)。數(shù)據(jù)通信子程序的流程如圖3。

          圖3 數(shù)據(jù)通信流程圖

          根據(jù)流程圖可知,發(fā)送數(shù)據(jù)后等待監(jiān)控中心的回復(fù)消息,設(shè)置等待時(shí)間,若超時(shí)還無(wú)回復(fù)消息,則退出等待;下次發(fā)送數(shù)據(jù)時(shí)重新發(fā)送。

          數(shù)據(jù)傳輸實(shí)例

          終端發(fā)送的數(shù)據(jù)包如下:

          01780102000146003030407 5345460008184101641000105 03010701221632303903.6741N1215 3.1326E27990357079425-70-66-632 004070031040828531405011144 1801194100068722100694210807 02200906902012

          數(shù)據(jù)包中0178為報(bào)文長(zhǎng)度;01為版本號(hào);02為命令字;0001為數(shù)據(jù)包序列號(hào);460030304075345為UIM卡號(hào);460008184101641為SIM卡號(hào);00010503為系統(tǒng)工作狀態(tài)字;01為后面跟1條數(shù)據(jù)(每條長(zhǎng)度126)。

          0701221632303903.6741N12153.13 26E27990357079425-70-66-63200407003104082853140501114 418011941000687221006942 1080702200906902012為一條數(shù)據(jù),依次為時(shí)間、經(jīng)緯度、C網(wǎng)質(zhì)量參數(shù)和G網(wǎng)質(zhì)量參數(shù)。

          注意事項(xiàng)

          拆包現(xiàn)象

          模塊支持在TCP通道一次發(fā)送1024字節(jié)數(shù)據(jù),但模塊內(nèi)部發(fā)送緩沖區(qū)為536字節(jié),使用+ZIPSEND命令一次發(fā)送1024字節(jié)數(shù)據(jù)時(shí),發(fā)送的1024 字節(jié)數(shù)據(jù)拆分為2條socket數(shù)據(jù)先后傳送給監(jiān)控中心服務(wù)器。可通過(guò)降低一次發(fā)送的數(shù)據(jù)量來(lái)避免此現(xiàn)象,即一次傳輸不多于536字節(jié)。

          連包現(xiàn)象

          如果兩條+ZIPSEND指令時(shí)間間隔過(guò)小,或前一包數(shù)據(jù)還未發(fā)送成功時(shí)模塊收到新的數(shù)據(jù)發(fā)送命令,則模塊把兩條指令中的數(shù)據(jù)合并為一條 socket數(shù)據(jù)發(fā)送。此時(shí),可以從兩方面解決此問(wèn)題:一是模塊發(fā)送端每發(fā)送一個(gè)數(shù)據(jù)包后,等待監(jiān)控中心返回確認(rèn)消息后再繼續(xù)其他工作,這樣只能最大限度地防止上述現(xiàn)象的發(fā)生;另一方面是在監(jiān)控中心接收端對(duì)上述現(xiàn)象進(jìn)行容錯(cuò)處理。

          此外,如果監(jiān)控中心發(fā)送兩條數(shù)據(jù)的時(shí)間間隔太短,模塊接收數(shù)據(jù)時(shí)會(huì)出現(xiàn)中心發(fā)送的兩條數(shù)據(jù)合并,以+ZIPRECV消息從串口返回,終端處理TCP數(shù)據(jù)時(shí)要考慮此問(wèn)題。

          異步消息的返回

          模塊返回的異步消息主要為TCP通道返回的數(shù)據(jù)。該消息的返回格式在前文中已說(shuō)明。由于異步消息返回時(shí)間的不確定性,該消息會(huì)以兩種方式從串口輸出。一是單獨(dú)返回。二是向模塊發(fā)送AT指令后,異步消息隨該指令的返回值一同返回,例如,當(dāng)發(fā)AT指令查詢撥號(hào)連接狀況時(shí),模塊在TCP通道收到數(shù)據(jù),則返回如下:rn+ZPPPSTATUS:OPENEDrnrnOK rn+ZIPRECV:1,24,002401810 000070312120016rn。在接收和處理異步數(shù)據(jù)時(shí)應(yīng)充分考慮異步消息的這兩種返回情況,以免丟失數(shù)據(jù)。

          結(jié)語(yǔ)

          本文詳細(xì)論述了如何通過(guò)CDMA模塊MG815+的數(shù)據(jù)傳輸功能實(shí)現(xiàn)車載終端與監(jiān)控中心的通信,并給出了軟件設(shè)計(jì)流程。最后對(duì)實(shí)測(cè)過(guò)程中遇到的問(wèn)題提出相應(yīng)解決方案,這對(duì)相關(guān)開(kāi)發(fā)人員有很大的參考價(jià)值

          cdma相關(guān)文章:cdma原理




          關(guān)鍵詞: 車載終端 CDMA TCP AT指令

          評(píng)論


          相關(guān)推薦

          技術(shù)專區(qū)

          關(guān)閉
          看屁屁www成人影院,亚洲人妻成人图片,亚洲精品成人午夜在线,日韩在线 欧美成人 (function(){ var bp = document.createElement('script'); var curProtocol = window.location.protocol.split(':')[0]; if (curProtocol === 'https') { bp.src = 'https://zz.bdstatic.com/linksubmit/push.js'; } else { bp.src = 'http://push.zhanzhang.baidu.com/push.js'; } var s = document.getElementsByTagName("script")[0]; s.parentNode.insertBefore(bp, s); })();