以無(wú)線HART協(xié)議為基礎(chǔ)的數(shù)據(jù)鏈路層協(xié)議模型設(shè)計(jì)
掃描二維碼
隨時(shí)隨地手機(jī)看文章
無(wú)線HART是一種專(zhuān)門(mén)為過(guò)程控制領(lǐng)域而設(shè)計(jì)的網(wǎng)絡(luò)通信協(xié)議,是HART現(xiàn)場(chǎng)總線在無(wú)線領(lǐng)域的延伸,其通信模型主要由應(yīng)用層、網(wǎng)絡(luò)層、數(shù)據(jù)鏈路層、物理層組成。其中數(shù)據(jù)鏈路層在物理層提供服務(wù)的基礎(chǔ)上向網(wǎng)絡(luò)層提供服務(wù),其最基本的服務(wù)就是將來(lái)自節(jié)點(diǎn)網(wǎng)絡(luò)層的數(shù)據(jù)可靠的傳輸?shù)较噜徆?jié)點(diǎn)的網(wǎng)絡(luò)層。
數(shù)據(jù)鏈路層協(xié)議主要用于建立可靠的點(diǎn)到點(diǎn)的單跳通信。在層型的拓?fù)浣Y(jié)構(gòu)上實(shí)現(xiàn)無(wú)線HART數(shù)據(jù)鏈路層通信協(xié)議,這里所設(shè)計(jì)的算法已成功應(yīng)用于無(wú)線HART單跳網(wǎng)絡(luò)。
1 無(wú)線HART拓?fù)浣Y(jié)構(gòu)
無(wú)線通信網(wǎng)絡(luò)拓?fù)渲饕ㄐ切秃途W(wǎng)狀兩種結(jié)構(gòu),星型單跳網(wǎng)絡(luò)支持高可靠性的網(wǎng)絡(luò)通信,而網(wǎng)狀多跳網(wǎng)絡(luò)支持遠(yuǎn)距離通信,無(wú)線HART協(xié)議支持網(wǎng)狀拓?fù)浣Y(jié)構(gòu)和星型拓?fù)鋬煞N結(jié)構(gòu),用戶可根據(jù)實(shí)際需要選擇星型或網(wǎng)狀拓?fù)浣Y(jié)構(gòu),或者介于二者之間的拓?fù)浣Y(jié)構(gòu)。本文根據(jù)工業(yè)現(xiàn)場(chǎng)的實(shí)際要求,采用星型和網(wǎng)狀結(jié)合的兩層網(wǎng)絡(luò)拓?fù)浣Y(jié)構(gòu),第一層是網(wǎng)狀結(jié)構(gòu),由網(wǎng)關(guān)和路由設(shè)備構(gòu)成;第二層是星型結(jié)構(gòu),由路由設(shè)備以及現(xiàn)場(chǎng)設(shè)備構(gòu)成。其中,網(wǎng)關(guān)負(fù)責(zé)無(wú)線HART網(wǎng)絡(luò)與工廠內(nèi)的其他網(wǎng)絡(luò)的協(xié)議轉(zhuǎn)換與數(shù)據(jù)映射。簇首作為網(wǎng)絡(luò)管理者的代理,負(fù)責(zé)構(gòu)建由現(xiàn)場(chǎng)設(shè)備和路由設(shè)備構(gòu)成的星型結(jié)構(gòu),監(jiān)測(cè)星型結(jié)構(gòu)性能;作為安全管理者代理,負(fù)責(zé)合并及轉(zhuǎn)發(fā)簇成員的數(shù)據(jù);負(fù)責(zé)轉(zhuǎn)發(fā)其他簇首的數(shù)據(jù)。簇成員負(fù)責(zé)獲取現(xiàn)場(chǎng)數(shù)據(jù)并發(fā)送到簇首。
2 無(wú)線HART數(shù)據(jù)鏈路層協(xié)議
無(wú)線HART數(shù)據(jù)鏈路層包括邏輯鏈路層協(xié)議(LLC)和介質(zhì)訪問(wèn)控制層協(xié)議(MAC),數(shù)據(jù)鏈路層主要定義數(shù)據(jù)幀格式,介質(zhì)訪問(wèn)控制層主要負(fù)責(zé)管理和協(xié)調(diào)通信資源的分配和使用。
2.1 邏輯鏈路層
2.1.1 幀格式
其中,地址指示為無(wú)線HART網(wǎng)絡(luò)支持兩種地址格式,一種用于局域網(wǎng)的短地址,一種用于廣域網(wǎng)的長(zhǎng)地址。其中短地址由16位二進(jìn)制組成,用戶可自行定義:長(zhǎng)地址由64位二進(jìn)制數(shù)組成,64位中高24位表示設(shè)備ID,低24位表示0UI地址(由IEEE STD 802.15.4協(xié)議分配,其中無(wú)線HART的OUI地址為0x00181E),中間16位表示設(shè)備類(lèi)型(設(shè)備生產(chǎn)廠家確定);時(shí)序號(hào)為絕對(duì)時(shí)序號(hào)的最低8位;網(wǎng)絡(luò)ID為無(wú)線HART根據(jù)網(wǎng)絡(luò)應(yīng)用類(lèi)型確定的網(wǎng)絡(luò)ID號(hào):數(shù)據(jù)包指示為數(shù)據(jù)包指示由8位二進(jìn)制數(shù)組成,低3位表示數(shù)據(jù)包的類(lèi)型,第4位表示網(wǎng)絡(luò)密鑰,第5、6位表示數(shù)據(jù)包的優(yōu)先級(jí)。
無(wú)線HART數(shù)據(jù)包分為ACK、Advertise、Keep alive、Disconnect、Data5種類(lèi)型,分為命令、過(guò)程數(shù)據(jù)、一般、報(bào)警4種優(yōu)先級(jí)。發(fā)送數(shù)據(jù)來(lái)自網(wǎng)絡(luò)層并需要發(fā)送的數(shù)據(jù)。MIC為網(wǎng)絡(luò)授權(quán)檢測(cè)。CRC為數(shù)據(jù)完整性檢測(cè)。
2.2 MAC協(xié)議分析
無(wú)線HART鏈路調(diào)度主要通過(guò)以鄰居表位核心的五張表實(shí)現(xiàn),其中超幀表記錄超幀的分配和使用狀態(tài);鏈路表記錄鏈路(通信資源)的分配和使用狀態(tài);鄰居表記錄著節(jié)點(diǎn)本身的鄰居節(jié)點(diǎn)(處于節(jié)點(diǎn)單挑通信范圍之類(lèi)的節(jié)點(diǎn)稱為該節(jié)點(diǎn)的鄰居節(jié)點(diǎn));路由表記錄著多跳網(wǎng)絡(luò)中的路由信息;緩沖表存儲(chǔ)著待發(fā)送的數(shù)據(jù)同時(shí)記錄優(yōu)先級(jí)以及等待時(shí)間等狀態(tài)。
無(wú)線HART網(wǎng)絡(luò)中每一個(gè)節(jié)點(diǎn)都支持多個(gè)超幀,網(wǎng)絡(luò)管理者完成超幀的構(gòu)建和維護(hù),并根據(jù)網(wǎng)絡(luò)需求進(jìn)行時(shí)隙鏈路的分配。每一個(gè)超幀包含一定數(shù)量的時(shí)隙。超幀一旦建立,網(wǎng)絡(luò)管理者為該超幀增加、刪除、優(yōu)化鏈路時(shí)隙。一旦分配時(shí)隙,超幀應(yīng)該使能從而允許鏈路的調(diào)度。鏈接表中一個(gè)鏈接表示一個(gè)通信機(jī)會(huì),通過(guò)鏈接表實(shí)現(xiàn)目標(biāo)鄰居節(jié)點(diǎn)的識(shí)別,時(shí)隙、超幀序列號(hào)、發(fā)送接收方向、鏈路類(lèi)別、信道。鄰居表維護(hù)并記錄著一組能與節(jié)點(diǎn)直接通信(單跳)鄰居節(jié)點(diǎn),通過(guò)鄰居表可查詢鄰居節(jié)點(diǎn)地址、時(shí)鐘源標(biāo)志、通信數(shù)據(jù)量、節(jié)點(diǎn)最后通信時(shí)間、通信節(jié)點(diǎn)狀態(tài)、節(jié)點(diǎn)通信優(yōu)先級(jí)。圖表提供上行和下行多跳網(wǎng)絡(luò)的路由信息,其元素主要由多個(gè)路由路徑節(jié)點(diǎn)信息,圖標(biāo)主要由網(wǎng)絡(luò)管理者實(shí)現(xiàn)管理。緩沖表主要用于節(jié)點(diǎn)存儲(chǔ)待發(fā)送數(shù)據(jù),記錄著數(shù)據(jù)包的ID、優(yōu)先級(jí)、目的地址類(lèi)型、保存時(shí)間。
3 無(wú)線HART數(shù)據(jù)鏈路層設(shè)計(jì)與實(shí)現(xiàn)
3.1 通信資源分配
無(wú)線HART網(wǎng)絡(luò)采用頻分多址(FDMA)和時(shí)分多址(TDMA)混合的信道訪問(wèn)機(jī)制。無(wú)線HART協(xié)議采用集中式資源分配方式,即通信資源由網(wǎng)絡(luò)管理器統(tǒng)一分配。無(wú)線HART網(wǎng)絡(luò)工作于2.4 GHz射頻頻段。為了保證系統(tǒng)能在非常惡劣的工業(yè)現(xiàn)場(chǎng)通信環(huán)境中實(shí)時(shí)、可靠的工作,無(wú)線HART
采用TDMA和FDMA的混合信道分文機(jī)制。TDMA技術(shù)將每一個(gè)時(shí)隙復(fù)用到2.4 GHz的16個(gè)信道上,使系統(tǒng)的有效帶寬提高了16倍。
為了進(jìn)行資源分配,首先建立通信資源矩陣??v坐標(biāo)表示信道頻率,橫坐標(biāo)表示時(shí)隙,矩陣中的每個(gè)單元表示一個(gè)通信資源,每個(gè)通信資源用頻率和時(shí)隙的二元組來(lái)唯一標(biāo)示。每個(gè)矩陣元素包含如下通信資源和鏈路的信息:占用標(biāo)志位,鏈路的源節(jié)點(diǎn)、鏈路的目的節(jié)點(diǎn)、鏈路的類(lèi)型。矩陣中每個(gè)元素都被初始化為0,當(dāng)某個(gè)通信資源已經(jīng)被分配,矩陣中對(duì)應(yīng)元素的占用標(biāo)志位被置為1,并填充相應(yīng)的通信資源信息。
無(wú)線HART網(wǎng)絡(luò)中,通信資源有NORMAL、ADVERTIS、JOIN和DISCOVERY 4種類(lèi)型,NORMAL通信資源主要用于過(guò)程數(shù)據(jù)和管理命令的傳輸,ADVERTISE通信資源用于廣播網(wǎng)絡(luò)信息以方便新節(jié)點(diǎn)加入網(wǎng)絡(luò),JOIN通信資源用于新設(shè)備加入,DISCOVERY通信資源用于鄰居發(fā)現(xiàn)。其中NORM-AL類(lèi)型的通信資源與路由路徑相關(guān),其他的資源都與路由路徑無(wú)關(guān),重點(diǎn)考慮NORMAL通信資源的分配。NORMAL通信資源分配以所建立的拓?fù)浣Y(jié)構(gòu)為基礎(chǔ),以圖表和鄰居表為分配圖,根據(jù)所建立的兩層結(jié)構(gòu)進(jìn)行兩層分配。
1)簇內(nèi)通信 簇內(nèi)所有的通信節(jié)點(diǎn)的通信資源位于矩陣的同一行,并按照時(shí)隙進(jìn)一步分配。對(duì)于下行通信,每一資源的源地址為簇首節(jié)點(diǎn),目的地址為節(jié)點(diǎn)地址;對(duì)于上行通信,每一分資源的源地址為節(jié)點(diǎn)地址,目的地址為簇首節(jié)點(diǎn)。
2)簇間通信 簇間通信主要是負(fù)責(zé)簇首與網(wǎng)關(guān)之間的通信,而其資源主要占據(jù)矩陣中兩行,其中上行網(wǎng)絡(luò)通信資源,一行為下行網(wǎng)絡(luò)通信資源。在資源不滿足的情況下,可以根據(jù)資源分配的具體情況進(jìn)行拓展,但必須以雙行網(wǎng)絡(luò)為前提,而且上行還有下行資源不能占據(jù)同一個(gè)時(shí)隙。分配的路徑以圖表和鄰居表為分配路徑,進(jìn)行上行和下行節(jié)點(diǎn)的分配。
3.2 時(shí)間同步實(shí)現(xiàn)
整個(gè)網(wǎng)絡(luò)的時(shí)鐘同步對(duì)于無(wú)線HART的TDMA通信是十分必要的,設(shè)備間的時(shí)鐘偏移是不可避免的,TDMA網(wǎng)絡(luò)節(jié)點(diǎn)實(shí)現(xiàn)全網(wǎng)完全同步并不現(xiàn)實(shí),而且精確度越高能量消耗就越大,因此無(wú)線HART節(jié)點(diǎn)需要在精確度與能耗之間取得平衡,在滿足網(wǎng)絡(luò)TDMA時(shí)隙通信要求的基礎(chǔ)上盡可能的降低能耗。
無(wú)線HART為工業(yè)環(huán)境的無(wú)線通信協(xié)議,其對(duì)穩(wěn)定性、可靠性有著比一般通信網(wǎng)絡(luò)更高的要求;而無(wú)線HART作為一個(gè)mesh的無(wú)線通信網(wǎng)需要實(shí)現(xiàn)全局的時(shí)間同步,但是由于硬件設(shè)備以及能量等問(wèn)題,使得傳統(tǒng)的有線時(shí)間同步的算法以及常規(guī)的WSN時(shí)間同步算法無(wú)法在無(wú)線HART中實(shí)現(xiàn)。為此以最小能耗為設(shè)計(jì)目標(biāo),設(shè)計(jì)一個(gè)多層次、全局、不問(wèn)斷的同步策略應(yīng)用簡(jiǎn)易但有效的同步算法實(shí)現(xiàn)無(wú)線HART-TDMA時(shí)間同步。圖1為相鄰節(jié)點(diǎn)通信。
圖1中描述了無(wú)線HART節(jié)點(diǎn)A與節(jié)點(diǎn)B間的一次通信,節(jié)點(diǎn)A在T1時(shí)刻發(fā)送一個(gè)數(shù)據(jù)包給節(jié)點(diǎn)B,節(jié)點(diǎn)B在T2時(shí)刻接收到A所發(fā)送的數(shù)據(jù)包,節(jié)點(diǎn)B在T3數(shù)據(jù)包發(fā)送一個(gè)應(yīng)答數(shù)據(jù)包,節(jié)點(diǎn)A在T4時(shí)刻接收到B所發(fā)送的應(yīng)答數(shù)據(jù)包。T1、T2、T3,T4為節(jié)點(diǎn)時(shí)鐘,四者存在以下關(guān)系:
式中,
表示A到B的時(shí)間延遲,
表示B到A的時(shí)間延遲。在整個(gè)通信過(guò)程中,延遲主要發(fā)送在層與層間數(shù)據(jù)傳送以及點(diǎn)與點(diǎn)之間數(shù)據(jù)傳輸過(guò)程中。式(1)中
以及式(2)中
分別表示T1時(shí)刻節(jié)點(diǎn)A對(duì)節(jié)點(diǎn)B的時(shí)鐘漂移和T4時(shí)刻節(jié)點(diǎn)A對(duì)節(jié)點(diǎn)B的時(shí)鐘漂移,盡管由于環(huán)境因數(shù)(如溫度、壓力等)的影響,時(shí)鐘漂移每一個(gè)時(shí)刻都在發(fā)生,二者并不完全相等,但一般情況二者一次通信進(jìn)行的時(shí)間間隔較短,可以認(rèn)為二者幾乎相等。同樣假定
和
相等。
通過(guò)式(1)和式(2)可得出延遲時(shí)間以及漂移時(shí)間:
節(jié)點(diǎn)將根據(jù)式(3)和式(4)所求出的延遲時(shí)間以及漂移時(shí)間進(jìn)行時(shí)鐘的主動(dòng)同步與被動(dòng)同步。
時(shí)鐘同步由兩步驟完成,首先選取時(shí)鐘源,網(wǎng)絡(luò)管理節(jié)點(diǎn)作為時(shí)鐘服務(wù)器,并選取若干節(jié)點(diǎn)作為網(wǎng)絡(luò)時(shí)鐘源:然后在同步過(guò)程,每一個(gè)節(jié)點(diǎn)通過(guò)與時(shí)鐘源進(jìn)行被動(dòng)或主動(dòng)的時(shí)鐘同步。其中,主動(dòng)同步為當(dāng)高層節(jié)點(diǎn)向低層節(jié)點(diǎn)發(fā)送數(shù)據(jù)時(shí),低層節(jié)點(diǎn)記錄數(shù)據(jù)包實(shí)際到達(dá)時(shí)間與計(jì)算達(dá)到時(shí)間的偏移調(diào)整本地時(shí)鐘;被動(dòng)同步為當(dāng)?shù)蛯庸?jié)點(diǎn)向高層節(jié)點(diǎn)發(fā)送數(shù)據(jù)時(shí),底層節(jié)點(diǎn)等待并接收高層節(jié)點(diǎn)的應(yīng)答數(shù)據(jù)包,并利用應(yīng)答數(shù)據(jù)包中所包含的時(shí)鐘偏移信息進(jìn)行時(shí)鐘調(diào)整。
高層節(jié)點(diǎn)發(fā)送邀請(qǐng)數(shù)據(jù)包,待加入節(jié)點(diǎn)接收邀請(qǐng)數(shù)據(jù)包并完成一次被動(dòng)同步過(guò)程;高層節(jié)點(diǎn)發(fā)送偵聽(tīng)數(shù)據(jù)包,判斷臨近節(jié)點(diǎn)是否處于網(wǎng)絡(luò)并完成一次被動(dòng)同步過(guò)程;低層節(jié)點(diǎn)通過(guò)接收一次數(shù)據(jù)包完成一次被動(dòng)同步過(guò)程;底層節(jié)點(diǎn)通過(guò)接收高層節(jié)點(diǎn)的應(yīng)答數(shù)據(jù)包完成一次主動(dòng)同步過(guò)程。整個(gè)同步網(wǎng)絡(luò)低層同步高層,整個(gè)網(wǎng)絡(luò)時(shí)鐘以根時(shí)鐘源為基準(zhǔn)實(shí)現(xiàn)整個(gè)網(wǎng)絡(luò)的時(shí)鐘同步。根時(shí)鐘源可根據(jù)實(shí)際情況采用可行方
法(如GPRS等)與理想時(shí)鐘同步。
3.3 數(shù)據(jù)鏈路調(diào)度實(shí)現(xiàn)
3.3.1 調(diào)度
數(shù)據(jù)鏈路層在實(shí)現(xiàn)無(wú)線HART網(wǎng)絡(luò)全網(wǎng)時(shí)鐘同步的基礎(chǔ)上,主要負(fù)責(zé)鏈路的調(diào)度,控制著數(shù)據(jù)的發(fā)送和接收,從而保證網(wǎng)絡(luò)的正常通信。鏈路調(diào)度通過(guò)查詢活動(dòng)超幀表、鏈接表、數(shù)據(jù)等表從而決定下一個(gè)將要通信的時(shí)隙。所有的接收鏈接將會(huì)被允許通信。網(wǎng)絡(luò)層發(fā)出發(fā)送數(shù)據(jù)請(qǐng)求,若待定表中已無(wú)空余空間,調(diào)用失敗,否則數(shù)據(jù)包進(jìn)入待定表中的同時(shí)查詢等待表是否存在相同目的地址的高優(yōu)先級(jí)數(shù)據(jù)包,若不存在,數(shù)據(jù)包進(jìn)入等待表中等待發(fā)送,否則保存在待定表中,待發(fā)送表根據(jù)目的地址的類(lèi)型進(jìn)行查詢,鄰居地址查詢鄰居表、圖地址查詢圖表的基礎(chǔ)上再查詢鄰居表,最終鄰居地址、圖地址、廣播地址、代理地址的4種都將查詢鏈路表獲得相應(yīng)鏈路并設(shè)置為發(fā)送類(lèi)型(TX=1),之后進(jìn)入等待狀態(tài)。
當(dāng)ASN到達(dá)相應(yīng)時(shí)隙,數(shù)據(jù)包根據(jù)TXRX的值進(jìn)入發(fā)送、接收、休眠狀態(tài)。如圖2所示。
3.3.2 狀態(tài)機(jī)
圖3為T(mén)DMA狀態(tài)機(jī),該狀態(tài)機(jī)建立在邏輯鏈路層所建立的四張調(diào)度表以及調(diào)度機(jī)制的基礎(chǔ)上,TDMA狀態(tài)機(jī)開(kāi)始于節(jié)點(diǎn)加入無(wú)線HART網(wǎng)絡(luò),加入的同時(shí)建立狀態(tài)機(jī)所需要的超幀表、圖表、鏈路表,開(kāi)始從鄰居節(jié)點(diǎn)接收數(shù)據(jù)并以此為基礎(chǔ)建立鄰居表。節(jié)點(diǎn)維護(hù)存儲(chǔ)著一列待發(fā)送數(shù)據(jù)包,當(dāng)一個(gè)發(fā)送時(shí)隙發(fā)生,節(jié)點(diǎn)將會(huì)嘗試發(fā)送數(shù)據(jù)包。發(fā)送數(shù)據(jù)包包括發(fā)送數(shù)據(jù)包和接收ACK應(yīng)答兩個(gè)過(guò)程。當(dāng)一個(gè)發(fā)送時(shí)隙產(chǎn)生,進(jìn)入發(fā)送狀態(tài)。成功發(fā)送一個(gè)廣播地址的數(shù)據(jù)包在數(shù)據(jù)包發(fā)送之后結(jié)束,并從等待表中刪除。成功發(fā)送一個(gè)非廣播地址的數(shù)據(jù)包,節(jié)點(diǎn)將等待ACK應(yīng)答數(shù)據(jù)包,ACK數(shù)據(jù)包將表明數(shù)據(jù)包是成功接收還是出現(xiàn)接收錯(cuò)誤。如果目的地址是廣播地址,將不會(huì)有ACK應(yīng)答數(shù)據(jù)包,發(fā)送完成并進(jìn)入空閑狀態(tài)進(jìn)行調(diào)度表的更新;成功發(fā)送一個(gè)非廣播地址數(shù)據(jù)包,進(jìn)行數(shù)據(jù)完整性和權(quán)限完整性檢驗(yàn),TDMA狀態(tài)機(jī)進(jìn)入等待ACK狀態(tài),如果無(wú)ACK應(yīng)答表明發(fā)送失敗。如果是一個(gè)共享鏈接,將啟動(dòng)重發(fā)機(jī)制,若最終依然失敗,進(jìn)入空閑狀態(tài)更新調(diào)度表。如果一個(gè)ACK應(yīng)答數(shù)據(jù)包被成功接收,節(jié)點(diǎn)根據(jù)ACK確定發(fā)送是否成功,若發(fā)送成功,進(jìn)入空閑狀態(tài)更新調(diào)度表。如果顯示發(fā)送錯(cuò)誤,將啟動(dòng)重發(fā)機(jī)制。所有的接收鏈接都將在沒(méi)有發(fā)送請(qǐng)求的基礎(chǔ)被全部服務(wù),節(jié)點(diǎn)接收數(shù)據(jù)有三種可能:1)數(shù)據(jù)包的目的地址就是節(jié)點(diǎn)地址;2)數(shù)據(jù)包目的地址是路由地址;3)數(shù)據(jù)包目的地址非以上兩種情況。每一次接收數(shù)據(jù),鄰居表都將被更新維護(hù)。
4 結(jié)論
以無(wú)線HART協(xié)議為基礎(chǔ)根據(jù)工業(yè)現(xiàn)場(chǎng)的特點(diǎn),設(shè)計(jì)并實(shí)現(xiàn)了數(shù)據(jù)鏈路層協(xié)議模型。在以無(wú)線HART適配器節(jié)點(diǎn)為平臺(tái)的實(shí)驗(yàn)結(jié)果表明,模型所實(shí)現(xiàn)的時(shí)鐘同步精度達(dá)到30μs,滿足工業(yè)現(xiàn)場(chǎng)要求的前提下降低了節(jié)點(diǎn)的能耗,以模型為基礎(chǔ)的無(wú)線HART節(jié)點(diǎn)成功組建形成無(wú)線HART單跳網(wǎng)絡(luò)。