1.引言
HART,即Highway Addressable Remote Transducer,是可尋址遠(yuǎn)程傳感器高速公路的簡(jiǎn)稱,zui早由美國 Rosemount公司開發(fā)并得到八十多家儀表公司的支持,其特點(diǎn)是在不干擾4~20mA模擬信號(hào)的同時(shí)允許雙向數(shù)字通訊。
符合HART協(xié)議的智能電磁流量計(jì)不僅可以實(shí)現(xiàn)各種流量的檢測(cè)和就地顯示,還可以通過上位計(jì)進(jìn)行遠(yuǎn)程設(shè)定,改變流量計(jì)的零點(diǎn)、量程,以及完成自診斷等功能,在很大程度上方便了流量計(jì)的使用和維護(hù),因而具有較強(qiáng)的市場(chǎng)競(jìng)爭(zhēng)力。[1]本文討論基于HART協(xié)議智能電磁流量計(jì)具體實(shí)現(xiàn)的技術(shù)問題,一是要解決硬件電路的設(shè)計(jì)問題,二是要討論實(shí)現(xiàn)HART協(xié)議命令集編程及上位機(jī)軟件的實(shí)現(xiàn) 。
2 HART協(xié)議簡(jiǎn)介
HART協(xié)議遵循ISO制訂的OSI 開放式系統(tǒng)互連參考模型,采用了OSI 模型的*層、第二層和第七層,即物理層、數(shù)據(jù)鏈路層和應(yīng)用層。
2.1 物理層規(guī)范
HART 協(xié)議采用美國通訊系統(tǒng)Bell202頻移鍵控(FSK)標(biāo)準(zhǔn),在4~20mA的模擬±0.5mA的正弦波,波特率是 1200bps。因?yàn)樗B加的正弦信號(hào)平均值為0,而且相位連續(xù)頻移鍵控技術(shù)要求在波特率為 1200Hz的數(shù)據(jù)位 1 和 0 的邊界的相位角是連續(xù)的,所以數(shù)字通訊信號(hào)不會(huì)影響4~20mA的模擬信號(hào)。
2.2 數(shù)據(jù)鏈路層規(guī)范[2][3]
這一部分協(xié)議規(guī)定了HART 幀的格式,實(shí)現(xiàn)建立、維護(hù)、數(shù)據(jù)鏈路通訊功能,HART協(xié)議根據(jù)冗余檢錯(cuò)碼信息,通過差錯(cuò)檢測(cè)機(jī)制和采用自動(dòng)重發(fā)請(qǐng)求協(xié)議(ARQ),實(shí)現(xiàn)通訊數(shù)據(jù)無差錯(cuò)傳送。
與協(xié)議相關(guān)的數(shù)據(jù)傳輸是以幀的形式實(shí)現(xiàn)的。幀是用戶控制和尋址信息對(duì)用戶數(shù)據(jù)的封裝,只有幀中的字節(jié)記數(shù)結(jié)束且經(jīng)過了差錯(cuò)檢驗(yàn)接收正確無誤或是物理層通知信號(hào)傳輸終止(如檢測(cè)不到載波)之后才可以進(jìn)行幀的識(shí)別。HART 幀的格式如圖1所示。
PREAMBLE 前導(dǎo)信號(hào)。
DELIM 定界符:一個(gè)*的或是zui容易識(shí)別的字符。
ADDR地址字節(jié):包含了源地址和目的地址,zui高位都用來表示與該幀相關(guān)的主設(shè)備的地址。
COM 命令字節(jié):表示現(xiàn)場(chǎng)儀表所要執(zhí)行的功能。
BYTE CORNT數(shù)據(jù)總長(zhǎng)度:該值表示的是BYTE CORNT下一個(gè)字節(jié)到zui后(不包括校驗(yàn)字節(jié)) 的字節(jié)數(shù)。
DATA 數(shù)據(jù)字節(jié)。
CHK 奇偶校驗(yàn):縱向奇偶校驗(yàn)。
在數(shù)據(jù)鏈路層中的HART協(xié)議是一種“主/從”協(xié)議。在從設(shè)備的應(yīng)答消息中除了已被接收的確認(rèn)命令,許多消息中還包含了主設(shè)備詢問的數(shù)據(jù)。HART協(xié)議允許系統(tǒng)中同時(shí)有兩個(gè)主設(shè)備運(yùn)行,一個(gè)基本主設(shè)備,一個(gè)副主設(shè)備。從設(shè)備根據(jù)兩個(gè)主設(shè)備不同的地址來向它們分發(fā)各自的應(yīng)答命令消息。
2.3 應(yīng)用層規(guī)范[4]
規(guī)定了HART消息包中的3類命令,*類是通用命令,適用于遵守HART協(xié)議的所有產(chǎn)品,為符合HART協(xié)議的設(shè)備提供功能描述;第二類是普通操作命令,適用于遵守HART協(xié)議的大部分產(chǎn)品;第三類是設(shè)備特殊命令,適用于遵守HART協(xié)議的特殊產(chǎn)品。
3 基于HART協(xié)議的智能電磁流量計(jì)的硬件設(shè)計(jì)
帶有HART通訊協(xié)議的智能電磁流量計(jì)的硬件系統(tǒng)電路采用模塊化設(shè)計(jì),主要包括傳感器模塊,MCU模塊、HART通訊模塊和人機(jī)界面模塊四個(gè)部分。
由單片機(jī)控制的低頻勵(lì)磁電流輸出到傳感器的勵(lì)磁線圈中,同時(shí)來自電磁流量傳感器的微小電勢(shì)信號(hào)經(jīng)前置放大后通過AD模數(shù)轉(zhuǎn)換電路送入到單片機(jī)。單片機(jī)對(duì)這些信號(hào)進(jìn)行數(shù)據(jù)采集,分析處理送至液晶顯示屏進(jìn)行瞬時(shí)流量和累積流量的顯示。同時(shí)單片機(jī)通過計(jì)算公式對(duì)得到的流量值進(jìn)行補(bǔ)償,將補(bǔ)償后的流量信號(hào)通過HART通訊模塊實(shí)現(xiàn)與上位機(jī)的遠(yuǎn)程通訊。
3.1 HART通訊模塊設(shè)計(jì)
HT2012 芯片用來實(shí)現(xiàn)HART 協(xié)議中通訊信號(hào)的解調(diào)及調(diào)制過程。圖2為調(diào)制解調(diào)器與微處理器的連接。
HART 信號(hào)的解調(diào)過程:由帶通濾波器輸出的脈沖信號(hào)進(jìn)入HT2012 后,調(diào)制解調(diào)器分別將脈沖信號(hào)中的1200Hz和 2200Hz解調(diào)為數(shù)字1和0,再將數(shù)字信號(hào)由HT2012 的ORXD 端口輸出,CPU 對(duì)接收到的數(shù)據(jù)進(jìn)行判斷并執(zhí)行相應(yīng)的任務(wù)。
3.2 HT2012 與外部接口
HART數(shù)字信號(hào)規(guī)范是峰值為1mA、平均值為0mA正弦交流電流信號(hào),此信號(hào)經(jīng)線路阻抗轉(zhuǎn)化為正弦交流電壓信號(hào),而HT2012 輸入和輸出信號(hào)是0~5V 的方波信號(hào),因此在HT2012 和外部的HART 信號(hào)之間還需要有濾波電路和整形電路。
如圖3所示,由TLC27 組成的濾波器是帶通濾波器,用來減少接收信號(hào)的噪聲干擾。濾波器還用來消除波形中的尖峰,從而使接收到的信號(hào)變得平緩。TLC37 組成的數(shù)字方波產(chǎn)生回路把經(jīng)過TLC27 濾波后的正弦波轉(zhuǎn)變成相應(yīng)的方波,以便于HT2012 接收。
如圖4所示,緩沖器74HC126 的作用是使方波的上升沿和下降沿趨于平緩,使信號(hào)滿足HART 物理層規(guī)范所要求的信號(hào)波形上升沿和下沿的時(shí)要求,因?yàn)檩^平緩的上升沿和下降沿時(shí)間可以降低與其它網(wǎng)絡(luò)間的串?dāng)_。
HT2012需要外部提供460.8kHz的時(shí)鐘信號(hào),且要求時(shí)鐘頻率的誤差是±0.1%,若直接入一個(gè)460.8kHz的晶振不僅會(huì)引起系統(tǒng)功耗的增加,而且該晶振屬于非標(biāo)準(zhǔn)晶振,需專門定制。為了解決這一問題,在系統(tǒng)中采用一片1.8432MHz的晶振以產(chǎn)生時(shí)鐘信號(hào),再經(jīng)分頻器CD4013進(jìn)行4分頗,可輸出1.8432MHz /4=460.8kHz的分頻信號(hào)供HT2012使用。
AD421其內(nèi)部的電壓調(diào)節(jié)器與外部的場(chǎng)效應(yīng)管DN25D對(duì)輸入到AD421的電壓進(jìn)行調(diào)整,可提供+3.3V電壓作為其他設(shè)備的電源。HART發(fā)出的FSK信號(hào),經(jīng)過一個(gè)電容耦合送到AD421中,轉(zhuǎn)換成相應(yīng)的±0.5mA正弦電流信號(hào),實(shí)現(xiàn)電壓信號(hào)到電流信號(hào)的轉(zhuǎn)換,同時(shí),疊加在4~20mA的電流上送給接收設(shè)備,實(shí)現(xiàn)了HART協(xié)議的信息的交換。本電路耦合電容取為0. 0033μF。
4 HART通訊協(xié)議的軟件實(shí)現(xiàn)
4.1 智能電磁流量計(jì)串口中斷程序[5]
在串行口中斷服務(wù)程序中,首先保護(hù)現(xiàn)場(chǎng),然后判斷是接收中斷還是發(fā)送中斷,若為接收中斷則執(zhí)行接收服務(wù)子程序,否則執(zhí)行發(fā)送服務(wù)子程序。中斷處理結(jié)束后,恢復(fù)現(xiàn)場(chǎng)并返回系統(tǒng)主程序。HART通信采用水平和垂直校驗(yàn)的方法。當(dāng)檢測(cè)到接收數(shù)據(jù)有差錯(cuò)時(shí),則等到主設(shè)備命令幀發(fā)完后,通知主設(shè)備數(shù)據(jù)接收有誤。主設(shè)備則重新發(fā)命令幀,從而保證通信的準(zhǔn)確可靠。HART串口中斷子程序流程圖如圖5所示。
4.2 HART命令拆分子程序[6][7]
在對(duì)命令幀響應(yīng)之前先要將該幀拆分,即首先判斷該幀前導(dǎo)碼是否正確,每接收一個(gè)前導(dǎo)碼,計(jì)數(shù)器加1。再接收定界符,若為有效的定界符且前導(dǎo)碼計(jì)數(shù)器大于1,則為HART幀的起始位置,根據(jù)定界符確定HART幀的類型,若為應(yīng)答幀或成組模式幀則終止接收服務(wù),等待載波結(jié)束;若為請(qǐng)求幀,則確定幀格式,設(shè)置接收長(zhǎng)幀格式或短幀格式地址計(jì)數(shù)值,短幀格式地址接收1個(gè)字節(jié),長(zhǎng)幀格式地址接收5個(gè)字節(jié)。再接收命令號(hào),數(shù)據(jù)字節(jié)長(zhǎng)度字節(jié),若數(shù)據(jù)字節(jié)長(zhǎng)度字節(jié)出現(xiàn)奇偶校驗(yàn)錯(cuò)誤則終止接收服務(wù),等待載波結(jié)束;否則設(shè)置數(shù)據(jù)字節(jié)長(zhǎng)度計(jì)數(shù)器,每接收一個(gè)數(shù)據(jù)字節(jié),長(zhǎng)度計(jì)數(shù)器減1,zui后接收水平校驗(yàn)和。若接收請(qǐng)求地址匹配,對(duì)接收的HART 幀異或求水平校驗(yàn)和,并與接收水平校 驗(yàn)和進(jìn)行比較,相同則表示無通訊錯(cuò)誤,否則置水平校驗(yàn)和錯(cuò)誤標(biāo)志為1,結(jié)束接收服務(wù)并轉(zhuǎn)入HART命令執(zhí)行子程序。命令幀拆分程序流程如圖6所示。
5 結(jié)論
對(duì)研制的智能電磁流量計(jì)進(jìn)行試驗(yàn)表明:該流量計(jì)集成化程度高、功能強(qiáng)、操作方便、性能可靠;具有自診斷、自檢定功能和HART數(shù)據(jù)通訊功能;可測(cè)正反兩個(gè)方向流量,也可測(cè)脈動(dòng)流量;抗電磁干擾和溫度性能好,適合于現(xiàn)場(chǎng)測(cè)量和顯示;測(cè)量范圍大,準(zhǔn)確度高。