HART報文詳解

杜衡老师發表於2024-04-06

1.簡介

HART(Highway Addressable Remote Transducer可定址遠端感測器高速通道)協議,主要用於工業自動化領域的通訊協議,專為傳送和接收數字資訊而設計,同時也支援模擬訊號(如4-20 mA訊號)的傳輸。這種設計使得HART裝置能夠同時傳輸模擬訊號和數字資料,從而提供了更加靈活和強大的通訊能力。

標準的HART傳輸是疊加在4-20mA訊號上的FSK(移動鍵控)訊號,替代方案是C8PSK(同調8路相移鍵控)訊號,代替方案提高了HART的數字傳輸速率。此外還有一些基於RS-485、IP、TDMA的HART通訊方式,在此不再贅述。

本文僅討論HART FSK。

2.報文格式

2.1 HART位元組

因為HART協議有自己獨特的物理層通訊方式,所以其在資料鏈路層上的傳輸採用一個被稱為HART位元組組的傳輸方式,每次傳輸會傳送一個11位的HART位元組,多個HART位元組中的資料部分組合成一個有效的HART資料幀。(這個過程可以不準備的類比成一長串資料透過多個TCP/IP資料包傳送的過程)

HART位元組的格式如下:

用途 開始位 HART位元組 奇校驗位 停止位
長度 1bit 8bit 1bit 1bit
描述 固定為0,表示開始 HART資料,從LSB(最低有效位)開始,以MSB(最高有效位)結束。 用於校驗資料 固定為1,表示結束

2.2HART報文格式

結構如下:

用途 長度 描述
前導碼 5-20位元組 5-20個0xFF,用於傳輸的開始,
起始位元組 1位元組 用來標識資料包的起始位置
地址 1或5位元組 包含了主機地址和從機地址,短幀中佔1位元組,長幀中佔5位元組
擴充套件 0-3位元組 用於潛在的擴充套件,長度由其實位元組指示
命令 1位元組 表示這條資料的作用
位元組計數 1位元組 狀態和資料部分的大小,單位:位元組
狀態 2位元組 只存在於從機響應主機的訊息,報告錯誤和狀態
資料 0-253位元組 不是所有的命令都有資料位元組,用於存放資料
校驗和 1位元組 縱向奇偶校驗,用於檢測錯誤

2.2.1 前導碼

前導碼出現在每條訊息的開頭。前導碼由一系列相同的位元組組成,通常是連續的"FF"位元組(在二進位制中為11111111)。前導碼的主要作用包括幾個方面:

  • 同步:前導碼為接收裝置提供了同步訊號,幫助接收裝置確定資料幀的開始位置。透過識別這一系列重複的模式,接收端的解碼器可以與傳送端的資料流同步,從而正確地解讀後續傳來的資訊(比如起始位、地址、命令、資料等)。

  • 清除線路:連續的前導碼有助於清除通訊線路上的任何噪聲或干擾,確保資料傳輸的清晰度和準確性。這種"清道"的作用對於在現場環境中執行的工業裝置尤其重要,因為這些環境往往充滿電磁干擾。

  • 接收器準備:前導碼還給接收裝置足夠的時間來準備接收即將到來的資料。在HART通訊中,接收裝置(如處理器或控制器)需要調整其接收機制以準確解碼即將到來的資訊。前導碼的存在為這種調整提供了緩衝時間。

2.2.2 起始位元組

結構:

