資源描述:
《HART命令幀格式》由會(huì)員上傳分享,免費(fèi)在線(xiàn)閱讀,更多相關(guān)內(nèi)容在行業(yè)資料-天天文庫(kù)。
1、前段時(shí)間做了一部分有線(xiàn)HART的解析,整理了一下基本的幀結(jié)構(gòu),在此做個(gè)筆記HART幀結(jié)構(gòu):[cpp]?viewplain?copy1.
2、-------------------------------------------------------------------
3、??2.
4、?PREAMBLE[5..20]?
5、?START?
6、?ADDR?
7、?COM?
8、?BCNT?
9、?STATUS?
10、?DATA?
11、?CHK?
12、??3.
13、-------------------------------------------------------------------
14、??4.??
15、5.??6.FF?FF?FF?FF?FF??82??A6?06?B2?BF?01??0F??00??21???1.PREAMBLE引導(dǎo)碼,一般是5..20個(gè)0xFF,他是一組同步傳輸?shù)耐叫盘?hà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(1Byte)起始字節(jié),說(shuō)明結(jié)構(gòu)為“長(zhǎng)”還是“短”,消息源,是否是“突發(fā)”模式消息.[cpp]?viewplain?copy1.0x02:???主機(jī)到從機(jī)的短幀??2.0x82:???主
16、機(jī)到從機(jī)的長(zhǎng)幀??3.0x06:???從機(jī)到主機(jī)的短幀??4.0x86:???從機(jī)到主機(jī)的長(zhǎng)幀??5.0x01:???突發(fā)模式的短幀??6.0x81:???突發(fā)模式的長(zhǎng)幀??一般設(shè)備進(jìn)行通訊接收到2個(gè)FF字節(jié)后,就表示數(shù)據(jù)位的接收已經(jīng)同步,就將偵聽(tīng)起始位.3.ADDR(1/5Bytes)地址字節(jié),他包含了主機(jī)地址和從機(jī)地址,短結(jié)構(gòu)中占1字節(jié),長(zhǎng)結(jié)構(gòu)中占5字節(jié).不論長(zhǎng)短幀結(jié)構(gòu),HART協(xié)議中允許2個(gè)主機(jī)存在,所以我們用首字節(jié)的最高位來(lái)進(jìn)行區(qū)分,值為1表示第一主機(jī)地址,第二主機(jī)用0表示.“突發(fā)”模式是特例,0,1值將交替出現(xiàn),也就是說(shuō),在該模式下,賦予2個(gè)主機(jī)的機(jī)會(huì)均等.次
17、高位為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)志碼.MA:主機(jī)地址BM:突發(fā)模式00SA從SA機(jī)SA地SA址短幀地址結(jié)構(gòu)另外,長(zhǎng)結(jié)構(gòu)的低38位如果都是0的話(huà)表示的是廣播地址,即消息發(fā)送給所有的設(shè)備。4.COM(1Byte)命令字節(jié),范圍為253個(gè),用HEX的0~FD表示.31,127,254,255為預(yù)留值。5.BCNT(1Byte)數(shù)據(jù)總長(zhǎng)度,他的值表示的是BCNT下一個(gè)字節(jié)到最后(不包括校驗(yàn)字節(jié))
18、的字節(jié)數(shù).接收設(shè)備用他可以鑒別出校驗(yàn)字節(jié),也可以知道消息的結(jié)束.因?yàn)橐?guī)定數(shù)據(jù)最多為25字節(jié),所以他的值是從0~27。6.STATUS(2Bytes)狀態(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ò)誤一般有:奇偶校
19、驗(yàn)、溢出和結(jié)構(gòu)錯(cuò)誤等。命令響應(yīng)碼可以有128個(gè),表示錯(cuò)誤和警告,他們可以是單一的意義,也可以有多種意義,我們通過(guò)特殊命令進(jìn)行定義、規(guī)定.現(xiàn)場(chǎng)設(shè)備狀態(tài)信息用來(lái)表示故障和非正常操作模式。7.DATA(BCNT-2)數(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,32b),浮點(diǎn)數(shù)(用IEEE754單精浮點(diǎn)格式)或ASCII字符串,還有預(yù)先制定的單位數(shù)據(jù)列表。具體的數(shù)據(jù)個(gè)數(shù)根據(jù)不同的命令而定。8.CHK(1Byte)奇偶校驗(yàn),方式是縱向奇偶校驗(yàn),從
20、起始字節(jié)開(kāi)始到奇偶校驗(yàn)前一個(gè)字節(jié)為止。另外,每一個(gè)字節(jié)都有1位的校驗(yàn)位,這兩者的結(jié)合可以檢測(cè)出3位的突發(fā)錯(cuò)誤。下面是幾組實(shí)際通訊中抓包的示例:FFFFFFFFFF?02?80?//addr00?00?82?FFFFFFFFFFFF?06?80?00?0E?0040?FE261906050502A00091F4A5?FE261906050502A00091F4A5?6D?看實(shí)例了解HART協(xié)議消息結(jié)構(gòu)例1:主機(jī)到從機(jī)FFFFFFFFFF82A606BC614E0100B0上面是主機(jī)到從機(jī)發(fā)送的一條消息。前5個(gè)字節(jié)值都為FF,顯然他是導(dǎo)言字節(jié)