1. 引言
單片機系統(tǒng)以其簡單,、高效的特點,,在工業(yè)控制和日常生活中應用越來越廣泛。目前大多數單片機系統(tǒng)是以51 單片機為核心,,與檢測,、伺服、顯示設備配合起來實現監(jiān)控功能,。
然而,,這些監(jiān)控系統(tǒng)的數據傳輸多采用RS-232、RS-485 以及各種現場總線,,這些方式有些通信速度不夠快,,有些距離不夠遠,且各種總線之間難于實現互連和互操作,。以太網作為目前應用最為廣泛的局域網,,在工業(yè)自動化和過程控制領域得到了越來越多的應用。同時,,隨著Internet 的普及,,現代通信技術的進步,基于TCP/IP 和Client/Server 架構的分布式監(jiān)控技術也日趨成熟,。把嵌入式系統(tǒng)連接到Internet 上,,就可以方便、低廉地把信息傳送到世界的任何一個地方,。
傳統(tǒng)的遠程監(jiān)控系統(tǒng)一般采用C/S 模型的方式,,主要針對大型的設備進行監(jiān)控。對于如攝像頭圖象監(jiān)控﹑家用儀表﹑門禁控制系統(tǒng)等小型的設備的監(jiān)控就需要采用低成本的方案,。
鑒于此,,在低成本的單片機系統(tǒng)上移植精簡的TCP/IP 協議簇,實現對于小型設備遠程監(jiān)控是最佳選擇,。該系統(tǒng)以Web 方式實現,,用戶可以在任何一臺裝有瀏覽器的PC 機上進行遠程監(jiān)視與控制,具有價格低廉,、操作方便,、界面友好等優(yōu)點。傳統(tǒng)的遠程監(jiān)控系統(tǒng)模型與本系統(tǒng)采用的模型如圖1 和圖2 所示,。
圖1 傳統(tǒng)遠程監(jiān)控系統(tǒng)模型
圖2 單片機監(jiān)控系統(tǒng)模型
2. 系統(tǒng)硬件設計
本系統(tǒng)以 Cygnal 公司的完全集成的混合信號系統(tǒng)級芯片(SOC)C8051F020 單片機為核心,,采用Realtek 公司的10M 自適應以太網控制器RTL8019AS 實現系統(tǒng)的網絡接口部分。
SRAM 部分用于存放大量的數據信息,。數據采集部分用于采集系統(tǒng)需要監(jiān)控的設備的運行情況,,由于C8051F020 內部帶有真正12 位100 ksps 的8 通道ADC 帶PGA 和模擬多路開關,還有兩個12 位DAC 可編程更新時序,,可以方便的進行模擬信號采集和對外設進行控制,。
C8051F020 單片機內置64K FLASH 程序存儲器、4K 內部SRAM,,可以嵌入TCP /IP 協議,, 從而實現嵌入式Web Sever 的功能。RTL8019AS 集成了介質訪問控制子層(MAC)和物理層的性能,,與單片機的接口簡單,,可以方便地用來設計基于ISA 總線的系統(tǒng)。另外,,它還具有與NE2000 兼容,、軟件移植性好以及價格低廉等優(yōu)點,所以特別適合用于嵌入式系統(tǒng),。
圖3 系統(tǒng)框圖
3.系統(tǒng)軟件設計
3.1 軟件流圖設計
軟件的實現主要是根據數據在網絡中傳輸的方向和數據的流向來實現的,。在本設計中數據的流向為:請求信息從局域網中來,通過RJ 45 送到RTL80l9AS,,處理后的數據包送入單片機系統(tǒng)的協議棧,,由協議棧對數據包進行解析,得到原始請求信息,。請求信息再經過單片機系統(tǒng)的處理,,產生回復信息?;貜托畔⒌骄钟蚓W的過程與上面正好相反,。整個系統(tǒng)的軟件流程如上圖4 所示。
圖4 軟件框圖
3.2 RTL8019 接收與發(fā)送數據
1.RTL8019 芯片初始化主要是將網卡設置成正常的模式,,跟外部網絡連接,。清除所有中斷標志位,讓芯片開始工作,。
2.對RTL8019 接收數據操作,,有查詢和中斷兩種方式。因為單片機的速度和PC 機相差太遠,,而且還有一些采集任務,,本系統(tǒng)不采用中斷方式,用查詢方式,。在查詢方式下,,通過查詢CURR 和BNRY 兩個寄存器的值來判斷是否收到一幀數據,。當BNRY+1 與CURR不相等,說明接收緩沖區(qū)接收到了新的數據幀,。圖5 為RTL8019 報頭格式,,接收部分子程序如下:
UCHAR xdata * rcve_frame(void) //如收到有效數據包,返回收到的數據,,否則返回NULL
圖5 RTL8019 報頭格式
3.數據的發(fā)送包含三個步驟:封裝數據包,;通過遠程DMA 將數據包送入RTL8019AS的數據發(fā)送緩沖區(qū);通過RTL8019 的本地DMA 將數據送入FIFO 進行發(fā)送,。具體過程如下:
(1)包在發(fā)送前應該按規(guī)定的格式封裝好,,格式如下圖6 所示:
圖6 MAC 幀首部
(2)把上面的數據包通過遠程DMA 寫入RTL8019AS 的數據發(fā)送緩沖區(qū);
(3)啟動本地DMA,,把數據發(fā)送出去,,數據包長度最小為60 字節(jié),最大1514 字節(jié),。
發(fā)送子程序為:void send_frame(UCHAR xdata * outbuf,,UINT len)//發(fā)送一個數據包3.3 TCP/IP 協議棧的實現。
3.3.1 ARP 協議的實現
ARP 地址解析協議的本質是完成網絡地址到物理地址的映射,。物理地址有以太網和令牌環(huán)網兩種基本類型,,網絡地址特指IP 地址。具體到以太網,,使用的是動態(tài)綁定轉換的方法,,但是會遇到許多細節(jié)問題,例如減少廣播,,ARP 包丟失,,物理地址變更(更換網卡)、移動(移動設備到另一子網),、消失(關機)等,。一般是設置ARP 高速緩存,通過學習,、老化,、更新、溢出算法處理ARP 映射表來解決這些問題,。整個ARP 處理過程,,主要用5 個函數實現。
在實現網卡驅動程序后,,所有ARP 處理操作就是填寫ARP 包,。主要程序代碼編制如下:
(1)void init_arp(void)//完成ARP 表初始化,概括說就是ARP 表state 字段清0
(2)void arp_send(UCHAR * hwaddr,,ULONG ipaddr,,UCHAR msg_type)//完成ARP 請求
(3)void arp_rcve(UCHAR xdata * inbuf)// 完成響應操作
(4)UCHAR xdata * arp_resolve(ULONG dest_ipaddr) //完成從cache 里面查找對應//IP 地址的物理地址,,如果沒有,就發(fā)送ARP 請求
3.3.2 IP 協議的實現
網際協議 IP 是TCP/IP 協議族中最為核心的協議,,它的主要功能是負責把數據交付給主機,,當目標主機與原主機處于不同的物理網絡中時,IP 負責把數據包路由到相應的目標網絡上,。Internet 上所有的數據都以IP 數據包格式傳輸。IP 協議最大的特點是提供不可靠的和無連接的數據包傳送服務,。IP 協議主要實現以下兩個子程序:
(1) void ip_send(UCHAR xdata*outbuf,,ULONG ipaddr, UCHAR proto_ id,,DINT len)//發(fā)送IP 數據,;該子程序用來創(chuàng)建一個發(fā)送數據報。
(2) void ip_rcve(UCHAR xdata *inbuf) //接收IP 數據,;該子程序檢測一個外來數據包,,并對數據包作相應的處理。
3.3.3 TCP 協議的實現
1.使用TCP 狀態(tài)機:TCP 協議是整個TCP/IP 協議的核心,,也是傳輸層中最復雜的協議,。TCP 協議在兩個端點之間建立了等效于物理連接的邏輯連接。數據沿著這個連接雙向傳輸,。連接的雙方必須對發(fā)送和接收的數據保持跟蹤,,以便能夠檢測出數據流中的遺漏和重復。
2.使用簡單的確認機制:序列號和確認號這兩個字段用于協同完成TCP 協議中的確認工作,。對于每個接收到的數據包進行確認號的計算,,需要從接收到的數據包中提取TCP 報文的數據部分長度,并進行計算,,這增加了處理器的運算量,。但如果每次只對單個TCP 報文進行確認的話,并沒有太大的難度,。TCP 協議主要包含的程序如下:
(1) init_tcp(void) //初始化TCP 協議
(1) Tcp_send(UINT flags,, DINT hdr_len, UCHAR nr) //發(fā)送TCP
(2) Tcp_retransmit(void) //重發(fā)TCP 數據
(3) Tcp_inactivity(void) //停止TCP
(4) Tcp_rcve(UCHAR xdata * inbuf,, UINT len) //接收TCP 數據
3.3.4 HTTP 協議簡介
HTTP 協議是TCP 協議的高層協議,,HTTP 的請求和應答都是一行或多行文本,它的結束標志是一個換行符[5],。如果請求成功,,數據就沿著該連接發(fā)送,直到發(fā)送完為止,。HTTP的端口號為80.HTTP 中的命令稱呼為方法(method),,其中GET 語句用來獲取文檔,,POST語句用來粘貼文檔。通過判斷GET 和POST 語句后面的文件名來判斷所需要傳遞的文件的位置,。
請求:
GET / HTTP/1.1
響應:
HTTP/1.1 200 OK
Content-type: text/html
……
《html》
《body》
……
《/body》
《/html》
4.應用部分
本 WEB 服務器系統(tǒng)幾乎可以應用于所有對實時性要求不是很高的場合,,只要對本系統(tǒng)的相關部分做些修改或改進,例如:客戶端的訪問權限,、IP 地址的過濾等,,就可應用于諸如遠程抄表、信息家電的遠程控制等場合,。下面圖7 為ping 命令測試網絡不通到通的連接狀態(tài),,圖8 實現了局域網內任意主機通過ip 地址形式訪問單片機內部存諸的網頁,從而實現對單片機系統(tǒng)的遠程監(jiān)控,。
圖7 網絡連接測試
圖8 遠程監(jiān)控溫度
5.結束語
實現了基于單片機的 TCP/IP 協議棧,,使單片機控制的系統(tǒng)具有了WebServer 的功能,這樣可以使用PC 機通過因特網遠程訪問單片機系統(tǒng),,也可以使用單片機系統(tǒng)將有用的信息通過因特網發(fā)送到遠端的PC 或其它終端上,。為嵌入式設備實現遠程數據采集、遠程監(jiān)控,、遠程診斷,、遠程幫助、遠程升級,、遠程重構等功能提供了可能,,這是嵌入式系統(tǒng)發(fā)展的趨勢。