李 倩
(天津師范大學(xué) 學(xué)前教育學(xué)院,天津 300073)
嵌入式Web服務(wù)器為嵌入式設(shè)備提供網(wǎng)絡(luò)接口,實現(xiàn)遠(yuǎn)程管理和控制,是實現(xiàn)嵌入式設(shè)備網(wǎng)絡(luò)化的重要技術(shù)[1-2]。隨著以太網(wǎng)的廣泛應(yīng)用和嵌入式技術(shù)的不斷發(fā)展,將嵌入式應(yīng)用系統(tǒng)與以太網(wǎng)結(jié)合是當(dāng)前嵌入式領(lǐng)域發(fā)展的熱點之一[3-5]。將嵌入式應(yīng)用系統(tǒng)接入以太網(wǎng)后可突破傳統(tǒng)串口通信的時空限制,使嵌入式產(chǎn)品的應(yīng)用更加便利[6-7]。
本文介紹了一種基于MSP430單片機(jī)和以太網(wǎng)控制器CS8900A的嵌入式Web服務(wù)器的設(shè)計方法,用戶經(jīng)服務(wù)器平臺可通過Internet隨時訪問單片機(jī)系統(tǒng),得到由DS18B20測得的外部溫度,在此基礎(chǔ)上可簡便的進(jìn)行其他功能的擴(kuò)展。以期尋找連接簡單、擴(kuò)展性好、成本低等特點的硬件設(shè)備, 為遠(yuǎn)程數(shù)據(jù)采集、遠(yuǎn)程監(jiān)測控制、智能家居等領(lǐng)域提供借鑒。
TI公司的MSP430系列單片機(jī)是一個超低功耗類型的16位單片機(jī),它有5種模式可供選擇,低功耗和喚醒時間非常短,僅需6 μs,同時還具有處理能力強(qiáng)、片內(nèi)外設(shè)模塊豐富、時鐘系統(tǒng)靈活、工作條件穩(wěn)定、開發(fā)方式方便快捷等特點,使其成為單片機(jī)的首選[8-9]。MSP430F149作為核心控制器,其接口電路圖如圖1所示。

圖1 MSP430單片機(jī)接口電路圖
超低功耗單片機(jī)作為系統(tǒng)的核心,在許多領(lǐng)域都有廣泛的應(yīng)用,例如在醫(yī)療保健領(lǐng)域,使用小型便攜式設(shè)備進(jìn)行必要的測量。具有集成RF模塊的MSP430單片機(jī)具有良好的性能和較小的尺寸,可用于遠(yuǎn)程傳感器監(jiān)控。MSP430由于其具有高性能的外圍設(shè)備,可以通過直流或步進(jìn)電機(jī)驅(qū)動器控制其他設(shè)備。因此,MSP430微控制器系列具有更多不同功能,可以根據(jù)具體應(yīng)用要求進(jìn)行選擇拓展。
無線傳感器網(wǎng)絡(luò)應(yīng)用需求的快速增長,增加了對網(wǎng)絡(luò)節(jié)能操作和協(xié)議的需求。在無線傳感器中,傳感器網(wǎng)絡(luò)在大多數(shù)情況下保持睡眠狀態(tài),只有當(dāng)事件到達(dá)節(jié)點的輸入時才會激活。因此,低功耗的MSP430適合作為無線傳感器網(wǎng)絡(luò)的微控制器。
系統(tǒng)采用12位ADC轉(zhuǎn)換精度模塊的MSP430F149單片機(jī),利用ADC模塊使系統(tǒng)的硬件電路更加集成化、小型化[10-11]。系統(tǒng)將外部模擬信號接入AO通道,然后通過基本定時器設(shè)置A/D轉(zhuǎn)換器中斷,當(dāng)接收定時器中斷請求時,系統(tǒng)開始對信號采樣,轉(zhuǎn)換后的數(shù)字信號存儲在寄存器中。
系統(tǒng)內(nèi)部組件均基于MSP430超低功耗微控制器,使用無線通信來交換系統(tǒng)內(nèi)的數(shù)據(jù),該系統(tǒng)是根據(jù)智能傳感器的概念構(gòu)建的,來自網(wǎng)絡(luò)的用戶應(yīng)用程序可以使用HTTP協(xié)議訪問系統(tǒng)接口,其中Web服務(wù)器可以運(yùn)行在計算機(jī)上,也可以運(yùn)行在基于微控制器的嵌入式設(shè)備上。使用Web服務(wù)器可以實現(xiàn)將數(shù)據(jù)分發(fā)到外部網(wǎng)絡(luò),通過網(wǎng)絡(luò)的訪問將導(dǎo)致?lián)Q能器軟件與其他應(yīng)用程序之間的互操作性更強(qiáng)。在具有嵌入式Web服務(wù)器的系統(tǒng)的變體中,可以建立Web服務(wù)并為客戶端應(yīng)用程序提供一種與STWS連接的方式,這與整個智能傳感器概念有關(guān)。
局域網(wǎng)處理芯片CS8900A在嵌入式領(lǐng)域里使用較為廣泛[12-14]。采用TQFP封裝,共100個引腳,內(nèi)部集成了10Base-T收發(fā)濾波器以及在片RAM,接口有8位和16位兩種,一般單片機(jī)多使用8位接口模式;電源有5 V和3.3 V兩種,本設(shè)計方案中使用3 V供電。
系統(tǒng)硬件設(shè)計如圖2所示,MSP430F149為系統(tǒng)核心,CS8900A為以太網(wǎng)控制器,以DS18B20為溫度檢測芯片。

