HART協(xié)議的服務(wù)流程詳解
對(duì)于HART協(xié)議物理層和HART數(shù)據(jù)鏈路層的相關(guān)規(guī)范我們已經(jīng)介紹過了。那么接下來(lái)我們將要對(duì)HART協(xié)議的服務(wù)內(nèi)容進(jìn)行一下講解。通過下面的講解,大家將會(huì)對(duì)整個(gè)HART協(xié)議的一些基本工作內(nèi)容,服務(wù)流程有一個(gè)系統(tǒng)地掌握。
HART協(xié)議的服務(wù)
HART協(xié)議所提供的服務(wù)包括:
“至少一次” 可靠地在同等實(shí)體之間的交互服務(wù)。該服務(wù)的設(shè)計(jì)不提供雙重檢測(cè)。
可選擇的,可靠的,同等實(shí)體之間提供端對(duì)端分段和雙重檢測(cè)的交互服務(wù)。
設(shè)備標(biāo)志和設(shè)備組態(tài)的管理服務(wù)。
為實(shí)現(xiàn)服務(wù)而定義的原語(yǔ)分為兩個(gè)部分,一部分在正常使用過程中與用戶數(shù)據(jù)相關(guān)的稱為用戶原語(yǔ);另一部分關(guān)于初始化協(xié)議,如建立地址,建立地址之間和同等實(shí)體之間唯一聯(lián)系的原語(yǔ)稱為管理原語(yǔ)。協(xié)議實(shí)現(xiàn)時(shí)必須支持以上提到的原語(yǔ)。
1 用戶接口原語(yǔ)
HART協(xié)議支持三種數(shù)據(jù)傳輸服務(wù)。
傳送(Transmit)服務(wù)用來(lái)提供送消息和接收響應(yīng)的基本能力。在此不作詳細(xì)分析。
傳輸(Transfer)服務(wù)使用每一個(gè)消息中一系列的域支持雙重檢測(cè)和消息分段。傳輸服務(wù)提供一種可靠的主-從設(shè)備之間雙向消息傳輸。實(shí)現(xiàn)傳輸服務(wù)的用戶接口原語(yǔ)功能是實(shí)現(xiàn)HART協(xié)議的重要任務(wù)之一。
循環(huán)服務(wù)提供重復(fù)廣播數(shù)據(jù)的功能,是針對(duì)HART協(xié)議BURST模式的設(shè)備功能的實(shí)現(xiàn)。
這些服務(wù)由主設(shè)備初始化。從設(shè)備和burst模式設(shè)備用來(lái)作這些服務(wù)的回答者。
2 傳輸服務(wù)
傳輸服務(wù)用來(lái)支持可靠的數(shù)據(jù)連接以防止數(shù)據(jù)丟失或重復(fù)的應(yīng)用(如上裝/下載,塊傳送等)。由于HART鏈路層協(xié)議的主/從關(guān)系,傳輸服務(wù)的執(zhí)行完全由主設(shè)備控制。從設(shè)備僅行使響應(yīng)功能。傳輸服務(wù)幀包含了用來(lái)分段、雙重檢測(cè)/釋放以及丟失幀檢測(cè)的序列號(hào)區(qū)域。幀必須按順序接收。傳輸服務(wù)的安裝和控制都通過發(fā)送控制請(qǐng)求來(lái)實(shí)現(xiàn)。
有八條用戶原語(yǔ)支持傳輸服務(wù)。其中四條用作控制,另四條在使用服務(wù)時(shí)用作數(shù)據(jù)傳送。此外,某些參數(shù)是可選的,不必出現(xiàn)在所有的原語(yǔ)調(diào)用中。這些參數(shù)在原語(yǔ)定義中都由方括號(hào)(“[”,“]”)括起來(lái)。下面只分析4條數(shù)據(jù)傳輸原語(yǔ)。
Transfer.request(address,sequence no,[data]):本原語(yǔ)由主設(shè)備HART協(xié)議用戶使用向給定地址上的從設(shè)備實(shí)體請(qǐng)求傳輸信息。主設(shè)備用戶負(fù)責(zé)所有參數(shù)的合法性。協(xié)議應(yīng)用者將在它的能力范圍內(nèi)對(duì)參數(shù)進(jìn)行有限的合法性校驗(yàn)(例如地址超出范圍)。
Transfer.indicate(address,sequence no,[data]):本原語(yǔ)由數(shù)據(jù)鏈路層激發(fā),通知從設(shè)備HART協(xié)議用戶從對(duì)等協(xié)議實(shí)體中收到了一條合法的傳送消息。從設(shè)備用戶可以接收隨后的內(nèi)容和可選的數(shù)據(jù)(如果有)。
Transfer.response(status,sequence,[data]):本原語(yǔ)由從設(shè)備用戶執(zhí)行,響應(yīng)進(jìn)入的transfer.indicate。這種機(jī)制用來(lái)立即返回先前指示的狀態(tài),并可由從設(shè)備向主設(shè)備返回可選的控制數(shù)據(jù)參數(shù)。
Transfer.confirm(local status,response code,sequence no,[data]):本原語(yǔ)向主設(shè)備協(xié)議用戶返回先前的transfer.request的執(zhí)行結(jié)果。***收到的從設(shè)備的響應(yīng)(如果有)將與一個(gè)狀態(tài)字一起返回。該狀態(tài)說(shuō)明了請(qǐng)求的成功或失敗。local狀態(tài)字節(jié)是主設(shè)備通訊任務(wù)的狀態(tài)。序列號(hào)由從設(shè)備設(shè)置。
由上面可以看出,主設(shè)備HART協(xié)議用戶,即上位機(jī),主要涉及到的是request和confirm原語(yǔ),而不用實(shí)現(xiàn)indicate和response原語(yǔ)。在實(shí)際的程序?qū)崿F(xiàn)中,體現(xiàn)為一條主-從命令的發(fā)送和從設(shè)備返回的從-主的接收過程。