资源描述:
《HART命令帧格式》由会员上传分享,免费在线阅读,更多相关内容在行业资料-天天文库。
1、前段时间做了一部分有线HART的解析,整理了一下基本的帧结构,在此做个笔记HART帧结构:[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引导码,一般是5..20个0xFF,他是一组同步传输的同步信号,用以保证信息的同步. 在开始通讯的时候,使用的是20个FF引导码,从机应答0信号时将告之主机他“希望”接收几个字节的引导码,另外主机也可以用59号命令告诉从机应答时应用几位引导码.2. START(1Byte)起始字节,说明结构为“长”还是“短”,消息源,是否是“突发”模式消息.[cpp] viewplain copy1.0x02: 主机到从机的短帧 2.0x82: 主
16、机到从机的长帧 3.0x06: 从机到主机的短帧 4.0x86: 从机到主机的长帧 5.0x01: 突发模式的短帧 6.0x81: 突发模式的长帧 一般设备进行通讯接收到2个FF字节后,就表示数据位的接收已经同步,就将侦听起始位.3.ADDR(1/5Bytes)地址字节,他包含了主机地址和从机地址,短结构中占1字节,长结构中占5字节.不论长短帧结构,HART协议中允许2个主机存在,所以我们用首字节的最高位来进行区分,值为1表示第一主机地址,第二主机用0表示.“突发”模式是特例,0,1值将交替出现,也就是说,在该模式下,赋予2个主机的机会均等.次
17、高位为1表示为“突发”模式,短结构用首字节的0~4位表示值为0~15的从机地址,第5,6位赋0.长结构用后6位表示从机的生产厂商的代码,第2个字节表示从机设备型号代码,后3~5个字节表示从机的设备序列号,构成“唯一”标志码.MA:主机地址BM:突发模式00SA从SA机SA地SA址短帧地址结构另外,长结构的低38位如果都是0的话表示的是广播地址,即消息发送给所有的设备。4.COM(1Byte)命令字节,范围为253个,用HEX的0~FD表示.31,127,254,255为预留值。5.BCNT(1Byte)数据总长度,他的值表示的是BCNT下一个字节到最后(不包括校验字节)
18、的字节数.接收设备用他可以鉴别出校验字节,也可以知道消息的结束.因为规定数据最多为25字节,所以他的值是从0~27。6.STATUS(2Bytes)状态字节,他也叫做“响应码”,顾名思义,他只存在于从机响应主机消息的时候,用2字节表示.他将报告通讯中的错误接收命令的状态(如:设备忙、无法识别命令等)和从机的操作状态。如果我们在通讯过程中发现了错误,首字节的最高位(第7位)将置1,其余的7位将汇报出错误的细节,而第2个字节全为0. 否则,当首字节的最高位为0时,表示通讯正常,其余的7位表示命令响应情况,第2个字节表示场设备状态的信息。UART发现的通讯错误一般有:奇偶校
19、验、溢出和结构错误等。命令响应码可以有128个,表示错误和警告,他们可以是单一的意义,也可以有多种意义,我们通过特殊命令进行定义、规定.现场设备状态信息用来表示故障和非正常操作模式。7.DATA(BCNT-2)数据字节,首先我想说明的是并非所有的命令和响应都包含数据字节,他最多不超过25字节(随着通讯速度的提高,正在要求放宽这一标准)。数据的形式可以是无符号的整数(可以是8,16,24,32b),浮点数(用IEEE754单精浮点格式)或ASCII字符串,还有预先制定的单位数据列表。具体的数据个数根据不同的命令而定。8.CHK(1Byte)奇偶校验,方式是纵向奇偶校验,从
20、起始字节开始到奇偶校验前一个字节为止。另外,每一个字节都有1位的校验位,这两者的结合可以检测出3位的突发错误。下面是几组实际通讯中抓包的示例:FFFFFFFFFF 02 80 //addr00 00 82 FFFFFFFFFFFF 06 80 00 0E 0040 FE261906050502A00091F4A5 FE261906050502A00091F4A5 6D 看实例了解HART协议消息结构例1:主机到从机FFFFFFFFFF82A606BC614E0100B0上面是主机到从机发送的一条消息。前5个字节值都为FF,显然他是导言字节