[導(dǎo)讀]
在AIOT蓬勃發(fā)展的今天,也掀起傳統(tǒng)工業(yè)設(shè)備IOT革新的浪潮。那么需要對工業(yè)設(shè)備進(jìn)行IOT改造,除了直接開發(fā)具有IOT互聯(lián)協(xié)議的新型設(shè)備,對原有總線設(shè)備的接入改造其實也是一塊很大的蛋糕。因此,掌握傳統(tǒng)工業(yè)現(xiàn)場設(shè)備通訊總線,也是很必要的,即便在現(xiàn)在或者將來傳統(tǒng)的工業(yè)總線也不會被淘汰,這是由于這些現(xiàn)場總線是專為復(fù)雜的工業(yè)控制現(xiàn)場而設(shè)計的。今天,就來分享一下HART總線。
初始HART總線
基本信息
HART(Highway Addressable Remote Transducer)可尋址遠(yuǎn)程變送器高速通道協(xié)議,翻譯起來有點繞口。HART協(xié)議是用于過程控制設(shè)備的面向事務(wù)的通信服務(wù)。HART通信設(shè)備旨在增強傳統(tǒng)的4-20 mA模擬信號傳輸,可在工業(yè)環(huán)境中提供相對低帶寬、適度的響應(yīng)時間的通信協(xié)議。應(yīng)用包括遠(yuǎn)程過程變量查詢,參數(shù)設(shè)置和診斷。從名字上就可看出,這個協(xié)議是用于變送器(有的也翻譯為傳感器),名字不重要,重要的是理解這究竟是什么個內(nèi)涵.所謂變送器就是指能將現(xiàn)場情況的物理參數(shù)進(jìn)行采集(比如溫度、壓力、流量等)并以工業(yè)標(biāo)準(zhǔn)模擬信號輸出的設(shè)備,所謂工業(yè)標(biāo)準(zhǔn)模擬信號是指國際電工委員會(International Electro technical Commission,簡稱IEC)定義的4-20mA或者1-5V信號。那么HART協(xié)議究竟是怎樣一個協(xié)議呢?HART協(xié)議是混合模擬信號以及數(shù)字信號的工業(yè)自動化開放協(xié)議。HART被廣泛用于過程和儀表系統(tǒng),從小型自動化應(yīng)用到高度復(fù)雜的工業(yè)應(yīng)用。它最顯著的優(yōu)點是,可以通過傳統(tǒng)的4–20 mA儀表電流回路進(jìn)行通信,有線HART協(xié)議的物理層為一對導(dǎo)線:
什么是模擬通信呢?也就是前面說的4-20mA輸出物理量的概念,比如現(xiàn)場是一個溫度變送器,當(dāng)前測溫范圍為℃~℃,那么4mA就對應(yīng)-200℃,而20mA就對應(yīng)500℃,存在下面的關(guān)系:其數(shù)字通信協(xié)議支持:
- 訪問儀表的參數(shù)及診斷信息,這不是簡單的讀取,而是有專用公共的命令規(guī)范,獲取診斷數(shù)據(jù)。支持多變量設(shè)備,這是什么意思呢?比如一個變送器可以同時測量壓力以及溫度,則是雙變量變送器。設(shè)備在線狀態(tài)監(jiān)測完全開放的事實標(biāo)準(zhǔn)標(biāo)準(zhǔn)通用命令及數(shù)據(jù)結(jié)構(gòu)DDL(Device Description Language)支持,這是啥意思,就是用這樣一種規(guī)范的文本描述語言抽象設(shè)備的信息其他的組態(tài)軟件可以直接導(dǎo)入,從而實現(xiàn)互聯(lián)互通。這就是標(biāo)準(zhǔn)的力量,不同廠家做的設(shè)備為什么可以在一個系統(tǒng)里快速組網(wǎng),實現(xiàn)過程控制系統(tǒng)。
其模擬通信特點:
- 模擬4-20mA通信與數(shù)字通信同時進(jìn)行兼容現(xiàn)有的4-20mA設(shè)備,即便某個4-20mA設(shè)備沒有HART支持。模擬4-20mA本身就是一種通信,比如一個測量變動器可直接接入一個控制器的模擬4-20mA通道,將測量值實時傳輸給控制器,而控制器的4-20mA輸出又可以接到執(zhí)行器(比如閥門控制器)的4-20mA輸入通道,從而控制閥門的開度,形成閉環(huán)控制。
本文主要介紹基于有線連接物理層的HART,HART的物理層還支持2.4GHz,基于802.15.4規(guī)范的無線物理層。
網(wǎng)絡(luò)分層
從前面介紹,基本知道了大致信息,現(xiàn)在來看看該協(xié)議的分層情況
從上面的圖可以看出,HART協(xié)議對應(yīng)OSI模型,實現(xiàn)了其中的5層:
- 有線物理層:這里有句題外話,協(xié)議的物理層負(fù)責(zé)地產(chǎn)BIT流的傳輸,其實你用其他的物理層來傳HART報文是否可以呢?當(dāng)然也是可以的,比如你就用SPI去傳也能傳能收,為什么不用?無法適應(yīng)工業(yè)現(xiàn)場的噪聲環(huán)境,也無法可能滿足現(xiàn)場組網(wǎng)的需求,比如總線仲裁等。
- 無線物理層:無線HART則采用基于IEEE802.15.4的無線2.4GHz頻段物理層。IEEE802.15.4是一項定義了低速無線個人局域網(wǎng)(low-rate wireless personal area networks簡稱LR-WPAN)操作的技術(shù)標(biāo)準(zhǔn)。它規(guī)范了LR-WPAN的物理層和媒體訪問控制,并由IEEE 802.15工作組維護,該工作組在2003年定義了該標(biāo)準(zhǔn)。它是Zigbee,ISA100.11a,WirelessHART,MiWi,6LoWPAN,Thread和SNAP規(guī)范的基礎(chǔ),它們各自都通過開發(fā)IEEE 802.15.4中未定義的上層來進(jìn)一步擴展了標(biāo)準(zhǔn)。6LoWPAN還定義了WPAN上的Internet協(xié)議(IP)的IPv6版本的綁定,并且本身被Thread等上層所使用。需要注意的是WIFI雖然也使用2.4GHz頻段,但是它遵循802.11規(guī)范。所謂Mesh網(wǎng)絡(luò),看看下面這個網(wǎng)絡(luò)拓?fù)?/a>圖就很好理解了:
- FSK物理層:有線HART的物理層主要采用采用FSK(Frequency Shift Keying)頻移鍵控將0/1調(diào)制在4-20mA電流環(huán)路上,稍后在對FSK進(jìn)行介紹。PSK物理層:實際上是C8PSK(Coherent 8-way Phase Shift Keying), 它實際上是一種數(shù)字通信調(diào)制技術(shù),通過改變恒定頻率參考信號(參考信號稱為載波)的相位來傳輸數(shù)據(jù)。所謂相位就是通過精確地改變正弦或余弦輸入時間來完成調(diào)制。RS-485物理層:這個是比較常見的半雙工差分串行總線,實際上此類設(shè)備不是HART協(xié)議的主流,使用并不廣泛。
- 鏈路層:網(wǎng)絡(luò)層(僅無線HART):主要實現(xiàn)功率優(yōu)化,mesh網(wǎng)絡(luò)管理。網(wǎng)絡(luò)時間同步,時間同步的精確性對于基于時分復(fù)用 (Time-division multiple access簡稱TDMA) 的網(wǎng)絡(luò)至關(guān)重要,時間不同步,網(wǎng)絡(luò)將癱瘓。傳輸層:HART的傳輸層主要對于大塊數(shù)據(jù)進(jìn)行拆分傳輸。應(yīng)用層:應(yīng)用層定義了協(xié)議支持的公共命令,響應(yīng),數(shù)據(jù)類型和狀態(tài)報告。因此HART應(yīng)用層確保不同公司的設(shè)備的互操作性中起著重要作用。所謂互操作性,是指互聯(lián)互通的基礎(chǔ)上,還定義了應(yīng)用操作。比如溫度變送器,接入控制系統(tǒng)可以很容易與另一個閥門控制器、加熱控制器快速組成溫控系統(tǒng)。
- 數(shù)據(jù)鏈路層為數(shù)據(jù)傳輸提供可靠的、面向事務(wù)的通信路徑。對于FSK/PSK HART通信是通過雙絞線進(jìn)行傳輸,雙絞線可能同時傳輸4-20mA信號。數(shù)據(jù)鏈路層將通過使用錯誤檢測信息和自動重復(fù)請求(Automatic Repeat Request 簡稱ARQ)協(xié)議來請求重新傳輸可能被線路噪聲或其他干擾破壞的數(shù)據(jù)塊,從而來糾正由于通信鏈路上的噪聲引起的錯誤。對于無線HART,則通過基于時間同步的TDMA/CSMA機制進(jìn)行鏈路管理、沖突檢測。在檢測到出錯時自動重復(fù)請求的跳頻技術(shù)。所謂跳頻,就是在802.15.4規(guī)范的帶寬里,將帶寬劃分為多個信道,主從直接約定好跳頻機制,從而有效的利用空閑信道。
HART規(guī)范書
HART原來由HART基金會管理,現(xiàn)在由FieldComm Group進(jìn)行管理,F(xiàn)ieldComm Group由現(xiàn)場總線基金會(Fieldbus Foundation 簡稱FF)以及HART基金會合并而來,統(tǒng)一管理FF以及HART總線標(biāo)準(zhǔn)。有興趣可以去https://www.fieldcommgroup.org/進(jìn)一步了解。那么HART協(xié)議標(biāo)準(zhǔn)文檔基本由哪些組成呢?這里總結(jié)了一個思維導(dǎo)圖供參考:
從上面這個導(dǎo)圖,可以看到,HART還為不同類型的工業(yè)設(shè)備制定了相應(yīng)的通信規(guī)范,比如溫度變送器、壓力變送器、閥門控制器、PID控制器、累加器、液位變送器、科里奧力流量變送器、渦街流量變送器、電磁流量變送器等。而對于無線HART則由HCF_SPEC_290文檔進(jìn)行集中描述。有了這份圖,如果你是從事相關(guān)開發(fā)工作,相信對HART標(biāo)準(zhǔn)文檔會有一個比較清晰的認(rèn)識。HART協(xié)議GB對應(yīng)GB/T 29910.1~6-2013 type 20,IEC61158于2017年將HART標(biāo)準(zhǔn)收錄,對應(yīng)其子類的type 20。下面來對于其中比較重要的物理層、鏈路層以及應(yīng)用層做進(jìn)一步的介紹。
物理層
一般的,F(xiàn)SK/PSK物理層與數(shù)據(jù)鏈路層都按照下面的模型進(jìn)行設(shè)計,本文僅介紹最為常用 的FSK物理層,對C8PSK有興趣的,可以查閱HCF_SPEC-60。
FSK物理層
HART采用二進(jìn)制頻移鍵控(Binary FSK簡稱BFSK),其工作原理為:
所謂BFSK就是將待傳輸?shù)臄?shù)據(jù)按照二進(jìn)制BIT流變換成相應(yīng)的頻率信號疊加起來,簡單的可以理解成下圖這樣一個收發(fā)過程:
調(diào)制器與解調(diào)器一起組成了調(diào)制解調(diào)器,對于設(shè)備間通信而言基本都有這樣一個調(diào)制解調(diào)的過程。發(fā)送端調(diào)制器:
在兩種不同信號頻率間信號按照一定的時間間隔根據(jù)輸入的二進(jìn)制位為0或者1,選擇成頻率1或者頻率2,進(jìn)而合成為一個信號輸出。將該物理信號輸出到物理介質(zhì)。當(dāng)然實際使用的FSK,由不同的實現(xiàn)參數(shù)以及細(xì)節(jié),還分連續(xù)相位頻移鍵控、高斯頻移鍵控、最小頻移鍵控、高斯最小頻移鍵控、音頻頻移鍵控等。接收端解調(diào)器:
接收端將從物理介質(zhì)接收到的電信號,分兩路進(jìn)入兩個帶通濾波器,帶通濾波器分別為調(diào)制器對應(yīng)的0/1調(diào)制頻率,將該有用信號檢出,再送入到檢波器電路將信號檢出為數(shù)字信號,雙路數(shù)字信號再由判決電路按照對應(yīng)的波特率判決成二進(jìn)制數(shù)據(jù)流,從而完成物理層的解調(diào)過程。顯然,這兩個帶通濾波器的通帶應(yīng)是不相交的,才能檢出各自有用頻率信號。基本明了FSK的大致原理后,那么HART的FSK又是怎么樣的呢?
HART采用連續(xù)相位頻移鍵控(Continuous Phase Frequency-Shift-Keying,也簡稱為CPFSK)技術(shù),所謂連續(xù)相位可以觀察0/1相鄰的點,簡單理解就是賦值是連續(xù)的。HART利用1200Hz正弦電流信號表征邏輯1,而由2200Hz正弦電流信號表征邏輯0。0/1調(diào)制的時間寬度是一樣的,采用一周期1200Hz正弦時間。這些調(diào)制的信號再線性疊加到4-20mA上,因此在4-20mA上的波形大致就是這樣:
有童鞋可能會說,這樣豈不是污染了4-20mA環(huán)路嗎?HART協(xié)議規(guī)定調(diào)制信號的頻帶基本須在500-10KHz內(nèi):
4-20mA變送通道的變化頻率低于1200Hz,設(shè)備會做一個低通濾波,濾除掉這些調(diào)制信號,再進(jìn)入被接入設(shè)備的I/V轉(zhuǎn)換電路,進(jìn)而采樣環(huán)路電流。所以一般的,接入端會并接一個250歐的電阻,將4-20mA轉(zhuǎn)換為1-5V,當(dāng)然也可能是其他電阻值。工業(yè)測量的過程量,一般都是低頻信號,所以這樣設(shè)計是沒有問題的。此調(diào)制解調(diào)器器可以由專用芯片完成,比如 安森美的NCN5192,Maxim的DS8500等都可以,也可以自己設(shè)計調(diào)制電路實現(xiàn)。
鏈路層
鏈路層向上層提供穩(wěn)定可靠的數(shù)據(jù)鏈路服務(wù),以及對下層的物理層介質(zhì)進(jìn)行介質(zhì)訪問管理,同時定義了數(shù)據(jù)報文結(jié)構(gòu)。
幀結(jié)構(gòu)
首先來看看HART協(xié)議報文結(jié)構(gòu):
其定界符定義為:
校驗碼采用異或校驗算法,包括自定界字節(jié)開始至所有有效字節(jié)的異或結(jié)果便生成校驗碼。報文結(jié)構(gòu)之前繪制過一個思維導(dǎo)圖,這里附上:
由于地址類型有可能是1字節(jié)或者5字節(jié)兩種類型,因此報文的幀長由下面示意圖確定:
- 根據(jù)地址類型確定Byte Count字段的位置根據(jù)Byte Count長度確定校驗自己的位置
接收幀算法,主要由下面幾個關(guān)鍵事件完成:
長地址格式:由主站地址類型、Burst 模式標(biāo)志、設(shè)備類型字段、ID字段組成。
主站類型:
- 主要主站輔助主站
設(shè)備類型,設(shè)備類型主要定義可參考下面思維導(dǎo)圖:
介質(zhì)管理服務(wù)
看這個圖好像很復(fù)雜,其實這是一般標(biāo)準(zhǔn)的嚴(yán)謹(jǐn)表述方式,姑且稱為協(xié)議原語,所謂協(xié)議原語就是某一確定的動作抽象,對于物理層的控制就包含這樣一些操作管理:
- RESET復(fù)位原語,比如你自己做的調(diào)制解調(diào)器或者現(xiàn)有的芯片,需要實現(xiàn)狀態(tài)復(fù)位的操作,比如現(xiàn)成的芯片可能提供復(fù)位腳或者控制命令,那么編程就是控制物理層進(jìn)行復(fù)位。ENABLE使能原語,對物理層的使能控制操作,比如MODEM芯片的ENABLE引腳的控制DATA傳輸/接受原語,將物理層數(shù)據(jù)進(jìn)行收發(fā)控制,對于發(fā),就是將上層數(shù)據(jù)發(fā)送給物理層發(fā)送到總線介質(zhì)的意思,對于收而言就是物理層接收到的BIT流進(jìn)行成幀,并上傳給上層。
總的指導(dǎo)控制操作,按照上述建議交互圖進(jìn)行與物理層進(jìn)行交互。注:標(biāo)準(zhǔn)中以SAP(Service Access Point)進(jìn)行描述,所謂SAP,就是對介質(zhì)或上層服務(wù)的一種抽象說法,至于這個名詞不必覺得不好理解。
鏈路管理服務(wù)
鏈路管理主要描述鏈路層對應(yīng)用層的服務(wù),主要分兩種服務(wù),報文服務(wù),以及管理服務(wù):
- **報文服務(wù):**發(fā)送消息和接收回復(fù)的基本功能。此外,還指定了SAP,以允許捕獲未經(jīng)請求的消息,比如捕獲Burst報文。管理服務(wù):管理服務(wù)指允許配置數(shù)據(jù)鏈路層本身參數(shù)的服務(wù)。
看這個圖好像很復(fù)雜,其實就是描述了應(yīng)用層對鏈路層三種基本操作:
- TRANSMIT發(fā)送服務(wù)原語:應(yīng)用層發(fā)送報文給鏈路層RECEIVE接受服務(wù)原語:接收報文并傳輸給應(yīng)用層CYCLIC捕獲服務(wù)原語:周期性接受總線Burst報文,所謂Burst就是某一個站點周期性向總線廣播報文,一般會將測量值或控制信息周期性廣播,接收設(shè)備可以捕獲該數(shù)據(jù)實現(xiàn)相應(yīng)的應(yīng)用控制。
介質(zhì)控制
無Buest設(shè)備:主要是完成介質(zhì)沖突控制的,采用令牌傳遞方式進(jìn)行介質(zhì)沖突控制,當(dāng)總線中沒有Burst設(shè)備時,其控制狀態(tài)機如下:
總線設(shè)備主要有可能有三類設(shè)備:主要主站、從設(shè)備、輔助主站。令牌在這三者間按照上述狀態(tài)機進(jìn)行切換控制。數(shù)據(jù)總是主站發(fā)起,從站應(yīng)當(dāng)。是一種主-從通信模式,唯一要考慮的時,總線中主要主設(shè)備發(fā)起通信,從設(shè)備應(yīng)答,如果在從設(shè)備應(yīng)答令牌周期沒有應(yīng)答或者完成應(yīng)答,令牌將傳遞給輔助主站。有Burst設(shè)備:如果總線中存在Burst模式設(shè)備,則總線設(shè)備角色就多了一個,其令牌傳遞狀態(tài)機就變成這樣了:
其實就是令牌多了一個角色可以獲取,其機理還是與上面的一樣。
應(yīng)用層
應(yīng)用層主要定義:
- 通過協(xié)議傳輸應(yīng)用數(shù)據(jù)的格式;所有現(xiàn)場設(shè)備的版本規(guī)則;定義通用命令編號,通用慣例,特定設(shè)備和設(shè)備系列命令使用;私有HART命令的構(gòu)造要求;所有命令響應(yīng)都需要返回的命令狀態(tài)字節(jié);設(shè)備使用狀態(tài)和現(xiàn)場設(shè)備變量;主機用于識別現(xiàn)場設(shè)備和管理HART網(wǎng)絡(luò)的過程
另外應(yīng)用層還規(guī)定了12項基本原則:
- 所有設(shè)備都必須遵守HART現(xiàn)場通訊協(xié)議規(guī)范的有效兼容修訂版;48號的必須遵守通用操作命令規(guī)范中的要求;任何時候都不得從任何設(shè)備上刪除命令,兼容性考慮;現(xiàn)場設(shè)備支持的命令中任何數(shù)據(jù)項的含義均不得更改數(shù)據(jù)項可以添加到任何命令的末尾不得從枚舉表,位字段或響應(yīng)代碼中刪除條目設(shè)備變量的代碼號不得更改設(shè)備變量的設(shè)備系列必須保持固定。設(shè)備變量的分類必須保持固定遵循以下規(guī)則,現(xiàn)場設(shè)備可以從HART 4升級而無需更改設(shè)備類型:
- 設(shè)備修訂版所針對的HART現(xiàn)場通信協(xié)議規(guī)范的所有要求都必須遵守必須刪除命令4和命令5除命令0外,所有命令都必須僅以長幀格式實現(xiàn),命令0必須同時以短幀和長幀格式實現(xiàn)。必須為每個主機提供設(shè)備狀態(tài)字節(jié)中單獨的配置更改位(即一個用于主要主機,另一個用于輔助主機)。當(dāng)接收到命令38時,必須僅復(fù)位與發(fā)出命令的主機相對應(yīng)的位。根據(jù)HART 5的要求,這些位必須是非易失性的。所謂非易失性就是掉電保存。必須為每個主機在設(shè)備狀態(tài)字節(jié)中提供一個單獨的冷啟動位必須支持通用實踐命令規(guī)范中指定的命令38和命令48
遵循以下規(guī)則,現(xiàn)場設(shè)備可以從HART 5升級而無需更改設(shè)備類型
- 設(shè)備修訂版所針對的HART現(xiàn)場通信協(xié)議規(guī)范的所有要求都必須遵守必須為每個主機提供設(shè)備狀態(tài)字節(jié)中單獨的配置更改位必須為每個主機在設(shè)備狀態(tài)字節(jié)中提供一個單獨的冷啟動位必須支持通用實踐命令規(guī)范中指定的命令38和命令48如果支持“Burst模式”,則必須添加2條其他“Burst消息”。且必須添加事件通知。
遵循以下規(guī)則,可以在不更改設(shè)備類型的情況下從HART 6升級現(xiàn)場設(shè)備
- 必須遵守設(shè)備修訂版所針對的HART現(xiàn)場通信協(xié)議規(guī)范的所有要求。必須按照“通用實踐命令規(guī)范”中的說明來支持命令38和命令48。2字節(jié)命令格式:命令字段為0x1F,可在數(shù)據(jù)字段中找到WO字節(jié)擴展命令號。
總結(jié)一下
HART總線,是工業(yè)現(xiàn)場設(shè)備應(yīng)用最為廣泛的總線協(xié)議之一,除此之外還有常見的modbus協(xié)議、Profibus協(xié)議、FF基金會總線協(xié)議等。其實總線通信協(xié)議都有其相似的地方,這也是為什么有OSI七層模型這一說,就是我們?nèi)粘I钕⑾⑾嚓P(guān)的TCP/IP協(xié)議棧也脫離不了這些相似的地方。本文旨在梳理一下比較重要的信息,方便對有興趣的童鞋起到一個提綱攜領(lǐng)的作用,主要參考HART標(biāo)準(zhǔn),同時加入自己的理解。短短的一篇文章并不能完整的總結(jié)這樣一個協(xié)議,還有很多細(xì)節(jié)沒有囊括,比如變量管理、診斷定義等等,具體開發(fā)中請以HART標(biāo)準(zhǔn)為準(zhǔn)。整理本文,也是對之前工作中所使用到的工業(yè)總線協(xié)議做個總結(jié)。整理不易,如覺得有價值,請轉(zhuǎn)發(fā)給有需要的朋友,是對我最大的支持和肯定!