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

          新聞中心

          EEPW首頁 > 消費(fèi)電子 > 設(shè)計(jì)應(yīng)用 > 基于GPRS的火災(zāi)視頻監(jiān)測終端網(wǎng)絡(luò)接口設(shè)計(jì)

          基于GPRS的火災(zāi)視頻監(jiān)測終端網(wǎng)絡(luò)接口設(shè)計(jì)

          ——
          作者: 時(shí)間:2007-04-16 來源:控制工程中文網(wǎng) 收藏
          引言

          大的林區(qū)一般面積廣闊,且大多數(shù)沒有有線設(shè)施,這是以往影響無人值守的火情了望臺(tái)應(yīng)用的技術(shù)瓶頸。但是,空間及遙感技術(shù)、計(jì)算機(jī)技術(shù)、通信與技術(shù)的快速發(fā)展為森林火災(zāi)監(jiān)測的研究提供了不斷完善的方法和手段。本文研究的森林火災(zāi)視頻監(jiān)控終端采用μC/OS-II作為嵌入式操作系統(tǒng),為了支持 通信,系統(tǒng)需要PPP或SLIP協(xié)議的支持。由于μC/OS-II不包括TCP/IP協(xié)議棧,所以要編寫設(shè)備的接口。本文選用免費(fèi)的 TCP/IP協(xié)議棧LwIP v0.6.4作為設(shè)計(jì)核心,在μC/OS-II上移植了LwIP以實(shí)現(xiàn)TCP/IP協(xié)議棧,從而獲得了一個(gè)功能完善的嵌入式IP終端。

          終端網(wǎng)絡(luò)接口原理

          圖像監(jiān)控系統(tǒng)工作流程

          工作時(shí),圖像監(jiān)控系統(tǒng)首先將接收服務(wù)器連入Internet,取得服務(wù)器的公網(wǎng)IP地址,確定服務(wù)的端口號(hào),并將IP地址及端口信息以短消息方式發(fā)送給遠(yuǎn)程站點(diǎn)的視頻監(jiān)控儀模塊。視頻監(jiān)控儀模塊通過-Modem模塊連入Internet后即可與接收服務(wù)器連線。視頻監(jiān)控儀在正常工作時(shí)(無火警) 僅定時(shí)上傳含有本地特征編碼的短消息,接收服務(wù)器軟

          件會(huì)根據(jù)收到的短消息來分析各監(jiān)控儀的狀態(tài)并進(jìn)行顯示。當(dāng)視頻監(jiān)控儀檢測到火警時(shí),它會(huì)將火災(zāi)信息編碼,以短消息形式傳遞到服務(wù)器,同時(shí)啟動(dòng)視頻圖像壓縮及上傳服務(wù),供接收服務(wù)器分析判斷。

            
          GPRS傳輸模塊工作原理

          圖1 傳輸模塊工作原理

          GPRS傳輸模塊工作原理

          視頻監(jiān)控終端的GPRS傳輸模塊原理如圖1所示,西門子公司的 MC35 GPRS模塊把從TCP/IP模塊接收的TCP/IP包和從基站接收的GPRS分組數(shù)據(jù)進(jìn)行相應(yīng)的協(xié)議處理后再轉(zhuǎn)發(fā)。MC35模塊主要由射頻天線、內(nèi)部 Flash、SRAM、GSM基帶處理器、匹配電源和一個(gè)40腳的ZIF插座組成。GSM基帶處理器是核心部件,其作用相當(dāng)于一個(gè)協(xié)議處理器,用來處理外部系統(tǒng)通過串口發(fā)送過來的AT指令。射頻天線部分主要實(shí)現(xiàn)信號(hào)的調(diào)制與解調(diào),以及外部射頻信號(hào)與內(nèi)部基帶處理器之間的信號(hào)轉(zhuǎn)換。匹配電源為處理器及射頻部分提供所需的電源。MC35 GPRS模塊支持GSM900和GSMl800雙頻網(wǎng)絡(luò),接收速率可達(dá)86.20kbps,發(fā)送速率可達(dá)21.5kbps。MC35模塊提供了9針的標(biāo)準(zhǔn) RS232接口,通過MAX3232電平轉(zhuǎn)換芯片和LPC2104的UART0口相連,進(jìn)行全雙工通信。MC35工作電壓為12V,上電后由DTR上升沿跳變觸發(fā)啟動(dòng)。本系統(tǒng)指定LPC2104的P0.13信號(hào)線經(jīng)MAX3232電平轉(zhuǎn)換后作為MC35的DTR。系統(tǒng)上電復(fù)位后,首先進(jìn)行工作頻率等參數(shù)設(shè)置,然后進(jìn)行撥號(hào)和PPP協(xié)商,得到系統(tǒng)本地IP,完成GPRS的Internet接入。ARM CPU將用戶數(shù)據(jù)先打成IP包,再經(jīng)串口發(fā)送給MC35,MC35把其封裝成GPRS分組數(shù)據(jù)包傳到GPRS網(wǎng)絡(luò)。

          網(wǎng)絡(luò)接口協(xié)議

          本系統(tǒng)的視頻監(jiān)控儀網(wǎng)絡(luò)通信分層結(jié)構(gòu)如圖2所示,GPRS服務(wù)節(jié)點(diǎn)和網(wǎng)關(guān)節(jié)點(diǎn)等GPRS內(nèi)部節(jié)點(diǎn)都簡化抽象為GPRS網(wǎng)絡(luò),GPRS內(nèi)部協(xié)議及Internet網(wǎng)關(guān)協(xié)議等都簡化抽象為GPRS網(wǎng)關(guān)協(xié)議。

          視頻監(jiān)控終端網(wǎng)絡(luò)通信各層的作用如下。

          物理層:ARM CPU利用AT指令對(duì)GPRS Modem進(jìn)行撥號(hào)。反饋應(yīng)答后,一條物理通道即GPRS信道就在本系統(tǒng)中的GPRS Modem和Internet之間建立起來。

          數(shù)據(jù)鏈路層:PPP協(xié)議將原始的GPRS物理層連接改造成無差錯(cuò)的數(shù)據(jù)鏈路,系統(tǒng)遠(yuǎn)程登錄Internet,并得到GPRS網(wǎng)關(guān)分配的A類IP地址。

          網(wǎng)絡(luò)層:采用IP協(xié)議作為網(wǎng)絡(luò)層協(xié)議。IP協(xié)議將接入Internet、具有不同IP地址的終端都聯(lián)系起來。經(jīng)過IP路由選擇,可以令本系統(tǒng)與連在Internet上的任一IP終端進(jìn)行數(shù)據(jù)交互。

          傳輸層:選擇TCP作為傳輸層協(xié)議,為數(shù)據(jù)傳輸提供面向連接的可靠服務(wù)。

            
          視頻監(jiān)控儀網(wǎng)絡(luò)通信分層結(jié)構(gòu)

          圖2 視頻監(jiān)控儀網(wǎng)絡(luò)通信分層結(jié)構(gòu)

          終端網(wǎng)絡(luò)接口軟件設(shè)計(jì)

          LwIP在μC/OS-II上的實(shí)現(xiàn)

          LwIP協(xié)議棧在設(shè)計(jì)時(shí)就考慮到了將來的移植問題,因此把所有與硬件、操作系統(tǒng)、編譯器相關(guān)的部份都獨(dú)立出來,放在/src/arch目錄下。 LwIP在μC/OS-II上的實(shí)現(xiàn)就是要修改該目錄下的文件,其它的文件一般不應(yīng)該修改,主要的工作包括以下幾部分。

          與CPU或編譯器相關(guān)的include文件

          在/src/arch/include/arch目錄下的cc.h、cpu.h、perf.h中有一些與CPU或編譯器相關(guān)的定義,如數(shù)據(jù)長度、字的高低位順序等,這應(yīng)該與用戶實(shí)現(xiàn)μC/OS-II時(shí)定義的數(shù)據(jù)長度等參數(shù)一致。一般情況下C語言的結(jié)構(gòu)體struct是4字節(jié)對(duì)齊的,但是在處理數(shù)據(jù)包的時(shí)候,LwIP是通過結(jié)構(gòu)體中不同數(shù)據(jù)的長度來讀取相應(yīng)數(shù)據(jù)的,所以,一定要在定義struct的時(shí)候使用_packed關(guān)鍵字,讓編譯器放棄struct 的字節(jié)對(duì)齊。

          sys_arch操作系統(tǒng)相關(guān)部份

          sys_arch.[ch]中的內(nèi)容是與操作系統(tǒng)相關(guān)的一些結(jié)構(gòu)和函數(shù)。 μC/OS-II實(shí)現(xiàn)了消息隊(duì)列結(jié)構(gòu)OSQ及其操作,但沒有對(duì)消息隊(duì)列中的消息進(jìn)行管理,因此不能直接使用,必須重新實(shí)現(xiàn)。對(duì)隊(duì)列本身的管理可利用 mC/OS-II自己的OSQ操作完成,然后使用μC/OS-II中的內(nèi)存管理模塊實(shí)現(xiàn)對(duì)消息的創(chuàng)建、使用、刪除回收,兩部分綜合起來即可形成LwIP的消息隊(duì)列功能。

          sys_thread_new 創(chuàng)建新線程

          在μC/OS-II中,沒有線程(thread)的概念,只有任務(wù) (Task)。它已經(jīng)提供了創(chuàng)建新任務(wù)的系統(tǒng)API調(diào)用OSTaskCreate,因此只要把OSTaskCreate封裝一下,就可以實(shí)現(xiàn) sys_thread_new。需要注意的是LwIP中的thread并沒有μC/OS-II中優(yōu)先級(jí)的概念,實(shí)現(xiàn)時(shí)要由用戶事先為LwIP中創(chuàng)建的線程分配好優(yōu)先級(jí)。

          lib_arch中庫函數(shù)的實(shí)現(xiàn)

          LwIP協(xié)議棧中用到了8個(gè)外部函數(shù),這些函數(shù)通常與用戶使用的系統(tǒng)或編譯器有關(guān),因此應(yīng)由用戶自己實(shí)現(xiàn)。

          LwIP的設(shè)備驅(qū)動(dòng)程序接口

          LwIP與PPP的程序結(jié)構(gòu)簡要描述如下:

            #define NTHREADS 3

            #define STACKSIZE( CYG NUM_HAL_STACK_SIZE_TYPICAL + 4096 )

            #define NTHREADS 3

            #define STACKSIZE ( CYG NUM_HAL_STACK_SIZE_TYPICAL + 4096 )

            err = cyg_io_lookup( "/dev/ser1", &handle1 );

            if (ENOERR == err) {

            middleblink();

            } else {

            leftblink();

            };

            pppInit();

            pppSetAuth(PPPAUTHTYPE_ PAP," pppuser","pppassword");

            pd=pppOpen(handle1,ppp LinkStatus Callback,NULL);

            void pppLinkStatusCallback (void * ctx, int errCode, void * arg) {

            skipblink();

            }

          結(jié)語

          本文重點(diǎn)解決了在火災(zāi)視頻監(jiān)控系統(tǒng)中,視頻監(jiān)控終端網(wǎng)絡(luò)接口的具體設(shè)計(jì)與實(shí)現(xiàn),它有機(jī)地結(jié)合了嵌入式終端設(shè)備和傳輸,符合嵌入式和網(wǎng)絡(luò)結(jié)合的發(fā)展趨勢。同時(shí),這一接口設(shè)計(jì)也對(duì)其它視頻監(jiān)控系統(tǒng)的發(fā)展起到一定的借鑒意義。



          評(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); })();