技術(shù)頻道

娓娓工業(yè)
您現(xiàn)在的位置: 中國傳動網(wǎng) > 技術(shù)頻道 > 應(yīng)用方案 > 基于嵌入式Linux的BACnet控制器軟件設(shè)計

基于嵌入式Linux的BACnet控制器軟件設(shè)計

時間:2006-09-07 16:19:00來源:jiangf

導(dǎo)語:?BACnet 沒有對應(yīng)于 OSI 的第四、五、六層,也就是說, BACnet 沒有傳輸層、會話層和表示層。
BACnet 沒有對應(yīng)于 OSI 的第四、五、六層,也就是說, BACnet 沒有傳輸層、會話層和表示層。 BACnet 網(wǎng)絡(luò)層屏蔽了底層采用的網(wǎng)絡(luò)技術(shù)的差異。 1.2 BACnet 控制器的功能分析在一個 BACnet 控制網(wǎng)絡(luò)中,一個 BACnet 控制器通常和多個控制設(shè)備直接相連,負(fù)責(zé)監(jiān)控這些設(shè)備的運行。概括起來說, BACnet 控制器應(yīng)該具有三個方面的功能。①通信功能。 BACnet 控制器是一個網(wǎng)絡(luò)控制器,所以它必須能夠發(fā)送和接收 BACnet 報文,和其它 BACnet 設(shè)備進(jìn)行通信。②監(jiān)視功能。 BACnet 控制器要監(jiān)視與它直接相連的控制設(shè)備的狀態(tài)。這樣,它就要提供數(shù)據(jù)結(jié)構(gòu)來描述這種狀態(tài)。在 BACnet協(xié)議中,描述這些狀態(tài)是用 BACnet 對象。 BACnet 協(xié)議提供了 42 個標(biāo)準(zhǔn)對象。③控制功能。   BACnet 控制器要控制與它相邊聽設(shè)備的運行,不僅要使這些設(shè)備之間具有互動能力,而且要使這些設(shè)備和系統(tǒng)的遠(yuǎn)程設(shè)備能夠互動,所以在 BACnet 控制器中應(yīng)該有邏輯控制模塊來實現(xiàn)這一功能。值得注意的是,不同時間、不同地點, BACnet 控制器中的控制邏輯可能是不同的,因而在 BACnet 控制器中要提供改變控制流程的工具。這種工具最好是圖形界面的,以方便用戶使用。 圖 1 BACnet 體系結(jié)構(gòu)層次圖 2 基于嵌入式 Linux 開發(fā)軟件的可行性① Linux 是一個和 Unix 相似、以核心為基礎(chǔ)的、完全內(nèi)存保護(hù)、多任務(wù)多進(jìn)程的操作系統(tǒng)。在開發(fā)過程中,可以根據(jù)實際需要,通過內(nèi)核構(gòu)筑工具對 Linux 內(nèi)核功能進(jìn)行裁減,做成體積很小的嵌入式操作系統(tǒng),可使其達(dá)到 500KB 或更小的規(guī)模。②在實時性應(yīng)用方面,通用的 Linux 在強(qiáng)實時性應(yīng)用方面存在欠缺。 Linux 調(diào)度程序原來主要是針對臺式計算機(jī)操作系統(tǒng)。重點考慮的是在應(yīng)用程序的吞吐量上,即采用了一種“公平共享”的策略保證所有進(jìn)程得到平均的 CPU 時間。在樓宇控制設(shè)備這種弱實時性應(yīng)用中,如果采用先進(jìn)的內(nèi)核機(jī)制、進(jìn)程調(diào)度算法和較小粒度的系統(tǒng)時間( 10ms ),是可以滿足弱實時應(yīng)用要求的,因此, Linux 可用于樓宇自動化系統(tǒng)。③ Linux 是源代碼開放的操作系統(tǒng),可以很容易得到內(nèi)核的接口和源碼,我們可以把 BACnet 的協(xié)議實現(xiàn)集成到內(nèi)核中去。④ Linux 是自由軟件。在 GNU GPL 許可證協(xié)議下,可以自由使用、修改和發(fā)布,所以采用嵌入式 Linux 可以降低 BACnet 控制器的成本。 3 BACnet 控制器軟件的實現(xiàn) 3.1 BACnet 控制器軟件的體系結(jié)構(gòu)基于 BACnet 協(xié)議的體系結(jié)構(gòu)和上面對 BACnet 控制器功能的分析,可以得出 BACnet 控制器軟件包括以下幾個模塊: BACnet 協(xié)議棧、 BACnet 對象和服務(wù)、底層驅(qū)動模塊、應(yīng)用控制邏輯模塊和控制配置模塊。對 Linux 內(nèi)核中不必要的模塊加以裁減,并把 BACnet 控制器的一些模塊嵌入到 Linux 內(nèi)核,最終的開發(fā)體系結(jié)構(gòu)如圖 2 所示。 3.2 BACnet 協(xié)議棧的實現(xiàn) BACnet 協(xié)議棧報文的封裝流程如圖 3 所示。 BACnet 協(xié)議的分層體系結(jié)構(gòu)支持多種底層通信協(xié)議。 BACnet 的網(wǎng)絡(luò)層功能則對不同物理層和鏈路層的抽象,其原理與 TCP/IP 的 IP 層相。在 BACnet 應(yīng)用層,定義了標(biāo)準(zhǔn)的對象和服務(wù),以實現(xiàn)不同廠家的 BACnet 產(chǎn)品的互連。因此,從 BACnet 體系結(jié)構(gòu)的各層協(xié)議內(nèi)容來看, BACnet 的體系結(jié)構(gòu)呈“啞鈴狀”,最低層包容不同的通信協(xié)議,最高層承接多樣的“實體”和應(yīng)用。在 BACnet 協(xié)議中, BACnet 網(wǎng)絡(luò)層是相對穩(wěn)定的部分,也是 BACnet 協(xié)議的核心,應(yīng)放入內(nèi)核之中。 其應(yīng)用程序接口( API )應(yīng)以系統(tǒng)調(diào)用( sys-call )的方式提供。這種構(gòu)成方式不僅可以在內(nèi)核內(nèi)部高效實現(xiàn)對 BACnet 網(wǎng)絡(luò)層的處理,而且對外掛模塊還提供簡潔和高效的調(diào)用方式,使外掛模塊代碼緊湊。對于 BACnet 的低層協(xié)議和應(yīng)用層則應(yīng)放在內(nèi)核之外,以模塊的方式外掛或為系統(tǒng)程序。在本開發(fā)過程中,將低層協(xié)議以原代碼的形式編譯在內(nèi)核中。原因是,對于具體的應(yīng)用,低層協(xié)議通常是固定的,即一旦某個設(shè)備接入一種網(wǎng)絡(luò)系統(tǒng),該設(shè)備的低層通信協(xié)議就不會改變,從而形成一個類別的樓宇設(shè)備自動化產(chǎn)品。 3.3 BACnet 對象和服務(wù)的實現(xiàn) BACnet 對象是駐留在 BACnet 設(shè)備中的數(shù)據(jù)結(jié)構(gòu),提供到一個樓宇自控設(shè)備的“網(wǎng)絡(luò)可見”部分的抽象描述。每個對象都有一組屬性,描述對象的特片和結(jié)構(gòu)。 BACnet 對象按其功能可分為兩類。一類是采集數(shù)據(jù)的對象,如模擬輸入 / 輸出對象。這類對象需要訪問設(shè)備硬件,對象實現(xiàn)會根據(jù)不同設(shè)備硬件而變化,因此如果硬件發(fā)生變化,就要重寫驅(qū)動程序。另一類對象是在采集的數(shù)據(jù)基礎(chǔ)上完成復(fù)雜功能,如環(huán)對象以及其它實現(xiàn)報警事件功能的對象。這類對象不需訪問硬件。每一種 BACnet 控制器需要對已實現(xiàn)的對象進(jìn)行配置。 BACnet 服務(wù)提供了用于訪問和操作設(shè)備中 BACnet 對象的命令,并定義了這些命令的格式和內(nèi)容(即服務(wù)原語)。 Banet 根據(jù)設(shè)備功能將不同服務(wù)分組得到 7 個部分:數(shù)據(jù)共享、報警和事件管理、時間表、趨勢記錄、設(shè)備管理、網(wǎng)絡(luò)管理、虛擬終端。 BACnet 所定義的通信設(shè)備一致遵守的編碼規(guī)則是 ASN.1 。 BACnet 對象和服務(wù)原語都通過 ASN.1 進(jìn)行編碼,因此對象和服務(wù)實現(xiàn)的核心是 BACnet 編 / 解碼器和 BACnet 標(biāo)準(zhǔn)數(shù)據(jù)類型、對象和服務(wù)原語的抽象數(shù)據(jù)類型。對于 BACnet 對象的處理必須放在內(nèi)核之外。原因是:不同 BACnet 控制器具有不同的 BACnet 對象集合,且 BACnet 對象類型較多。這就要求嵌入式系統(tǒng)具對 BACnet 對象進(jìn)行靈活的配置方式。實現(xiàn)這種靈活配置的方法仍需要采用 Linux 常用的抽象方法,將不同的具體 BACnet 對象進(jìn)行抽象,形成“虛擬 BACnet 對象”的概念。此處是“虛擬對象”不同于面向?qū)ο蟪绦蛟O(shè)計語言中的“虛擬對象”。這兩個概念不同的。前者是相對 BACnet 協(xié)議中定義的具體對象而言,其作用是管理 BACnet 協(xié)議中定義的具體 BACnet 對象,是內(nèi)核提供配置和操作具體 BACnet 對象的接口,相當(dāng)于 Linux 內(nèi)核中的“虛擬文件系統(tǒng)”等。 3.4 驅(qū)動程序的實現(xiàn) BACnet 支持多種底層通信協(xié)議。在 BACnet 控制器中,必須為這些通信協(xié)議編寫驅(qū)動程序,同時在 BACnet 控制器中還要為一些數(shù)據(jù)采集卡之類的設(shè)備寫驅(qū)動程序。 Linux 操作系統(tǒng)下的驅(qū)動程序,是以模塊的形式存在的,能夠被動態(tài)地加載。對于不同的底層結(jié)構(gòu),可以靈活地加載不同的驅(qū)動程序。開發(fā)設(shè)備驅(qū)動程序必須對內(nèi)核有嚴(yán)格要求,其主要內(nèi)容是根據(jù)內(nèi)核的 file_operations 數(shù)據(jù)結(jié)構(gòu)開發(fā)相應(yīng)的設(shè)備操作函數(shù),并填寫數(shù)據(jù)結(jié)構(gòu)。如果外圍設(shè)備具有中斷功能,則需要開發(fā)中斷處理函數(shù)并安裝中斷函數(shù)。 file_operations 的數(shù)據(jù)結(jié)構(gòu),內(nèi)核版本不同時,其結(jié)構(gòu)可能不同,可以相看 linux/fs.h 頭文件以確定具體的結(jié)構(gòu)。在 file_operations 的眾多函數(shù)指針成員中,通常只需實現(xiàn) reax 、 write 、 open 和 release 即可; ioctl 可以根據(jù)需要加以實現(xiàn),以增強(qiáng)對外圍設(shè)備的控制和管理功能。 3.5 BACnet 控制器應(yīng)用層實現(xiàn)應(yīng)用邏輯層是建立在嵌入式操作系統(tǒng)之上的具體應(yīng)用。 根據(jù) BACnet 協(xié)議中定義了 3 個級別的 BACnet 控制器——樓宇控制器、高級應(yīng)用控制器和應(yīng)用控制器、實現(xiàn)不同類別 BACnet 設(shè)備規(guī)定的互操作域( InteroperationArea )。這樣,就可以在應(yīng)用邏輯層中實現(xiàn)協(xié)議規(guī)定的 5 個互操作域。這種方式不僅使協(xié)議的互操作域開發(fā)簡單,而且使互操作域的開發(fā)具有可管理性。這 5 個操作域是:數(shù)據(jù)共享、報警和事件管理、時序安排、趨勢記錄及設(shè)備和網(wǎng)絡(luò)管理。①數(shù)據(jù)共享功能包括數(shù)據(jù)的文檔存儲、數(shù)據(jù)的表示、監(jiān)測對象、設(shè)備點和參數(shù)修改。 BACnet 控制器要將本地采集的數(shù)據(jù)傳送到操作員工作站上進(jìn)行存儲,主要是那些需要查看歷史記錄的值,如模擬輸入 / 模擬輸出當(dāng)前值屬性等等。對于數(shù)據(jù)更新的時間間隔,快速采樣時,用 1 ~ 5s ;對于慢速過程,如空間溫度監(jiān)測,采用 30 ~ 60s 間隔。 當(dāng)控制器收到了 WriteProperty/WritePropertyMultiple ,服務(wù),要求控制器重新設(shè)置端點和修改參數(shù)時,就調(diào)用本地方法,修改某些對象的屬性值。②報警和事件管理支持預(yù)定值改變報告、值改變通告和事件通知。當(dāng)控制器某一個對象的屬性值發(fā)生改變時,它就向預(yù)定這一服務(wù)的設(shè)備發(fā)送值改變通告服務(wù)。告訴接收者這一變化??刂破靼l(fā)送一個事件通告服務(wù),通知遠(yuǎn)程設(shè)備有一個事件發(fā)生??刂破鬟€要支持響應(yīng) GetAlarmSummary ,通告報警狀態(tài)和事件信息。③時序安排??刂破髦С猪憫?yīng)用來修改設(shè)備的 Calendar 、 Shedular 對象的 WriteProperty 服務(wù)請求,接收到該服務(wù)后,修改控制器的時序表。④趨勢記錄。支持響應(yīng)用來修改 TrendLog 對象屬性的 WriteProperty 服務(wù),接收該服務(wù)后,修改登陸的數(shù)據(jù)點、采樣速度、間隔。⑤設(shè)備和網(wǎng)絡(luò)管理。 該操作域支持 Device CommunicationControl 服務(wù),操作員可以通過該服務(wù)禁止控制器;同時,該操作域還支持響應(yīng) TimeSynchronization 和 UTCTimeSynchronization 服務(wù),保證時間同步;支持響應(yīng) AtomicReadFile 服務(wù),允許遠(yuǎn)程讀取 / 修改控制器的配置文件,允許通過網(wǎng)絡(luò)備份來恢復(fù)被配置。結(jié)語 BACnet 是一種實用的國際標(biāo)準(zhǔn)的樓宇控制網(wǎng)絡(luò)協(xié)議??刂破魇?BACnet 控制網(wǎng)絡(luò)中的重要設(shè)備之一。 BACnet 控制器的開發(fā)成功,對于促進(jìn) BACnet 協(xié)議在我國樓宇自動化中應(yīng)用具有重要的意義。