圖2 Web服務(wù)器系統(tǒng)硬件結(jié)構(gòu)
MSP430F149是系統(tǒng)的控制核心,選用8MHz的高頻晶振,MSP430F149通過圖中所示的相應(yīng)引腳來控制CS8900A和DS18B20,通過JTAG仿真器下載程序與在線調(diào)試。以太網(wǎng)控制器利用帶扼流線圈的隔離變壓器將待發(fā)送的數(shù)據(jù)傳輸至網(wǎng)絡(luò)上,或者接收來自不同網(wǎng)絡(luò)端口的數(shù)據(jù)。隔離變壓器的作用是隔離以太網(wǎng)控制器及外部線路,從而達(dá)到防治元器件損壞的效果,同時可以實現(xiàn)抗干擾及帶點插拔。
嵌入式Web服務(wù)器軟件設(shè)計中的主要模塊有HTTP應(yīng)用模塊、以太網(wǎng)模塊、TCP/IP模塊和溫度采集模塊,各模塊的概況如表1所示。

表1 軟件設(shè)計中各模塊概況
HTTP應(yīng)用模塊通過以太網(wǎng)和TCP/IP模塊傳送數(shù)據(jù),通過調(diào)用以太網(wǎng)控制模塊、TCP/IP模塊和溫度采集模塊提供的API來實現(xiàn)整個系統(tǒng)的功能。下面重點以太網(wǎng)控制模塊、TCP/IP實現(xiàn)過程進(jìn)行介紹。
以太網(wǎng)控制模塊針對MSP430F149對CS8900A的驅(qū)動和通信,主要任務(wù)是在CPU與以太網(wǎng)之間傳輸數(shù)據(jù)。本系統(tǒng)以太網(wǎng)接口選用UDP通信協(xié)議,軟件設(shè)計框架如圖3,該協(xié)議包括物理層的協(xié)議,TX以及RX分別按照UDP的通信協(xié)議進(jìn)行數(shù)據(jù)的發(fā)送以及接收,用戶層數(shù)據(jù)寫入TXFIFO,同時從RXFIFO中讀取數(shù)據(jù)即可實現(xiàn)數(shù)據(jù)的發(fā)送以及接收。

圖3 以太網(wǎng)控制模塊流程圖
在接收或發(fā)送數(shù)據(jù)前,首先要看 CS8900A 的發(fā)送緩存或接收緩存是否準(zhǔn)備好,如果未準(zhǔn)備好,則等待,直到緩存中有足夠的存儲空間,再對數(shù)據(jù)進(jìn)行發(fā)送或接收。MSP430F149利用Web總線服務(wù)器實現(xiàn)對系統(tǒng)數(shù)據(jù)的存儲、校驗、分析、對比、可視化顯示及遠(yuǎn)端數(shù)據(jù)的共享,并保存和上傳到文件共享中心。CS8900A模塊增加對用戶管理權(quán)限控制功能,只有經(jīng)過系統(tǒng)管理員授權(quán),并經(jīng)過身份驗證的用戶才能進(jìn)行相應(yīng)文件管理與控制操作,提高系統(tǒng)安全性。使用Verilog HDL語言,編寫了以太網(wǎng)通信接口,軟件接口如圖4,數(shù)據(jù)通過一定的協(xié)議進(jìn)行打包,然后按照UDP的協(xié)議進(jìn)行封裝,通過圖4提供的數(shù)據(jù)接口將AD采集的數(shù)據(jù)送入CS8900A以太網(wǎng)控制器進(jìn)行處理。

