陳 梅, 馬富華, 李 鑫, 陳 薇
(合肥工業大學 電氣與自動化工程學院,安徽 合肥230009)
21世紀是一個信息時代,一方面,嵌入式系統已經廣泛地在工業控制中應用,并且越來越成熟;另一方面,web技術的快速發展為internet的發展創造了良好的發展航向。現今的很多工業應用已逐漸在向嵌入式web服務器方面機遇。
將嵌入式web技術應用于工業自動化領域,則可以更方便的在嵌入式控制系統中采用internet技術,并將實時數據遠程采集、遠程監控都通過internet來實現。
這里介紹了基于dspic33f單片機和enc28j60以太網控制器的小型嵌入式web系統,將tcp/ip等網絡協議嵌入到單片機系統,在應用層使用http協議使嵌入式系統實現web服務器的功能。
本系統所采用的控制器是dspic33f單片機,系統主要由以太網接口模塊、電源模塊、復位電路、RS232通訊電路、模擬和開關量電路等。dspic33f單片機的ADC模塊可以根據需要配置成10位/12位ADC模式。當配置成10位工作模式時可同時采用4個模擬輸入引腳。同時,dspic33f系列單片機包含有RS232串口模塊,以及SPI接口,I2C接口等各種常用的接口,極大地滿足了不同接口的控制器接入的需求。系統硬件電路如圖1所示。
ENC28J60是美國微芯科技公司(Microchip Technology)推出的帶SPI接口的獨立以太網控制器。該控制器引腳較少,只有28個。符合IEEE 802.3標準,內置lO Mb/s以太網物理層器件(PHY)及媒介接人控制器(MAC),支持10-BASE-T,可按業界標準的以太網協議可靠地接收、發送以太網數據包。并且它含有8 KB的可編程雙端口SRAM緩沖器,在減少主控單元負荷的同時進行信息包的存儲、檢索等。

圖1 系統硬件電路
ENC28j60的工作電壓是3.3 V因此可通過 SPI接口與dspic33f單片機直接相連而無需電平轉換,它對SPI模式有特定的要求,要求SPI端口的SCK在空閑狀態時為低電平,在SCK的每個上升沿移入命令和數據。ENC28j60提供了7個SPI指令(RCR、RBM、WCR、WBM、BFS、BFC、SC),因此,enc所執行的操作完全依據于主控制器通過SPI接口發出的命令。命令和數據通過 SI引腳送入器件,簡化了電路的設計[1]。以太網接口電路如圖2所示。

圖2 以太網接口電路
本系統軟件設計主要采用C編程包括系統的初始化、tcp/ip協議棧、tcp/ip協議棧的管理[2]、客戶端上位機的撰寫以及系統功能模塊的處理程序。其中,系統初始化程序主要用來初始化dspic33f單片機端口等,協議棧初始化是對tcp/ip協議的初始化,協議棧管理是對協議類型的判斷及管理。系統軟件工作流程如圖3所示。

圖3 系統軟件工作流程
為了使該系統實現遠程web監控,必須在軟件中實現tcp/ip協議。tcp/ip是internet的核心協議,由于其體系結構較OSI參考模型而言,由OSI的7層模型簡化成了4層,正是由于該體系結構的簡單實用,它被廣泛的應用在局域網和廣域網中,已經成為事實上的國際標準。tcp/ip采用層次化的體系結構,從低到高分別是數據鏈路層、網絡層、傳輸層和應用層。
由于嵌入式系統的資源相對是非常有限的。所以必須對標準的tcp/ip協議進行剪裁[3],以減小控制器的負擔。本系統中要實現web控制,故采用HTTP協議作為應用層協議,為保證數據傳輸的可靠性和穩定性以TCP協議作為傳輸層協議。同時,還要使用IP、ICMP等協議以及用ARP實現IP地址與MAC地址的映射。通信流程如圖4所示。

