邱旭華
(公安部第一研究所,北京 100048)
如何在不更換設備的情況下,讓嵌入式智能設備和系統(tǒng)協(xié)調工作并且更好地管理是每個集成商和用戶所面臨的關鍵問題。Sedona軟件解決了這一問題。Sedona軟件為開發(fā)、部署、集成和管理無處不在的最底層的智能設備應用提供完整的軟件平臺,為廉價的設備提供可編程控制和連接Internet的能力。Sedona框架的分布式決策系統(tǒng)可以使所有的設備都具備控制和管理的能力,連接到網絡的任何地方。
物聯(lián)網(Internet of Things)概念是2005年正式提出來的,是互聯(lián)網的延伸。它是一個基于互聯(lián)網、傳統(tǒng)電信網等信息的承載體,讓所有能夠被獨立尋址的普通物理對象實現(xiàn)互聯(lián)互通的網絡。它具有普通對象設備化、自治終端互聯(lián)化和普通服務智能化3個重要特征。
在物聯(lián)網應用中有兩項關鍵技術:傳感器技術和RFID標簽。
編者注:關于物聯(lián)網特征、關鍵技術及展望的詳述略。
隨著物聯(lián)網技術的迅速發(fā)展和應用,如何使各種智能設備連接IP網絡并融入上層的應用系統(tǒng),就變得至關重要。Tridium公司所研發(fā)的Niagara AX平臺正是用于解決設備連接應用的軟件框架平臺。它創(chuàng)造了一個通用的環(huán)境,幾乎可以連接任何能夠想到的嵌入式設備或系統(tǒng),而不用太多考慮這些設備的制造廠家和所使用的通信協(xié)議。其關鍵在于Niagara AX可以與各種設備和系統(tǒng)通信,將它們的數(shù)據和屬性轉換成為標準的軟件組件,通過大量基于IP的協(xié)議,支持XML的數(shù)據處理和開放的API,為企業(yè)級應用提供無縫的、統(tǒng)一的設備數(shù)據視圖。圖1表示的是一種多對一架構的Niagara AX平臺。
通過轉換各種外部設備和系統(tǒng)的數(shù)據成為規(guī)范的軟件組件,Niagara AX創(chuàng)造了一種開發(fā)架構,大大優(yōu)于基于網關集成的多對多的復雜架構。這種優(yōu)勢體現(xiàn)在任何的設備和系統(tǒng)通過Niagara AX規(guī)范,就可以兼容其他連接到應用框架的設備和系統(tǒng),為企業(yè)級應用提供真正的系統(tǒng)內的互操作能力和統(tǒng)一的數(shù)據呈現(xiàn)。開發(fā)者不再需要花費時間去創(chuàng)建、測試和重復驗證各種網關設施。圖2是傳統(tǒng)的多對多系統(tǒng)結構。

圖1 多對一架構的Niagara AX平臺

圖2 傳統(tǒng)的多對多系統(tǒng)結構
Sedona是一個開源自控軟件體系框架,由Tridium公司研發(fā),包含Sedona語言、Sedona工具包、Sedona虛擬機、Sedona編譯器、Sedona圖形化開發(fā)調試工具等部分,于2009年8月正式推出第1版,并開放源代碼。
Sedona語言繼承了Java、C#等面向對象語言的特點,使得開發(fā)非常簡單,而實現(xiàn)的功能又非常強大。以Sedona工具包形式發(fā)布的控制邏輯模塊,實現(xiàn)了“一次開發(fā)、隨處可用”的目的,大大降低了用戶的應用難度,同時也使很多行業(yè)應用經驗得到很好的積累與發(fā)展。Sedona虛擬機(Sedona Virtual Machine,SVM)專門針對樓宇自控設備進行了優(yōu)化,能高效地運行在只有100KB左右內存的小型嵌入式設備上,并且實時性能得到很好的保證。采用Sedona圖形化開發(fā)工具進行在線實時開發(fā)調試,用組件模塊的方式簡單拖拽各種所需功能,并進行數(shù)據流向和控制邏輯的連線,就可以立刻完成用戶的應用邏輯開發(fā),還能實時看見反饋結果,使用戶開發(fā)業(yè)務控制邏輯非常簡單、直觀,大大降低了用戶使用難度。
圖3所示的流程列舉了在樓宇智能控制器上開發(fā)Sedona應用程序的整個過程。在Sedona軟件架構下進行開發(fā),有兩種角色:一種是開發(fā)者(Developer),另外一種是集成者(Integrator)。雖然在實際工作中不可能將這兩種角色區(qū)分得很清楚,并且大多數(shù)情況下用戶是用兩種角色配合來完成工作的,但在這里區(qū)分這兩種角色將有助于對Sedona軟件框架的深入討論。

