??? 摘??要: 設(shè)計了一種基于LonWorks總線和嵌入式系統(tǒng)的監(jiān)控通信網(wǎng)絡(luò)。系統(tǒng)采用MSP430單片機作為任務(wù)調(diào)度和嵌入式系統(tǒng)移植的主處理器,提高了系統(tǒng)運行的實時性和穩(wěn)定性。DDE服務(wù)器實現(xiàn)了數(shù)據(jù)訪問與交換等網(wǎng)絡(luò)通信功能。總線技術(shù)與Web網(wǎng)絡(luò)相結(jié)合,使用戶能夠通過信息網(wǎng)絡(luò)監(jiān)控界面方便地了解現(xiàn)場情況,更便于實現(xiàn)遠程監(jiān)控、診斷和維護功能。?
??? 關(guān)鍵詞: LonWorks現(xiàn)場總線; MSP430單片機;嵌入式系統(tǒng); 監(jiān)控系統(tǒng)?
?
??? 由于LonWorks現(xiàn)場總線良好的開放性和互操作性,在開發(fā)智能通信接口和智能傳感器方面,LonWorks芯片具有獨特的優(yōu)勢,它已被廣泛應(yīng)用在樓宇自動化、家庭自動化、保安系統(tǒng)、辦公設(shè)備、交通運輸、工業(yè)過程控制等行業(yè)。本文在LonWorks總線基礎(chǔ)上,設(shè)計了基于主機的節(jié)點,并且研究了嵌入式系統(tǒng)在主機上的移植,以及通信服務(wù)器的設(shè)置調(diào)試方法,為實際監(jiān)控節(jié)點的應(yīng)用提供技術(shù)指導(dǎo)。?
1 監(jiān)控節(jié)點硬件平臺設(shè)計?
??? 基于LonWorks的監(jiān)控系統(tǒng)設(shè)計中,由于Neuron芯片的應(yīng)用處理器的數(shù)據(jù)處理能力有限,通用I/O相對較少,在一定程度上限制了LonWorks技術(shù)的廣泛應(yīng)用。采用MSP430單片機作為主處理器,移植μC/OS_Ⅱ嵌入式操作系統(tǒng)到主處理器上,可以在擴展的CPU上運行多個任務(wù),各個任務(wù)并行操作,充分利用了CPU的資源。采用μC/OS_Ⅱ操作系統(tǒng)作為整個系統(tǒng)的控制中心,將系統(tǒng)中的各個任務(wù)模塊化,提供了靈活的結(jié)構(gòu),便于進一步開發(fā)研究。MSP430單片機與LON總線模塊接口采用串行同步通信模式(SPI)接口,需要置位單片機寄存器SYNC=1。?
??? LonWorks網(wǎng)絡(luò)的每個可編程節(jié)點可以向其他網(wǎng)絡(luò)節(jié)點發(fā)送信息并對它所接收的信息或事件作出響應(yīng)。系統(tǒng)的功能包括:遠程主機(客戶)可以通過瀏覽器在線監(jiān)視底層網(wǎng)絡(luò)設(shè)備的網(wǎng)絡(luò)變量,可以通過用戶界面向底層設(shè)備發(fā)布命令,實現(xiàn)遠程控制;底層設(shè)備的重要物理量可以隨時上傳至遠程主機進行故障報警等[1]。PCLTA-20網(wǎng)絡(luò)適配卡使得網(wǎng)絡(luò)節(jié)點有聯(lián)網(wǎng)和遠程監(jiān)控功能。監(jiān)控節(jié)點連接如圖1所示。?
?
?
??? μC/OS_Ⅱ操作系統(tǒng)作為整個系統(tǒng)的控制中心,完成系統(tǒng)中各部分功能模塊硬件電路的初始化及任務(wù)的管理和調(diào)度。首先,操作系統(tǒng)初始化微處理器,保證其正常工作;然后,周期性調(diào)用微處理器與LON網(wǎng)絡(luò)接口函數(shù)任務(wù),實時等待和傳輸數(shù)據(jù);接著設(shè)置LNS DDE服務(wù)器、Windows操作系統(tǒng)中Web服務(wù)器屬性,便于連接網(wǎng)絡(luò)數(shù)據(jù)庫服務(wù)器。由于數(shù)據(jù)采集的需要,設(shè)置相關(guān)數(shù)據(jù)采集和訪問頁面,實現(xiàn)Internet遠程訪問,確保LON網(wǎng)絡(luò)和微處理器之間通信;最后,通過LonMaker對整個過程進行監(jiān)控。監(jiān)控系統(tǒng)總體結(jié)構(gòu)如圖2所示。?
?
?
2 嵌入式操作系統(tǒng)模塊?
??? 嵌入式系統(tǒng)的目標硬件平臺主要分為三部分:處理器核心、外圍電路、外部設(shè)備μC/OS_Ⅱ系統(tǒng)。每個任務(wù)均有一個優(yōu)先級,μC/OS_Ⅱ根據(jù)各個任務(wù)的優(yōu)先級,動態(tài)地切換各個任務(wù),保證對實時性的要求[2],適合應(yīng)用在實時性要求較強的場合。?
??? 在MSP430單片機上移植開發(fā)工具使用IAR編譯器,而移植的主要工作量又集中在堆棧的操作,即當一個任務(wù)退出時保存當前PC指針和當前堆棧內(nèi)容,并且把下一個任務(wù)的PC指針和堆棧內(nèi)容轉(zhuǎn)化為當前CPU的運行狀態(tài)。?
??? μC/OS_Ⅱ的全部源代碼,共16個文件。移植工作涉及的源文件分為三部分:與處理器無關(guān)的代碼部分、設(shè)置代碼部分、包括OS_CFG.H和INCLUDES.H兩個頭文件。用戶可以改寫INCLUDES.H文件,增加自己的頭文件,但必須加在文件末尾。?
??? 最主要的部分是與處理器有關(guān)部分的代碼,包括一個頭文件OS_CPU.H、一個C代碼文件OS_CPU_C.C及一個匯編文件OS_CPU_A.ASM[3]。將其移植到MSP430F149處理器上,需要修改這三個與體系結(jié)構(gòu)相關(guān)的文件,代碼量大約是500行。下面分別介紹這三個文件的移植。?
2.1 OS_CPU.H文件?
??? OS_CPU.? H文件中的OS_CPU_GLOBALE和OS_CPU_EXT允許用戶聲明針對本移植的全局變量。由于在MSP430實模式中堆棧都是按字進行操作的[4],所以IAR編譯器中堆棧數(shù)據(jù)類型OS_STK聲明為16位,所有的堆棧都必須用OS_STK聲明。需要注意的是:MSP430處理器的堆棧由高地址向低地址方向增長,所以常量OS_STK_GROWTH必須設(shè)置為1。?
2.2? OS_CPU_A.ASM文件?
??? 完成μC/OS_Ⅱ的移植需要把OS_CPU_A.ASM修改為OS_CPU_A.S43文件,此文件包括4個函數(shù):OSStartHighRdy( )、OSCtxSw( )、OSIntCtxSw( )、OSTickISR( )。?
??? 函數(shù)OSStartHighRdy( )由函數(shù)OSStart( )調(diào)用,功能是讓進入就緒態(tài)的優(yōu)先級最高的任務(wù)運行。首先必須調(diào)用函數(shù)OSTaskSwHook( ),把OS_CFG.H中的OS_CPU_HOOKS_EN設(shè)置為1,這樣OSTaskSwHook( )的代碼才能生效。?
??? 任務(wù)級的切換是通過執(zhí)行中斷指令或依據(jù)處理器的不同執(zhí)行陷阱(TRAP)指令來實現(xiàn)的,中斷服務(wù)子程序、陷阱或異常處理的向量地址必須指向OSCtxSw( )。?
??? 函數(shù)OSIntCtxSw( )與OSCtxSw( )函數(shù)類似,不同的是OSIntCtxSw( )函數(shù)所進行的是中斷級的任務(wù)切換。?
??? 函數(shù)OSTickISR( )是系統(tǒng)時鐘節(jié)拍中斷服務(wù)函數(shù),是周期性的中斷,為內(nèi)核提供時鐘節(jié)拍,用來設(shè)置內(nèi)核向應(yīng)用系統(tǒng)提供的最小時間間隔。?
2.3 OS_CPU_C.C文件?
??? OS_CPU_C.C文件中包含10個C語言函數(shù),其中只有函數(shù)OSTaskStkInit( )在操作系統(tǒng)中是必要的。OSTask?StkInit( )由任務(wù)創(chuàng)建函數(shù)調(diào)用,用來初始化任務(wù)的堆棧結(jié)構(gòu),使堆棧看起來就像剛剛發(fā)生過中斷并將所有的寄存器保存到堆棧中一樣。這樣就可以用中斷返回指令使就緒的任務(wù)運行起來。它與調(diào)用者間有3個參數(shù)需要傳遞:任務(wù)代碼起始地址(task)、參數(shù)指針(pdata)、任務(wù)堆棧頂?shù)刂?ptos)。?
??? 移植完成之后可以在IAR的C-SPY環(huán)境下進行測試。測試時,只需直接打開移植代碼測試項目工程文件msp149final.eww進行測試,其輸出文件為149last.d43。?
3? 網(wǎng)絡(luò)的通信服務(wù)器LNS DDE?
??? 動態(tài)數(shù)據(jù)交換DDE(Dynamic Data Exchange)是Windows平臺上的一個完整的通信協(xié)議。DDE協(xié)議可以使用兩類DDE應(yīng)用程序:第一類是基于消息的DDE,第二類是動態(tài)數(shù)據(jù)交換管理庫應(yīng)用程序。?
??? 當使用LonMaker工具進行網(wǎng)絡(luò)設(shè)備配置時,它把配置信息備份于LNS DDE Server中,等安裝完成后,LNS DDE Server中包含了整個網(wǎng)絡(luò)的配置圖、所有設(shè)備的名稱、設(shè)備的網(wǎng)絡(luò)變量、配置屬性以及LonMark對象。LNS DDE Server使用存儲在LNS服務(wù)器中的名字、地址和時序信息來完成監(jiān)控任務(wù)。通過LNS DDE Server,任何作為DDE客戶的應(yīng)用程序都能監(jiān)視和控制一個或更多的LonWorks網(wǎng)絡(luò)。在運行DDE服務(wù)程序時,要在服務(wù)程序中制定計算機名。例如:?
??? =\MYCOMPUTERLNSDDE′MyNet.Subsystem 1.DevNV′!?′MyDev.NV2′。?
??? 讀寫網(wǎng)絡(luò)變量時,首先確定主題名是標準格式或者用戶定制格式,然后指定網(wǎng)絡(luò)變量項目名(Network Variable Item),項目名(Item)的形式取決于它在主題名中的組成,按慣例為設(shè)備名、網(wǎng)絡(luò)變量(NV)名、配置屬性名和消息標簽名[5]。網(wǎng)絡(luò)變量更新程序如下:?
??? Private Sub btnReadSwitch4_Click( )?
??? Dim channel As Long?? ????????? ??//定義通道數(shù)據(jù)類型?
??? Channel=DDEInitiate(′LNSDDE′, ′LNS DDE Test.HVAC.LMNV′)?????????? ? //發(fā)起DDE會話?
??? Sheet1.Range(′E21′)=DDERequest(channel,_′DI- 1.SW-4.?
??????????? Digital.State′) ?????????? ??//請求讀取數(shù)字變量?
??????????? DDETerminate (channel)? ???????//終止DDE會話?
??? End sub?
??? 在LonWorks網(wǎng)絡(luò)中,采用事件驅(qū)動更新或者輪詢方式獲得設(shè)備信息交換和查詢。事件驅(qū)動更新是沒個特定時間就發(fā)送信息或者直到某個規(guī)定變量值發(fā)生變化才會產(chǎn)生消息發(fā)送,而輪詢則是終端設(shè)備輪詢變量值某些情況下接收信息受終端設(shè)備控制[6]。在遠程監(jiān)控網(wǎng)絡(luò)中,輪詢是最恰當?shù)谋O(jiān)測方案。?
??? 在VB開發(fā)環(huán)境中,必須設(shè)置好的屬性是:LinkTopic、LinkItem和LinkMode[7]。其中,LinkTopic屬性設(shè)置了被請求服務(wù)器的名字和會話;LinkItem屬性指定了會話項,也就是網(wǎng)絡(luò)變量的名稱及其所在節(jié)點;LinkMode指定會話的模式,可選值為:None(無)、Automatic(自動)和Notify(確認)。?
??? 除了控件的這三種屬性外,還有許多函數(shù)和方法可用來操作DDE,如Shell函數(shù),LinkPoke、LinkRequest、Link?Execute和LinkSend方法。?
??? 下面具體說明用VB編寫監(jiān)控程序的方法:?
??? Labell. LinkTopic ='LNSDDE/ NET. Subsystem1. DevNV'?
??? Labell. LinkItem ='Device. Value'?
??? Labell. LinkMode = 1 //得到NET 網(wǎng)上Subsystem1 子網(wǎng)中名為Device 節(jié)點的網(wǎng)絡(luò)變量Value的值?
??? Label2 = InputBox $('Please input the SetValue')?
??? Label2. LinkPoke???????? //改變網(wǎng)絡(luò)變量nvoSetValue的值?
??? 本文在LON總線基礎(chǔ)上,通過擴展Neuron芯片的處理能力,在主機上移植μC/OS_Ⅱ嵌入式操作系統(tǒng),可以在擴展的CPU上運行多個任務(wù),各個任務(wù)并行操作,提高了MSP430單片機的性能。DDE服務(wù)器與VB監(jiān)控界面的結(jié)合,使得可視化動態(tài)的網(wǎng)絡(luò)監(jiān)控系統(tǒng)得以實時運轉(zhuǎn)。現(xiàn)場總線與Web相結(jié)合,提高了系統(tǒng)監(jiān)控網(wǎng)絡(luò)的實時性,這也是科技研究的熱門課題。?
參考文獻?
[1] 馬 莉.智能控制與Lon網(wǎng)絡(luò)開發(fā)技術(shù)[M]. 北京:航空航天大學(xué)出版社, 2003:50-211.?
[2] 李玉天. LonWorks網(wǎng)絡(luò)的遠程控制技術(shù)的研究與應(yīng)用[D]. 電子科技大學(xué)碩士學(xué)位論文,2006.?
[3] 鄧燕妮,潘寧. μC/OS_Ⅱ在LonWorks網(wǎng)絡(luò)節(jié)點的移植研究[J].計算機技術(shù)與發(fā)展,2006,16(10):243-245.?
[4] 秦龍. MSP430單片機應(yīng)用系統(tǒng)開發(fā)典型實例[M].北京:中國電力出版社, 2005:43-69.?
[5] HUR S H, KIM D. Building automation system via?Lonworks and Linux based personal computer[J].Automation in Construction,2006,15(4):522-530.?
[6] Echelon Corporation. LNS DDE server user’s guide.Echelon,2001:15-70.?
[7] LABROSSE J. μC/OS_Ⅱ源碼公開的實時嵌人式操作系統(tǒng)[M].邵貝貝譯.北京:中國電力出版社,2003.