最近,對(duì)于HART協(xié)議的有關(guān)內(nèi)容,我們已經(jīng)詳盡了不少內(nèi)容。不知道大家對(duì)于這部分知識(shí)的原理是否有掌握清楚。那么今天,我們?cè)賮?lái)強(qiáng)調(diào)一下它的格式。首先看一下消息結(jié)構(gòu)吧。
消息結(jié)構(gòu)
如下所示,一條消息包括源地址、目的地址和一個(gè)校驗(yàn)位。每一個(gè)應(yīng)答消息中包括現(xiàn)場(chǎng)設(shè)備狀態(tài),用于確保持續(xù)通訊的順暢進(jìn)行。數(shù)據(jù)位可有可無(wú),視具體情況而定。一般每秒種可以傳輸2~3條消息。
PREAMBLE START ADDRCOM BCNT STATUS DATA PARITY序文 定界符 地址 命令號(hào) 數(shù)據(jù)長(zhǎng)度 響應(yīng)碼 數(shù)據(jù)字節(jié) 奇偶校驗(yàn)
HART協(xié)議5.0版本以前版本的設(shè)備一般采用“短結(jié)構(gòu)”,單一的現(xiàn)場(chǎng)設(shè)備如果只利用4~20 mA電流信號(hào)進(jìn)行測(cè)量時(shí),從設(shè)備的地址都是0;否則,對(duì)于多設(shè)備而言,從設(shè)備的地址是從1~15,這種短結(jié)構(gòu)的地址采用“隨選”的方法,隨機(jī)分配1~15中的一個(gè)。HART協(xié)議5. 0版本推出了“長(zhǎng)結(jié)構(gòu)”,這種格式的從設(shè)備地址具有獨(dú)一無(wú)二性,如同每個(gè)網(wǎng)卡中物理地址一樣,全世界范圍內(nèi)都沒(méi)有重復(fù),一般占5個(gè)地址字節(jié)中的38位。這 38位地址信息包含了生產(chǎn)廠家的代碼、設(shè)備型號(hào)碼和設(shè)備識(shí)別碼。這種格式減少了誤傳輸和誤接收的可能性,F(xiàn)在大多數(shù)主機(jī)設(shè)備既能支持長(zhǎng)結(jié)構(gòu)又兼容短結(jié)構(gòu),當(dāng)從機(jī)的應(yīng)答信號(hào)中沒(méi)有“唯一”標(biāo)識(shí)碼時(shí),HART協(xié)議5.0版本及其以上的版本提供的0號(hào)命令,就可以用于短幀中的設(shè)備地址識(shí)別。也就是說(shuō),主機(jī)將根據(jù)應(yīng)答信號(hào)中是否具有“惟一”標(biāo)識(shí)碼來(lái)決定結(jié)構(gòu)格式為“長(zhǎng)”還是“短”。
一般消息幀的組成,其中:
(1)PREAMBLE導(dǎo)言字節(jié),一般是5~20個(gè)FF十六進(jìn)制字節(jié)。他實(shí)際上是同步信號(hào),各通訊設(shè)備可以據(jù)此略做調(diào)整,保證信息的同步。在開(kāi)始通訊的時(shí)候,使用的是20個(gè)FF導(dǎo)言,從機(jī)應(yīng)答0信號(hào)時(shí)將告之主機(jī)他“希望”接收幾個(gè)字節(jié)的導(dǎo)言,另外主機(jī)也可以用59號(hào)命令告訴從機(jī)應(yīng)答時(shí)應(yīng)用幾位導(dǎo)言。
(2)START起始字節(jié),他將告之使用的結(jié)構(gòu)為“長(zhǎng)”還是“短”、消息源、是否是“突發(fā)”模式消息。主機(jī)到從機(jī)為短結(jié)構(gòu)時(shí),起始位為02,長(zhǎng)幀時(shí)為82。從機(jī)到主機(jī)的短結(jié)構(gòu)值為06,長(zhǎng)結(jié)構(gòu)值為86。而為“突發(fā)”模式的短結(jié)構(gòu)值為01,長(zhǎng)結(jié)構(gòu)為81。一般設(shè)備進(jìn)行通訊接收到2個(gè)FF字節(jié)后,就將偵聽(tīng)起始位。
(3)ADDR地址字節(jié),他包含了主機(jī)地址和從機(jī)地址,如前所述,短結(jié)構(gòu)中占1字節(jié),長(zhǎng)結(jié)構(gòu)中占5字節(jié)。無(wú)論長(zhǎng)結(jié)構(gòu)還是短結(jié)構(gòu),因?yàn)镠ART協(xié)議中允許2個(gè)主機(jī)存在,所以我們用首字節(jié)的最高位來(lái)進(jìn)行區(qū)分,值為1表示第一主機(jī)地址,第二主機(jī)用0表示!巴话l(fā)”模式是特例,0,1值將交替出現(xiàn),也就是說(shuō),在該模式下,賦予2個(gè)主機(jī)的機(jī)會(huì)均等。次高位為1表示為“突發(fā)”模式,短結(jié)構(gòu)用首字節(jié)的0~4位表示值為0~15的從機(jī)地址,第5,6位賦0;而長(zhǎng)結(jié)構(gòu)用后6位表示從機(jī)的生產(chǎn)廠商的代碼,第2個(gè)字節(jié)表示從機(jī)設(shè)備型號(hào)代碼,后3~5個(gè)字節(jié)表示從機(jī)的設(shè)備序列號(hào),構(gòu)成“唯一”標(biāo)志碼。
短幀地址結(jié)構(gòu)
另外,長(zhǎng)結(jié)構(gòu)的低38位如果都是0的話表示的是廣播地址,即消息發(fā)送給所有的設(shè)備。
(4)COM命令字節(jié),他的范圍為253個(gè),用HEX的0~FD表示。31,127,254,255為預(yù)留值。
(5)BCNT數(shù)據(jù)總長(zhǎng)度,他的值表示的是BCNT下一個(gè)字節(jié)到最后(不包括校驗(yàn)字節(jié))的字節(jié)數(shù)。接收設(shè)備用他可以鑒別出校驗(yàn)字節(jié),也可以知道消息的結(jié)束。因?yàn)橐?guī)定數(shù)據(jù)最多為25字節(jié),所以他的值是從0~27。
(6)STATUS狀態(tài)字節(jié),他也叫做“響應(yīng)碼”,顧名思義,他只存在于從機(jī)響應(yīng)主機(jī)消息的時(shí)候,用2字節(jié)表示。他將報(bào)告通訊中的錯(cuò)誤、接收命令的狀態(tài)(如:設(shè)備忙、無(wú)法識(shí)別命令等)和從機(jī)的操作狀態(tài)。
如果我們?cè)谕ㄓ嵾^(guò)程中發(fā)現(xiàn)了錯(cuò)誤,首字節(jié)的最高位(第7位)將置1,其余的7位將匯報(bào)出錯(cuò)誤的細(xì)節(jié),而第2個(gè)字節(jié)全為0。否則,當(dāng)首字節(jié)的最高位為0時(shí),表示通訊正常,其余的7位表示命令響應(yīng)情況,第2個(gè)字節(jié)表示場(chǎng)設(shè)備狀態(tài)的信息。
UART發(fā)現(xiàn)的通訊錯(cuò)誤一般有:奇偶校驗(yàn)、溢出和結(jié)構(gòu)錯(cuò)誤等。命令響應(yīng)碼可以有128個(gè),表示錯(cuò)誤和警告,他們可以是單一的意義,也可以有多種意義,我們通過(guò)特殊命令進(jìn)行定義、規(guī)定,F(xiàn)場(chǎng)設(shè)備狀態(tài)信息用來(lái)表示故障和非正常操作模式。
(7)在HART協(xié)議的幀結(jié)構(gòu)中,DATA數(shù)據(jù)字節(jié),首先我想說(shuō)明的是并非所有的命令和響應(yīng)都包含數(shù)據(jù)字節(jié),他最多不超過(guò)25字節(jié)(隨著通訊速度的提高,正在要求放寬這一標(biāo)準(zhǔn))。數(shù)據(jù)的形式可以是無(wú)符號(hào)的整數(shù)(可以是8,16,24,32 b),浮點(diǎn)數(shù)(用IEEE754單精浮點(diǎn)格式)或ASCII字符串,還有預(yù)先制定的單位數(shù)據(jù)列表。具體的數(shù)據(jù)個(gè)數(shù)根據(jù)不同的命令而定。
(8)CHK奇偶校驗(yàn),方式是縱向奇偶校驗(yàn),從起始字節(jié)開(kāi)始到奇偶校驗(yàn)前一個(gè)字節(jié)為止。另外,每一個(gè)字節(jié)都有1位的校驗(yàn)位,這兩者的結(jié)合可以檢測(cè)出3位的突發(fā)錯(cuò)誤。
北京 | 天津 | 上海 | 江蘇 | 山東 |
安徽 | 浙江 | 江西 | 福建 | 深圳 |
廣東 | 河北 | 湖南 | 廣西 | 河南 |
海南 | 湖北 | 四川 | 重慶 | 云南 |
貴州 | 西藏 | 新疆 | 陜西 | 山西 |
寧夏 | 甘肅 | 青海 | 遼寧 | 吉林 |
黑龍江 | 內(nèi)蒙古 |