圖3 Sedona開發(fā)工作流程圖
(1)開發(fā)者角色
該角色主要是指軟件開發(fā)工程師,他們負責用Sedona編程語言開發(fā)各種Sedona應用組件模塊,如行業(yè)特殊應用功能模塊、設備I/O驅動模塊、特殊算法模塊等等。組件模塊開發(fā)好以后將以工具包(kit)的形式進行發(fā)布,這樣有利于版本的管理,同時也便于行業(yè)經驗的積累和延續(xù)。
(2)集成者角色
該角色主要是指某個行業(yè)或領域的專家,通常他們只需要在如圖3所示的圖形化開發(fā)工具里,將開發(fā)者發(fā)布的工具包中所需要用到的組件模塊拖拽到工作區(qū),然后用連線方式將所選擇的組件模塊按照業(yè)務數(shù)據流程或者控制邏輯關系連接在一起,就完成了數(shù)據處理和控制邏輯的工作。對于開發(fā)者發(fā)布的每個組件模塊,集成者還可以通過屬性來配置和調整其實現(xiàn)功能的各項參數(shù),以滿足具體應用的需要。這樣對于沒有軟件開發(fā)經驗的行業(yè)專家來說,Sedona允許他們采用組件模塊的方式來積累并延續(xù)行業(yè)經驗,并且以圖形化的方式讓用戶進行模塊的簡單連線組合,這就為行業(yè)專家在各自的領域中進行創(chuàng)造性應用奠定了堅實的基礎。
開發(fā)者的工作流程通常按如下步驟進行:
① 用面向對象的Sedona編程語言編寫Sedona組件,用于實現(xiàn)某種功能或者算法。
② 用sedonac編譯器工具將Sedona組件源代碼編譯成工具包。在編譯的過程中,工具包里所有包含的類都要先進行有效性檢查,然后才被編譯成一種特殊的中間格式代碼(Intermediate Representation,IR)。IR就像是Sedona的匯編語言一樣,它的引入使得用Sedona語言開發(fā)的組件或者應用有了很好的移植性,因為用IR實現(xiàn)的用戶邏輯代碼直到最后才會針對某個具體應用平臺編譯成對應的二進制Sedona虛擬機指令,這樣就能讓開發(fā)好的工具包適應所有的平臺,而不需要在不同平臺之間進行多次編譯。在編譯的同時,該編譯器也能針對每個類產生標準的Java classfile文件,從而可以在Java虛擬機上直接運行Sedona應用代碼,以便于開發(fā)者利用Java的開發(fā)調試工具對應用組件進行開發(fā)調試,大大提高開發(fā)效率。
③ 開發(fā)者將組件以工具包的形式發(fā)布,由集成者選擇將哪些工具包安裝到最終的設備上去,這樣就由sedonac工具將這些工具包編譯成二進制的scode映像文件(這一步通常由工具自動完成)。集成者選擇的工具包決定了在設備上能使用的組件功能,這樣的自由選擇能力,大大提高了設備的適用范圍,使得集成者可以根據具體應用環(huán)境進行靈活的裁剪。
④ 將Sedona虛擬機和scode映像文件加載到設備上運行。這些文件既可以預先保存在設備的ROM上,從而在設備上電之后直接運行,也可以由集成者臨時選擇,通過網絡用SOX協(xié)議動態(tài)加載。這樣就使得集成者能非常靈活、方便地根據不同需求進行現(xiàn)場定制。
在開發(fā)者將基本的組件模塊設計好并發(fā)布出來之后,就可以讓集成者自行進行設備功能的開發(fā)與定制,從而用標準的開發(fā)方式實現(xiàn)統(tǒng)一的“分散控制”思想。通常集成者是某個領域或者行業(yè)的專家,他們用圖形化工具,靈活地選擇哪些工具包用在設備上,然后選擇需要的控制組件拖拽到工作區(qū)上,依據組件之間的數(shù)據流向或者控制邏輯關系,采用連線的方式將它們組織在一起,從而實現(xiàn)最終的應用程序。
采用圖形化的工具來設計應用程序,既可以在現(xiàn)場直接連接設備,實時地用SOX協(xié)議對設備進行開發(fā),直接觀察到設備的運行效果;又可以離線進行設計,然后將應用程序保存在“sax”文件里,之后在需要更新設備的時候用sedonac工具將其編譯成“sab”文件,并用SOX協(xié)議將編譯后的程序傳輸安裝到設備上,完成應用程序的更新。
在Sedona開發(fā)軟件中并沒有現(xiàn)成的組件可以實現(xiàn)樓宇自控系統(tǒng)中風機的控制邏輯。雖然可以利用其基本的各種邏輯控制組件實現(xiàn)控制算法,但這里介紹如下步驟,讓開發(fā)者能很容易地開發(fā)用戶自定義的控制邏輯組件。
① 以3.4.43版本的軟件為例,假設應用軟件安裝在“C:\Niagara\Niagara-3.4.43”下根目錄,后面為表述方便,將根目錄簡述為{Root}。
② 在{Root}\sedona\src目錄下創(chuàng)建一個新的工具包目錄,這里取名為LongDHuaTools。
③ 在{Root}\sedona\src\LongDHuaTools目錄下創(chuàng)建“kit.xml”文件,該文件是用來描述編譯器編譯時所需要的相關源代碼目錄及其他信息,詳細的內容如下:

