HART协议数据格式和消息结构的举例分析
作者:白志飞
HART协议数据格式
如果传送的命令不成功,那么响应中就不包含数据。然而响应值是从现场设备内存中取出的,是一个近似值。数据所占的字节和格式视不同的命令而定,具体的规则可以查询相关的资料。
看实例了解HART协议消息结构
例1:主机到从机 (0号命令 读取设备序号)
FF | FF | FF | FF | FF | 82 | A6 | 06 | BC | 61 | 4E | 01 | 00 | B0 |
上面是主机到从机发送的一条消息。前5个字节值都为FF,显然他是导言字节。接着的82起始字节,表示主机到从机发出的长结构的消息。后5个字节 “A6,06,BC,61,4E”是地址字节化为二进制表示如下:
A6 | 06 | BC | 61 | 4E |
1010 0110 | 0000 0110 | 1011 1100 | 0110 0001 | 0100 1110 |
可见首字节A6的最高位为1表示主机,次高位为0表示非突发模式,后面的38 b表示设备的惟一标号:“100110”是生产厂家代码,值为38,是Rosemount公司的代码;后一字节06是设备型号代码,06代表的型号是3051C;后面的3个字节是设备识别号,本例中的值为12345678;再接下来的01是命令字节,表示1号命令,即读取PV值后面的00是表示数据的长度;本例中无数据,值为0;最后是校验字节B0。
例2:从机到主机
FF FF FF FF FF | 86 | A6 06 BC 61 4E | 01 | 07 | 00 00 | 06 40 B0 00 00 | 45 |
HART协议的从机到主机的例子,表示的是从机到主机的一条消息。本例大部分与例1相似,不同的是数据字节不再为0,其中的06表示单位PSI;后面的4个字节是用浮点数表示的值, 为5.5。并且由于本例是由从机到主机的应答消息,所以存在着状态位,即本例中的00 00表示OK。
例3:突发模式
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 |
上面是突发模式HART协议发出的一条消息。
第1个字节81表示突发的长结构模式,与前例中相似的地方我们不再介绍。注意到状态字节“00 60”后的字节“41 3FA000”,他表示的是当前的电流值,计算后是11.976 6;后面的27表示单位mA,像后面的39表示“%”一样。数据字节中的“42 47 60 00”,“BF06 60 00”,“41 95 0000”分别表示“SV”,“TV”,“FV”表示方法与PV相同。经过解释后的消息可以表示为:“LBTXS/RdAllPv/026/0060/11.9766/mA/11.9766/%/49.8438/psi/-0.524902/%/18.625/D4”。