基于Cortex-M3內核處理器的嵌入式Web服務(wù)器
引言
目前,網(wǎng)絡(luò )化控制己成為遠程控制的主要研究方向,利用網(wǎng)絡(luò )實(shí)現對局域乃至全球范圍內設備的監控是工業(yè)控制系統的發(fā)展趨勢[1]。嵌入式Internet遠程監控技術(shù)作為網(wǎng)絡(luò )化控制的代表,它解決了工業(yè)控制領(lǐng)域中異構網(wǎng)絡(luò )互聯(lián)問(wèn)題,提高了傳統裝備的智能化水平,促進(jìn)了傳統產(chǎn)業(yè)結構的調整。嵌入式Web服務(wù)器尤其適用于嵌入式Internet應用,它通過(guò)Ethernet或Modem的連接可以輕松連接到任何網(wǎng)絡(luò ),真正實(shí)現對設備的遠程管理和控制。
實(shí)現方案
嵌入式Web服務(wù)器必須具備的基本功能包括:可控制與其連接的設備并獲取設備的狀態(tài)和數據;現場(chǎng)信息可以網(wǎng)頁(yè)形式發(fā)布;可及時(shí)響應遠程用戶(hù)的控制命令。此外,嵌入式設備應具有功能簡(jiǎn)單、功耗低和便攜等特點(diǎn)。為此,筆者設計的系統如圖1所示。
圖1 系統框圖
本系統采用了ST公司的Cortex-M3內核的STM32微處理器STM32F103RB。該芯片屬于STM32系列的增強型,提供多達128KB的片內Flah、20KB的RAM和豐富的外設接口。Cortex-M3內核在設計上專(zhuān)門(mén)考慮了滿(mǎn)足集功耗低、實(shí)時(shí)性強的工業(yè)級嵌入式產(chǎn)品領(lǐng)域的特點(diǎn)。在性能相同的條件下,STM32產(chǎn)品功耗比同級別產(chǎn)品要低75%,工作環(huán)境溫度達105℃。因為集成度很高,除一個(gè)電源外,LQFP100封裝芯片的最小系統只需要外接7個(gè)電容即可。
TCP/IP協(xié)議棧由W5100來(lái)支持,它集TCP/IP協(xié)議棧、以太網(wǎng)MAC和PHY為一體,其內部16KB的發(fā)送/接收緩沖區可快速進(jìn)行數據交換,最大通信速率達到25Mbps;內嵌10BaseT/100BaseTX以太網(wǎng)物理層,支持自動(dòng)應答;提供多種總線(xiàn)接口方式,可以很方便地與各種MCU連接,簡(jiǎn)化了硬件電路設計,使嵌入式系統在沒(méi)有操作系統的支持下,真正實(shí)現單芯片接入因特網(wǎng)的理想。
為減少PCB板面積和布線(xiàn)復雜性,考慮到系統的數據傳輸率要求不高,選擇SPI接口作為STM32F103RB和W5100的連接方式。STM32F103RB、W5100和RJ45接口構成一個(gè)典型的嵌入式Web服務(wù)器。
作為一個(gè)應用實(shí)例,本設計利用STM32F103RB的片上ADC和GPIO,將服務(wù)器與LED和壓力傳感器相連,一旦服務(wù)器接收到來(lái)自瀏覽器端的連接請求,服務(wù)器將及時(shí)響應,將當前的壓力參數、LED狀態(tài)和溫度等信息嵌入到Web頁(yè)面并發(fā)布到網(wǎng)上,這樣現場(chǎng)的各種信息就呈現在瀏覽器。此外,用戶(hù)通過(guò)網(wǎng)頁(yè)上的控制按鈕可以遠程控制LED狀態(tài),操作結果能及時(shí)反饋在網(wǎng)頁(yè)上。
硬件設計
圖2為嵌入式Web服務(wù)器的簡(jiǎn)化電路圖,主要顯示了構成服務(wù)器的三個(gè)核心器件的連接方式。RJ45接口是帶有網(wǎng)絡(luò )變壓器的物理層接口。在W5100中,通過(guò)將SEN引腳經(jīng)10KΩ電阻上拉到高電平以使能其處于SPI從模式。CS為片選,MISO和MOSI為兩條數據傳輸線(xiàn)。W5100的SPI工作時(shí)鐘由處于主模式的STM32F103RB提供。為方便STM32F103RB判斷W5100的工作狀態(tài),必須將W5100的中斷引腳INT與STM32F103RB的外部中斷線(xiàn)相連接。W5100的第5、6、8和9引腳是PHY信號線(xiàn),用于與RJ45接口相連接。除電源相關(guān)引腳外,W5100的其它引腳可以選擇置空。
圖2為嵌入式Web服務(wù)器的簡(jiǎn)化電路圖
軟件設計
主程序
主程序流程圖如圖3所示。
圖3 主程序流程圖
當程序開(kāi)始啟動(dòng)時(shí),程序首先初始化STM32和W5100,配置STM32工作在SPI主模式,而W5100工作在從模式,啟動(dòng)STM32的A/D和片上的溫度傳感器,配置W5100工作于TCP服務(wù)器模式,在TCP服務(wù)器模式下,端口的狀態(tài)轉換如圖4所示。
圖4 W5100處于TCP服務(wù)器模式的端口狀態(tài)轉換圖
在使用內部溫度傳感器時(shí)要注意:溫度傳感器在從調電模式喚醒后到它能以正常水平輸出采樣電壓前有一段建立時(shí)間;ADC喚醒后同樣需要一段建立時(shí)間,為使延遲最小,ADON位(用于啟動(dòng)A/D轉換)和TSVREFE位(用于將溫度傳感器從調電模式中喚醒)應該同時(shí)置位。另外,對溫度傳感器的采樣時(shí)間要大于2.2μs。
接下來(lái)是一個(gè)無(wú)限循環(huán)體,程序開(kāi)始不斷檢查外部中斷狀態(tài)標志(WInteRFlag)和Socket接收數據狀態(tài)標志(SockRecvFlag)是否改變,同時(shí)開(kāi)始處理A/D轉換的數據,以保證服務(wù)器在產(chǎn)生網(wǎng)頁(yè)時(shí)能得到當前的各種數據。
一旦W5100的Socket端口有中斷事件產(chǎn)生時(shí),W5100將通過(guò)其中斷引腳INT觸發(fā)STM32的外部中斷,使STM32進(jìn)入外部中斷處理函數改變WInterFlag,程序接著(zhù)進(jìn)入處理W5100中斷事件函數,在此函數中,STM32通過(guò)訪(fǎng)問(wèn)W5100的中斷寄存器(IR)和端口0中斷寄存器(S0_IR)判斷出W5100的端口0產(chǎn)生何種中斷事件,若Socket接收到數據,則改變SockRecvFlag。
程序檢測到SockRecvFlag發(fā)生改變,立即進(jìn)入處理接收數據函數。處理接收數據函數是整個(gè)程序的核心,它主要負責收發(fā)數據、解析HTTP協(xié)議和響應用戶(hù)的不同請求。圖5為該過(guò)程的程序流程圖。
圖5 數據處理程序流程圖
數據處理程序
HTTP協(xié)議是一種請求/響應協(xié)議。在基于HTTP的客戶(hù)/服務(wù)器數據交換時(shí),當HTTP請求產(chǎn)生時(shí),就開(kāi)始一次HTTP通信。過(guò)程如下:瀏覽器提取出URL中的主機后,向DNS發(fā)出請求,解析主機名的IP地址;DNS解析地址并將結果返回給瀏覽器;瀏覽器向該地址請求建立TCP連接;瀏覽器發(fā)出請求報文;服務(wù)器向瀏覽器發(fā)送響應報文,并將指定數據發(fā)送給瀏覽器;斷開(kāi)連接。
根據HTTP協(xié)議規定,如果客戶(hù)端沒(méi)有發(fā)出請求,則服務(wù)器不會(huì )自動(dòng)發(fā)送頁(yè)面。因此通過(guò)在網(wǎng)頁(yè)程序中加入 標記,使瀏覽器在無(wú)用戶(hù)干預下周期性地刷新頁(yè)面,從而保證用戶(hù)及時(shí)地獲得遠程現場(chǎng)的信息。
HTTP消息包括一個(gè)起始行、零個(gè)或多個(gè)消息頭域、一個(gè)標示頭域結束的實(shí)體行和一個(gè)可能存在的消息體。本程序主要解析消息的起始行,而忽略其它內容,這種處理思路也符合嵌入式系統硬件對軟件實(shí)現的復雜度要求。請求方法決定了對請求URI所指定的資源進(jìn)行操作的方式,GET方法讀取URL指定的資源,一般用來(lái)向服務(wù)器傳輸少量且透明的數據,數據總量被限制在255個(gè)字符以?xún)?,而POST方法可傳輸大量數據,與HTML的表單特性相配合以實(shí)現遠程動(dòng)態(tài)交互控制。
當連接開(kāi)始時(shí),客戶(hù)端發(fā)送GET方法請求給服務(wù)器,以訪(fǎng)問(wèn)服務(wù)器網(wǎng)頁(yè),為限定特定用戶(hù)訪(fǎng)問(wèn),增加數據安全性,在網(wǎng)頁(yè)中加入基本認證機制。當客戶(hù)端請求受基本認證機制保護的網(wǎng)頁(yè)時(shí),服務(wù)器即要求用戶(hù)認證,服務(wù)器端對用戶(hù)的登陸信息按Base64碼解碼,只有認證成功,瀏覽器才能獲得正確的網(wǎng)頁(yè)數據。正確的控制網(wǎng)頁(yè)如圖6所示,若用戶(hù)信息有誤,服務(wù)器返回以狀態(tài)碼401為起始行的響應消息。
圖6 控制網(wǎng)頁(yè)
由于服務(wù)器端檢測的數據處在不停的變化之中,為使網(wǎng)頁(yè)的數據也能及時(shí)地更新,網(wǎng)頁(yè)程序初始化時(shí),要顯示的數據都使用字符串標記暫時(shí)表示,在每次發(fā)送響應消息到端口前,再將網(wǎng)頁(yè)中定義字符串標記用當前設備的實(shí)際值替換。
對LED的控制,網(wǎng)頁(yè)程序采用HTML語(yǔ)言的表單,HTTP協(xié)議請求方法采用POST。POST作為請求方法時(shí),首先和Web服務(wù)器建立連接,成功后瀏覽器將HTML表單中的值發(fā)送給Web服務(wù)器。這種方式?jīng)]有字符長(cháng)度的限制,表單數據是作為附加的文檔發(fā)送而不是作為URL的一部分發(fā)送。服務(wù)器程序通過(guò)判斷客戶(hù)的不同控制命令即時(shí)做出LED燈的開(kāi)關(guān)響應。
在每次連接成功后,服務(wù)器端程序會(huì )返回以狀態(tài)碼200開(kāi)頭的響應消息,消息的起始行為:HTTP/1.1 200 OK。當用戶(hù)請求一個(gè)服務(wù)器端不存在的文件時(shí),服務(wù)器返回以狀態(tài)碼404開(kāi)頭的響應消息。
結語(yǔ)
這種利用硬件實(shí)現TCP/IP協(xié)議的網(wǎng)絡(luò )芯片W5100及具有Cotex-M3內核的STM32處理器構成嵌入式Web服務(wù)器的方案性?xún)r(jià)比高。通過(guò)網(wǎng)絡(luò ),用戶(hù)在瀏覽器端可及時(shí)收到遠程現場(chǎng)傳感器采集的數據,遠程現場(chǎng)的開(kāi)關(guān)狀態(tài)指示燈可實(shí)時(shí)地響應用戶(hù)的開(kāi)關(guān)信號操作請求。測試表明該系統傳輸大塊數據文件的速率可達到100KBPS。為提高網(wǎng)絡(luò )資源的安全性,可采用AES(Advanced Encryption Standard,先進(jìn)加密標準)等編碼機制來(lái)加密必須保護的私有數據。
評論