④ 在{Root}\sedona\src\LongDHuaTools目錄下創(chuàng)建“Fan.sedona”文件,該文件是用戶自定義風機控制邏輯的源代碼文件,詳細的內容如下:


⑤ 啟動一個DOS命令行窗體,轉到{Root}\sedona\src\LongDHuaTools目錄下,輸入如下命令執(zhí)行編譯的過程:

⑥ 在經過上述5個步驟之后,將會自動創(chuàng)建{Root}\sedona\kits\LongDHuaTools目錄,并將編譯好的工具包文件拷貝到該目錄下,如 LongDHuaTools-182eba01-1.0.0.kit。其命名分3個部分,第1部分是工具包名稱,包含供應商信息,第2部分是校驗碼,第3部分是工具包的版本號。至此一個新的風機控制邏輯組件已經創(chuàng)建成功。
Sedona軟件框架主要是面向基于互聯(lián)網的智能型嵌入式設備而設計的,其主要特點如下:
①Sedona語言是一種通用的面向組件化的編程語言,非常類似Java或者C#;它支持單一繼承、多態(tài)等面向對象的特性,不支持接口擴展;采用靜態(tài)內存設計模式,不支持new關鍵字,從而非常適合只有100KB左右的嵌入式設備,用戶可以編寫自定義的擴展功能函數(shù)或者對象組件等,從而可以不斷擴充新的功能。
②Sedona虛擬機是一個小型解析器,采用ANSI C編寫,具有良好的可移植性,無論底層有沒有操作系統(tǒng)的支持,移植都很方便。由于有了Sedona虛擬機,也就實現(xiàn)了類似Java語言的“一次編程、隨處可運行”的目標,只要是采用Sedona語言編寫的代碼,只要編寫一次,就可以在任何支持Sedona虛擬機的設備上運行。
③ 支持Java。Sedona編譯器不僅能將Sedona程序編譯成Sedona虛擬機能識別的二進制代碼,也能將其編譯成標準Java字節(jié)碼,從而可以在Java虛擬機上運行用戶的Sedona應用程序,這就允許像使用Java的JAR文件那樣運行Sedona應用程序。在Java虛擬機上運行Sedona應用程序有兩點好處,一方面類似HotSpot這樣的Java虛擬機擁有高效的即時編譯技術(JIT),能在運行時將Java字節(jié)碼編譯并優(yōu)化成本機代碼執(zhí)行,從而提高運行效率,使得Sedona應用程序在Java上能運行得更快;另外一方面,在Java環(huán)境下能有更多的開發(fā)調試工具可以使用,這樣就能在程序運行出現(xiàn)異常情況的時候,充分利用Java下的開發(fā)工具進行邊界檢查和堆棧跟蹤,方便快速開發(fā)調試程序。
④ 面向小型設備。在Java上運行的Sedona所需要的資源和性能使其并不適合大多數(shù)嵌入式設備。Java通常需要好幾兆的內存來運行,并且有些Java虛擬機還需要運行時的授權費用,所以Sedona的虛擬機就專門針對只有100KB左右內存的嵌入式設備進行設計。Sedona虛擬機不支持new關鍵字,并且采用靜態(tài)內存設計模式,這樣就避免了Java虛擬機在運行時存在垃圾回收算法影響運行效率的問題,使得Sedona虛擬機在嵌入式領域中能滿足對實時性的特殊要求。
⑤ 面向組件化的編程。Sedona采用組件化的方式編程,組件可以是某種服務程序,也可以是其他組件的組合連接,從而完成某種數(shù)據處理或者流程控制。在已經開發(fā)好的組件基礎上,將各個預先編譯好的組件連接起來,形成最后的應用程序,這樣的編程模型非常適合采用圖形化編程工具來進行開發(fā),同時也便于用戶的理解和使用。
⑥ 聯(lián)網性能。Sedona內嵌多種通信協(xié)議,可以運行在任何基于IP通信的網絡上,包括6LoWPAN等。通過聯(lián)網通信協(xié)議,可以讓用戶實時觀察設備運行數(shù)據并進行遠程控制,也允許用戶通過聯(lián)網遠程實時對應用程序進行增加、刪除、修改操作,甚至可以遠程更新整個嵌入式系統(tǒng)的固件代碼。Sedona不僅提供標準的通信協(xié)議,如BAC-net、Lonworks、Modbus等,還允許用戶自行開發(fā)新的通信協(xié)議,以便兼容傳統(tǒng)的控制設備或者擴展新的用途。
⑦ 開源的系統(tǒng)。Sedona核心技術基于一種靈活的學術性授權,因此對于制造廠家來說很容易在其設備上集成Sedona技術,并且保證用Sedona開發(fā)的工具或者應用很容易地移植到任何Sedona設備上。Sedona開源框架整合了最新的IT技術,如面向對象編程語言、虛擬機、圖形化組件開發(fā)技術等,給樓宇自動化領域帶來了一種新的解決方案。相信經本文的拋磚引玉,會有越來越多的人參與到這個開源項目的開發(fā)與建設中來,那時就會有源源不斷的新思路補充到這個開源框架里來,使其不斷壯大,給樓宇自動化領域也注入新的活力。希望本文能為Sedona在國內的應用與發(fā)展開個好頭。
編者注:本文為期刊縮略版,全文見本刊網站www.mesnet.com.cn。
[1]朗德華信(北京)自控技術有限公司.開源樓宇自控軟件體系框架 Sedona簡介[OL].[2012-07].http://www.1000bas.com/html/2009-10/8100.html.
[2]吳財軍.開源樓宇自控軟件體系框架Sedona簡介[OL].[2012-07].http://www.jielizhun.com/Read.Asp?NewsID=3.