基于嵌入式Linux的BACnet控制器軟件設(shè)計(jì)
發(fā)布時(shí)間:2007/8/28 0:00:00 訪問次數(shù):693
來源:單片機(jī)及嵌入式系統(tǒng)應(yīng)用 作者:許永喜 惠曉實(shí) 劉賢德
摘要:描述BACnet協(xié)議的體系結(jié)構(gòu),分析BACnet控制器的功能,論證基于嵌入式Linux開發(fā)BACnet控制器的可行性;給出BACnet控制器軟件的體系結(jié)構(gòu)及其軟件設(shè)計(jì)。
關(guān)鍵詞:BACnet 控制器 樓宇控制設(shè)備 嵌入式Linux 體系結(jié)構(gòu)
BACnet協(xié)議是一種為樓宇自動控制網(wǎng)絡(luò)所制定的數(shù)據(jù)通信協(xié)議。該協(xié)議已成為美國國家標(biāo)準(zhǔn)(ANSI/ASHRAE 135-1995)和歐盟標(biāo)準(zhǔn)草案,并在2000年成為草案級國際標(biāo)準(zhǔn)。其中定義了23個(gè)對象和42個(gè)服務(wù),以及5個(gè)數(shù)據(jù)鏈路的局域網(wǎng)底層網(wǎng)絡(luò)結(jié)構(gòu)。1999年1月正式發(fā)布了附錄135a,成為標(biāo)準(zhǔn)的附件J,確定BACnet/IP技術(shù)的第6個(gè)局域網(wǎng)互聯(lián)的底層技術(shù)。
1 BACnet網(wǎng)絡(luò)體系結(jié)構(gòu)和控制器功能分析
1.1 BACnet網(wǎng)絡(luò)體系結(jié)構(gòu)
BACnet建立在包含四個(gè)層次的簡化分層體系結(jié)構(gòu)上。這四層相當(dāng)于OSI模型中的物理層、數(shù)據(jù)鏈路層、網(wǎng)絡(luò)層和應(yīng)用層。BACnet標(biāo)準(zhǔn)定義自已的應(yīng)用層和簡單的網(wǎng)絡(luò)層,對于其數(shù)據(jù)鏈路層和物理層,提供了五種選擇方案,在附件J-BACnet/IP中加入了對IP的支持。
圖1是BACnet/IP網(wǎng)絡(luò)體系結(jié)構(gòu)層次圖。BACnet沒有對應(yīng)于OSI的第四、五、六層,也就是說,BACnet沒有傳輸層、會話層和表示層。BACnet網(wǎng)絡(luò)層屏蔽了底層采用的網(wǎng)絡(luò)技術(shù)的差異。
1.2 BACnet控制器的功能分析
在一個(gè)BACnet控制網(wǎng)絡(luò)中,一個(gè)BACnet控制器通常和多個(gè)控制設(shè)備直接相連,負(fù)責(zé)監(jiān)控這些設(shè)備的運(yùn)行。概括起來說,BACnet控制器應(yīng)該具有三個(gè)方面的功能。①通信功能。BACnet控制器是一個(gè)網(wǎng)絡(luò)控制器,所以它必須能夠發(fā)送和接收BACnet報(bào)文,和其它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個(gè)標(biāo)準(zhǔn)對象。③控制功能。BACnet控制器要控制與它相邊聽設(shè)備的運(yùn)行,不僅要使這些設(shè)備之間具有互動能力,而且要使這些設(shè)備和系統(tǒng)的遠(yuǎn)程設(shè)備能夠互動,所以在BACnet控制器中應(yīng)該有邏輯控制模塊來實(shí)現(xiàn)這一功能。值得注意的是,不同時(shí)間、不同地點(diǎn),BACnet控制器中的控制邏輯可能是不同的,因而在BACnet控制器中要提供改變控制流程的工具。這種工具最好是圖形界面的,以方便用戶使用。
圖1 BACnet體系結(jié)構(gòu)層次圖
2 基于嵌入式Linux開發(fā)軟件的可行性
①Linux是一個(gè)和Unix相似、以核心為基礎(chǔ)的、完全內(nèi)存保護(hù)、多任務(wù)多進(jìn)程的操作系統(tǒng)。在開發(fā)過程中,可以根據(jù)實(shí)際需要,通過內(nèi)核構(gòu)筑工具對Linux內(nèi)核功能進(jìn)行裁減,做成體積很小的嵌入式操作系統(tǒng),可使其達(dá)到500KB或更小的規(guī)模。
②在實(shí)時(shí)性應(yīng)用方面,通用的Linux在強(qiáng)實(shí)時(shí)性應(yīng)用方面存在欠缺。Linux調(diào)度程序原來主要是針對臺式計(jì)算機(jī)操作系統(tǒng)。重點(diǎn)考慮的是在應(yīng)用程序的吞吐量上,即采用了一種“公平共享”的策略保證所有進(jìn)程得到平均的CPU時(shí)間。在樓宇控制設(shè)備這種弱實(shí)時(shí)性應(yīng)用中,如果采用先進(jìn)的內(nèi)核機(jī)制、進(jìn)程調(diào)度算法和較小粒度的系統(tǒng)時(shí)間(10ms),是可以滿足弱實(shí)時(shí)應(yīng)用要求的,因此,Linux可用于樓宇自動化系統(tǒng)。
③Linux是源代碼開放的操作系統(tǒng),可以很容易得到內(nèi)核的接口和源碼,我們可以把BACnet的協(xié)議實(shí)現(xiàn)集成到內(nèi)核中去。
④Linux是自由軟件。在GNU GPL許可證協(xié)議下,可以自由使用、修改和發(fā)布,所以采用嵌入式Linux可以降低BACnet控制器的成本。
3 BACnet控制器軟件的實(shí)現(xiàn)
3.1 BACnet控制器軟件的體系結(jié)構(gòu)
基于BACnet協(xié)議的體系結(jié)構(gòu)和上面對BACnet控制器功能的分析,可以得出BACnet控制器軟件包括以下幾個(gè)模塊:BACnet協(xié)議棧、BACnet對象和服務(wù)、底層驅(qū)動模塊、應(yīng)用控制邏輯模塊和控制配置模塊。
對Linux內(nèi)核中不必要的模塊加以裁減,并把BACnet控制器的一些模塊嵌入到Linux內(nèi)核,最終的開發(fā)體系結(jié)構(gòu)如圖2所示。
3.2 BACnet協(xié)議棧的實(shí)現(xiàn)
BACnet協(xié)議棧報(bào)文的封裝流程如圖3所示。
BACnet協(xié)議的分層體系結(jié)構(gòu)支持多種底層通信協(xié)議。BACnet的網(wǎng)絡(luò)層功能則對不同物理層和鏈路層的抽象,其原理與TCP/IP的IP層相。在BACnet應(yīng)用層,定義了標(biāo)準(zhǔn)的對象和服務(wù),以實(shí)現(xiàn)不同廠家的BACnet產(chǎn)品的互連。因此,從BACnet體系結(jié)構(gòu)的各層協(xié)議內(nèi)容來看,BACnet的體系結(jié)構(gòu)呈“啞鈴狀”,最低層包容不同的通信協(xié)議,最高層承接多樣的“實(shí)體”和應(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)部高效實(shí)現(xiàn)對BACnet網(wǎng)絡(luò)層的處理,而且對外掛模塊還提供簡潔和高效的調(diào)用方式,使外掛模塊代碼緊
來源:單片機(jī)及嵌入式系統(tǒng)應(yīng)用 作者:許永喜 惠曉實(shí) 劉賢德
摘要:描述BACnet協(xié)議的體系結(jié)構(gòu),分析BACnet控制器的功能,論證基于嵌入式Linux開發(fā)BACnet控制器的可行性;給出BACnet控制器軟件的體系結(jié)構(gòu)及其軟件設(shè)計(jì)。
關(guān)鍵詞:BACnet 控制器 樓宇控制設(shè)備 嵌入式Linux 體系結(jié)構(gòu)
BACnet協(xié)議是一種為樓宇自動控制網(wǎng)絡(luò)所制定的數(shù)據(jù)通信協(xié)議。該協(xié)議已成為美國國家標(biāo)準(zhǔn)(ANSI/ASHRAE 135-1995)和歐盟標(biāo)準(zhǔn)草案,并在2000年成為草案級國際標(biāo)準(zhǔn)。其中定義了23個(gè)對象和42個(gè)服務(wù),以及5個(gè)數(shù)據(jù)鏈路的局域網(wǎng)底層網(wǎng)絡(luò)結(jié)構(gòu)。1999年1月正式發(fā)布了附錄135a,成為標(biāo)準(zhǔn)的附件J,確定BACnet/IP技術(shù)的第6個(gè)局域網(wǎng)互聯(lián)的底層技術(shù)。
1 BACnet網(wǎng)絡(luò)體系結(jié)構(gòu)和控制器功能分析
1.1 BACnet網(wǎng)絡(luò)體系結(jié)構(gòu)
BACnet建立在包含四個(gè)層次的簡化分層體系結(jié)構(gòu)上。這四層相當(dāng)于OSI模型中的物理層、數(shù)據(jù)鏈路層、網(wǎng)絡(luò)層和應(yīng)用層。BACnet標(biāo)準(zhǔn)定義自已的應(yīng)用層和簡單的網(wǎng)絡(luò)層,對于其數(shù)據(jù)鏈路層和物理層,提供了五種選擇方案,在附件J-BACnet/IP中加入了對IP的支持。
圖1是BACnet/IP網(wǎng)絡(luò)體系結(jié)構(gòu)層次圖。BACnet沒有對應(yīng)于OSI的第四、五、六層,也就是說,BACnet沒有傳輸層、會話層和表示層。BACnet網(wǎng)絡(luò)層屏蔽了底層采用的網(wǎng)絡(luò)技術(shù)的差異。
1.2 BACnet控制器的功能分析
在一個(gè)BACnet控制網(wǎng)絡(luò)中,一個(gè)BACnet控制器通常和多個(gè)控制設(shè)備直接相連,負(fù)責(zé)監(jiān)控這些設(shè)備的運(yùn)行。概括起來說,BACnet控制器應(yīng)該具有三個(gè)方面的功能。①通信功能。BACnet控制器是一個(gè)網(wǎng)絡(luò)控制器,所以它必須能夠發(fā)送和接收BACnet報(bào)文,和其它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個(gè)標(biāo)準(zhǔn)對象。③控制功能。BACnet控制器要控制與它相邊聽設(shè)備的運(yùn)行,不僅要使這些設(shè)備之間具有互動能力,而且要使這些設(shè)備和系統(tǒng)的遠(yuǎn)程設(shè)備能夠互動,所以在BACnet控制器中應(yīng)該有邏輯控制模塊來實(shí)現(xiàn)這一功能。值得注意的是,不同時(shí)間、不同地點(diǎn),BACnet控制器中的控制邏輯可能是不同的,因而在BACnet控制器中要提供改變控制流程的工具。這種工具最好是圖形界面的,以方便用戶使用。
圖1 BACnet體系結(jié)構(gòu)層次圖
2 基于嵌入式Linux開發(fā)軟件的可行性
①Linux是一個(gè)和Unix相似、以核心為基礎(chǔ)的、完全內(nèi)存保護(hù)、多任務(wù)多進(jìn)程的操作系統(tǒng)。在開發(fā)過程中,可以根據(jù)實(shí)際需要,通過內(nèi)核構(gòu)筑工具對Linux內(nèi)核功能進(jìn)行裁減,做成體積很小的嵌入式操作系統(tǒng),可使其達(dá)到500KB或更小的規(guī)模。
②在實(shí)時(shí)性應(yīng)用方面,通用的Linux在強(qiáng)實(shí)時(shí)性應(yīng)用方面存在欠缺。Linux調(diào)度程序原來主要是針對臺式計(jì)算機(jī)操作系統(tǒng)。重點(diǎn)考慮的是在應(yīng)用程序的吞吐量上,即采用了一種“公平共享”的策略保證所有進(jìn)程得到平均的CPU時(shí)間。在樓宇控制設(shè)備這種弱實(shí)時(shí)性應(yīng)用中,如果采用先進(jìn)的內(nèi)核機(jī)制、進(jìn)程調(diào)度算法和較小粒度的系統(tǒng)時(shí)間(10ms),是可以滿足弱實(shí)時(shí)應(yīng)用要求的,因此,Linux可用于樓宇自動化系統(tǒng)。
③Linux是源代碼開放的操作系統(tǒng),可以很容易得到內(nèi)核的接口和源碼,我們可以把BACnet的協(xié)議實(shí)現(xiàn)集成到內(nèi)核中去。
④Linux是自由軟件。在GNU GPL許可證協(xié)議下,可以自由使用、修改和發(fā)布,所以采用嵌入式Linux可以降低BACnet控制器的成本。
3 BACnet控制器軟件的實(shí)現(xiàn)
3.1 BACnet控制器軟件的體系結(jié)構(gòu)
基于BACnet協(xié)議的體系結(jié)構(gòu)和上面對BACnet控制器功能的分析,可以得出BACnet控制器軟件包括以下幾個(gè)模塊:BACnet協(xié)議棧、BACnet對象和服務(wù)、底層驅(qū)動模塊、應(yīng)用控制邏輯模塊和控制配置模塊。
對Linux內(nèi)核中不必要的模塊加以裁減,并把BACnet控制器的一些模塊嵌入到Linux內(nèi)核,最終的開發(fā)體系結(jié)構(gòu)如圖2所示。
3.2 BACnet協(xié)議棧的實(shí)現(xiàn)
BACnet協(xié)議棧報(bào)文的封裝流程如圖3所示。
BACnet協(xié)議的分層體系結(jié)構(gòu)支持多種底層通信協(xié)議。BACnet的網(wǎng)絡(luò)層功能則對不同物理層和鏈路層的抽象,其原理與TCP/IP的IP層相。在BACnet應(yīng)用層,定義了標(biāo)準(zhǔn)的對象和服務(wù),以實(shí)現(xiàn)不同廠家的BACnet產(chǎn)品的互連。因此,從BACnet體系結(jié)構(gòu)的各層協(xié)議內(nèi)容來看,BACnet的體系結(jié)構(gòu)呈“啞鈴狀”,最低層包容不同的通信協(xié)議,最高層承接多樣的“實(shí)體”和應(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)部高效實(shí)現(xiàn)對BACnet網(wǎng)絡(luò)層的處理,而且對外掛模塊還提供簡潔和高效的調(diào)用方式,使外掛模塊代碼緊
熱門點(diǎn)擊
- 嵌入式LwIP協(xié)議棧的內(nèi)存管理
- 基于嵌入式Linux的BACnet控制器軟件
- 面向多媒體應(yīng)用的嵌入式Linux實(shí)時(shí)性研究
- TLC320AIC23在音頻處理中的應(yīng)用
- 用GNU工具開發(fā)基于ARM的嵌入式系統(tǒng)
- 基于模型和產(chǎn)品代碼生成的汽車嵌入式系統(tǒng)設(shè)計(jì)
- 基于嵌入式Web的電子交警系統(tǒng)
- 基于T6963CFG的LCD在嵌入式系統(tǒng)中的
- 基于USB-Host的大容量數(shù)據(jù)采集系統(tǒng)的設(shè)
- 智能小區(qū)中嵌入式MP3流媒體網(wǎng)絡(luò)廣播系統(tǒng)設(shè)計(jì)
推薦技術(shù)資料
- 羅盤誤差及補(bǔ)償
- 造成羅盤誤差的主要因素有傳感器誤差、其他磁材料干擾等。... [詳細(xì)]
- 650V雙向GaNFast氮化鎵功率芯片
- 業(yè)內(nèi)領(lǐng)先8英寸硅基氮化鎵技術(shù)工
- 新一代600V超級接面MOSFET KP38
- KEC 第三代SuperJunction M
- KEC半導(dǎo)體650V碳化硅(SiC)肖特基二
- Arrow Lake U 系列
- 多媒體協(xié)處理器SM501在嵌入式系統(tǒng)中的應(yīng)用
- 基于IEEE802.11b的EPA溫度變送器
- QUICCEngine新引擎推動IP網(wǎng)絡(luò)革新
- SoC面世八年后的產(chǎn)業(yè)機(jī)遇
- MPC8xx系列處理器的嵌入式系統(tǒng)電源設(shè)計(jì)
- dsPIC及其在交流變頻調(diào)速中的應(yīng)用研究