圖4 UDP通信接口
Web服務(wù)器通過Internet將所需的HTML頁面和圖片帶到Web瀏覽器,同時,發(fā)生TCP /IP通信。TCP /IP是Internet中使用的標(biāo)準(zhǔn)協(xié)議,對于大多數(shù)嵌入式應(yīng)用程序而言,TCP/IP太大且成本較高[15]。為了使每臺設(shè)備上都有一個Web服務(wù)器,必須設(shè)計用于嵌入式應(yīng)用程序的設(shè)備中使用的TCP / IP堆棧,并減小其代碼大小。將TCP/IP精簡化,稱為精簡TCP/IP。設(shè)計精簡TCP/IP時,簡單性和多功能性是主要關(guān)注點。使用TCP/IP連接,Web瀏覽器可通過Internet訪問Web服務(wù)器,以提供嵌入式設(shè)備的圖形窗口,Web服務(wù)器生成以圖形方式顯示在Web瀏覽器中的網(wǎng)頁。服務(wù)器和瀏覽器通過HTTP協(xié)議進(jìn)行通信。
最底層的是網(wǎng)絡(luò)類型的物理網(wǎng)絡(luò)媒體,如以太網(wǎng)、幀中繼、ATM和令牌環(huán)。在Internet層有IP、ARP、IGMP和ICMP幾種協(xié)議[16-17]。因為假設(shè)路由過程是在本地服務(wù)器的路由表中進(jìn)行的,因此在嵌入式Web服務(wù)器中,只實現(xiàn)IP、ARP和ICMP,不需要實現(xiàn)IGMP。在傳輸層有兩個協(xié)議,TCP和UDP,只實現(xiàn)TCP即可,因為Web服務(wù)器只需要TCP。
TCP傳輸控制協(xié)議提供了一種可靠的面向字節(jié)流的服務(wù)。基本的TCP任務(wù)分為6個功能塊,包括tcpinput、tcpprocess、tcpreceive、tcpwrite、tcpenqueue和tcpoutput。當(dāng)應(yīng)用程序希望發(fā)送TCP包時,將調(diào)用tcpwrite函數(shù)。tcpwrite接收數(shù)據(jù)調(diào)用tcpenqueue函數(shù),該函數(shù)用于將數(shù)據(jù)放入TCP / IP的應(yīng)用程序地址檢查工具,該工具負(fù)責(zé)在網(wǎng)絡(luò)就緒時發(fā)送任意的TCP數(shù)據(jù)消息。
TCP的輸出功能就是用來發(fā)送這些數(shù)據(jù)的。如果引用映射到物理地址的最高地址,則地址解析協(xié)議(ARP)負(fù)責(zé)地址轉(zhuǎn)換。ARP協(xié)議的工作流程如下:當(dāng)主機(jī)生成一個IP數(shù)據(jù)報時,將該數(shù)據(jù)報發(fā)送給目標(biāo)主機(jī)。32位的IP地址應(yīng)該轉(zhuǎn)換成48位的以太網(wǎng)地址,從一個邏輯的Internet地址到相應(yīng)的物理硬件。ARP包的結(jié)構(gòu)如下:
struct arp{
unsigned int hardw;//硬件類型
unsigend int ARPopcode://ARP操作
unsigned int prot;//協(xié)議類型
unsigned char hardwlen;//硬件長度
unsigned char protlen;//協(xié)議長度
unsigned char targetha [5];//目標(biāo)地址
unsigned char targetpa [3];//目標(biāo)協(xié)議地址
unsigned char sendha[5];//發(fā)送方地址
unsigned char sendpa[3];//發(fā)送方協(xié)議地址
}
在網(wǎng)絡(luò)層,IP協(xié)議是TCP/IP的基礎(chǔ)和核心,負(fù)責(zé)按操作順序發(fā)送數(shù)據(jù)。對于主機(jī)之間的不同網(wǎng)絡(luò),如TCP、UDP、ICMP和IGMP,使用IP數(shù)據(jù)報格式進(jìn)行傳輸。IP提供不可靠的無連接數(shù)據(jù)報傳輸服務(wù)。IP協(xié)議的功能是將要傳輸?shù)臄?shù)據(jù)與IP報頭處理相結(jié)合,然后將打包的IP數(shù)據(jù)報發(fā)送到MAC層。同時,IP層從較低層(如以太網(wǎng)設(shè)備驅(qū)動程序)接收數(shù)據(jù)報,在報頭校驗和消息處理之后,接收到的數(shù)據(jù)報被發(fā)送到更高的層次——TCP或UDP層。
IP報頭的結(jié)構(gòu)如下:
struct ipheadr{
unsigned char ipversionlen;// IP版本和標(biāo)頭長度
unsigned char ippacketlen; //服務(wù)類型
unsigned int ipdatagramid;// 總包長度
unsigned Int ipdatagramid; / /數(shù)據(jù)報ID
unsigned Int ipfragmentoffset;//片段偏移
unsigned char ipprotocol;//IP協(xié)議
unsigned Int ipchecksum;//頭校驗和
unsigned char ipsource[3];// 源IP地址
unsigned char ipdest[3];// 目標(biāo)IP地址
}
TCP/IP的應(yīng)用層是HTTP,用于發(fā)送HTML文件。HTTP是通過TCP / IP在機(jī)器之間傳輸文檔的標(biāo)準(zhǔn)協(xié)議,用于在全球范圍內(nèi)處理相互連接的文檔,可以從某些具有嵌入式Web訪問權(quán)限的Web服務(wù)器中檢索文檔,文檔可以引用任何類型的數(shù)據(jù),可以是文本、圖形、聲音或視頻。圖5顯示了HTTP流程的模型。最常見的HTTP客戶端是我們熟悉的Web瀏覽器,Web瀏覽器向Web服務(wù)器發(fā)出URL請求以訪問文檔,服務(wù)器必須在瀏覽器啟動其請求的HTML頁面之前運(yùn)行。服務(wù)器是Web頁面的存儲庫,它處理請求并將數(shù)據(jù)傳回瀏覽器。瀏覽器在顯示文本、圖形和運(yùn)行java 小程序方面做了更繁瑣的工作。

