曾夢秋,吳 丹,陸 鋒,陳 瀟,凌 路,葉永強
(南京航空航天大學 自動化學院,江蘇 南京 210016)
LonWorks技術是美國Echelon公司于90年代初推出的一種現代總線技術,它具有開放性、高速性和互操作性而已被各行業廣泛使用[1]。而LonWorks設備往往工作環境惡劣,其自身各部分與周圍其他電子設備之間不可避免存在各種形式的電磁干擾和靜電放電,保證LonWorks設備的安全穩定運行有著重大的意義。
LonWorks設備運行過程中涉及的參數眾多,控制策略復雜,為了解決其現場遠程監控的需要,有必要開發出一款自動化程度高的智能網關,實現Lonworks協議和TCP/IP協議的轉換,將Lon網和以太網互連,從而達到對遠方的LonWorks設備運行集中的、遠程的監控的目的。
而傳統的網關基本采用16位單片機來實現,受限于其運算能力低、存儲空間小的特點,而不能夠適用于多任務、實時性高的應用環境。本文設計的設計的一款嵌入式LonWorks網絡智能網關,采用32位的ARM為主控芯片并嵌入μC/OS-II操作系統,具有能夠滿足多任務、實時性、快速性高等復雜監控環境的功能。
圖1給出了系統結構示意圖,下位機設備將收集到的監控參數通過電力線上傳至智能網關,LonWorks網關根據電力通訊協議將已將收集到的數據通過協議轉換將Lon網協議的數據包轉換成TCP協議數據包上傳到ARM內置服務器;遠端的監視器作為嵌入式智能網關的人機界面互動平臺將遠程指令發送到智能網關,智能網關通過電力線下傳至下位機設備,下位機設備根據電力線通訊協議接收相應的遠程指令,并完成相應的遠程控制。
圖1 系統結構示意圖Fig.1 Structure diagram of system
硬件平臺由3個部分組成,包括由Lon網數據采集收發模塊、Lon網協議和LwIP協議轉換模塊和以太網通訊模塊。結構框圖如圖2所示。
圖2 硬件系統結構框圖Fig.2 Structure diagram of hardwave system
該模塊是整個系統的核心,其不僅包括網絡協議轉換功能,而且完成系統其它顯示傳輸功能。該模塊的主控芯片為NXP公司生產的 LPC1778,其片上資源包括512 Kb的FLASH存儲器、高達64 Kb的SRAM,系統時鐘頻率可高達120MHz,同時可內嵌操作系統。LPC1778內置外部總線控制器,通過總線方式讀寫雙口RAM,從而完成與數據采集收發模塊的高速數據交換。另外,嵌入式WEB服務器的架構需要大容量的存儲器,片上資源已不能夠滿足現有的需要,因此外部擴展一片16Mb的FLASH SST25VF016B。
以太網接口是網關與以太網通信的關鍵部分,本設計中選用的主控芯片LPC1778內嵌一個以太網控制器,通過擴展網卡芯片DP83848C和一個RJ45接口來實現以太網通訊接口。以太網控制器支持精簡的媒體獨立接口RMII,可在半雙工、全雙工模式下提供10M/100Mbps的以太網接入。我們采用RMII協議方式和MIIM(媒體獨立接口管理)串行總線、以及MDIO(管理數據輸入/輸出)相結合的方式來實現與網絡芯片的連接。使用RMII接口方式時需要接入一個50 MHz的外部有源晶振。
該模塊核心器件為電力線收發器PL3150。PL3150是Echelon公司生產的基于開放性ANSI標準的電力智能收發器,其可按LonTalk協議與LonWorks網絡上的所有節點進行通信。PL3150通過地址線、數據線以及控制信號線與雙口RAM連接。雙口RAM我們選用IDT71321,其支持總線讀寫方式,有2 KB的存儲容量。雙口RAM作為PL3150和ARM之間數據接收和發送的緩存區。該設計方案可實現兩模塊之間數據的高速、穩定、低誤碼率的傳輸。
軟件結構如圖3所示,包括2個主要部分:
1)ARM端軟件設計。軟件平臺由嵌入式μC/OS-II操作系統為基礎構建,并利用LwIP協議實現TCP/IP協議,上層的應用程序為WEB服務程序以及網關協議轉換程序。
2)PL3150端設備接口數據通信程序。
圖3 軟件結構圖Fig.3 Structure diagram of soft system
在網關中最重要的是實現兩個不同網絡的協議轉換。在LonWorks網絡中,節點與節點進行通信時,常采用特定的網絡變量的形式進行[2]。網絡變量只有數據類型相同的輸入網絡變量和輸出網絡變量才能建立連接。在本網關工作過程中,根據圖2所示的結構原理,當下位機設備需要向上位機發送數據信息時,將會對自己的輸出網絡變量進行更新,發送到LonWorks網絡上;當PL3150監測到這些網絡變量時,將對與之捆綁的輸入網絡變量進行更新并發送到雙口RAM的數據緩沖區;ARM芯片通過外部總線讀取雙口RAM,其內部以太網控制器依據所使用協議將數據包進行封裝,發送到以太網協議的應用層。相反,當上位機想要對遠端現場設備進行控制時,也要對相應的網絡變量進行更改。
在協議轉換過程中,雙口RAM作為一個共享存儲器能夠進行雙邊讀寫操作。為了避免數據信息交換時的讀寫沖突、產生競爭,在讀寫操作時要進行控制以進行同步訪問。本文采用通過定時查詢控制地址的值來進行同步訪問操作。將2 KB的雙口RAM劃分為3個主要部分來存放不同內容:存放ARM對PL3150的控制信息;存放PL3150向ARM發送的數據信息;控制同步訪問信息。
操作系統的加入使得我們的內部資源能夠更好的利用。μC/OS-II操作系統是一款開源的,針對嵌入式系統的實時內核操作系統,可以應用于多種類型的硬件平臺。它最近發布的版本最多可管理多達256個任務[3]。μC/OS-II具有強大的網絡支持,并且支持Lw IP協議,為我們的網關服務搭建了一個很好的平臺。將μC/OS-II操作系統移植到ARM平臺上,只需處理μC/OS-II與Cortex-M3接口部分,即OS_CPU_C.C、OS_CPU_A.S、OS_CPU.H 這 3 個文件[4]。
3.4.1 LW IP簡介
本文的TCP/IP協議選擇使用Lw IP協議棧來實現。Lw IP是由瑞典計算機科學研究院Adam Dunkels設計的開源的嵌入式TCP/IP協議。它是輕型的TCP/IP協議棧,適用于資源緊張的嵌入式系統。Lw IP既可以獨立運行,也可以移植到不同的操作系統上[4]。
3.4.2 TCP數據處理流程
在我們的應用中,使用Lw IP的TCP協議,它屬于傳輸層協議,雖然相比UDP協議傳輸速度較慢,但是它為應用層提供可靠的字節流服務。TCP流程如圖4所示,當下位機數據信息到達時,通過tcp_write來構造一個報文段,之后tcp_output被調用,同時與ip_route交互,填寫首部中的源IP地址字段,最后通過ip_output發送給鏈路層,加上以太網幀頭發送到以太網中。同理可以得知TCP輸入流程[5]。
圖4 TCP數據處理流程圖Fig.4 Flow diagram of TCP data process
3.4.3 Lw IP移植
LwIP的移植主要是為了實現操作系統模擬層,它是操作系統和協議棧的一個接口,可為進程處理同步、消息傳送機制以及定時器等操作系統服務提供統一接口。
移植需要添加以下文件,具體包括:1)與CPU和編譯器相關的頭文件。
2)與操作系統相關的文件。sys_arch.h的內容是與操作系統相關的結構和函數。此文件中需要實現4個函數:消息函數;數據結構及信號函數;系統超時函數;創立新線程函數。
3)與網卡驅動相關的函數。Lw IP源碼提供者將ethernetif.c中的函數實現一個框架形式,用戶可以根據這個框架定制網卡驅動。
嵌入式處理器LPC1778在μC/OS-II操作系統平臺上,利用Lw IP協議的上層協議HTTP協議搭建輕型服務器,提供人性化的操作界面,實時監控底層數據及控制輸出等功能。Web服務器的結構如圖3所示。當遠端的瀏覽器發送請求時,HTTP協議處理程序會將該請求發送給Web服務器處理;而CGI(通用網關接口)程序作為處理客戶端Web瀏覽器輸入數據的接口規范,用來解釋處理表單的輸入信息,并在服務器產生相應的處理,完成客戶機與服務器之間的交互操作功能[6]。
實現步驟如下:
1)通過在μC/OS-II建立相應的任務。當任務建立起來之后,任務的調度就由μC/OS-II的任務調度器調度。μC/OS-Ⅱ的任務調度是搶占式的,所以在設置任務優先級的時候要考慮任務對實時性的要求。同時注意Lw IP的初始化要在μC/OS-II完全啟動之后。
2)Web服務器實現。由于本網關采用B/S通訊模式,嵌入式ARM則充當服務器,提供網頁數據信息。B/S模式需要HTTP協議的支持。它是基于請求/響應模式的,并使用TCP作為傳輸層。當服務器運行時,始終在80服務端口監聽,等待請求的出現。Web服務器的編程是基于Lw IP的API函數編寫的。API函數專為Lw IP設計,充分利用LwIP的內部結構以實現其設計目標。
3)HTTP處理子函數在獲得請求報文之后,根據其請求報文進行相應處理。在HTTP請求報文中,第一行就是請求行,方式有GET和POST兩種。由于CGI程序中具有HTML生成和FORM解析功能,CGI程序會根據請求數據中的URL信息找到相應的網頁文件,并對文件中的程序代碼解析并執行,然后生成HTML網頁回傳至瀏覽器。
該監控平臺每2 s就從下位機刷新一次實時監測數據,可以獲得例如下位機ID號、電壓、電流、功率等實時量。圖5為開發完成的網關嵌入式網頁服務頁面,可以控制某一個下位機的開閉狀態、功率因子大小,并可以定時上傳數據并具有數據管理系統。服務器的系統功能結構框架如圖6所示。
圖5 網頁服務頁面示意圖Fig.5 Diagram ofwebserver’swebpage
圖6 系統功能結構框圖Fig.6 Structure diagram of system functions
本網關IP靜態地址設為192.168.0.100并與路由器相連,通過動態域名解析與一個固定域名綁定,用戶通過訪問固定域名便可遠程實時觀測。
文中系統地論述了嵌入式LonWorks網絡智能網關的實現方法,主要分析了嵌入式網關的硬件和軟件的實現方法。本網關的實現可為將來遠程監測應用方面帶來很大便利,可廣泛應用與遠程查表、路燈控制等項目中,具有很好的社會價值。
[1]楊玉紅.LON網絡控制技術及應用[M].西安:西安電子科技大學出版社,1999.
[2]陳德明,熊列彬,雷杭州.一種新型的LONWORKS組網應用方式[J],繼電器,2008,33(4),60-62.CHEN De-ming,XIONG Lie-bin,LEI Hang-zhou.A new application of LONWORKS[J].RELAY,2008,33(4):60-62.
[3]JEAN J.Labrosse.嵌入式實時操作系統μC/OS-II[M].北京:北京航空航天大學出版社,2003.
[4]焦海波,嵌入式網絡系統設計——基于Atmel ARM7系列[M].北京:北京航空航天大學出版社,2008.
[5]楊玉佳.Lw IP在μCOS-II平臺上的移植與應用[D].成都:電子科技大學,2006.
[6]姚洪智,鄭雪峰,曹 磊.基于CGI接口實現嵌入式系統遠程控制[J],微機發展,2004,(9):7-9.YAO Hong-zhi,ZHENG Xue-feng,CAO Le.Remote Control in Embedded System Based on CGI [J].Microcomputer Dervement,2004(9):7-9.