華中科技大學(xué)控制科學(xué)與工程系自動(dòng)化專(zhuān)業(yè)2008級(jí) 沙雨萌
物聯(lián)網(wǎng)(the internet of things)前景非常廣闊,它將極大地改變我們目前的生活方式。物聯(lián)網(wǎng)把我們的生活擬人化了,萬(wàn)物成了人的同類(lèi)。在這個(gè)物物相聯(lián)的世界中,物品(商品)能夠彼此進(jìn)行“交流”,而無(wú)需人的干預(yù)。當(dāng)信息被分享并相互關(guān)聯(lián)時(shí),智能化的效果就會(huì)大大提升。如何讓各種智能設(shè)備連接 IP 網(wǎng)絡(luò)并融入上層的應(yīng)用系統(tǒng),就變得至關(guān)重要。
當(dāng)前智能建筑系統(tǒng)包括了20~30個(gè)子系統(tǒng),子系統(tǒng)分成兩大類(lèi):常規(guī)應(yīng)用和專(zhuān)業(yè)應(yīng)用。絕大部分常規(guī)類(lèi)應(yīng)用子系統(tǒng)和幾乎全部專(zhuān)業(yè)應(yīng)用子系統(tǒng)均為網(wǎng)絡(luò)化/IP網(wǎng)絡(luò)化架構(gòu),建筑設(shè)備監(jiān)控、安防、一卡通等已經(jīng)構(gòu)成IP網(wǎng)絡(luò)平臺(tái)上的集成融合子系統(tǒng)。智能建筑技術(shù)遍及各個(gè)行業(yè),從初始的弱電集成,發(fā)展成為如今的綜合系統(tǒng)集成,智能建筑技術(shù)成為構(gòu)建數(shù)字城市的核心技術(shù)之一,也是構(gòu)建綠色建筑的重要技術(shù)。
物聯(lián)網(wǎng)的形態(tài)存在如下三部分內(nèi)容:一部分是傳感器聯(lián)網(wǎng),一部分是互聯(lián)網(wǎng)(IP)協(xié)議棧,一部分是 web。在智能建筑系統(tǒng)中,設(shè)備經(jīng)過(guò)傳感器聯(lián)網(wǎng)技術(shù)接入其所在的子系統(tǒng),再通過(guò)以太網(wǎng)技術(shù)組建監(jiān)控網(wǎng)(設(shè)備網(wǎng)站),因而可以說(shuō)許多子系統(tǒng)已經(jīng)是準(zhǔn)物聯(lián)網(wǎng)形態(tài),或者已經(jīng)是物聯(lián)網(wǎng)形態(tài)。
圖1 智能建筑物聯(lián)網(wǎng)形態(tài)
建筑設(shè)備監(jiān)控系統(tǒng)目前常用三層結(jié)構(gòu):管理層、控制層、現(xiàn)場(chǎng)總線。設(shè)備經(jīng)傳感器聯(lián)網(wǎng)的特點(diǎn)是物與物、物與人,多IO、實(shí)時(shí)、面向現(xiàn)場(chǎng)總線?,F(xiàn)場(chǎng)總線有 LonWorks/BACnet/Modbus等等,非TCP/IP協(xié)議棧網(wǎng)絡(luò)。形成連接互聯(lián)網(wǎng)架構(gòu)的邏輯設(shè)備,構(gòu)建設(shè)備網(wǎng)站,實(shí)現(xiàn)管理和監(jiān)控功能。
為方便控制網(wǎng)形成物聯(lián)網(wǎng)形態(tài),Tridium公司2009年8月推出開(kāi)源軟件編程開(kāi)放平臺(tái) Sedona Framework,利用Sedona技術(shù)很容易把現(xiàn)場(chǎng)總線上的物理設(shè)備形成Sedona設(shè)備,通過(guò)B/S(web)訪問(wèn)模式對(duì)Sedona設(shè)備進(jìn)行管理和監(jiān)控。
Sedona技術(shù)主要分為三大部分:Sedona語(yǔ)言(Sedona Programming Language),Sedona虛擬機(jī)(Sedona Virtual Machine,SVM)和Sedona平臺(tái)(Sedona Running Environment)。
Sedona程序語(yǔ)言是目前最先進(jìn)的用于嵌入式應(yīng)用程序開(kāi)發(fā)的面向組件編程語(yǔ)言,它的語(yǔ)法和Java、C# 相當(dāng)類(lèi)似。Sedona的設(shè)計(jì)者致力于讓Sedona語(yǔ)言更為強(qiáng)大,同時(shí)他們也嘗試避免其他面向?qū)ο缶幊陶Z(yǔ)言(C++,Java)所有的過(guò)分復(fù)雜的特點(diǎn)。設(shè)計(jì)者通過(guò)讓Sedona語(yǔ)言更為簡(jiǎn)易好用,使得程序員能寫(xiě)出更強(qiáng)大且無(wú)錯(cuò)誤(bug-free)的代碼。
Sedona虛擬機(jī),或稱(chēng)Sedona解釋器(interpreter),是Sedona安裝系統(tǒng)(installation)最重要的一部分。Sedona程序被設(shè)計(jì)成具有可移植性,但也只能在安裝了Sedona解釋器的平臺(tái)上運(yùn)行。SVM不只用于桌面系統(tǒng),它還被移植到DDC、機(jī)頂盒、無(wú)線收發(fā)器等任何安裝了具有Sedona解釋器的嵌入式操作系統(tǒng)中。雖然解釋器在一般的概念中被認(rèn)為是個(gè)不具備高性能的系統(tǒng),但是 SVM 的性能卻表現(xiàn)得非常優(yōu)異,同時(shí)還在不斷的進(jìn)步當(dāng)中。值得特別注意的是,憑借 SVM 技術(shù)編譯的應(yīng)用程序非常小,非常適用于嵌入式硬件平臺(tái),同時(shí),Sedona byte code 還可以被轉(zhuǎn)換為本地平臺(tái)使用的機(jī)器語(yǔ)言,從而加快了需要重復(fù)運(yùn)行的程序代碼的運(yùn)行效率。
Sedona平臺(tái)有時(shí)候被稱(chēng)為 Sedona運(yùn)行環(huán)境或是核心Sedona API(Application programming interfaces)。所有使用Sedona語(yǔ)言編寫(xiě)的程序都必須依賴(lài)構(gòu)成 Sedona平臺(tái)的預(yù)定義集合才能順利運(yùn)行。Sedona類(lèi)被分為多個(gè)不同的元件(Kit),Sedona平臺(tái)的元件依功能來(lái)定義,如輸入/輸出、網(wǎng)絡(luò)、創(chuàng)建、安全性以及其他許許多多的功能。Sedona平臺(tái)可以使用其他額外的標(biāo)準(zhǔn)擴(kuò)展功能(standard extensions),而這些擴(kuò)展API僅存在于某些Sedona安裝系統(tǒng)中,并不保證存在于所有的安裝系統(tǒng)中。
程序員使用Sedona語(yǔ)言來(lái)編寫(xiě)Sedona應(yīng)用程序、Sedona組件等,Sedona應(yīng)用程序調(diào)用Sedona平臺(tái)的核心APIs,當(dāng)Sedona程序被編譯時(shí),它會(huì)被轉(zhuǎn)換成字節(jié)碼(byte code),字節(jié)碼是基于CPU架構(gòu)(即SVM)的具有可移植性的機(jī)器語(yǔ)言。SVM可直接以硬件方式來(lái)實(shí)現(xiàn),但通常都是以軟件程序的形式來(lái)表現(xiàn),而字節(jié)碼便是由 SVM 來(lái)解釋與運(yùn)行的。綜上所述,Sedona平臺(tái)是一套與硬件平臺(tái)和操作系統(tǒng)無(wú)關(guān)的,用于構(gòu)建以網(wǎng)絡(luò)為中心的嵌入式智能設(shè)備的軟件平臺(tái)架構(gòu)技術(shù)。
經(jīng)過(guò)大量的工程實(shí)踐表明,基于Sedona技術(shù)開(kāi)發(fā)的產(chǎn)品在物聯(lián)網(wǎng)的實(shí)際運(yùn)用中有如下優(yōu)勢(shì):
3.1 強(qiáng)大的可移植性
Sedona平臺(tái)最主要的核心價(jià)值是“一次編寫(xiě),到處運(yùn)行”。以商業(yè)術(shù)語(yǔ)來(lái)說(shuō),這句代表Sedona技術(shù)最重要的承諾是你只要寫(xiě)一次程序(即可被編譯為字節(jié)碼在Sedona平臺(tái)上運(yùn)行),便能在任何地方運(yùn)行該應(yīng)用程序。類(lèi)似于Java虛擬機(jī)(JVM),當(dāng)移植完畢基于自己硬件架構(gòu)的SVM后,Sedona程序編譯的字節(jié)碼就可由 SVM 解釋并運(yùn)行,一套相同的代碼在不同的Sedona設(shè)備運(yùn)行上可以獲得相同的輸出。
3.2 以網(wǎng)絡(luò)為中心的程序設(shè)計(jì)
Tridium一直致力于設(shè)計(jì)以網(wǎng)絡(luò)為中心的應(yīng)用程序平臺(tái),Sedona平臺(tái)的設(shè)計(jì)者更深信其重要性,同時(shí)把 Sedona平臺(tái)設(shè)計(jì)為以網(wǎng)絡(luò)為中心的模式。從程序員的角度來(lái)說(shuō),Sedona提供了不同網(wǎng)絡(luò)拓?fù)浣Y(jié)構(gòu)的通信協(xié)議、編程模型。從集成使用者的角度來(lái)說(shuō),Sedona可以讓操作者通過(guò)網(wǎng)絡(luò)在線升級(jí)嵌入式固件程序(Firmware),甚至實(shí)時(shí)刪除、增加、修改應(yīng)用程序的組件。Sedona平臺(tái)以網(wǎng)絡(luò)為中心的設(shè)計(jì)方式,意味著 Sedona應(yīng)用程序可以動(dòng)態(tài)地憑借網(wǎng)絡(luò)加載新設(shè)備中的功能,也可以重用需要的 Kit元件。使用這些功能的應(yīng)用程序?qū)⒉辉僦皇且粋€(gè)個(gè)的程序代碼而已,而是成為了一個(gè)相互作用且獨(dú)立的集合。Sedona開(kāi)啟了強(qiáng)大的嵌入式應(yīng)用程序設(shè)計(jì)與開(kāi)發(fā)的新紀(jì)元,它能更充分地利用物聯(lián)網(wǎng)資源,擴(kuò)展物與物之間的“交流”,促進(jìn)信息共享。
3.3 性能優(yōu)異
正如前面所說(shuō),Sedona程序被編譯成具有可移植性的中間形式,即所謂的字節(jié)碼,而不是某種機(jī)器的專(zhuān)屬機(jī)器指令,SVM 就是解釋這些具有可移植性的程序代碼來(lái)運(yùn)行 Sedona程序的。這個(gè)結(jié)構(gòu)意味著Sedona程序的運(yùn)行效率快過(guò)使用純解釋式語(yǔ)言所寫(xiě)成的程序或腳本(script),但一般來(lái)說(shuō),Sedona程序的運(yùn)行速度會(huì)比編譯成某個(gè)特定機(jī)器碼的 C或C++程序的運(yùn)行速度慢。然而,要特別記得,雖然Sedona程序被轉(zhuǎn)換為字節(jié)碼,但并非所有的Sedona程序都是使用字節(jié)碼來(lái)實(shí)現(xiàn)的。為了要提高效率,Sedona平臺(tái)在計(jì)算的部分具有相當(dāng)?shù)膹?fù)雜度,如字符串運(yùn)作的方法都是使用機(jī)器碼來(lái)實(shí)現(xiàn)的。Sedona平臺(tái)運(yùn)行的目標(biāo)平臺(tái)是小型的嵌入式智能裝置,因此,編譯后的Sedona程序是一個(gè)輕量級(jí)的快捷應(yīng)用程序,甚至可以在小于100kB內(nèi)存的平臺(tái)上運(yùn)行,使得使用性能已不再是個(gè)問(wèn)題了。
3.4 動(dòng)態(tài)及可擴(kuò)充的程序
Sedona既是動(dòng)態(tài)的(dynamic)也是可擴(kuò)充的(extensible),Sedona程序代碼是由面向?qū)ο蟮哪K組件構(gòu)成的,以這種形式所構(gòu)成的單位稱(chēng)作類(lèi)(class)。類(lèi)又分散存儲(chǔ)在不同的Kit中,同時(shí)只有在需要的時(shí)候才會(huì)被加載到SVM解釋器中。這表示應(yīng)用程序可以在運(yùn)行的時(shí)候決定哪些是需要的類(lèi),然后在需要的時(shí)候才加載它們;也表示程序可以憑借加載它所需要的類(lèi)來(lái)動(dòng)態(tài)擴(kuò)充它所具備的功能。
3.5 6LoWPAN接入
Sedona提供了基于IEEE 802.15.4運(yùn)行6LoWPAN的解決方案,將IP協(xié)議簇直接擴(kuò)展到無(wú)線工業(yè)網(wǎng)。通過(guò)制造低成本,電池供電的6LoWPAN傳感器,可以很容易讓數(shù)量龐大的設(shè)備接入互聯(lián)網(wǎng),極大擴(kuò)展了物聯(lián)網(wǎng)的傳感網(wǎng)信息。
Sedona通過(guò)分布式?jīng)Q策讓所有的設(shè)備具備控制和管理的能力,變得更加智能,能夠連接到網(wǎng)絡(luò)的任何地方。Sedona可以讓制造廠家開(kāi)發(fā)自己的可以支持互聯(lián)網(wǎng)的設(shè)備。這要比完全自己開(kāi)發(fā), 或是使用當(dāng)今已有的那些復(fù)雜的嵌入式開(kāi)發(fā)工具要簡(jiǎn)便,快捷。
為智能裝置嵌入 Sedona芯片模組,可以解決有線和Sedona無(wú)線間通信的局限性而設(shè)計(jì)。它可以無(wú)縫地融合MS/TP總線到802.15.4協(xié)議,在802.15.4和 MS/TP上運(yùn)行6LoWPAN,串行鏈路變成了高質(zhì)量的網(wǎng)絡(luò)間的 802.15.4路由,讓每臺(tái)嵌入了該芯片的設(shè)備擁有自己的互聯(lián)網(wǎng)地址。
開(kāi)發(fā)者的工作流程通常按圖2步驟進(jìn)行:
圖2 Sedona開(kāi)發(fā)工作流程
4.1 用面向?qū)ο蟮腟edona編程語(yǔ)言編寫(xiě)Sedona組件,用于實(shí)現(xiàn)某種功能或算法。
4.2 用Sedona編譯器工具將Sedona組件源代碼編譯成工具包。在編譯的同時(shí),該編譯器也能針對(duì)每個(gè)類(lèi)產(chǎn)生標(biāo)準(zhǔn)的Java Class file文件,從而可以在Java虛擬機(jī)上直接運(yùn)行Sedona應(yīng)用代碼,以便開(kāi)發(fā)者利用Java的開(kāi)發(fā)調(diào)試工具對(duì)應(yīng)用組件進(jìn)行開(kāi)發(fā)調(diào)試,從而大大提高開(kāi)發(fā)效率。
4.3 開(kāi)發(fā)者將組件以工具包的形式發(fā)布,由集成商選擇將哪些工具包安裝到最終的設(shè)備上去,這樣就由Sedona工具將這些工具包編譯成二進(jìn)制的scode映像文件(這一步通常由工具自動(dòng)完成)。集成商選擇的工具包決定了在設(shè)備上能使用的組件功能,這樣的自由選擇能力,大大提高了設(shè)備的適用范圍,使得集成者可以根據(jù)具體應(yīng)用環(huán)境進(jìn)行靈活的裁剪。
4.4 為智能裝置移植SVM,將scode映像文件加載到設(shè)備上運(yùn)行。這些文件即可以是預(yù)先保存在設(shè)備的ROM上,從而在設(shè)備上電之后直接運(yùn)行,也可以由集成者臨時(shí)選擇,通過(guò)網(wǎng)絡(luò)用SOX協(xié)議動(dòng)態(tài)加載。這樣就使得集成者能非常靈活、方便地根據(jù)不同需求進(jìn)行現(xiàn)場(chǎng)定制。
Sedona開(kāi)源框架整合了最新的IT技術(shù),如:面向?qū)ο缶幊陶Z(yǔ)言、虛擬機(jī)、圖形化組件開(kāi)發(fā)技術(shù)等等,給樓宇自動(dòng)化領(lǐng)域帶來(lái)了一種新的解決方案,相信在本文的拋磚引玉作用下,會(huì)有越來(lái)越多的人參與到這個(gè)開(kāi)源項(xiàng)目的開(kāi)發(fā)與建設(shè)中來(lái),那時(shí)候就會(huì)有源源不斷的新思路補(bǔ)充到這個(gè)開(kāi)源框架里來(lái),使其不斷壯大,給智能建筑物聯(lián)網(wǎng)領(lǐng)域注入新的活力。
[1]Tridium公司. Sedona技術(shù)手冊(cè),2009
[2]解讀物聯(lián)網(wǎng)技術(shù)在智能建筑領(lǐng)域的發(fā)展[EB/OL]. http://article.ednchina.com/Analog/Internet_Things_intelligent_building_computing.htm