日本黄色一级经典视频|伊人久久精品视频|亚洲黄色色周成人视频九九九|av免费网址黄色小短片|黄色Av无码亚洲成年人|亚洲1区2区3区无码|真人黄片免费观看|无码一级小说欧美日免费三级|日韩中文字幕91在线看|精品久久久无码中文字幕边打电话

當前位置:首頁 > 嵌入式 > 嵌入式教程
[導讀]嵌入式系統(tǒng)中BACnet-MS/TP協(xié)議棧的實現(xiàn)

1 引言

20世紀90年代,Internet經(jīng)歷了爆炸性發(fā)展,成為壟斷全球的計算機網(wǎng)絡(luò)。以Cisco和Sun為代表的一批公司借助這一浪潮發(fā)展成為世界上頂尖的大公司。而在智能建筑領(lǐng)域,也正在重現(xiàn)這一過程。上世紀80年代,直接數(shù)字控制器(DDC)的出現(xiàn)大大改善了建筑控制系統(tǒng)的精度和靈活性。但隨著智能建筑涉及領(lǐng)域的不斷延伸,如HVAC、照明、消防、安防等等領(lǐng)域,分立式控制設(shè)備已經(jīng)不能滿足設(shè)備間互操作和系統(tǒng)間通訊的需求;另一方面,隨著建筑控制系統(tǒng)的集成度越來越高,不僅要求一棟樓宇或者一個小區(qū)的設(shè)備之間可以通訊,甚至地區(qū)、國家乃至全球的控制設(shè)備之間都可以進行通訊。因此,建立一個可以在異構(gòu)系統(tǒng)、不同廠商設(shè)備之間的通訊機制,成為建筑智能化的迫切需求。BACnet協(xié)議就在這樣一種情況下應(yīng)運而生了。

2 BACnet協(xié)議介紹

BACnet是專門為建筑自動控制網(wǎng)絡(luò)制定的一種數(shù)據(jù)通信協(xié)議,最初由美國制冷采暖空調(diào)工程師協(xié)會(簡稱ASHRAE)于1995年制定。其最根本的目的是要提供給建筑自動控制系統(tǒng)實現(xiàn)互操作的方法。所謂互操作是指一種能力,可以使得分布的控制系統(tǒng)設(shè)備通過相關(guān)信息的數(shù)字交換,能夠協(xié)調(diào)地工作,從而完成一個共同的目標。BACnet解決了建筑自控系統(tǒng)中存在的多廠商系統(tǒng)和設(shè)備不兼容而難以集成的問題,提供了不同建筑自動控制系統(tǒng)實現(xiàn)互操作的方法,有望成為控制網(wǎng)絡(luò)中的TCP/IP協(xié)議。2003年1月,BACnet成為正式的國際標準(ISO 16484標準)。

BACnet有以下特點:

·開放性:是美國現(xiàn)行的國家標準和ISO國際標準。

·面向?qū)ο螅築ACnet協(xié)議采用面向?qū)ο蟮募夹g(shù),因此具有可擴展性和可復用性。

·互操作性:ASHRAE的BACnet委員會提出了一種新的描述自動控制系統(tǒng)功能性的方法,稱為“互操作域(Interoperability Areas)”,其中規(guī)定了5個互操作域,分別是:數(shù)據(jù)共享、報警和事件管理、時序安排、趨勢記錄、設(shè)備與網(wǎng)絡(luò)管理。

2.1 BACnet體系結(jié)構(gòu)

BACnet以O(shè)SI模型為參考,結(jié)合建筑自動控制領(lǐng)域的實際需求,形成了一個簡化模型。BACnet充分利用現(xiàn)有成熟的網(wǎng)絡(luò)技術(shù),在底層兼容5種網(wǎng)絡(luò)結(jié)構(gòu),降低了開發(fā)成本,同時也利于系統(tǒng)集成。

2.2 應(yīng)用層

應(yīng)用層協(xié)議數(shù)據(jù)單元(APDU)傳送包含在應(yīng)用服務(wù)原語和相關(guān)參數(shù)中的信息。因為BACnet采用簡化的OSI體系結(jié)構(gòu),不包含任何表示層的功能,必須預先定義好通信設(shè)備一致遵守的編碼規(guī)則。BACnet的編碼規(guī)則設(shè)計考慮到了樓宇自動控制體系對簡單化、緊湊化的要求。因此,這個編碼規(guī)則在一些方面與 ISO 8825有所不同。但是仍然允許使用ASN.1對BACnet的APDU進行編碼。

