摘 要:對(duì) Sedona FrameworkTM的開源開發(fā)構(gòu)架進(jìn)行描述;闡述Sedona FrameworkTM軟件的技術(shù)特點(diǎn);并分析與之適應(yīng)的多協(xié)議平臺(tái)的硬件應(yīng)用。
關(guān)鍵詞:Sedona結(jié)構(gòu);虛擬機(jī);開源架構(gòu)多協(xié)議;集散控制
1 引言
自動(dòng)化控制行業(yè)提倡的“分散控制、集中管理”的模式,實(shí)際應(yīng)用卻受到重重阻礙。國際知名自控廠家各自采用的體系結(jié)構(gòu)不同,諸如LONWORKS, BACnet IP, MSTP , Modbus , TCP/RTU, oBIX, SNMP,OPC UA 等一系列的標(biāo)準(zhǔn)通信協(xié)議與接口標(biāo)準(zhǔn)使用的協(xié)議很難做到互聯(lián)互通。
因此,Sedona軟件系統(tǒng)框架的誕生就是為了解決集成或兼容上述協(xié)議接口。
2 Sedona開源架構(gòu)技術(shù)介紹
Sedona 是一個(gè)完全開放的樓宇設(shè)備控制軟件系統(tǒng)框架,由Tridium公司于2009年開發(fā)并免費(fèi)提供開放源代碼的工具軟件,包涵了:Sedona語言、工具包、虛擬機(jī)、編譯器、圖形化工具等部分;具有以下顯著的優(yōu)勢:(1)Sedona 平臺(tái)將程序語言與虛擬機(jī)SVM 預(yù)存每個(gè)系統(tǒng)的預(yù)定義類集合中,可供所有的 Sedona核心 API(Application programming interfaces)可以調(diào)用所有資源。這些 API 僅存在于某些 Sedona 安裝系統(tǒng)中,大大降低軟件系統(tǒng)消耗;(2)Sedona語言繼承了Java/C#等語言面向?qū)ο笾攸c(diǎn),使用開發(fā)非常簡單,功能強(qiáng)大;(3)Sedona虛擬機(jī)可以運(yùn)行幾百KB內(nèi)存的小型嵌入式設(shè)備上,大大降低硬件成本與提高實(shí)時(shí)性;(4)Sedona圖形化開發(fā)工具,進(jìn)行在線實(shí)時(shí)開發(fā)調(diào)試,用組件模塊的方式簡單拖拽各種所需功能,并進(jìn)行數(shù)據(jù)流向和控制邏輯的連線,立刻完成用戶應(yīng)用邏輯開發(fā);還能實(shí)時(shí)看見反饋結(jié)果;(5)Sedona FrameworkTM廣泛應(yīng)用于底層設(shè)備開發(fā)集成和管理;支持智能通訊、連接網(wǎng)絡(luò)。
Sedona FrameworkTM平臺(tái)是一套構(gòu)建以網(wǎng)絡(luò)為中心的嵌入式智能設(shè)備的應(yīng)用系統(tǒng),下面,簡介Sedona FrameworkTM開源軟件框架與硬件系統(tǒng)應(yīng)用。
3 Sedona FrameworkTM開源軟件框架
3.1 Sedona 工作流程
在Sedona軟件架構(gòu)下進(jìn)行的開發(fā)兼顧技術(shù)開發(fā)與集成應(yīng)用兩個(gè)方面的應(yīng)用:
(1)技術(shù)開發(fā)可以使用Sedona開發(fā)各種應(yīng)用組件模塊(如行業(yè)功能模塊、設(shè)備I/O驅(qū)動(dòng)模塊、特殊算法模塊等等)。其次,軟件以工具包(kits code )的形式進(jìn)行發(fā)布,便于使用。(2)集成調(diào)試人員使用圖形化開發(fā)工具,將開發(fā)好的工具包kits應(yīng)用指定工作區(qū)域上、通過屬性配置、實(shí)現(xiàn)功能控制。(3)即使沒有軟件開發(fā)經(jīng)驗(yàn)的調(diào)試人員也能靈活使用Sedona組件模塊、以圖形化模塊組合實(shí)現(xiàn)邏輯控制。
3.2 íSedona技術(shù)開發(fā)流程
開發(fā)工作通常按如下步驟進(jìn)行:(1)用面向?qū)ο蟮腟edona編程語言編寫Sedona組件,用于實(shí)現(xiàn)某種功能或者算法。(2)用Sedonac編譯器工具將Sedona組件的源代碼編譯成工具包。(如圖1)被編譯成類似與匯編語言的中間格式代碼IR(intermediate representation-IR)。實(shí)現(xiàn)用戶邏輯代碼可以編譯成對(duì)應(yīng)的Sedona虛擬機(jī)JVM指令,這樣可以應(yīng)用開發(fā)完畢的工具包能適應(yīng)所有的平臺(tái),而不要再次編譯。(3)在編譯時(shí),也產(chǎn)生標(biāo)準(zhǔn)的Java Classfile文件,可以直接運(yùn)行Sedona應(yīng)用代碼、直接用Java對(duì)應(yīng)用組件開發(fā)調(diào)試,大大提高開發(fā)效率。(4)開發(fā)組件以.sab工具包的形式發(fā)布,集成調(diào)試人員根據(jù)需要選擇將工具包安裝到指定設(shè)備上去;然后集成調(diào)試人員根據(jù)具體應(yīng)用環(huán)境進(jìn)行靈活的裁剪、整理。(5)將Sedona虛擬機(jī)和scode映像文件加載到設(shè)備ROM上運(yùn)行,通過網(wǎng)絡(luò)用SOX協(xié)議動(dòng)態(tài)加載設(shè)備直接上電之后直接運(yùn)行、也可以由集成調(diào)試人員臨時(shí)選擇,優(yōu)化使用方式。
3.3 Sedona應(yīng)用調(diào)試流程
調(diào)試人員以根據(jù)實(shí)際需要選擇工具包、圖形化工具設(shè)計(jì)成“sax”文件、在線直接用sedonac工具將其編譯成“sab”文件運(yùn)用到設(shè)備上;也可以離線設(shè)計(jì)。如下舉例說明:
3.4 Sedona軟件應(yīng)用舉例
下述案例是筆者在2011年深圳某酒店樓控系統(tǒng) (BAS)中一臺(tái)固定風(fēng)量風(fēng)機(jī)進(jìn)行控制的案例,需要有3I/1O共4個(gè)控制點(diǎn):即手自動(dòng)狀態(tài)檢測(DI)、運(yùn)行狀態(tài)檢測(DI)、故障狀態(tài)檢測(DI)和風(fēng)機(jī)啟??刂疲―O);其常規(guī)的控制邏輯是: 監(jiān)測風(fēng)機(jī)手自動(dòng)運(yùn)行狀態(tài)在手動(dòng)狀態(tài)下,控制器不進(jìn)行自動(dòng)控制,只能通過現(xiàn)場強(qiáng)電箱電箱啟停風(fēng)機(jī);在自動(dòng)狀態(tài)下;當(dāng)用戶發(fā)出啟停信號(hào)后,控制器啟停風(fēng)機(jī);另外,如果在風(fēng)機(jī)啟動(dòng)之后檢測到故障狀態(tài),那么就立即停止風(fēng)機(jī)的運(yùn)行。如下:
(1)安裝Niagara,并尋到根目錄{root}
(2)在{root}\sedona\src目錄中創(chuàng)建新的工具目錄: 如:\jwm_bastools;
(3)在{root}\sedona\src\jwm_bastools創(chuàng)建jwm_kit.xml文件(本文件是用來描述編譯器編譯時(shí)所需要的源代碼目錄及其他信息; 如下: