HART協(xié)議數(shù)據(jù)格式和消息結(jié)構(gòu)的舉例分析
前面的文章中,我們對HART協(xié)議的消息格式的具體內(nèi)容進行了分析。那么很多朋友還沒有完全掌握,為了讓大家對這部分知識有一個清晰的思路。下面我們來對HART協(xié)議的數(shù)據(jù)格式以及消息結(jié)構(gòu)的內(nèi)容進行一下舉例分析。
HART協(xié)議數(shù)據(jù)格式
如果傳送的命令不成功,那么響應(yīng)中就不包含數(shù)據(jù)。然而響應(yīng)值是從現(xiàn)場設(shè)備內(nèi)存中取出的,是一個近似值。數(shù)據(jù)所占的字節(jié)和格式視不同的命令而定,具體的規(guī)則可以查詢相關(guān)的資料。
看實例了解HART協(xié)議消息結(jié)構(gòu)
例1:主機到從機
FF
|
FF
|
FF
|
FF
|
FF
|
82
|
A6
|
06
|
BC
|
61
|
4E
|
01
|
00
|
B0
|
上面是主機到從機發(fā)送的一條消息。前5個字節(jié)值都為FF,顯然他是導言字節(jié)。接著的82起始字節(jié),表示主機到從機發(fā)出的長結(jié)構(gòu)的消息。后5個字節(jié) “A6,06,BC,61,4E”是地址字節(jié)化為二進制表示如下:
A6 |
06 |
BC |
61 |
4E |
1010 0110 |
0000 0110 |
1011 1100 |
0110 0001 |
0100 1110 |
可見首字節(jié)A6的***位為1表示主機,次高位為0表示非突發(fā)模式,后面的38 b表示設(shè)備的惟一標號:“100110”是生產(chǎn)廠家代碼,值為38,是Rosemount公司的代碼;后一字節(jié)06是設(shè)備型號代碼,06代表的型號是3051C;后面的3個字節(jié)是設(shè)備識別號,本例中的值為12345678;再接下來的01是命令字節(jié),表示1號命令,即讀取PV值后面的00是表示數(shù)據(jù)的長度;本例中無數(shù)據(jù),值為0;***是校驗字節(jié)B0。
例2:從機到主機
FF FF FF FF FF | 86 | A6 06 BC 61 4E | 01 | 07 | 00 00 | 06 40 B0 00 00 | 45 |
HART協(xié)議的從機到主機的例子,表示的是從機到主機的一條消息。本例大部分與例1相似,不同的是數(shù)據(jù)字節(jié)不再為0,其中的06表示單位PSI;后面的4個字節(jié)是用浮點數(shù)表示的值, 為5.5。并且由于本例是由從機到主機的應(yīng)答消息,所以存在著狀態(tài)位,即本例中的00 00表示OK。
例3:突發(fā)模式
FF FF FF FF FF | 81 | 53 03 04 E6 D7 | 03 | 1A | 00 60 | 41 3F A0 00 | 27 | 41 3F A0 00 | 39 | 42 47 60 00 | 06 | BF 06 60 00 | 39 | 41 95 00 | 00 | D4 |
上面是突發(fā)模式HART協(xié)議發(fā)出的一條消息。
第1個字節(jié)81表示突發(fā)的長結(jié)構(gòu)模式,與前例中相似的地方我們不再介紹。注意到狀態(tài)字節(jié)“00 60”后的字節(jié)“41 3FA000”,他表示的是當前的電流值,計算后是11.976 6;后面的27表示單位mA,像后面的39表示“%”一樣。數(shù)據(jù)字節(jié)中的“42 47 60 00”,“BF06 60 00”,“41 95 0000”分別表示“SV”,“TV”,“FV”表示方法與PV相同。經(jīng)過解釋后的消息可以表示為:“LBTXS/RdAllPv/026/0060/11.9766/mA/11.9766/%/49.8438/psi/-0.524902/%/18.625/D4”。