2.3 網(wǎng)絡(luò)層

網(wǎng)絡(luò)層提供網(wǎng)絡(luò)路由功能,使得報文可以被直接傳遞到一個遠程設(shè)備、一個遠程網(wǎng)絡(luò)上的所有設(shè)備、或者所有網(wǎng)絡(luò)上的所有設(shè)備。一個BACnet設(shè)備由一個網(wǎng)絡(luò)號碼和一個MAC地址唯一確定。由于BACnet協(xié)議規(guī)定兩個BACnet設(shè)備之間只能有一條有效路徑,這個限制大大降低了網(wǎng)絡(luò)層的復雜性,簡化了路由算法。

2.4 數(shù)據(jù)鏈路層(MS/TP)

數(shù)據(jù)鏈路層負責將報文從一個設(shè)備傳送到另一個單獨設(shè)備,或者所有本地網(wǎng)設(shè)備。在本文中,只討論MS/TP網(wǎng)絡(luò)。MS/TP使用主/從令牌來控制對總線網(wǎng)絡(luò)的訪問。MS/TP協(xié)議向上為網(wǎng)絡(luò)層提供與ISO 8802-2邏輯鏈路控制協(xié)議一樣的服務(wù);向下使用EIA-485物理層提供的服務(wù)。

3 程序?qū)崿F(xiàn)

3.1 協(xié)議棧軟件結(jié)構(gòu)

在高端機器(如工作站)上,我們可以很好地利用C++語言的面向?qū)ο筇匦裕暾麑崿F(xiàn)整個BACnet協(xié)議棧。但在低端MCU上,程序空間和數(shù)據(jù)空間非常有限,因此需要盡可能簡化協(xié)議棧軟件的體系結(jié)構(gòu)。同時根據(jù)不同型號的DDC,對協(xié)議棧軟件進行剪裁配置,協(xié)議棧軟件中各個模塊之間的接口關(guān)系。在整個結(jié)構(gòu)中最復雜的是應(yīng)用層模塊,包含BACnet對象模塊,基本數(shù)據(jù)類型模塊,APDU解析/分發(fā)模塊和APDU組裝模塊。

3.2 應(yīng)用層模塊

BACnet協(xié)議為了簡化其層次結(jié)構(gòu),使得BACnet應(yīng)用層涵蓋了開放系統(tǒng)互聯(lián)參考模型(OSI)中會話層、表示層和應(yīng)用層的功能。BACnet應(yīng)用層模塊是BACnet應(yīng)用軟件的基礎(chǔ),它實現(xiàn)BACnet協(xié)議應(yīng)用層內(nèi)容,負責提供工作站的各功能模塊與物理設(shè)備直接的通信服務(wù)。根據(jù)應(yīng)用層的功能分析,可以將應(yīng)用層劃分為如下幾個模塊:對象模塊、服務(wù)模塊、基本數(shù)據(jù)類型模塊。

對象模塊定義了BACnet對象。BACnet對象按其功能可分為兩類:一類是采集數(shù)據(jù)的對象,如模擬輸入/輸出對象,這類對象需要訪問設(shè)備硬件;另一類對象是在采集的數(shù)據(jù)基礎(chǔ)上完成復雜功能,如環(huán)對象以及其他實現(xiàn)報警事件功能的對象,這類對象不需訪問硬件。另外,某些對象的屬性(如趨勢登錄對象的緩存器大小屬性)需要設(shè)備廠商根據(jù)DDC型號進行初始配置,協(xié)議棧提供對這些屬性的配置函數(shù)接口。

服務(wù)模塊用于處理報文的分發(fā)、解析和組裝。對于從網(wǎng)絡(luò)層上來的APDU,服務(wù)模塊根據(jù)APDU的類型和服務(wù)選擇參數(shù),調(diào)用相應(yīng)的服務(wù)解析模塊。服務(wù)解析模塊對APDU的信息進行解碼,并根據(jù)需要與DDC中的BACnet對象進行交互。另一方面,DDC會發(fā)出響應(yīng)報文(如讀屬性響應(yīng)),或者主動發(fā)出某些報文(如事件與報警服務(wù)),因此服務(wù)模塊還提供服務(wù)報文組裝的函數(shù)接口。

