昌暉儀表從介紹HART協議工作原理、協議物理層、數據鏈路層、應用層、消息結構等基礎知識入手,著重分享HART協議命令格式方面的專業知識。
HART協議最初是由美國Rosemount公司開發,使用FSK技術,在4-20mA信號上疊加一個頻率信號,成功實現了模擬信號和數字信號雙向通訊,而互相之間沒有干擾。HART協議使用OSI標準的第一層物理層、第二層數據鏈路層和第七層應用層。HART協議是一種主從協議,規定了傳輸的物理形式、 消息結構、數據格式包括一系列操作指令,HART協議支持雙主站,一對電纜線上最多可以連接15個從設備。
工作原理
HART協議物理層
1、物理層規定了信號的傳輸方法、傳輸介質。采用Bell202標準的FSK頻移鍵控信號,在低頻的4-20mA模擬信號上疊,加一個頻率數字信號進行雙向數字通信。
2、數字信號的幅度為0.5mA,數據傳輸率為1200bps,1200Hz代表邏輯“1”,2200Hz代表邏輯“0”。數字信號波形如下圖所示:
HART數據鏈路層
1、數據鏈路層規定HART協議幀的格式,可尋址范圍0-15,“0”時,處于4-20mA及數字信號點對點模式,現場儀表與兩個數字通信主設備(也稱作通信設備或主設備)之間采用特定的串行通信,主設備包括PC機或控制室系統和手持通信器。單站操作中,主變量(過程變量)可以以模擬形式輸出,也可以以數字通信方式讀出,以數字方式讀出時,輪詢地址始終為0。也就是說,單站模式時數字信號和4~20mA模擬信號同時有效。
2、“1-15”處于全數字通信狀態,工作在點對多點模式,通信模式有“問答”式、“突發”式(點對點、自動連續地發送信息)。按問答方式工作時的數據更新速率為2-3次/s,按突發方式工作時的數據更新速率為3-4次/s。
3、在本質安全要求下,只使用一個電源,至多能連接15臺現場儀表,每個現場設備可有256個變量,每個信息最大可包含4個變量。這就是所謂的多點(多站)操作模式。這種工作方式尤其適用于遠程監控,如管道系統和油罐儲存場地。
4、采用多點模式,4-20mA的模擬輸出信號不再有效(輸出設在4mA使功耗最小,主要是為變送器供電,各個現場裝置并聯連接),系統以數字通信方式依次讀取并聯到一對傳輸線上的多臺現場儀表的測量值(或其它數據)。如果以這種方式構成控制系統,可以顯著地降低現場布線的費用和減少主設備輸入接口電路,這對于控制系統有重要價值。
5、HART協議根據冗余檢錯碼信息,采用自動重復請求發送機制,消除由于線路噪聲或其他干擾引起的數據誤碼,實現數據無差錯傳送。
6、HART協議的幀格式以8位為一個字節進行編碼,對每個字節加上一個起始位、一個奇偶校驗位和一個停止位以串行方式進行傳輸。通常采用UART(通用異步接收/發送器)來完成字節的傳輸。由于數據的有無和長短不恒定,所以HART數據的長度不能超過25個字節。
HART數據鏈路層-消息結構
如下所示,一條消息包括源地址、目的地址和一個校驗位。每一個應答消息中包括現場設備狀態,用于確保持續通訊的順暢進行。數據位可有可無,視具體情況而定。一般每秒種可以傳輸2-3條消息。
1、PREAMBLE
導言字節,一般是5-20個FF十六進制字節。他實際上是同步信號,各通訊設備可以據此略做調整,保證信息的同步。在開始通訊的時候,使用的是20個FF導言,從機應答0信號時將告之主機他“希望”接收幾個字節的導言,另外主機也可以用59號命令告訴從機應答時應用幾位導言。
2、START
起始字節,他將告之使用的結構為“長”還是“短”、消息源、是否是“突發”模式消息。主機到從機為短結構時,起始位為02,長幀時為82。從機到主機的短結構值為06,長結構值為86。而為“突發”模式的短結構值為01,長結構為81。一般設備進行通訊接收到2個FF字節后,就將偵聽起始位。
3、ADDR
地址字節,他包含了主機地址和從機地址,如前所述,短結構中占1字節,長結構中占5字節。無論長結構還是短結構,因為HART協議中允許2個主機存在,所以我們用首字節的最高位來進行區分,值為1表示第一主機地址,第二主機用0表示。“突發”模式是特例,0,1值將交替出現,也就是說,在該模式下,賦予2個主機的機會均等。次高位為1表示為“突發”模式,短結構用首字節的0-4位表示值為0-15的從機地址,第5,6位賦0;而長結構用后6位表示從機的生產廠商的代碼,第2個字節表示從機設備型號代碼,后3-5個字節表示從機的設備序列號,構成“唯一”標志碼。
4、COM
命令字節,他的范圍為253個,用HEX的0-FD表示。31,127,254,255為預留值。
5、BCNT
數據總長度,他的值表示的是BCNT下一個字節到最后(不包括校驗字節)的字節數。接收設備用他可以鑒別出校驗字節,也可以知道消息的結束。因為規定數據最多為25字節,所以他的值是從0-27。
6、STATUS
狀態字節,他也叫做“響應碼”,顧名思義,他只存在于從機響應主機消息的時候,用2字節表示。他將報告通訊中的錯誤、接收命令的狀態(如:設備忙、無法識別命令等)和從機的操作狀態。
如果我們在通訊過程中發現了錯誤,首字節的最高位(第7位)將置1,其余的7位將匯報出錯誤的細節,而第2個字節全為0。否則,當首字節的最高位為0時,表示通訊正常,其余的7位表示命令響應情況,第2個字節表示場設備狀態的信息。
UART發現的通訊錯誤一般有:奇偶校驗、溢出和結構錯誤等。命令響應碼可以有128個,表示錯誤和警告,他們可以是單一的意義,也可以有多種意義,我們通過特殊命令進行定義、規定。現場設備狀態信息用來表示故障和非正常操作模式。
7、DATA
數據字節,首先我想說明的是并非所有的命令和響應都包含數據字節,他最多不超過25字節(隨著通訊速度的提高,正在要求放寬這一標準)。數據的形式可以是無符號的整數(可以是8,16,24,32 b),浮點數(用IEEE754單精浮點格式)或ASCII字符串,還有預先制定的單位數據列表。具體的數據個數根據不同的命令而定。
8、CHK
奇偶校驗,方式是縱向奇偶校驗,從起始字節開始到奇偶校驗前一個字節為止。另外,每一個字節都有1位的校驗位,這兩者的結合可以檢測出3位的突發錯誤。
HART應用層
HART操作命令處于應用層,包括通用命令、普通命令和特殊命令。
通用命令的范圍從0-30:
0,11:設備識別(廠商、設備類型、版本)
1,2,3:讀測量值
6:置隨選地址
12,13,17,18:讀、寫用戶輸入文本信息
14,15:讀設備信息(傳感器序列號,傳感限,報警操作,范圍,傳輸結構)
16,19:讀、寫最終裝配號
普通命令是從32到126,提供了大多數設備的功能命令。普通命令中的123和126號命令并非“公共”的,他們專用于生產廠家在生產設備時輸入設備的特殊信息,一般用戶是不會改動的,像設備識別號之類。也可以用于直接讀、寫存儲器。
33,61,110:讀測量值
34-37,44,47:設置操作變量(范圍、時限、PV值、傳輸功能)
38:復位“結構變化”標志
39:EPROM控制
40-42:對話功能(固定電流模式、自測、復位)
43,45,46:模擬輸入、輸出整流
48:讀附設備的狀態
49:寫傳感器序列號
50-56:用傳輸變量
57,58:單元信息(標志、描述、數據)
59:寫所需導言號
60,62-70:使用復合模擬輸出
107-109:突發模式控制
常用重要HART協議命令介紹
0,11:用于識別現場設備。我們知道無論采用長結構還是短結構都可以標識現場設備,應答0號命令的信息中就包含了對不同設備的標識;然后,主機建立不同的標志,為隨后的長結構命令做準備。在HART4.0版本及以前,傳輸類型碼分為2字節:一個是生產廠商代碼,另一個是設備類型代碼。而兩個字節還可以節略。到了HART5.0版本就必須使用擴充的代碼表示設備信息,還用ID號代替了最終流水線號。
一個主機通常以0號命令開始通訊,賦予隨選地址0,然后掃描1-15地址,看誰期待操作,顯然由于HART5.0版本后的設備,主機可以使用11號命令,再帶一個全0的廣播地址,外加命令中的標志作為數據,等待著具有相同標志的從機響應,而應答的11號命令等同于0號命令。
HART命令分析
例1:主機到從機
上面是主機到從機發送的一條消息。前5個字節值都為FF,顯然他是導言字節。接著的82起始字節,表示主機到從機發出的長結構的消息。后5個字節 “A6,06,BC,61,4E”是地址字節化為二進制表示如下:
①可見首字節A6的最高位為1表示主機,次高位為0表示非突發模式,后面的38 b表示設備的惟一標號;
②“100110”是生產廠家代碼,值為38,是Rosemount公司的代碼;
③后一字節06是設備型號代碼,06代表的型號是3051C;
④后面的3個字節是設備識別號,本例中的值為12345678;
⑤再接下來的01是命令字節,表示1號命令,即讀取PV值后面的00是表示數據的長度;
⑥本例中無數據,值為0;
⑦最后是校驗字節B0。
例2:從機到主機
①上面表示的是從機到主機的一條消息。本例大部分與例1相似,不同的是數據字節不再為0,其中的06表示單位PSI;
②后面的4個字節是用浮點數表示的值,為5.5。
③并且由于本例是由從機到主機的應答消息,所以存在著狀態位,即本例中的“00 00”,表示“OK”。
例3:突發模式
上面是突發模式發出的一條消息。
①第1個字節81表示突發的長結構模式,與前例中相似的地方我們不再介紹。
②注意到狀態字節“00 60”后的字節“41 3FA000”,他表示的是當前的電流值,計算后是11.9766;
③后面的27表示單位mA,像后面的39表示“%”一樣。
④數據字節中的“42 47 60 00”,“BF 06 60 00”,“41 95 0000”分別表示“SV”,“TV”,“FV”表示方法與PV相同。
⑤經過解釋后的消息可以表示為:“LBTXS/RdAllPv/026/0060/11.9766/mA/11.9766/%/49.8438/psi/-0.524902/%/18.625/D4”。
標準的HART協議命令格式
讀設備序號命令格式說明如下:
由于要確保待發的命令完整的發送,我們特意在標準命令格式序文前加了一個起始位“23”和在校驗位后加了一個結束符“40”。
例如:發送讀取設備序號命令 23 FF FF FF FF FF 02 80 00 00 82 40
命令注解如下表所示:
返回的命令格式如下表所示:
返回的數據為:FF FF FF FF FF 06 80 00 0E 00 40 FE 50 7F 06 05 01 01 08 00 6B 73 3A 30
返回數據命令注解如下表所示:
返回數據6B 73 3A就是這臺設備的序號。
起始位和結束符只在發送命令時做確定命令的完整發送,它不改變命令本身,更不會影響數據的轉換。
發送讀取液位計動態變量命令
命令格式說明如下表所示:
返回的數據為:FF FF FF FF FF 86 90 7F 6B 73 3A 03 15 00 40 40 D4 E0 00 2D 3E 09 1C 2D 2D 3E 92 E3 9E 20 41 D4 B2 B8 01
返回數據命令注解如下表所示:
關于HART協議命令格式的知識昌暉儀表就分享到這里,學習更多自動化儀表知識記得關注昌暉儀表網。
HART協議相關閱讀
HART協議傳輸原理和特點
HART手持通訊器和智能HART變送器通訊不上
無線WirelessHART系統構成及WirelessHART技術應用實例