用途 地址型別 擴充套件位元組數 物理層型別 幀型別
長度 1bit 2bit 2bit 3bit
描述 0:輪詢 - 位元組地址(短幀)
1:唯一 - 位元組地址(長幀)
通常為00 00:非同步(例如,FSK)
11:同步(例如,C8PSK
001:突發幀響應
010:主機到現場裝置
110:現場裝置到主機

2.2.3 地址

地址部分,1位元組為短幀,5位元組為長幀。

短幀:

用途 主機序 突發模式 裝置地址
長度 1bit 1bit 2bit 4bit
描述 1:第一主機
0:第二主機
1:是
0:否
始終為00

長幀:

用途 主機序 突發模式 擴充套件的裝置型別 裝置ID
長度 1bit 1bit 14bit 24bit
描述 1:第一主機
0:第二主機
1:是
0:否

2.2.4 擴充套件

擴充套件部分主要為未來預留,它主要規劃了以下方面的作用:

  • 裝置識別和分類:擴充套件欄位允許對連線到系統的裝置進行更詳細的識別和分類。透過這些欄位,系統可以識別裝置的型別、製造商和其他相關資訊。這對於系統配置和故障排除非常有用。
  • 增強的裝置資訊:一些擴充套件欄位用於儲存有關裝置效能、功能和配置選項的額外資訊。這使得操作者可以更準確地控制裝置,同時最佳化系統的整體效能。
  • 改進的診斷能力:擴充套件欄位可以包含有關裝置狀態和健康的詳細資訊,使得對裝置進行遠端監控和診斷成為可能。這有助於提前發現問題,減少系統停機時間。
  • 更高的資料傳輸效率:透過利用擴充套件欄位傳輸資料,HART協議能夠在保持向後相容的同時,提供更高的資料傳輸效率和更大的資料容量。
  • 支援新技術和功能:隨著過程控制技術的發展,新的監測和控制需求不斷出現。擴充套件欄位為支援這些新技術和功能提供了可能,確保了HART協議的長期適用性和靈活性。

2.2.5 命令

命令分為三種類別:通用、常用實踐(也譯作常見做法)、裝置特定(專用命令),通用命令即所有采用HART協議的裝置都要遵循的,常用實踐為常見裝置都要遵循的,特備特定為針對某些廠家或型號的裝置才有的命令。

機翻自HART通訊基金會官網

命令編號 命令描述 型別
0 讀取裝置ID 通用
1 讀取主要變數 通用
2 讀取回路電流和量程百分比 通用
3 讀取動態變數和迴路電流 通用
6 寫入輪詢地址 通用
7 讀取回路配置 通用
8 讀取動態變數分類 通用
9 帶狀態讀取裝置變數 通用
11 讀取與標籤關聯的唯一識別符號 通用
12 讀取資訊 通用
13 讀取標籤、描述符、日期 通用
14 讀取主要變數感測器資訊 通用
15 讀取裝置資訊 通用
16 讀取最終組裝號 通用
17 寫資訊 通用
18 寫標籤、描述符、日期 通用
19 寫最終組裝號 通用
20 讀取長標籤 通用
21 讀取與長標籤關聯的唯一識別符號 通用
22 寫長標籤 通用
38 重置配置更改標誌 通用
48 讀取額外的裝置狀態 通用
33 讀取裝置變數 常用實踐
34 寫主要變數阻尼值 常用實踐
35 寫主要變數量程值使用命令35寫入的資料將更新選單中的4mA和20mA設定 常用實踐
36 設定主要變數上限量程值 常用實踐
37 設定主要變數下限量程值 常用實踐
40 進入/退出固定電流模式 常用實踐
41 執行自檢 常用實踐
44 寫主要變數單位 常用實踐
45 調整迴路電流零點 常用實踐
46 調整迴路電流增益 常用實踐
47 寫主要變數傳遞函式 常用實踐
54 讀取裝置變數資訊 常用實踐
59 寫響應前導符數量 常用實踐
71 鎖定裝置 常用實踐
76 讀取裝置鎖定狀態 常用實踐
140 寫入場統計資訊 覆蓋裝置記錄的最大值和最小值 裝置特定
141 讀取場統計資訊 從裝置讀取當前的最大值和最小值 裝置特定
144 寫開關1配置 寫入開關1模式、設定點、死區、鎖存設定、延遲設定 裝置特定
145 讀開關1配置 讀取開關1模式、設定點、死區、鎖存設定、延遲設定 裝置特定
221 啟用/禁用防寫,修改密碼 允許啟用/禁用防寫模式並允許編輯裝置密碼 裝置特定
222 讀、防寫狀態 讀取裝置的防寫狀態 裝置特定
223 寫入跳閘計數器 向與開關1和開關2關聯的跳閘計數器寫入一個0 – 9999之間的無符號16位整數 裝置特定
224 切換 1和2 讀取與開關1和開關2關聯的跳閘計數器的值,該數值為一個0 – 9999之間的無符號16位整數 裝置特定
225 手動重置 重置一個或多個處於鎖存狀態的開關 裝置特定
226 讀取開關鎖存狀態 讀取一個或多個開關的鎖存狀態 裝置特定
244 寫開關2配置 寫入開關2模式、設定點、死區、鎖存設定、延遲設定 裝置特定
245 讀開關2配置 讀取開關2模式、設定點、死區、鎖存設定、延遲設定 裝置特定
246 寫堵塞埠設定 裝置特定
247 讀堵塞埠設定 裝置特定
248 寫偏移和量程 裝置特定
249 讀偏移和量程 裝置特定

2.2.6 狀態

狀態分1個位元組的響應碼和1個位元組的裝置狀態碼。

2.2.6.1 響應碼

正常通訊時,最高bit為0,響應碼為:

響應碼 含義
0x00 執行成功
0x02 錯誤的命令
0x03 設定引數太大
0x04 設定引數太少
0x05 接收的資料太少
0x06 專用命令錯
0x07 處於防寫模式
0x08 1、更新失敗2、設定為接近值3、延時響應
0x09 1、低限範圍值太大2、不正確的電流模式
0x0a 1、低限範圍值太小2、無效的就地鎖定
0x0b 1、上限範圍值太大2、多從機模式3、無效裝置變數程式碼4、調整超範圍5、不能就地鎖定
0x0c 1、上限範圍值太小2、無效單位程式碼3、無效的模式選擇4、無效的插槽號
0x0d 1、上、下限範圍值超標2、計算錯誤3、無效的命令號
0x0e 1、量程太小2、設定的下限值引起上限值改變而超出感測器極限
0x0f 無效的模擬通道號
0x10 訪問受限
0x11 無效的裝置變數索引
0x12 無效的單位程式碼
0x13 裝置變數的應用不合理
0x14 無效的擴充套件命令號
0x1c 不支援的單位程式碼
0x20
0x21 延遲響應開始
0x22 延遲響應進行中
0x40 命令不能執行

通訊故障時,最高位bit為1,響應碼為:

響應碼 含義
0xc0 接收位元組位元組奇校驗出錯
0xa0 接收緩衝區資料覆蓋錯
0x90 沒有接收到停止位出錯
0x88 校驗位元組出錯
0x82 接收緩衝區溢位

具體含義受不同命令影響,想見基金會資料。

2.2.6.2 裝置狀態碼

狀態碼 含義
0x80 裝置故障
0x40 配置引數改變
0x20 裝置冷啟動
0x08 環路電流固定模式
0x04 環路電流飽和
0x02 裝置變數(沒有對映到主變數)超限
0x01 主變數超出極限

2.2.7 資料

資料部分格式取決於命令的不同,均由不同的命令定義。

相關文章