基本數(shù)據(jù)類型模塊是一個工具類庫,包含對基本數(shù)據(jù)類型的定義及其編、解碼函數(shù)。BACnet包含13種應(yīng)用數(shù)據(jù)類型以及其他基本數(shù)據(jù)類型。 BACnet應(yīng)用數(shù)據(jù)類型可以直接進行編、解碼。BACnet基本數(shù)據(jù)類型對應(yīng)著ASN.1中的復合數(shù)據(jù)類型,它是由BACnet應(yīng)用數(shù)據(jù)類型配合標記按照一定的結(jié)構(gòu)組合而成。因此,基本數(shù)據(jù)類型的編/解碼實際上是按一定的規(guī)則調(diào)用應(yīng)用數(shù)據(jù)類型以及標記的編/解碼方法來實現(xiàn)的。

3.3 網(wǎng)絡(luò)層模塊

對于DDC來說,網(wǎng)絡(luò)層向應(yīng)用層提供一個不確認的無連接數(shù)據(jù)單元傳輸服務(wù)。網(wǎng)絡(luò)層與應(yīng)用層交互的服務(wù)原語是網(wǎng)絡(luò)層數(shù)據(jù)單元請求(N-UNITDATA.request)和網(wǎng)絡(luò)層數(shù)據(jù)單元指示(N-UNITDATA.indication)。其原語參數(shù)如下:

N-UNITDATA.request(destination_address, data, network_priority,data_expecting_reply)

N-UNITDATA.indication(source_address, destination_address,data, network_priority,data_expecting_reply)

當DDC收到來自鏈路層數(shù)據(jù),解析出相應(yīng)的地址信息,并把地址信息和APDU綁定起來存放到一個結(jié)構(gòu)中傳送給應(yīng)用層,這樣當應(yīng)用層需要回復報文時可以得到目標地址。[!--empirenews.page--]

3.4 數(shù)據(jù)鏈路層(MS/TP)模塊

MS/TP是一個主從/令牌傳遞的數(shù)據(jù)鏈路協(xié)議,物理層采用RS-485半雙工通信標準。MS/TP層包含兩個狀態(tài)機,分別是主節(jié)點狀態(tài)機和接收幀狀態(tài)機;接收幀狀態(tài)機負責幀的接收,如是數(shù)據(jù)幀則調(diào)用與網(wǎng)絡(luò)層接口上傳給網(wǎng)絡(luò)層,主節(jié)點狀態(tài)機負責幀(包括數(shù)據(jù)幀和控制幀)的發(fā)送。兩個狀態(tài)機分時實現(xiàn),根據(jù)兩者之間的關(guān)系,接收幀狀態(tài)機可放在主節(jié)點狀態(tài)機中統(tǒng)一調(diào)度。其中,接收模塊實現(xiàn)接收幀狀態(tài)機;發(fā)送模塊實現(xiàn)主節(jié)點狀態(tài)機;串口控制模塊實現(xiàn)串口驅(qū)動與收發(fā)控制,串口讀寫采用中斷方式;

網(wǎng)絡(luò)層接口模塊定義接口及接口函數(shù)調(diào)用模塊,使用服務(wù)原語DL_UNITDATA.request()和DL_UNITDATA.indication()來實現(xiàn)。

4 結(jié)束語

本文提出了BACnet-MS/TP協(xié)議在MCU中的軟件實現(xiàn)方案,解決了BACnet控制器的通訊功能。如果進一步采用嵌入式操作系統(tǒng)實現(xiàn)多任務(wù)處理,配合數(shù)據(jù)采集、控制和組態(tài)模塊,就可以開發(fā)出實用的BACnet控制器。

本站聲明: 本文章由作者或相關(guān)機構(gòu)授權(quán)發(fā)布,目的在于傳遞更多信息,并不代表本站贊同其觀點,本站亦不保證或承諾內(nèi)容真實性等。需要轉(zhuǎn)載請聯(lián)系該專欄作者,如若文章內(nèi)容侵犯您的權(quán)益,請及時聯(lián)系本站刪除。
換一批
延伸閱讀