圖5 HTTP進(jìn)程模型
有以上各模塊提供的API服務(wù)作為基礎(chǔ),建立一個HTTP服務(wù)器就可以實現(xiàn)Web 服務(wù)器的功能了,可以通過瀏覽器訪問它來得到CPU的內(nèi)部和外部溫度。使用HTML語言制作動態(tài)網(wǎng)頁,并將CPU內(nèi)部溫度傳遞給變量AD7%,DS18B20測得的外部溫度傳遞給變量ADA%。
Web服務(wù)器的軟件實現(xiàn)流程如圖6所示。通過函數(shù)Init Osc()和Init Ports()初始化系統(tǒng)時鐘和微處理器I/O端口的配置。調(diào)用函數(shù) TCP Low Leve1 Init()對TCP/IP模塊進(jìn)行初始化,主要是配置時鐘及計時器,對相關(guān)標(biāo)志位清零以及初始化 CS8900A。然后調(diào)用HTTP Status =O初始化服務(wù)器的標(biāo)志寄存器并設(shè)定要監(jiān)聽的端口。

圖6 Web服務(wù)器的軟件實現(xiàn)流程圖
前期準(zhǔn)備工作完成后,無限循環(huán)實現(xiàn)Web Server。循環(huán)中的主體為:監(jiān)聽連接是否打開,如果有主機(jī)想訪問該服務(wù)器并且還沒有打開連接,則建立被動連接;調(diào)用函數(shù) DoNetworkstuff()來實現(xiàn)對接收幀的接收和處理、重傳機(jī)制的啟動以及 CPU緩存中數(shù)據(jù)的發(fā)送等,最后通過函數(shù) HTTPServer ()來實現(xiàn)將服務(wù)器的數(shù)據(jù)以動態(tài)網(wǎng)頁的形式展現(xiàn)給訪問主機(jī)。
實驗以某變電站的遠(yuǎn)程測溫智能預(yù)警系統(tǒng)為研究對象,將嵌入式Web服務(wù)器作為變電站防控系統(tǒng)的終端檢測裝置,通過測定變電站內(nèi)的控制設(shè)備、調(diào)試設(shè)備以及煙霧傳感器等得溫度,將測試數(shù)據(jù)發(fā)送至監(jiān)控室,分析系統(tǒng)的各項功能和性能,以達(dá)到預(yù)警目的。
實驗以位于我國中部地區(qū)Z市的智能電網(wǎng)系統(tǒng)為研究對象,該市從2019年初陸開始對本區(qū)域范圍內(nèi)的智能變電站推廣基于Web總線服務(wù)器的SCD文件管控系統(tǒng)。以轄區(qū)內(nèi)的智能變電站SCD文件的管控系統(tǒng)為例,分析系統(tǒng)的各項功能和性能。本次實驗選取的樣本文件大小為100~1 700 M。
1)統(tǒng)一配置系統(tǒng)文件,將外部模擬信號接入AO通道;
2)連接基本定時器,以此設(shè)置A/D轉(zhuǎn)換器的中斷;
3)當(dāng)接收定時器中斷請求時,系統(tǒng)開始對信號采樣,轉(zhuǎn)換后的數(shù)字信號存儲在寄存器中;
4)擴(kuò)充數(shù)據(jù)對象,并根據(jù)對象信息生成報文。
5)觀測和提取循環(huán)冗余校驗(Cyclic Redundancy Check, CRC)變化警告記錄。
6)對比可視化功能的各種類別信息,驗證系統(tǒng)的有效性。
系統(tǒng)性能測試主要從不同規(guī)模文件的傳輸共享耗時、文件上傳錯誤率指標(biāo)進(jìn)行綜合分析,同時將同等條件下基于以太網(wǎng)建設(shè)的嵌入式Web系統(tǒng)的同類指標(biāo)參與對比,以更清晰地展示出本文系統(tǒng)的優(yōu)勢。
3.3.1 不同規(guī)模SCD文件共享傳輸耗時分析
為了驗證本文方法的可行性,實驗分析了基于嵌入式Web系統(tǒng)和傳統(tǒng)系統(tǒng)的傳輸耗時,實驗結(jié)果如圖7所示。

