住宅小區智能化(或稱為"智能小區")的概念是本世紀90年代引入國內的,它是以家庭智能化為核心,包括遠程抄表,家庭防盜報警,醫療救助,家電控制等功能,采用系統集成方法,建立一個溝通小區內部住戶之間、住戶與小區綜合服務中心之間、住戶與外部社會的綜合信息交互系統,從而為住戶營造一個安全、舒適、便捷、高效的居住和生活環境。現行的智能小區系統多是以RS485、CAN總線、LONWORKS等總線進行聯網,布線復雜,沖突多,系統不夠穩定且涉及到消防安全及成本的考慮。而以太網實現聯網,布線簡單,且也比CAN、LONWOKS等更便宜,更有利于小區智能化產品的兼容和統一。在當今計算機技術及信息技術不斷發展的情況下,以及人們對家居生活的需求及觀念上的變化,電話、電視、計算機三網有合一的趨勢,將來智能小區的發展必定是以太網的天下。所以針對當前行業的發展情況和趨勢,對于基于IP的以太網家庭智能終端的研究順應時代發展的潮流,有一定的現實意義。 智能小區系統結構 本文中提出的小區智能系統由小區計算機管理系統、網絡交換設備、家庭智能終端(CDT)三個主要部分組成,網絡結構如圖1所示。 小區管理系統是指安裝在小區管理中心,完成全小區內用戶數據終端數據采集和處理的計算機系統,對于用戶數較多的系統,可以采用客戶機/服務器(C/S)結構。小區管理系統分為監控微機(Client)和服務器(Server)兩個部分,客戶端只作數據采集使用,數據的處理在服務器端進行。小區管理系統的功能包括:顯示用戶終端的上網狀態,接受并顯示住戶報警,讀取水電氣表數據并產生報表,報警日志處理,系統管理等。用戶數據終端:用戶終端用來與管理系統通訊、并完成對各種計量信號和報警信號的采集、應答主機的呼叫、回答上網狀態,并提供操作面板歡迎用戶查詢。 用戶終端硬件結構及RTL8019的配置 1、用戶終端結構硬件結構圖如圖2所示:系統由兩塊單片機組成,一塊負責五表讀數、安防紅外遙控器及安防信號的采集工作,另一塊負責驅動RTL8019通訊、家電控制,并響應鍵盤及驅動液晶顯示。兩塊MCU之間通過串口交換數據。 2、RTL8019的配置RTL8019是一款高度集成的以太網控制芯片,它有兩種工作模式:一種是跳線模式jumper,一種是非跳線模式 jumperless,后者也支持Plug and Play。在單片機中一般都采用跳線模式選項。I/O端口的基地址IO_BASE_ADDRESS由單片機和8019之間的接線決定。此外8019還具有8個IRQ接口,本系統中沒用到IRQ,采用查詢方式。 8019輸入輸出地址共32個,地址偏移量為00H――1FH:其中00H--0FH共16個地址,為寄存器地址,寄存器分成4頁PAGE0――PAGE3,與NE2000兼容的寄存器只有3頁(Page0-Page2),為了保證驅動程序對所有Ne2000的網卡有效,不要去操作第四頁的寄存器。 10H--17H共8個地址,為DMA地址。18H--1FH共8個地址,為軟復位端口。8019的硬件復位很簡單,只需在上電時對RSTDRV輸出一高電平就可以了。8019復位的過程將執行一些操作,比如將93c46讀入,將內部寄存器初始化等,至少需要2毫秒的時間。推薦等待更久的時間之后才對網卡操作,比如100毫秒之后才對它操作,以確保完全復位。 ICS16B=LOW時采用8位DMA操作模式,上面的地址中只有18個是有用的: 00H--0FH共16個寄存器地址。10H DMA地址 (10H--17H的8個地址是一樣的,都可以用來做DMA端口,只要用其中的一個就可以了)。1FH 復位地址(18H到1FH共8個地址都是復位地址,每個地址的功能都是一樣的,只要其中的一個就可以了,但實際上只有18H、1AH、1CH、1EH這幾個復位端口是有效的,其他不要使用,有些兼容卡不支持19H、1BH、1DH等奇數地址的復位)。 網卡驅動及TCP/IP協議棧的簡化 從程序員的角度來說,對8019的操作是比較簡單的,驅動程序只需要將要發送的數據按一定的格式寫入芯片并啟動發送命令,8019會自動添加接收狀態、下一頁指針、以太網幀長度和校驗FCS段,并將數據包轉換成物理幀格式在物理信道上傳輸。反之,8019收到物理信號后將其還原成數據,按指定格式存放在芯片RAM中以便主機程序取用。簡言之就是8019完成數據包和電信號之間的相互轉換:數據包<===>電信號。以太網協議由芯片硬件自動完成,對程序員透明。驅動程序有3種功能:芯片初始化、收包、發包。發送數據包是先將待發送的數據包通過DMA寫操作存入網卡芯片RAM,并給出發送緩沖區首地址(TPSR0、TPSR1)和數據包長度(TBCR0,TBCR1),啟動發送命令,網卡芯片會自動按以太網協議完成發送并將結果寫入狀態寄存器。接收數據包時,采用查詢的方式,根據CURR==BNRY+1?可以判斷是否收到新的數據包,如果有則通過DMA讀操作從網卡芯片RAM讀出數據。發送、接收子程序如下所示: 3 協議棧的精簡 單片機中TCP/IP的實現與PC機不同,在PC里可支持比較完整的TCP/IP協議組,但在單片機里無法做到,這是因為單片機根本沒有足夠的代碼空間來支持這些協議。一般在單片機里實現與需要有關的部分,而不使用的協議則一概不支持。例如文件共享SMB協議,在UNIX、WINDOWS都支持,但單片機上卻沒有必要。一般只能在單片機中實現:ARP、IP,ICMP、TCP/UDP這些協議,而更高層的協議,HTTP、SMTP、FTP一般是不需要支持的。雖然有些單片機例如AVR上網方案實現了這些協議,但實用性不大。因為單片機應用的TCP/IP協議大多是為了完成數據采集和數據傳輸,而不是網頁瀏覽、文件傳輸這些功能。另外由于單片機資源的有限性,對某一協議而言,也有可能要作簡化。本系統中實現的協議只有ARP、IP、ICMP、UDP。在選擇傳輸層協議時我們放棄了面向鏈接的TCP,因為TCP為了保證數據的可靠性采用一問一答的方式,這在數據量并不大的嵌入式系統中,反而增加了網絡的負擔;另外TCP的很多機制,如分段機制、窗口機制等都適合于數據量大、處理能力強的PC機網絡,并不適合于嵌入式系統。UDP雖然不提供面向鏈接的、可靠的服務,但是協議簡單,實時性更強,應用層也可以做相應的定時等待、重發處理等輔助性的操作來彌補它的缺陷。 a.ARP:ARP的本質就是實現IP地址到MAC地址的轉換,抓住了這一點實現就比較簡單。嵌入式系統中沒有必要實現PC機網絡中地址表的更新功能,只需完成地址轉換。管理中心機在初始化CDT時發送ARP請求,CDT只需響應中心對它的ARP請求,但不主動發送ARP請求。 b.ICMP:ICMP的種類很多,在本系統中只要實現ICMP信息回顯功能。管理中心在執行PING命 令 時,發送ICMP請求信息,CDT中只需實現ICMP回應信息。 c.IP:IP包最大可達65k,單片機中無法存放如此大的數據包,因此一般不支持分段,以發送小數據的方式來避免分段。另外IP層的選項功能都可以完全忽略,IP層只需要根據協議類型分包。d.應用層:應用層采用自己的數據協議格式為: 頭部+命令字段+布防字段+報警字段+五表參數字段+五表讀數字段+家電控制字段接收方根據命令段的含義來分別實現布防、報警、五表參數設置、五表讀書、家電控制等功能。 結束語 本文以基于TCP/IP技術的智能小區家庭智能終端系統的研究為例,詳細講述了RTL8019網卡芯片的驅動方法,并給出了單片機中TCP/IP協議的精簡方案。本系統已經成功地運用于多個小區,其可行性、可靠性和靈活性已經得到證實,并且基于以太網智能小區系統低廉的造價、簡潔的布線更使得基于TCP/IP的以太網技術成為了替代傳統現場總線技術的一種重要手段。 |