標(biāo)簽:

點贊

分享到:

上一篇:輪胎定型硫化機(jī)技術(shù)進(jìn)步及發(fā)...

下一篇:微能WIN-V63矢量控制變頻器在...

中國傳動網(wǎng)版權(quán)與免責(zé)聲明:凡本網(wǎng)注明[來源:中國傳動網(wǎng)]的所有文字、圖片、音視和視頻文件,版權(quán)均為中國傳動網(wǎng)(m.u63ivq3.com)獨家所有。如需轉(zhuǎn)載請與0755-82949061聯(lián)系。任何媒體、網(wǎng)站或個人轉(zhuǎn)載使用時須注明來源“中國傳動網(wǎng)”,違反者本網(wǎng)將追究其法律責(zé)任。

本網(wǎng)轉(zhuǎn)載并注明其他來源的稿件,均來自互聯(lián)網(wǎng)或業(yè)內(nèi)投稿人士,版權(quán)屬于原版權(quán)人。轉(zhuǎn)載請保留稿件來源及作者,禁止擅自篡改,違者自負(fù)版權(quán)法律責(zé)任。

網(wǎng)站簡介|會員服務(wù)|聯(lián)系方式|幫助信息|版權(quán)信息|網(wǎng)站地圖|友情鏈接|法律支持|意見反饋|sitemap

傳動網(wǎng)-工業(yè)自動化與智能制造的全媒體“互聯(lián)網(wǎng)+”創(chuàng)新服務(wù)平臺

網(wǎng)站客服服務(wù)咨詢采購咨詢媒體合作

Chuandong.com Copyright ?2005 - 2024 ,All Rights Reserved 深圳市奧美大唐廣告有限公司 版權(quán)所有
粵ICP備 14004826號 | 營業(yè)執(zhí)照證書 | 不良信息舉報中心 | 粵公網(wǎng)安備 44030402000946號