在工業(yè)物聯(lián)網(wǎng)設(shè)備部署中,Modbus通信故障是導致系統(tǒng)停機的首要原因之一。據(jù)統(tǒng)計,超過60%的現(xiàn)場問題源于通信配置錯誤或數(shù)據(jù)解析異常。本文從嵌入式系統(tǒng)開發(fā)視角,系統(tǒng)闡述Modbus通信調(diào)試的方法論,結(jié)合實際案例解析如何高...

關(guān)鍵字: 嵌入式系統(tǒng) Modbus通信

在嵌入式系統(tǒng)開發(fā)中,看門狗(Watchdog Timer, WDT)是保障系統(tǒng)可靠性的核心組件,其初始化時機的選擇直接影響系統(tǒng)抗干擾能力和穩(wěn)定性。本文從硬件架構(gòu)、軟件流程、安全規(guī)范三個維度,系統(tǒng)分析看門狗初始化的最佳實踐...

關(guān)鍵字: 單片機 看門狗 嵌入式系統(tǒng)

人工智能(AI)和機器學習(ML)是使系統(tǒng)能夠從數(shù)據(jù)中學習、進行推理并隨著時間的推移提高性能的關(guān)鍵技術(shù)。這些技術(shù)通常用于大型數(shù)據(jù)中心和功能強大的GPU,但在微控制器(MCU)等資源受限的器件上部署這些技術(shù)的需求也在不斷增...

關(guān)鍵字: 嵌入式系統(tǒng) 人工智能 機器學習

Zephyr開源項目由Linux基金會維護,是一個針對資源受限的嵌入式設(shè)備優(yōu)化的小型、可縮放、多體系結(jié)構(gòu)實時操作系統(tǒng)(RTOS)。近年來,Zephyr RTOS在嵌入式開發(fā)中的采用度逐步增加,支持的開發(fā)板和傳感器不斷增加...

關(guān)鍵字: 嵌入式系統(tǒng) 軟件開發(fā) 實時操作系統(tǒng) Zephyr項目

在資源受限的嵌入式系統(tǒng)中,代碼執(zhí)行效率和內(nèi)存占用始終是開發(fā)者需要權(quán)衡的核心問題。內(nèi)聯(lián)函數(shù)(inline functions)和宏(macros)作為兩種常見的代碼展開技術(shù),在性能、可維護性和安全性方面表現(xiàn)出顯著差異。本文...

關(guān)鍵字: 內(nèi)聯(lián)函數(shù) 嵌入式系統(tǒng)

在嵌入式系統(tǒng)和服務(wù)器開發(fā)中,日志系統(tǒng)是故障排查和運行監(jiān)控的核心組件。本文基于Linux環(huán)境實現(xiàn)一個輕量級C語言日志庫,支持DEBUG/INFO/WARN/ERROR四級日志分級,并實現(xiàn)按大小滾動的文件輪轉(zhuǎn)機制。該設(shè)計在某...

關(guān)鍵字: C語言 嵌入式系統(tǒng)

在嵌入式系統(tǒng)和底層驅(qū)動開發(fā)中,C語言因其高效性和可控性成為主流選擇,但缺乏原生單元測試支持成為開發(fā)痛點。本文提出一種基于宏定義和測試用例管理的輕量級單元測試框架方案,通過自定義斷言宏和測試注冊機制,實現(xiàn)無需外部依賴的嵌入...

關(guān)鍵字: C語言 嵌入式系統(tǒng) 驅(qū)動開發(fā)

在嵌入式系統(tǒng)與驅(qū)動開發(fā)中,內(nèi)存映射I/O(Memory-Mapped I/O, MMIO)是一種將硬件寄存器映射到處理器地址空間的技術(shù),允許開發(fā)者通過指針直接讀寫寄存器,實現(xiàn)高效、低延遲的硬件控制。本文通過C語言實戰(zhàn)案例...

關(guān)鍵字: 內(nèi)存映射 I/O操作 嵌入式系統(tǒng)

在嵌入式系統(tǒng)開發(fā)和多線程編程中,程序崩潰、內(nèi)存越界等復雜問題常令開發(fā)者困擾。GDB作為強大的調(diào)試工具,其條件斷點和內(nèi)存查看功能可精準定位隱蔽缺陷。本文通過實際案例演示這些高級功能的應(yīng)用,幫助開發(fā)者提升調(diào)試效率。

關(guān)鍵字: GDB 嵌入式系統(tǒng)
關(guān)閉