嵌入式LonWorks網(wǎng)絡(luò)智能網(wǎng)關(guān)設(shè)計(jì)
操作系統(tǒng)的加入使得我們的內(nèi)部資源能夠更好的利用。μC/OS—II操作系統(tǒng)是一款開源的,針對嵌入式系統(tǒng)的實(shí)時內(nèi)核操作系統(tǒng),可以應(yīng)用于多種類型的硬件平臺。它最近發(fā)布的版本最多可管理多達(dá)256個任務(wù)。μC/OS—II具有強(qiáng)大的網(wǎng)絡(luò)支持,并且支持LwIP協(xié)議,為我們的網(wǎng)關(guān)服務(wù)搭建了一個很好的平臺。將μC/OS—II操作系統(tǒng)移植到ARM平臺上,只需處理μC/OS—II與Cortex—M3接口部分,即OS_CPU_C.C、OS_CPU_A.S、OS_CPU.H這3個文件。
3.4 網(wǎng)關(guān)通訊協(xié)議TCP/IP實(shí)現(xiàn)
3.4.1 LWIP簡介
本文的TCP/IP協(xié)議選擇使用LwIP協(xié)議棧來實(shí)現(xiàn)。LWIP是由瑞典計(jì)算機(jī)科學(xué)研究院Adam Dunkels設(shè)計(jì)的開源的嵌入式TCP/IP協(xié)議。它是輕型的TCP/IP協(xié)議棧,適用于資源緊張的嵌入式系統(tǒng)。LwIP既可以獨(dú)立運(yùn)行,也可以移植到不同的操作系統(tǒng)上。
3.4.2 TCP數(shù)據(jù)處理流程
在我們的應(yīng)用中,使用LwIP的TCP協(xié)議,它屬于傳輸層協(xié)議,雖然相比UDP協(xié)議傳輸速度較慢,但是它為應(yīng)用層提供可靠的字節(jié)流服務(wù)TCP流程如圖4所示,當(dāng)下位機(jī)數(shù)據(jù)信息到達(dá)時,通過tcp_write來構(gòu)造一個報文段,之后tcp_output被調(diào)用,同時與ip_route交互,填寫首部中的源IP地址字段,最后通過ip_output發(fā)送給鏈路層,加上以太網(wǎng)幀頭發(fā)送到以太網(wǎng)中。同理可以得知TCP輸入流程。
3.4.3 LwIP移植
LwIP的移植主要是為了實(shí)現(xiàn)操作系統(tǒng)模擬層,它是操作系統(tǒng)和協(xié)議棧的一個接口,可為進(jìn)程處理同步、消息傳送機(jī)制以及定時器等操作系統(tǒng)服務(wù)提供統(tǒng)一接口。
移植需要添加以下文件,具體包括:
1)與CPU和編澤器相關(guān)的頭文件。
2)與操作系統(tǒng)相關(guān)的文件。sys_arch.h的內(nèi)容是與操作系統(tǒng)相關(guān)的結(jié)構(gòu)和函數(shù)。此文件中需要實(shí)現(xiàn)4個函數(shù):消息函數(shù);數(shù)據(jù)結(jié)構(gòu)及信號函數(shù);系統(tǒng)超時函數(shù);創(chuàng)立新線程函數(shù)。
3)與網(wǎng)卡驅(qū)動相關(guān)的函數(shù)。LwIP源碼提供者將ethernetif.c中的函數(shù)實(shí)現(xiàn)一個框架形式,用戶可以根據(jù)這個框架定制網(wǎng)卡驅(qū)動。
3.5 網(wǎng)關(guān)監(jiān)控平臺的實(shí)現(xiàn)
嵌入式處理器LPC1778在μC/OS—II操作系統(tǒng)平臺上,利用LwIP協(xié)議的上層協(xié)議HTTP協(xié)議搭建輕型服務(wù)器,提供人性化的操作界面,實(shí)時監(jiān)控底層數(shù)據(jù)及控制輸出等功能。Web服務(wù)器的結(jié)構(gòu)如圖3所示。當(dāng)遠(yuǎn)端的瀏覽器發(fā)送請求時,HTTP協(xié)議處理程序會將該請求發(fā)送給Web服務(wù)器處理;而CGI(通用網(wǎng)關(guān)接口)程序作為處理客戶端Web瀏覽器輸入數(shù)據(jù)的接口規(guī)范,用來解釋處理表單的輸入信息,并在服務(wù)器產(chǎn)生相應(yīng)的處理,完成客戶機(jī)與服務(wù)器之間的交互操作功能。
實(shí)現(xiàn)步驟如下:
1)通過在μC/OS—II建立相應(yīng)的任務(wù)。當(dāng)任務(wù)建立起來之后,任務(wù)的調(diào)度就由μC/OS—II的任務(wù)調(diào)度器調(diào)度。μC/OS-II的任務(wù)調(diào)度是搶占式的,所以在設(shè)置任務(wù)優(yōu)先級的時候要考慮任務(wù)對實(shí)時性的要求。同時注意LwIP的初始化要在μC/OS-II完全啟動之后。
2)Web服務(wù)器實(shí)現(xiàn)。由于本網(wǎng)關(guān)采用B/S通訊模式,嵌入式ARM則充當(dāng)服務(wù)器,提供網(wǎng)頁數(shù)據(jù)信息。B/S模式需要HTTP協(xié)議的支持。它是基于請求/響應(yīng)模式的,并使用TCP作為傳輸層。當(dāng)服務(wù)器運(yùn)行時,始終在80服務(wù)端口監(jiān)聽,等待請求的出現(xiàn)。Web服務(wù)器的編程是基于LwIP的API函數(shù)編寫的。API函數(shù)專為LwIP設(shè)計(jì),充分利用LwIP的內(nèi)部結(jié)構(gòu)以實(shí)現(xiàn)其設(shè)計(jì)目標(biāo)。
3)HTTP處理子函數(shù)在獲得請求報文之后,根據(jù)其請求報文進(jìn)行相應(yīng)處理。在HTTP請求報文中,第一行就是請求行,方式有GET和POST兩種。由于CGI程序中具有HTML生成和FORM解析功能,CGI程序會根據(jù)請求數(shù)據(jù)中的URL信息找到相應(yīng)的網(wǎng)頁文件,并對文件中的程序代碼解析并執(zhí)行,然后生成HTML網(wǎng)頁回傳至瀏覽器。
4 網(wǎng)關(guān)的功能和應(yīng)用
該監(jiān)控平臺每2 s就從下位機(jī)刷新一次實(shí)時監(jiān)測數(shù)據(jù),可以獲得例如下位機(jī)ID號、電壓、電流、功率等實(shí)時量。圖5為開發(fā)完成的網(wǎng)關(guān)嵌入式網(wǎng)頁服務(wù)頁面,可以控制某一個下位機(jī)的開閉狀態(tài)、功率因子大小,并可以定時上傳數(shù)據(jù)并具有數(shù)據(jù)管理系統(tǒng)。服務(wù)器的系統(tǒng)功能結(jié)構(gòu)框架如圖6所示。
本網(wǎng)關(guān)IP靜態(tài)地址設(shè)為192,168.0.100并與路由器相連,通過動態(tài)域名解析與一個固定域名綁定,用戶通過訪問固定域名便可遠(yuǎn)程實(shí)時觀測。
5 結(jié)束語
文中系統(tǒng)地論述了嵌入式LonWorks網(wǎng)絡(luò)智能網(wǎng)關(guān)的實(shí)現(xiàn)方法,主要分析了嵌入式網(wǎng)關(guān)的硬件和軟件的實(shí)現(xiàn)方法。本網(wǎng)關(guān)的實(shí)現(xiàn)可為將來遠(yuǎn)程監(jiān)測應(yīng)用方面帶來很大便利,可廣泛應(yīng)用與遠(yuǎn)程查表、路燈控制等項(xiàng)目中,具有很好的社會價值。
評論