则,当首字节的最高位为0时,表示通讯正常,其余的7位表示命令响应情况,第2个字节表示场设备状态的信息。UART发现的通讯错误一般有:奇偶校验、溢出和结构错误等。命令响应码可以有128个表示错误和警告他们可以是单一的意义也可以有多种意义,我们通过特殊命令进行定义、规定现场设备状态信息用来表示故障和非正常操作模式。7DATABCNT2数据字节,首先我想说明的是并非所有的命令和响应都包含数据字节,他最多不超过25字节(随着通讯速度的提高,正在要求放宽这一标准)。数据的形式可以是无符号的整数(可以是8,16,24,32b),浮点数(用IEEE754单精浮点格式)或ASCII字符串,还有预先制定的单位数据列表。具体的数据个数根据不同的命令而定。
f8CHK1Byte奇偶校验,方式是纵向奇偶校验,从起始字节开始到奇偶校验前一个字节为止。另外,每一个字节都有1位的校验位,这两者的结合可以检测出3位的突发错误。
下面是几组实际通讯中抓包的示例:FFFFFFFFFF0280addr000082
FFFFFFFFFFFF0680000E0040FE261906050502A00091F4A5FE261906050502A00091F4A56D
f看实例了解HART协议消息结构例1:主机到从机FFFFFFFFFF82A606BC614E0100B0
上面是主机到从机发送的一条消息。前5个字节值都为FF,显然他是导言字节。接着的82起始字节,表示主机到从机发出的长结构的消息。后5个字节“A6,
06,BC,61,4E”是地址字节化为二进制表示如下:
A6
06
BC
61
4E
101001100000011010111100
01100001
01001110
可见首字节A6的最高位为1表示主机,次高位为0表示非突发模式,后面的38b表示设备的惟一标号:“100110”是生产厂家代码,值为38,是Rosemou
t公司
的代码;后一字节06是设备型号代码,06代表的型号是3051C;后面的3个字节是设备识别号,本例中的值为12345678;再接下来的01是命令字节,表示1号命令,即读取PV值后面的00是表示数据的长度;本例中无数据,值为0;最
后是校验字节B0。例2:从机到主机
FFFFFFFFFF86A606BC614E010700000640B0000045
HART协议的从机到主机的例子,表示的是从机到主机的一条消息。本例大部分
与例1相似,不同的是数据字节不再为0,其中的06表示单位PSI;后面的4个
字节是用浮点数表示的值,为5.5。并且由于本例是由从机到主机的应答消息,
所以存在着状态位,即本例中的0000表示OK。
例3:突发模式
FFFFFF530304
00413F413F4247BF064195
81
031A
27
39
06
39
00D4
FFFF
E6D7
60A000A00060006000
00
上面是突发模式HART协r