HART帧结构

本文详细介绍了HART通信协议中的帧结构,包括其组成部分和解析过程,为理解有线HART通信提供了基础认知。

前段时间做了一部分有线HART的解析,整理了一下基本的帧结构,在此做个笔记


HART帧结构:

	|-------------------------------------------------------------------|
	| PREAMBLE[5..20] | START | ADDR | COM | BCNT | STATUS | DATA | CHK |
	|-------------------------------------------------------------------|


	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)
起始字节, 说明结构为“长”还是“短”, 消息源, 是否是“突发”模式消息.
		0x02:	主机到从机的短帧
		0x82:	主机到从机的长帧
		0x06:	从机到主机的短帧
		0x86:	从机到主机的长帧
		0x01:	突发模式的短帧
		0x81:	突发模式的长帧
一般设备进行通讯接收到2个FF字节后, 就表示数据位的接收已经同步, 就将侦听起始位.
3. ADDR(1/5Bytes)
地址字节, 他包含了主机地址和从机地址, 短结构中占1字节, 长结构中占5字节.
不论长短帧结构, HART协议中允许2个主机存在, 所以我们用首字节的最高位来进行区分, 值为1表示第一主机地址, 第二主机用0表示.

“突发”模式是特例, 0,1值将交替出现, 也就是说, 在该模式下, 赋予2个主机的机会均等. 次高位为1表示为“突发”模式, 短结构用首字节的0~4位表示值为0~15的从机地址, 第5,6位赋0.


长结构用后6位表示从机的生产厂商的代码, 第2个字节表示从机设备型号代码,后3~5个字节表示从机的设备序列号, 构成“唯一”标志码.
MA: 主机地址
BM: 突发模式
0 0 SA 从 SA机 SA 地 SA 址短 帧 地 址 结 构 另外,长结构的低38位如果都是0的话表示的是广播地址,即消息发送给所有的设备。


4. COM(1Byte)
命令字节, 范围为253个, 用HEX的0~FD表示. 31,127,254,255为预留值。
5. BCNT(1Byte)
数据总长度,他的值表示的是BCNT下一个字节到最后(不包括校验字节)的字节数.
接收设备用他可以鉴别出校验字节, 也可以知道消息的结束.
因为规定数据最多为25字节, 所以他的值是从0~27。
6. STATUS(2Bytes)
状态字节, 他也叫做“响应码”,顾名思义, 他只存在于从机响应主机消息的时候, 用2字节表示.
他将报告通讯中的错误\接收命令的状态(如:设备忙、无法识别命令等)和从机的操作状态。
如果我们在通讯过程中发现了错误, 首字节的最高位(第7位)将置1,其余的7位将汇报出错误的细节,而第2个字节全为0. 
否则,当首字节的最高位为0时,表示通讯正常,其余的7位表示命令响应情况,第2个字节表示场设备状态的信息。
UART发现的通讯错误一般有:奇偶校验、溢出和结构错误等。
命令响应码可以有128个, 表示错误和警告, 他们可以是单一的意义, 也可以有多种意义,我们通过特殊命令进行定义、规定.
现场设备状态信息用来表示故障和非正常操作模式。
7. DATA(BCNT-2)
数据字节,首先我想说明的是并非所有的命令和响应都包含数据字节,他最多不超过25字节(随着通讯速度的提高,正在要求放宽这一标准)。
数据的形式可以是无符号的整数(可以是8,16,24,32 b),浮点数(用IEEE754单精浮点格式)或ASCII字符串,还有预先制定的单位数据列表。具体的数据个数根据不同的命令而定。
8. CHK(1Byte)
奇偶校验,方式是纵向奇偶校验,从起始字节开始到奇偶校验前一个字节为止。另外,每一个字节都有1位的校验位,这两者的结合可以检测出3位的突发错误。

下面是几组实际通讯中抓包的示例:
FF FF FF FF FF 
02 
80 // addr
00 
00 
82 


FF FF FF FF FF FF 
06 
80 
00 
0E 
00 40 
FE 26 19 06 05 05 02 A0 00 91 F4 A5 
FE 26 19 06 05 05 02 A0 00 91 F4 A5 


6D
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值