內容摘要:為了解決LonWorks設備現(xiàn)場智能控制及遠程監(jiān)控的需要,提出了通過嵌入式網關實現(xiàn)LON網和以太網協(xié)議的轉換方案。本網關采用電力線收發(fā)器PL3150和帶有以太網控制器的微處理器LPC1778分別實現(xiàn)LonWorks網絡和以太網的接口功能。同時還利用LPC1778內置以太網控制器搭建Web服務器,實現(xiàn)了一個遠程監(jiān)控平臺,達到了遠程智能交互與監(jiān)控的目的。本文給出了該智能網關硬件平臺和軟件平臺的方案和實現(xiàn)方法。
LonWorks技術是美國Echelon公司于90年代初推出的一種現(xiàn)代總線技術,它具有開放性、高速性和互操作性而已被各行業(yè)廣泛使用。而LonWorks設備往往工作環(huán)境惡劣,其自身各部分與周圍其他電子設備之間不可避免存在各種形式的電磁干擾和靜電放電,保證LonWorks設備的安全穩(wěn)定運行有著重大的意義。
LonWorks設備運行過程中涉及的參數(shù)眾多,控制策略復雜,為了解決其現(xiàn)場遠程監(jiān)控的需要,有必要開發(fā)出一款自動化程度高的智能網關,實現(xiàn)LonWorks協(xié)議和TC/IP協(xié)議的轉換,將Lon網和以太網互連,從而達到對遠方的LonWorks設備運行集中的、遠程的監(jiān)控的目的。
而傳統(tǒng)的網關基本采用16位單片機來實現(xiàn),受限于其運算能力低、存儲空間小的特點,而不能夠適用于多任務、實時性高的應用環(huán)境。本文設計的設計的一款嵌入式LonWorks網絡智能網關,采用32位的ARM為主控芯片并嵌入μC/OS—II操作系統(tǒng),具有能夠滿足多任務、實時性、快速性高等復雜監(jiān)控環(huán)境的功能。
1 系統(tǒng)總體結構
圖1給出了系統(tǒng)結構示意圖,下位機設備將收集到的監(jiān)控參數(shù)通過電力線上傳至智能網關,LonWorks網關根據(jù)電力通訊協(xié)議將已將收集到的數(shù)據(jù)通過協(xié)議轉換將Lon網協(xié)議的數(shù)據(jù)包轉換成TCP協(xié)議數(shù)據(jù)包上傳到ARM內置服務器;遠端的監(jiān)視器作為嵌入式智能網關的人機界面互動平臺將遠程指令發(fā)送到智能網關,智能網關通過電力線下傳至下位機設備,下位機設備根據(jù)電力線通訊協(xié)議接收相應的遠程指令,并完成相應的遠程控制。
2 硬件設計
硬件平臺由3個部分組成,包括由Lon網數(shù)據(jù)采集收發(fā)模塊、Lon網協(xié)議和LwIP協(xié)議轉換模塊和以太網通訊模塊結構框圖如圖2所示。
2.1 Lon網協(xié)議和LwIP協(xié)議轉換模塊
該模塊是整個系統(tǒng)的核心,其不僅包括網絡協(xié)議轉換功能,而且完成系統(tǒng)其它顯示傳輸功能。該模塊的主控芯片為NXP公司生產的LPC17 78,其片上資源包括512 Kb的FLASH存儲器、高達64 Kb的SRAM,系統(tǒng)時鐘頻率可高達120 MHz,同時可內嵌操作系統(tǒng)。LPC1778內置外部總線控制器,通過總線方式讀寫雙口RAM,從而完成與數(shù)據(jù)采集收發(fā)模塊的高速數(shù)據(jù)交換。另外,嵌入式WEB服務器的架構需要大容量的存儲器,片上資源已不能夠滿足現(xiàn)有的需要,因此外部擴展一片16 Mb的FLASH SST25VF016B。
2.2 以太網接口模塊
以太網接口是網關與以太網通信的關鍵部分,本設計中選用的主控芯片LPC1778內嵌一個以太網控制器,通過擴展網卡芯片DP83848C和一個RJ45接口來實現(xiàn)以太網通訊接口。以太網控制器支持精簡的媒體獨立接口RMII,可在半雙工、全雙工模式下提供10M/100Mbps的以太網接入。我們采用RMII協(xié)議方式和MIIM(媒體獨立接口管理)串行總線、以及MDIO(管理數(shù)據(jù)輸入/輸出)相結合的方式來實現(xiàn)與網絡芯片的連接。使用RMII接口方式時需要接入一個50 MHz的外部有源晶振。
2.3 數(shù)據(jù)采集收發(fā)模塊
該模塊核心器件為電力線收發(fā)器PL3150。PL3150是Echelon公司生產的基于開放性ANSI標準的電力智能收發(fā)器,其可按LonTalk協(xié)議與LonWorks網絡上的所有節(jié)點進行通信。PL3150通過地址線、數(shù)據(jù)線以及控制信號線與雙口RAM連接。雙口RAM我們選用IDT71321,其支持總線讀寫方式,有2 KB的存儲容量。雙口RAM作為PL3150和ARM之間數(shù)據(jù)接收和發(fā)送的緩存區(qū)。該設計方案可實現(xiàn)兩模塊之間數(shù)據(jù)的高速、穩(wěn)定、低誤碼率的傳輸。
3 網關軟件設計
3.1 網關軟件結構設計
軟件結構如圖3所示,包括2個主要部分:
1)ARM端軟件設計。軟件平臺由嵌入式μC/OS—II操作系統(tǒng)為基礎構建,并利用LwIP協(xié)議實現(xiàn)TCP/IP協(xié)議,上層的應用程序為WEB服務程序以及網關協(xié)議轉換程序。
2)PL3150端設備接口數(shù)據(jù)通信程序。
3.2 網絡協(xié)議轉換程序
在網關中最重要的是實現(xiàn)兩個不同網絡的協(xié)議轉換。在LonWorks網絡中,節(jié)點與節(jié)點進行通信時,常采用特定的網絡變量的形式進行。網絡變量只有數(shù)據(jù)類型相同的輸入網絡變量和輸出網絡變量才能建立連接。在本網關工作過程中,根據(jù)圖2所示的結構原理,當下位機設備需要向上位機發(fā)送數(shù)據(jù)信息時,將會對自己的輸出網絡變量進行更新,發(fā)送到LonWorks網絡上;當PL3150監(jiān)測到這些網絡變量時,將對與之捆綁的輸入網絡變量進行更新并發(fā)送到雙口RAM的數(shù)據(jù)緩沖區(qū);ARM芯片通過外部總線讀取雙口RAM,其內部以太網控制器依據(jù)所使用協(xié)議將數(shù)據(jù)包進行封裝,發(fā)送到以太網協(xié)議的應用層。相反,當上位機想要對遠端現(xiàn)場設備進行控制時,也要對相應的網絡變量進行更改。
在協(xié)議轉換過程中,雙口RAM作為一個共享存儲器能夠進行雙邊讀寫操作。為了避免數(shù)據(jù)信息交換時的讀寫沖突、產生競爭,在讀寫操作時要進行控制以進行同步訪問。本文采用通過定時查詢控制地址的值來進行同步訪問操作。將2 KB的雙口RAM劃分為3個主要部分宋存放不同內容:存放ARM對PL3150的控制信息;存放PL3150向ARM發(fā)送的數(shù)據(jù)信息;控制同步訪問信息。
3.3 μC/OS—II操作系統(tǒng)移植
操作系統(tǒng)的加入使得我們的內部資源能夠更好的利用。μC/OS—II操作系統(tǒng)是一款開源的,針對嵌入式系統(tǒng)的實時內核操作系統(tǒng),可以應用于多種類型的硬件平臺。它最近發(fā)布的版本最多可管理多達256個任務。μC/OS—II具有強大的網絡支持,并且支持LwIP協(xié)議,為我們的網關服務搭建了一個很好的平臺。將μ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 網關通訊協(xié)議TCP/IP實現(xiàn)
3.4.1 LWIP簡介
本文的TCP/IP協(xié)議選擇使用LwIP協(xié)議棧來實現(xiàn)。LWIP是由瑞典計算機科學研究院Adam Dunkels設計的開源的嵌入式TCP/IP協(xié)議。它是輕型的TCP/IP協(xié)議棧,適用于資源緊張的嵌入式系統(tǒng)。LwIP既可以獨立運行,也可以移植到不同的操作系統(tǒng)上。
3.4.2 TCP數(shù)據(jù)處理流程
在我們的應用中,使用LwIP的TCP協(xié)議,它屬于傳輸層協(xié)議,雖然相比UDP協(xié)議傳輸速度較慢,但是它為應用層提供可靠的字節(jié)流服務TCP流程如圖4所示,當下位機數(shù)據(jù)信息到達時,通過tcp_write來構造一個報文段,之后tcp_output被調用,同時與ip_route交互,填寫首部中的源IP地址字段,最后通過ip_output發(fā)送給鏈路層,加上以太網幀頭發(fā)送到以太網中。同理可以得知TCP輸入流程。
3.4.3 LwIP移植
LwIP的移植主要是為了實現(xiàn)操作系統(tǒng)模擬層,它是操作系統(tǒng)和協(xié)議棧的一個接口,可為進程處理同步、消息傳送機制以及定時器等操作系統(tǒng)服務提供統(tǒng)一接口。
移植需要添加以下文件,具體包括:
1)與CPU和編澤器相關的頭文件。
2)與操作系統(tǒng)相關的文件。sys_arch.h的內容是與操作系統(tǒng)相關的結構和函數(shù)。此文件中需要實現(xiàn)4個函數(shù):消息函數(shù);數(shù)據(jù)結構及信號函數(shù);系統(tǒng)超時函數(shù);創(chuàng)立新線程函數(shù)。
3)與網卡驅動相關的函數(shù)。LwIP源碼提供者將ethernetif.c中的函數(shù)實現(xiàn)一個框架形式,用戶可以根據(jù)這個框架定制網卡驅動。
3.5 網關監(jiān)控平臺的實現(xiàn)
嵌入式處理器LPC1778在μC/OS—II操作系統(tǒng)平臺上,利用LwIP協(xié)議的上層協(xié)議HTTP協(xié)議搭建輕型服務器,提供人性化的操作界面,實時監(jiān)控底層數(shù)據(jù)及控制輸出等功能。Web服務器的結構如圖3所示。當遠端的瀏覽器發(fā)送請求時,HTTP協(xié)議處理程序會將該請求發(fā)送給Web服務器處理;而CGI(通用網關接口)程序作為處理客戶端Web瀏覽器輸入數(shù)據(jù)的接口規(guī)范,用來解釋處理表單的輸入信息,并在服務器產生相應的處理,完成客戶機與服務器之間的交互操作功能。
實現(xiàn)步驟如下:
1)通過在μC/OS—II建立相應的任務。當任務建立起來之后,任務的調度就由μC/OS—II的任務調度器調度。μC/OS-II的任務調度是搶占式的,所以在設置任務優(yōu)先級的時候要考慮任務對實時性的要求。同時注意LwIP的初始化要在μC/OS-II完全啟動之后。
2)Web服務器實現(xiàn)。由于本網關采用B/S通訊模式,嵌入式ARM則充當服務器,提供網頁數(shù)據(jù)信息。B/S模式需要HTTP協(xié)議的支持。它是基于請求/響應模式的,并使用TCP作為傳輸層。當服務器運行時,始終在80服務端口監(jiān)聽,等待請求的出現(xiàn)。Web服務