圖7 不同數(shù)據(jù)規(guī)模的傳輸耗時對比
分析圖7可知,當(dāng)檢測時間較短,數(shù)據(jù)規(guī)模較小時,兩種系統(tǒng)數(shù)據(jù)傳輸?shù)男阅芟嘟?dāng)傳輸數(shù)據(jù)規(guī)模超過1 200 M 時,受到網(wǎng)絡(luò)帶寬的影響,傳統(tǒng)系統(tǒng)的數(shù)據(jù)傳輸耗時增加,為基于嵌入式Web服務(wù)器系統(tǒng)在大數(shù)據(jù)傳輸方面的優(yōu)勢較為明顯,當(dāng)數(shù)據(jù)規(guī)模超過較大時,所提出系統(tǒng)能夠節(jié)省近一半的傳輸時間。
3.3.2 不同系統(tǒng)文件上傳錯誤率分析
在不同規(guī)模數(shù)據(jù)下,實驗分析了文件上傳錯誤率,實驗結(jié)果如表2所示。

表2 上傳錯誤率
當(dāng)數(shù)據(jù)規(guī)模逐漸擴(kuò)大時,傳統(tǒng)系統(tǒng)文件上傳錯誤率明顯增加,這主要是由于傳統(tǒng)網(wǎng)絡(luò)系統(tǒng)存在延遲,傳輸大規(guī)模數(shù)據(jù)時出現(xiàn)個別數(shù)丟失,由此可知基于Web服務(wù)器的系統(tǒng)穩(wěn)定性更好。
嵌入式Web服務(wù)器是嵌入式系統(tǒng)網(wǎng)絡(luò)化應(yīng)用的重要方面。本文基于MSP430單片機(jī)和以太網(wǎng)控制器CS8900A設(shè)計的嵌入式Web服務(wù)器平臺,用戶可以此為平臺簡便的進(jìn)行其他功能的擴(kuò)展。本設(shè)計的硬件連接簡單、擴(kuò)展性好、成本低,此設(shè)計可廣泛應(yīng)用于遠(yuǎn)程數(shù)據(jù)采集、遠(yuǎn)程監(jiān)測、遠(yuǎn)程控制、智能家居等領(lǐng)域,具有廣闊的應(yīng)用前景。通過將本設(shè)計應(yīng)用于變電站溫控系統(tǒng),實驗結(jié)果表明,與傳統(tǒng)的系統(tǒng)相比,基于單片機(jī)的嵌入式Web服務(wù)器在數(shù)據(jù)規(guī)模較大時,如在數(shù)據(jù)量達(dá)到1 700 M時,耗時僅為傳統(tǒng)系統(tǒng)的一半。此外,隨著數(shù)據(jù)規(guī)模的增加(1 600 M),基于Web服務(wù)器的錯誤率僅為傳統(tǒng)系統(tǒng)的4.5%。