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

          關(guān) 閉

          新聞中心

          EEPW首頁 > 安全與國防 > 設(shè)計(jì)應(yīng)用 > 單片機(jī)IP技術(shù)在智能小區(qū)系統(tǒng)中的應(yīng)用

          單片機(jī)IP技術(shù)在智能小區(qū)系統(tǒng)中的應(yīng)用

          ——
          作者:湖南大學(xué)電氣與信息工程學(xué)院 劉潔涓 彭永進(jìn) 時間:2007-01-26 來源:《世界電子元器件》 收藏

          引言

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

          住宅小區(qū)智能化(或稱為"智能小區(qū)")的概念是本世紀(jì)90年代引入國內(nèi)的,它是以家庭智能化為核心,包括遠(yuǎn)程抄表,家庭防盜報(bào)警,醫(yī)療救助,家電控制等功能,采用系統(tǒng)集成方法,建立一個溝通小區(qū)內(nèi)部住戶之間、住戶與小區(qū)綜合服務(wù)中心之間、住戶與外部社會的綜合信息交互系統(tǒng),從而為住戶營造一個安全、舒適、便捷、高效的居住和生活環(huán)境?,F(xiàn)行的智能小區(qū)系統(tǒng)多是以rs485、can總線、lonworks等總線進(jìn)行聯(lián)網(wǎng),布線復(fù)雜,沖突多,系統(tǒng)不夠穩(wěn)定且涉及到消防安全及成本的考慮。而以太網(wǎng)實(shí)現(xiàn)聯(lián)網(wǎng),布線簡單,且也比can、lonwoks等更便宜,更有利于小區(qū)智能化產(chǎn)品的兼容和統(tǒng)一。在當(dāng)今計(jì)算機(jī)技術(shù)及信息技術(shù)不斷發(fā)展的情況下,以及人們對家居生活的需求及觀念上的變化,電話、電視、計(jì)算機(jī)三網(wǎng)有合一的趨勢,將來智能小區(qū)的發(fā)展必定是以太網(wǎng)的天下。所以針對當(dāng)前行業(yè)的發(fā)展情況和趨勢,對于基于ip的以太網(wǎng)家庭智能終端的研究順應(yīng)時代發(fā)展的潮流,有一定的現(xiàn)實(shí)意義。


          智能小區(qū)系統(tǒng)結(jié)構(gòu)

          本文中提出的小區(qū)智能系統(tǒng)由小區(qū)計(jì)算機(jī)管理系統(tǒng)、網(wǎng)絡(luò)交換設(shè)備、家庭智能終端(cdt)三個主要部分組成,網(wǎng)絡(luò)結(jié)構(gòu)如圖1所示。

          小區(qū)管理系統(tǒng)是指安裝在小區(qū)管理中心,完成全小區(qū)內(nèi)用戶數(shù)據(jù)終端數(shù)據(jù)采集和處理的計(jì)算機(jī)系統(tǒng),對于用戶數(shù)較多的系統(tǒng),可以采用客戶機(jī)/服務(wù)器(c/s)結(jié)構(gòu)。小區(qū)管理系統(tǒng)分為監(jiān)控微機(jī)(client)和服務(wù)器(server)兩個部分,客戶端只作數(shù)據(jù)采集使用,數(shù)據(jù)的處理在服務(wù)器端進(jìn)行。小區(qū)管理系統(tǒng)的功能包括:顯示用戶終端的上網(wǎng)狀態(tài),接受并顯示住戶報(bào)警,讀取水電氣表數(shù)據(jù)并產(chǎn)生報(bào)表,報(bào)警日志處理,系統(tǒng)管理等。用戶數(shù)據(jù)終端:用戶終端用來與管理系統(tǒng)通訊、并完成對各種計(jì)量信號和報(bào)警信號的采集、應(yīng)答主機(jī)的呼叫、回答上網(wǎng)狀態(tài),并提供操作面板歡迎用戶查詢。


          用戶終端硬件結(jié)構(gòu)及rtl8019的配置

          1、用戶終端結(jié)構(gòu)硬件結(jié)構(gòu)圖如圖2所示:系統(tǒng)由兩塊單片機(jī)組成,一塊負(fù)責(zé)五表讀數(shù)、安防紅外遙控器及安防信號的采集工作,另一塊負(fù)責(zé)驅(qū)動rtl8019通訊、家電控制,并響應(yīng)鍵盤及驅(qū)動液晶顯示。兩塊mcu之間通過串口交換數(shù)據(jù)。

          2、rtl8019的配置
          rtl8019是一款高度集成的以太網(wǎng)控制芯片,它有兩種工作模式:一種是跳線模式j(luò)umper,一種是非跳線模式 jumperless,后者也支持plug and play。在單片機(jī)中一般都采用跳線模式選項(xiàng)。i/o端口的基地址io_base_address由單片機(jī)和8019之間的接線決定。此外8019還具有8個irq接口,本系統(tǒng)中沒用到irq,采用查詢方式。

          8019輸入輸出地址共32個,地址偏移量為00h――1fh:
          其中00h--0fh共16個地址,為寄存器地址,寄存器分成4頁page0――page3,與ne2000兼容的寄存器只有3頁(page0-page2),為了保證驅(qū)動程序?qū)λ衝e2000的網(wǎng)卡有效,不要去操作第四頁的寄存器。

          10h--17h共8個地址,為dma地址。
          18h--1fh共8個地址,為軟復(fù)位端口。8019的硬件復(fù)位很簡單,只需在上電時對rstdrv輸出一高電平就可以了。8019復(fù)位的過程將執(zhí)行一些操作,比如將93c46讀入,將內(nèi)部寄存器初始化等,至少需要2毫秒的時間。推薦等待更久的時間之后才對網(wǎng)卡操作,比如100毫秒之后才對它操作,以確保完全復(fù)位。

          ics16b=low時采用8位dma操作模式,上面的地址中只有18個是有用的: 00h--0fh共16個寄存器地址。10h dma地址 (10h--17h的8個地址是一樣的,都可以用來做dma端口,只要用其中的一個就可以了)。1fh 復(fù)位地址(18h到1fh共8個地址都是復(fù)位地址,每個地址的功能都是一樣的,只要其中的一個就可以了,但實(shí)際上只有18h、1ah、1ch、1eh這幾個復(fù)位端口是有效的,其他不要使用,有些兼容卡不支持19h、1bh、1dh等奇數(shù)地址的復(fù)位)。


          網(wǎng)卡驅(qū)動及tcp/ip協(xié)議棧的簡化

          從程序員的角度來說,對8019的操作是比較簡單的,驅(qū)動程序只需要將要發(fā)送的數(shù)據(jù)按一定的格式寫入芯片并啟動發(fā)送命令,8019會自動添加接收狀態(tài)、下一頁指針、以太網(wǎng)幀長度和校驗(yàn)fcs段,并將數(shù)據(jù)包轉(zhuǎn)換成物理幀格式在物理信道上傳輸。反之,8019收到物理信號后將其還原成數(shù)據(jù),按指定格式存放在芯片ram中以便主機(jī)程序取用。簡言之就是8019完成數(shù)據(jù)包和電信號之間的相互轉(zhuǎn)換:數(shù)據(jù)包<===>電信號。以太網(wǎng)協(xié)議由芯片硬件自動完成,對程序員透明。驅(qū)動程序有3種功能:芯片初始化、收包、發(fā)包。發(fā)送數(shù)據(jù)包是先將待發(fā)送的數(shù)據(jù)包通過dma寫操作存入網(wǎng)卡芯片ram,并給出發(fā)送緩沖區(qū)首地址(tpsr0、tpsr1)和數(shù)據(jù)包長度(tbcr0,tbcr1),啟動發(fā)送命令,網(wǎng)卡芯片會自動按以太網(wǎng)協(xié)議完成發(fā)送并將結(jié)果寫入狀態(tài)寄存器。接收數(shù)據(jù)包時,采用查詢的方式,根據(jù)curr==bnry+1?可以判斷是否收到新的數(shù)據(jù)包,如果有則通過dma讀操作從網(wǎng)卡芯片ram讀出數(shù)據(jù)。發(fā)送、接收子程序如下所示:

          1發(fā)送子程序
          bit transmit(void)
          {
          cardcopydown();
          xbyte[io_base_address + nic_command] = cr_no_dma|cr_stop|cr_page0;//停止8019
          xbyte[io_base_address + nic_intr_status] = 0xff;//清中斷標(biāo)志
          xbyte[io_base_address + nic_xmit_start] = xmit_start;//設(shè)置發(fā)送開始地址
          xbyte[io_base_address + nic_xmit_config] = tcr_no_loopback;//設(shè)置為一般模式
          xbyte[io_base_address+nic_data_config]=dcr_fifo_8_byte|dcr_normal|dcr_byte_wide;//設(shè)置8位dma模式
          xbyte[io_base_address + nic_xmit_count_lsb] = 100;//設(shè)置發(fā)送數(shù)據(jù)長度
          xbyte[io_base_address + nic_xmit_count_msb] = 0;
          xbyte[io_base_address + nic_command] = cr_start|cr_xmit|cr_page0;//啟動8019
          return (true);
          }
          2接收子程序
          bit receive(void)
          {
          uint tempshort;
          uchar temp;
          uchar curr;
          uchar bnry;
          uint i;
          //停止網(wǎng)卡
          xbyte[io_base_address + nic_command] = cr_stop|cr_no_dma|cr_page1;
          //讀取當(dāng)前current的值
          curr= xbyte[io_base_address + nic_current];
          //讀取當(dāng)前boundary的值
          xbyte[io_base_address + nic_command] = cr_stop|cr_no_dma|cr_page0;
          bnry= xbyte[io_base_address + nic_boundary];
          if(curr==0)
          return (faulse);
          if((++bnry)> page_stop)
          bnry=page_start;
          if(curr!=bnty)//表示有包收到
          {
          //設(shè)置遠(yuǎn)端dma地址和長度
          xbyte[io_base_address + nic_rmt_addr_lsb] = 0x00;
          xbyte[io_base_address + nic_rmt_addr_msb] = boundary;
          xbyte[io_base_address+nic_rmt_count_lsb]=__dread&0xff;
          xbyte[io_base_address + nic_rmt_count_msb] = (__dread>>8)&0xff;
          //設(shè)置dma讀
          xbyte[io_base_address + nic_command] = cr_start|cr_dma_read|cr_page0;
          //重復(fù)讀dma端口
          for (i=0;i<__dread;i++)
          {
          receive_data[i] = xbyte[io_base_address + nic_rack_nic];
          }
          //等待dma停止
          tempshort = 0xffff;
          while(tempshort)
          {
          temp = xbyte[io_base_address + nic_intr_status];
          if (temp&isr_dma_done) break;
          tempshort --;
          }
          return (true);
          }
          else
          return(faulse);
          }

          3協(xié)議棧的精簡

          單片機(jī)中tcp/ip的實(shí)現(xiàn)與pc機(jī)不同,在pc里可支持比較完整的tcp/ip協(xié)議組,但在單片機(jī)里無法做到,這是因?yàn)閱纹瑱C(jī)根本沒有足夠的代碼空間來支持這些協(xié)議。一般在單片機(jī)里實(shí)現(xiàn)與需要有關(guān)的部分,而不使用的協(xié)議則一概不支持。例如文件共享smb協(xié)議,在unix、windows都支持,但單片機(jī)上卻沒有必要。一般只能在單片機(jī)中實(shí)現(xiàn):arp、ip,icmp、tcp/udp這些協(xié)議,而更高層的協(xié)議,http、smtp、ftp一般是不需要支持的。雖然有些單片機(jī)例如avr上網(wǎng)方案實(shí)現(xiàn)了這些協(xié)議,但實(shí)用性不大。因?yàn)閱纹瑱C(jī)應(yīng)用的tcp/ip協(xié)議大多是為了完成數(shù)據(jù)采集和數(shù)據(jù)傳輸,而不是網(wǎng)頁瀏覽、文件傳輸這些功能。另外由于單片機(jī)資源的有限性,對某一協(xié)議而言,也有可能要作簡化。本系統(tǒng)中實(shí)現(xiàn)的協(xié)議只有arp、ip、icmp、udp。在選擇傳輸層協(xié)議時我們放棄了面向鏈接的tcp,因?yàn)閠cp為了保證數(shù)據(jù)的可靠性采用一問一答的方式,這在數(shù)據(jù)量并不大的嵌入式系統(tǒng)中,反而增加了網(wǎng)絡(luò)的負(fù)擔(dān);另外tcp的很多機(jī)制,如分段機(jī)制、窗口機(jī)制等都適合于數(shù)據(jù)量大、處理能力強(qiáng)的pc機(jī)網(wǎng)絡(luò),并不適合于嵌入式系統(tǒng)。udp雖然不提供面向鏈接的、可靠的服務(wù),但是協(xié)議簡單,實(shí)時性更強(qiáng),應(yīng)用層也可以做相應(yīng)的定時等待、重發(fā)處理等輔助性的操作來彌補(bǔ)它的缺陷。

          a.a(chǎn)rp:arp的本質(zhì)就是實(shí)現(xiàn)ip地址到mac地址的轉(zhuǎn)換,抓住了這一點(diǎn)實(shí)現(xiàn)就比較簡單。嵌入式系統(tǒng)中沒有必要實(shí)現(xiàn)pc機(jī)網(wǎng)絡(luò)中地址表的更新功能,只需完成地址轉(zhuǎn)換。管理中心機(jī)在初始化cdt時發(fā)送arp請求,cdt只需響應(yīng)中心對它的arp請求,但不主動發(fā)送arp請求。

          b.icmp:icmp的種類很多,在本系統(tǒng)中只要實(shí)現(xiàn)icmp信息回顯功能。管理中心在執(zhí)行ping命 令 時,發(fā)送icmp請求信息,cdt中只需實(shí)現(xiàn)icmp回應(yīng)信息。

          c.ip:ip包最大可達(dá)65k,單片機(jī)中無法存放如此大的數(shù)據(jù)包,因此一般不支持分段,以發(fā)送小數(shù)據(jù)的方式來避免分段。另外ip層的選項(xiàng)功能都可以完全忽略,ip層只需要根據(jù)協(xié)議類型分包。
          d.應(yīng)用層:應(yīng)用層采用自己的數(shù)據(jù)協(xié)議格式為:

          頭部+命令字段+布防字段+報(bào)警字段+五表參數(shù)字段+五表讀數(shù)字段+家電控制字段
          接收方根據(jù)命令段的含義來分別實(shí)現(xiàn)布防、報(bào)警、五表參數(shù)設(shè)置、五表讀書、家電控制等功能。


          結(jié)束語

          本文以基于tcp/ip技術(shù)的智能小區(qū)家庭智能終端系統(tǒng)的研究為例,詳細(xì)講述了rtl8019網(wǎng)卡芯片的驅(qū)動方法,并給出了單片機(jī)中tcp/ip協(xié)議的精簡方案。本系統(tǒng)已經(jīng)成功地運(yùn)用于多個小區(qū),其可行性、可靠性和靈活性已經(jīng)得到證實(shí),并且基于以太網(wǎng)智能小區(qū)系統(tǒng)低廉的造價(jià)、簡潔的布線更使得基于tcp/ip的以太網(wǎng)技術(shù)成為了替代傳統(tǒng)現(xiàn)場總線技術(shù)的一種重要手段。

          tcp/ip相關(guān)文章:tcp/ip是什么




          關(guān)鍵詞:

          評論


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