圖4 TCP/IP通信流程
由于tcp/ip協議有4層構成,并且分層實現其功能,每一層都有自己特定的功能。因此,這里使用模塊化程序設計的方法進行 tcp/ip協議棧程序的設計,構造協議棧管理程序[2]來實現對接收到的數據包類型的處理。只有當接收到正確的數據包以后才會做進一步的處理工作。
嵌入式服務器知名http端口(80)監聽來自遠程監控端的請求(在這里調用函數TCPOpen(0, TCP_OPEN_SERVER,HTTP_PORT, TCP_PURPOSE_HTTP_SERVER)),建立TCP連接(由于在這里使用http協議,因此,要在傳輸層必須使用tcp協議,它是一種面向連接的可靠的服務,tcp連接的建立要經過3次握手)[4]。查詢相關套接字[5]鎖定連接,根據HTTP請求作出正確的響應(調用HTTPExecuteGet()和HTTPExecute Post()函數進行處理.)并將響應后回復的內容發送至遠程監控端(在瀏覽器中打開上傳到監控系統中的網頁可以看到回復的內容)。通訊完成后斷開本次TCP連接(由于tcp的半關閉,它需要經過4次握手才能斷開本次tcp連接)。
本系統在應用層使用http協議來進行實時信息的交互,以達到實時信息的監控。要采用動態更改網頁的形式來發布實時信息,使用html、css以及javascript來編寫系統的動態客戶端網頁[6]。采用http/1.1版本,它主要有GET、HEAD、POST 3種請求方式[7-8]。服務器端通過客戶端的請求方式對客戶端的請求進行相應的處理。在客戶端與服務器交互的每1個模塊都會有一個對應的callbackID以便準確對應到相應的處理模塊。客戶端與服務器端交互信息的流程如圖5所示。

圖5 客戶端與服務器端信息交互流程
本系統應用于多電機PID補償集中控制,只使用一臺電腦對多臺電機進行監控。以達到對各個電機實際速度、給定速度以及溫度等一些參數的實時監測。監控模塊實現程序設計如下所示:

該系統上位監控界面如圖6所示。

圖6 上位web監控界面
運行監控系統后,通過協議分析儀抓到的數據包如圖 7所示。

圖7 運行后抓取到的數據包
從抓取到的數據包中可以清楚地看到一次http應用交互數據的過程(3次握手建立連接、數據交互、4次握手關閉本次連接)。同時,通過分析數據包的源地址、目標地址及傳輸的狀態位可以確定該數據包的類型(請求包、響應包)。
隨著網絡技術的發展,在嵌入式系統中應用web技術必將是未來工業自動化、樓宇自動化以及安防領域的主導發展方向,尤其是在遠程監控系統的應用方面。在遠程監護系統中采用html和嵌入式web服務,完成數據的整合、處理以及系統中各種應用服務的集成,大大節約了遠程監護系統的成本;同時,也大幅度地提升了監護系統的智能化水平,具有非常廣泛的應用價值。
[1]Microchip.ENC28J60 Data Sheet[M]. Microchip Technology Inc,2006.
[2]徐冬寅,欒玖華.利用ENC28J60實現嵌入式WEB服務器[J].計算機工程應用技術,2009,5(26):75-76.
[3]李琪,劉延飛,劉巖.基于 STR710的 IP傳感器在車間系統中的應用[J].儀器儀表學報,2008,4(29):166-168.
[4]STEVENS Richard W.TCP/IP詳解 卷1:協議[M].北京:機械工業出版社,2000.
[5]武奇生 潘若禹.網絡與TCP/IP協議[M].西安:西安電子科技大學出版社,2010:22-162.
[6]朱印宏.網頁制作與網站開發[M].北京:北京希望電子出版社,2010.
[7]STEVENS Richard W.TCP/IP詳解 卷3:TCP事務協議、HTTP、NNTP和UNIX域協議[M].北京:機械工業出版社,2000(01):129-165.
[8]張麗娜 朱永紅.嵌入式 Internet技術的研究與實現[J].計算機工程與設計,2008,29(12):3266-3268.
[9]陽憲惠.工業數據通信與控制網絡[M].北京:清華大學出版社,2003.