• 
    

    
    

      99热精品在线国产_美女午夜性视频免费_国产精品国产高清国产av_av欧美777_自拍偷自拍亚洲精品老妇_亚洲熟女精品中文字幕_www日本黄色视频网_国产精品野战在线观看 ?

      一種基于GPRS無線通信的遠(yuǎn)程I/O控制終端實(shí)現(xiàn)

      2012-01-31 05:22:02余坤杰
      電視技術(shù) 2012年13期
      關(guān)鍵詞:接收數(shù)據(jù)寄存器命令

      余坤杰

      (暨南大學(xué) 信息技術(shù)研究所,廣東 廣州510075)

      GPRS無線通信以IP封包形式傳輸,通信計(jì)費(fèi)是以其傳輸資料流量計(jì)費(fèi),通信費(fèi)用便宜、技術(shù)成熟、傳輸速度快。因此,GPRS無線通信被廣泛地應(yīng)用于遠(yuǎn)程無線控制終端設(shè)備通信中。

      隨著GPRS無線通信技術(shù)研究的不斷發(fā)展,GPRS無線通信已經(jīng)被模塊化,用戶只需要負(fù)責(zé)GPRS模塊與自己的處理器之間的通信,即可實(shí)現(xiàn)GPRS無線通信。

      本文選用GTM900作為GPRS通信模塊,LPC2214作為驅(qū)動(dòng)GPRS模塊的處理器,通過UART串口控制GPRS模塊,最終實(shí)現(xiàn)了GPRS無線通信遠(yuǎn)程控制I/O口終端的設(shè)計(jì)。整個(gè)設(shè)計(jì)采用UCOS操作系統(tǒng)[1]控制,串口通信采用標(biāo)準(zhǔn)的MODBUS協(xié)議,深入地解析了GPRS通信數(shù)據(jù)幀格式和MODBUS協(xié)議數(shù)據(jù)幀格式,從而規(guī)范了整個(gè)GPRS通信和串口通信的方式,從而確保了GPRS無線通信穩(wěn)定且可靠。

      1 GPRS模塊GTM900介紹

      1.1 GTM900系統(tǒng)框圖

      GTM900是一款可以通過AT命令實(shí)現(xiàn)GPRS無線通信的通信模塊,其系統(tǒng)框圖如圖1所示。TE是與GTM900連接的串口通信設(shè)備,TA是終端調(diào)制器,ME是移動(dòng)設(shè)備。首先,串口通信設(shè)備TE可以通過串口通信的方式向GTM900發(fā)送AT命令,AT命令經(jīng)過TA調(diào)試終端解析,返回對(duì)應(yīng)的結(jié)果,并將結(jié)果發(fā)送到TE,如果需要跟互聯(lián)網(wǎng)連接,則TA可以通過ME移動(dòng)設(shè)備將信息發(fā)送到網(wǎng)絡(luò)上去,也可以通過ME將網(wǎng)絡(luò)數(shù)據(jù)接收回來,并傳輸?shù)絋E處理。

      圖1 GTM900的結(jié)構(gòu)框圖

      1.2 GPRS模塊與LPC2214的硬件連接

      本設(shè)計(jì)采用LPC2214作為TE串口通信設(shè)備,負(fù)責(zé)GPRS模塊的驅(qū)動(dòng)和通信數(shù)據(jù)的處理。如圖2所示,LPC2214的串口負(fù)責(zé)控制GTM900的串口,由R22和C12組成的RC充電電路為GTM900提供上電復(fù)位信號(hào),在上電復(fù)位之后,GTM900就可以通過串口信號(hào)線RX和TX完成和LPC2214的串口通信和數(shù)據(jù)交互。

      圖2 GPRS模塊與LPC2214的硬件連接[2]

      1.3 GPRS模塊初始化

      在GTM900硬件與LPC2214連接之后,首先要對(duì)GPRS模塊進(jìn)行硬件檢測(cè)和初始化,整個(gè)流程如圖3所示。首先,檢測(cè)GPRS模塊功能是否正常工作,對(duì)應(yīng)的AT命令為“AT”,即LPC2214需要通過串口向GTM900發(fā)送字符串“AT”,如果正常,則GTM900會(huì)返回“OK”字符串到LPC2214的串口FIFO中;接下來就是關(guān)閉回顯功能,對(duì)應(yīng)的AT命令為“ATEO”,這一步主要是防止向GTM900發(fā)送的AT命令返回傳輸;接下來測(cè)試SIM卡是否正常工作,對(duì)應(yīng)的AT命令為“AT%TSIM”;最后,配置APN參數(shù),對(duì)應(yīng)的AT命令為AT+CGDCONT=1,“IP”,“CMET”,整個(gè)GPRS初始化完成,可以開始連接網(wǎng)絡(luò)。

      圖3 GPRS模塊初始化流程框圖

      1.4 GPRS模塊連接網(wǎng)絡(luò)流程

      GTM900的整個(gè)控制都是通過AT命令來完成的,對(duì)于每一種通信方式,都有對(duì)應(yīng)的AT命令,由AT命令控制器完成對(duì)應(yīng)命令的解析和實(shí)現(xiàn)。GTM900的連接網(wǎng)絡(luò)過程如圖4所示。首先,在連接網(wǎng)絡(luò)之前,要查詢GPRS信號(hào)強(qiáng)度情況,需要LPC2214串口向GTM900發(fā)送字符串“AT+CSQ”,如果信號(hào)良好,就可以注冊(cè)移動(dòng)網(wǎng)絡(luò);注冊(cè)移動(dòng)網(wǎng)絡(luò)對(duì)應(yīng)的AT命令為“AT+CGREG?”或“AT+CGEG?”,其中,LPC2214串口發(fā)送字符串“AT+CGREG?”表示注冊(cè)本地網(wǎng)絡(luò),發(fā)送“AT+CGEG?”表示注冊(cè)漫游網(wǎng)絡(luò);接下來就是TCP/IP的初始化,對(duì)應(yīng)的AT命令為AT%ETCPIP=“USER”,“GPRS”,其中USER和GPRS代表用戶名和密碼,可以自己根據(jù)需要設(shè)定,中間必須加上逗號(hào)分開;接下來就是選用域名解析連接上位機(jī),對(duì)應(yīng)的AT命令為AT%DNSR=“域名”,域名就是用戶GPRS需要解析的域名;最后,連接Internet,對(duì)應(yīng)的AT命令為AT%IPOPEN=“TCP”,“DEST_IP”,“DEST_PORT”,其中,TCP代表TCP通信方式,DEST_IP和DEST_PORT代表目的IP地址和端口號(hào),整個(gè)GPRS連接網(wǎng)絡(luò)流程完成,如果連接網(wǎng)絡(luò)順利,則可以通過GPRS發(fā)送和接收IP數(shù)據(jù)包了。

      圖4 GPRS模塊連接網(wǎng)絡(luò)流程圖

      1.5 GPRS通信IP數(shù)據(jù)包格式

      GPRS在連接上無線網(wǎng)絡(luò)之后,便可以進(jìn)行TCP/IP網(wǎng)絡(luò)數(shù)據(jù)通信了。GPRS在TCP/IP通信時(shí)發(fā)送數(shù)據(jù)幀格式為:AT%IPSEND=“DATA”,其中,“AT%IPSEND=”是啟動(dòng)TCP/IP發(fā)送命令字符串,雙引號(hào)里面的DATA是用戶發(fā)送的數(shù)據(jù),只要用戶以GPRS發(fā)送幀格式向GPRS模塊發(fā)送一串GPRS發(fā)送數(shù)據(jù)幀,在GPRS接收端便可以接收到一幀GPRS數(shù)據(jù)幀。GPRS接收數(shù)據(jù)幀格式為:%IPDATA:<LEN>,“DATA”,其中,“%IPDATA:”為接收數(shù)據(jù)幀包頭,LEN為接收到用戶發(fā)送過來的字節(jié)數(shù),一共占用兩個(gè)字節(jié),DATA是用戶發(fā)送過來的數(shù)據(jù)。

      2 MODBUS通信協(xié)議

      MODBUS協(xié)議[3]是一個(gè)請(qǐng)求/應(yīng)答協(xié)議,可以用來規(guī)范主機(jī)和從機(jī)之間的通信方式。MODBUS協(xié)議規(guī)范、穩(wěn)定且可靠,在串口通信上已經(jīng)得到廣泛的應(yīng)用。通用MODBUS數(shù)據(jù)幀格式如圖5所示。

      圖5 通用MODBUS數(shù)據(jù)幀

      GPRS主要是通過串口控制和交換數(shù)據(jù),因此,采用標(biāo)準(zhǔn)的串口通信協(xié)議MODBUS協(xié)議可以規(guī)范GPRS傳輸用戶數(shù)據(jù)段DATA,本文定義了2個(gè)MODBUS功能號(hào),寫多個(gè)寄存器和讀多個(gè)寄存器,并將這2個(gè)功能號(hào)對(duì)應(yīng)的用戶數(shù)據(jù)段按照MODBUS協(xié)議標(biāo)準(zhǔn)解析成如圖6和圖7的格式。

      設(shè)備號(hào)用來規(guī)定與GPRS模塊通信的具體設(shè)備,占1個(gè)字節(jié)。功能號(hào)0x10代表寫多個(gè)寄存器,對(duì)應(yīng)圖6數(shù)據(jù)幀格式,寄存器首地址代表數(shù)據(jù)寫入第一個(gè)寄存器的地址,占兩個(gè)字節(jié),寄存器數(shù)代表連續(xù)從首寄存器開始寫入的寄存器總數(shù),占2個(gè)字節(jié),寫入寄存器的數(shù)據(jù)就是對(duì)應(yīng)寫入寄存器中的數(shù)據(jù),每個(gè)寄存器對(duì)應(yīng)其中1個(gè)字節(jié)的寫入數(shù)據(jù),最后是2個(gè)字節(jié)的CRC校驗(yàn)碼;功能號(hào)0x03代表讀多個(gè)寄存器,對(duì)應(yīng)圖7數(shù)據(jù)幀格式,與寫多個(gè)寄存器相對(duì)應(yīng)。

      3 UART串口處理

      GPRS模塊與LPC2214之間的通信都是通過串口來完成的,其中,主要的串口處理包括串口發(fā)送和接收,而串口發(fā)送和接收都是以串口中斷的形式請(qǐng)求CPU處理。下面定義了UART接收和發(fā)送參數(shù)結(jié)構(gòu)體:

      上海市水務(wù)信息中心的IT基礎(chǔ)環(huán)境成為政府機(jī)構(gòu)計(jì)算機(jī)信息系統(tǒng)等級(jí)保護(hù)的重要對(duì)象,計(jì)算機(jī)網(wǎng)絡(luò)中會(huì)有大量的日常辦公信息和業(yè)務(wù)信息,如人事、科研、項(xiàng)目、招標(biāo)投標(biāo)等各種辦公信息和大量業(yè)務(wù)化系統(tǒng)采集、傳輸和處理的業(yè)務(wù)信息。信息安全涉及的人員、過程、技術(shù)是IT運(yùn)維管理中一項(xiàng)重要內(nèi)容。

      typedef struct uart_rec

      {volatile uint8 Buffer[UART1_REC_LENGTH];//接收緩沖區(qū)

      volatile uint16 BufCount;//緩沖區(qū)的數(shù)據(jù)字節(jié)數(shù)

      volatile uint8 Receiving;//正在接收字符的標(biāo)志

      volatile uint8 OverFlag;//接收完成標(biāo)志

      volatile uint8 Data[UART1_REC_LENGTH];//接收數(shù)據(jù)區(qū),1 500字符

      volatile uint8 DataOK;//數(shù)據(jù)復(fù)制到數(shù)據(jù)區(qū)完成標(biāo)志

      typedef struct uart_txd

      {volatile char Buffer[UART1_TXD_LENGTH];

      volatile char Sending;//正在發(fā)送字符的標(biāo)志

      volatile uint16 Length;

      }volatile Txd;

      對(duì)于UART發(fā)送參數(shù)結(jié)構(gòu)體很簡(jiǎn)單,只需要3個(gè)參數(shù)。其中,Buffer為串口需要發(fā)送的GPRS數(shù)據(jù)幀緩存區(qū);Sending用來標(biāo)志是否正在發(fā)送數(shù)據(jù),用來防止在發(fā)送數(shù)據(jù)的時(shí)候再次啟動(dòng)數(shù)據(jù)發(fā)送;Length是用來標(biāo)志每次發(fā)送數(shù)據(jù)時(shí)Buffer中存放的字符數(shù),發(fā)送GPRS數(shù)據(jù)幀時(shí),通過不斷的判斷和修改Txd.Length可以控制GPRS數(shù)據(jù)幀的發(fā)送,當(dāng)Txd.Length=0時(shí)表示一幀GPRS數(shù)據(jù)幀發(fā)送完畢。UART接收參數(shù)結(jié)構(gòu)體比較復(fù)雜,其中,Buffer為接收GPRS數(shù)據(jù)幀緩存區(qū);BufCount用來表示接收到GPRS數(shù)據(jù)幀的字節(jié)數(shù);Receiving用來防止在接收數(shù)據(jù)的時(shí)候啟動(dòng)數(shù)據(jù)發(fā)送,這里特地添加了一個(gè)OverFlag接收完成標(biāo)志,用來監(jiān)視GPRS數(shù)據(jù)幀是否接收完成,當(dāng)接收完成后,開始復(fù)制Buffer中的數(shù)據(jù)到Data中;DataOK表示GPRS數(shù)據(jù)幀復(fù)制完成。

      4 系統(tǒng)設(shè)計(jì)流程

      整個(gè)系統(tǒng)設(shè)計(jì)流程圖[4]如圖8所示。首先,初始化LPC2214和UCOS操作系統(tǒng),LPC2214初始化主要有PLL時(shí)鐘初始化、中斷初始化等。由于使用到UART1串口中斷,所以需要初始化串口1中斷,定時(shí)器0為UCOS操作系統(tǒng)提供系統(tǒng)節(jié)拍時(shí)鐘,所以還需要初始化定時(shí)器0中斷。

      圖8 GPRS通信系統(tǒng)流程圖

      在UCOS操作系統(tǒng)初始化之后,整個(gè)系統(tǒng)的操作都可以使用UCOS操作系統(tǒng)的任務(wù)管理來實(shí)現(xiàn)。本設(shè)計(jì)一共創(chuàng)建了5個(gè)任務(wù),分別是:GPRS初始化任務(wù);GPRS連網(wǎng)任務(wù);GPRS信號(hào)強(qiáng)度查詢?nèi)蝿?wù);串口接收數(shù)據(jù)處理任務(wù);串口發(fā)送數(shù)據(jù)處理任務(wù)。其中,串口接收數(shù)據(jù)處理任務(wù)對(duì)應(yīng)等待信號(hào)量隊(duì)列,用來接收IP數(shù)據(jù)包的不同功能號(hào),并做出對(duì)應(yīng)處理;串口發(fā)送處理任務(wù)對(duì)應(yīng)發(fā)送一個(gè)信號(hào)量隊(duì)列,用來發(fā)送不同IP功能號(hào)回文;而其他3個(gè)任務(wù)都對(duì)應(yīng)一個(gè)信號(hào)量。首先,發(fā)送一個(gè)GPRS初始化信號(hào),啟動(dòng)GPRS初始化,如果GPRS初始化成功,則發(fā)送一個(gè)GPRS連接網(wǎng)絡(luò)的信號(hào)量,啟動(dòng)GPRS連網(wǎng)任務(wù),連網(wǎng)成功之后,再發(fā)送一個(gè)GPRS信號(hào)強(qiáng)度查詢信號(hào),啟動(dòng)GPRS信號(hào)強(qiáng)度查詢信號(hào),GPRS信號(hào)好,則可以開始正常的IP包數(shù)據(jù)傳輸,這時(shí),開啟UART1串口接收和發(fā)送任務(wù),等待上位機(jī)的IP數(shù)據(jù)包,如果接收到上位機(jī)的IP數(shù)據(jù)包,則發(fā)送一個(gè)信號(hào)到UART串口接收信號(hào)量隊(duì)列,啟動(dòng)串口接收任務(wù)處理,這里只針對(duì)功能號(hào)0x03和0x10處理,功能號(hào)0x10代表用GPRS向客戶端寄存器寫多個(gè)數(shù)據(jù)IP數(shù)據(jù)包,功能號(hào)0x03代表用GPRS向客戶端寄存器讀多個(gè)寄存器IP包,在收到GPRS IP數(shù)據(jù)包并做出相應(yīng)的處理之后,構(gòu)建相應(yīng)的GPRS IP數(shù)據(jù)包回文,并發(fā)送一個(gè)信號(hào)到UART發(fā)送信號(hào)量隊(duì)列,啟動(dòng)UART串口發(fā)送任務(wù),發(fā)送IP數(shù)據(jù)包回文到PC機(jī)上顯示。

      5 仿真結(jié)果與分析

      上位機(jī)的IP地址為192.168.0.4,端口號(hào)為60055;下位機(jī)的IP地址為117.136.31.57,端口號(hào)為24256。

      整個(gè)仿真過程為:1)上位機(jī)通過網(wǎng)絡(luò)調(diào)試助手向下位機(jī)發(fā)送一幀MODBUS構(gòu)建的寫多個(gè)寄存器數(shù)據(jù)幀,如圖9所示。其中14和10分別代表設(shè)備號(hào)和功能號(hào);第1個(gè)0001代表寫入下位機(jī)寄存器的首地址,這個(gè)地址是一個(gè)虛擬地址,這個(gè)虛擬地址與一個(gè)下位機(jī)的實(shí)際地址映射,這樣下位機(jī)可以很方便地控制IP數(shù)據(jù)包的存放;第2個(gè)0001代表寫寄存器的個(gè)數(shù);02代表寫入寄存器數(shù)據(jù)字節(jié)數(shù),由于寄存器是16位,所以,每個(gè)寄存器寫入2個(gè)字節(jié)數(shù)據(jù);AA55代表寫入數(shù)據(jù);EB8E是CRC校驗(yàn)碼。2)上位機(jī)向下位機(jī)發(fā)送一幀MODBUS構(gòu)建的讀多個(gè)寄存器數(shù)據(jù)幀,如圖10所示。14 03 0001 0001與寫多個(gè)寄存器MODBUS數(shù)據(jù)幀對(duì)應(yīng),后面D70F是CRC校驗(yàn)碼,這一步就是要將寫入下位機(jī)對(duì)應(yīng)寄存器的數(shù)據(jù)讀出來。上位機(jī)向下位機(jī)發(fā)送的MODBUS數(shù)據(jù)幀在下位機(jī)接收數(shù)據(jù)緩存Buffer中都會(huì)以標(biāo)準(zhǔn)的GPRS接收數(shù)據(jù)幀形式“%IPDATA:<LEN>,“DATA””存放,如圖11所示。所有的數(shù)據(jù)都是以ASIC碼形式存儲(chǔ)的,前面是包頭%IPDATA:<LEN>,存放在雙引號(hào)中的是上位機(jī)發(fā)送過來的寫多個(gè)寄存器的MODBUS數(shù)據(jù)幀,接收數(shù)據(jù)正確無誤,下位機(jī)在接收到GPRS IP數(shù)據(jù)包之后,返回對(duì)應(yīng)的回文,在圖9和圖10中可以看到下位機(jī)返回的回文,從回文中可以看到,寫入下位的數(shù)據(jù)能夠正確的讀到上位機(jī)顯示,整個(gè)GPRS通信結(jié)果正確無誤。

      6 結(jié)束語

      針對(duì)GPRS無線通信遠(yuǎn)程終端I/O口控制問題,提出了一個(gè)從硬件設(shè)計(jì)到軟件控制的整體方案。該方案詳細(xì)分析了GPRS通信協(xié)議和GPRS模塊控制AT命令,并根據(jù)GPRS標(biāo)準(zhǔn)協(xié)議規(guī)定了GPRS模塊和LPC2214之間的GPRS無線通信數(shù)據(jù)格式,并采用MODBUS協(xié)議規(guī)范了它們之間的UART串口通信,使得整個(gè)設(shè)計(jì)規(guī)范和穩(wěn)定,最終實(shí)現(xiàn)了GPRS遠(yuǎn)程控制I/O口終端。整個(gè)設(shè)計(jì)穩(wěn)定、可靠,并且都是按照標(biāo)準(zhǔn)的協(xié)議進(jìn)行通信,而且成本低,能夠方便地運(yùn)用于移動(dòng)終端設(shè)備連網(wǎng),具有很好的實(shí)用性和市場(chǎng)價(jià)值。

      [1]劉憲鵬,吳長(zhǎng)貴,凌筱清.基于GPRS遠(yuǎn)程顯示系統(tǒng)的設(shè)計(jì)與實(shí)現(xiàn)[J].微計(jì)算機(jī)信息,2011,27(1):124-126.

      [2]陳琦,丁天懷,李成,等.基于GPRS/GSM的低功耗無線遠(yuǎn)程測(cè)控終端設(shè)計(jì)[J].清華大學(xué)學(xué)報(bào),2009,49(2):223-225.

      [3]聶明新,鄒宇,莫奎.基于動(dòng)態(tài)IP的GPRS遠(yuǎn)程監(jiān)控系統(tǒng)[J].武漢理工大學(xué)學(xué)報(bào),2011,33(5):685-688.

      [4]盧偉,楊建華,袁需堯.基于GPRS的嵌入式數(shù)據(jù)采集與遠(yuǎn)傳系統(tǒng)[J].微計(jì)算機(jī)信息,2011,27(1):12-14.

      猜你喜歡
      接收數(shù)據(jù)寄存器命令
      只聽主人的命令
      沖激噪聲背景下基于幅度預(yù)處理的測(cè)向新方法*
      Lite寄存器模型的設(shè)計(jì)與實(shí)現(xiàn)
      低復(fù)雜度多輸入多輸出雷達(dá)目標(biāo)角度估計(jì)方法
      移防命令下達(dá)后
      分簇結(jié)構(gòu)向量寄存器分配策略研究*
      單片機(jī)模擬串口數(shù)據(jù)接收程序的實(shí)現(xiàn)及優(yōu)化
      這是人民的命令
      藍(lán)色命令
      高速數(shù)模轉(zhuǎn)換器AD9779/AD9788的應(yīng)用
      新闻| 泉州市| 休宁县| 曲周县| 合山市| 文水县| 沙湾县| 青铜峡市| 修水县| 桑日县| 新安县| 高陵县| 四平市| 陆丰市| 天津市| 全椒县| 屏山县| 台中市| 新巴尔虎右旗| 老河口市| 班玛县| 永年县| 太白县| 东光县| 长宁区| 大余县| 广德县| 儋州市| 穆棱市| 扬中市| 文成县| 柘荣县| 高淳县| 准格尔旗| 黄大仙区| 洮南市| 津南区| 西盟| 西丰县| 台南县| 浑源县|