HART命令帧格式.docx
《HART命令帧格式.docx》由会员分享,可在线阅读,更多相关《HART命令帧格式.docx(16页珍藏版)》请在冰豆网上搜索。
HART命令帧格式
前段时间做了一部分有线HART的解析,整理了一下基本的帧结构,在此做个笔记
HART帧结构:
[cpp] viewplain copy
1.|-------------------------------------------------------------------|
2.| PREAMBLE[5..20] | START | ADDR | COM | BCNT | STATUS | DATA | CHK |
3.|-------------------------------------------------------------------|
4.
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 copy
1.0x02:
主机到从机的短帧
2.0x82:
主机到从机的长帧
3.0x06:
从机到主机的短帧
4.0x86:
从机到主机的长帧
5.0x01:
突发模式的短帧
6.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:
突发模式
00
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,32b),浮点数(用IEEE754单精浮点格式)或ASCII字符串,还有预先制定的单位数据列表。
具体的数据个数根据不同的命令而定。
8.CHK(1Byte)
奇偶校验,方式是纵向奇偶校验,从起始字节开始到奇偶校验前一个字节为止。
另外,每一个字节都有1位的校验位,这两者的结合可以检测出3位的突发错误。
下面是几组实际通讯中抓包的示例:
FFFFFFFFFF
02
80 //addr
00
00
82
FFFFFFFFFFFF
06
80
00
0E
0040
FE261906050502A00091F4A5
FE261906050502A00091F4A5
6D
看实例了解HART协议消息结构
例1:
主机到从机
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
10100110
00000110
10111100
01100001
01001110
可见首字节A6的最高位为1表示主机,次高位为0表示非突发模式,后面的38b表示设备的惟一标号:
“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。
并且由于本例是由从机到主机的应答消息,所以存在着状态位,即本例中的0000表示OK。
例3:
突发模式
FFFFFFFFFF
81
530304E6D7
03
1A
0060
413FA000
27
413FA000
39
42476000
06
BF066000
39
419500
00
D4
上面是突发模式HART协议发出的一条消息。
第1个字节81表示突发的长结构模式,与前例中相似的地方我们不再介绍。
注意到状态字节“0060”后的字节“413FA000”,他表示的是当前的电流值,计算后是11.9766;后面的27表示单位mA,像后面的39表示“%”一样。
数据字节中的“42476000”,“BF066000”,“41950000”分别表示“SV”,“TV”,“FV”表示方法与PV相同。
经过解释后的消息可以表示为:
“LBTXS/RdAllPv/026/0060/11.9766/mA/11.9766/%/49.8438/psi/-0.524902/%/18.625/D4”。
-------------------------------华丽的分割线------------------------------------------
FFFFFFFFFFFF0280000082
以上就是一段单片机首先要跟设备发送的命令,接下来我们来解析一下
FFFFFFFFFF0280000082
先导码短指令地址0命令00个数据异或校验位
第一条指令是所有支持hart协议的设备都要懂得
先导码:
就是一段命令的开始,一般都是5个FF
指令码:
此处02表示的是告诉设备我现在发送过去的是一条短指令
当然还有其他的指令结构:
主机到从机为短结构时,起始位为02,长帧时为82。
从机到主机的短结构值为06,长结构值为86
“突发”模式的短结构值为01,长结构为81
∙1
∙2
∙3
∙4
地址码:
包含了主机地址和从机地址
短指令时:
地址码由一个字节表示(如80),其结构为
一般我们不用到突发模式,这里的80表示的就是(主机1—-设备地址(0))
长指令时:
地址码由5个字节表示,其结构为
命令码:
如00表示的是命令0,这里的命令设备能够识别从而做出相应的响应
数据个数码:
表示的是再次之后的第一个数——最后一个(不包括校验位)的个数,这一位很重要,在编程的时候,我们经常用这个来调用数值
响应吗:
只存在于从机—主机的过程中(从机对主机的响应)
校验码:
此码主要是用来确保传输没有问题用的,采用的是异或校验(自己可以去XX一下异或校验的意思)(这一位都是根据前面的数值锁确定的)
各种码都讲了一遍,现在我贴上几张自己试验获得的码,大家可以对着分析一下:
FFFFFFFFFF82A6066356BA0100AC
FFFFFFFFFF82A6066356BA0200AF
HART协议
1.1 简介
现代工业生产中存在着多种不同的主机和现场设备,要想很好地使用他们,完善的通讯协议是必须的。
HART协议最初是由美国Rosemount公司开发,已应用了多年。
HART协议使用FSK技术,在4~20mA信号过程量上叠加一个频率信号,成功地把模拟信号和数字信号双向同时通讯,而不互相干扰。
HART协议参照了国际标准化组织的开放性互连模型,使用OSI标准的物理层、数据链路层、应用层。
HART协议规定了传输的物理形式、消息结构、数据格式和一系列操作命令,是一种主从协议。
当通讯模式为“问答式”的时候,一个现场设备只做出被要求的应答。
HART协议允许系统中存在2个主机(比如说,一个用于系统控制,另一个用于HART通信的手操仪),如果不需要模拟信号,多
点系统中的一对电缆线上最多可以连接15个从设备。
1.2 物理层
物理层规定了信号的传输方法、传输介质。
采用Bell202标准的FSK频移键控信号,在低频的4~20mA模拟信号上叠加一个频率数字信号进行双向数字通信。
数字信号的幅度为0.5mA,数据传输率为1200bps,1200Hz代表逻辑“1”,
2200Hz代表逻辑“0”。
数字信号波形如下图所示:
1.3 数据链路层
数据链路层规定HART协议帧的格式,可寻址范围0~15,“0”时,处于4~20mA及数字信号点对点模式,现场仪表与两个数字通信主设备(也称作通信设备或主设备)之间采用特定的串行通信,主设备包括PC机或控制室系统和手持通信器。
单站操作中,主变量(过程变量)可以以模拟形式输出,也可以以数字通信方式读出,以数字方式读出时,轮询地址始终为0。
也就是说,单站模式时数字信号和4~20mA模拟信号同时有效。
“1~15”处于全数字通信状态,工作在点对多点模式,通信模式有“问答”式、“突发”式(点对点、自动连续地发送信息)。
按问答方式工作时的数据更新速率为2~3次/s,按突发方式工作时的数据更新速率为3~4次/s。
在本质安全要求下,只使用一个电源,至多能连接15台现场仪表,每个现场设备可有256个变量,每个信息最大可包含4个变量。
这就是所谓的多点(多站)操作模式。
这种工作方式尤其适用于远程监控,如管道系统和油罐储存场地。
采用多点模式,4~20mA的模拟输出信号不再有效(输出设在4mA使功耗最小,主要是为变送器供电,各个现场装置并联连接),系统以数字通信方式依次读取并联到一对传输线上的多台现场仪表的测量值(或其它数据)。
如果以这种方式构成控制系统,可以显著地降低现场布线的费用和减少主设备输入接口电路,这对于控制系统有重要价值。
HART协议根据冗余检错码信息,采用自动重复请求发送机制,消除由于线路噪声或其他干扰引起的数据误码,实现数据无差错传送。
能利用总线供电,可满足本质安全防爆要求。
HART协议信息帧的格式见1.4节分析。
HART协议的帧格式以8位为一个字节进行编码,对每个字节加上一个起始位、一个奇偶校验位和一个停止位以串行方式进行传输。
通常采用UART(通用异步接收/发送器)来完成字节的传输。
由于数据的有无和长短不恒定,所以HART数据的长度不能超过25个字节。
1.4 消息结构
HART5.0以前版本的设备一般采用“短结构”,单一的现场设备如果只利用4~20mA电流信号进行测量时,从设备的地址都是0;否则,对于多设备而言,从设备的地址是从1~15,这种短结构的地址采用“随选”的方法,随机分配1~15中的一个。
HART5.0版本推出了“长结构”,这种格式的从设备地址具有独一无二性,如同每个网卡中物理地址一样,全世界范围内都没有重复,一般占5个地址字节中的38位。
这38位地址信息包含了生产厂家的代码、设备型号码和设备识别码。
这种格式减少了误传输和误接收的可能性。
现在大多数主机设备既能支持长结构又兼容短结构,当从机的应答信号中没有“唯一”标识码时,HART5.0及其以上的版本提供的0号命令,就可以用于短帧中的设备地址识别。
也就是说,主机将根据应答信号中是否具有“惟一”标识码来决定结构格式为“长”还是“短”。
一般消息帧的组成,其中:
(1)PREAMBLE:
导言字节,一般是5~20个FF十六进制字节。
他实际上是同步信号,各通讯设备可以据此略做调整,保证信息的同步。
在开始通讯的时候,使用的是20个FF导言,从机应答0信号时将告之主机他“希望”接收几个字节的导言,另外主机也可以用59号命令告诉从机应答时应用几位导言。
(2)DELIMITER:
起始字节,他将告之使用的结构为“长”还是“短”、消息源、是否是“突发”模式消息。
主机到从机为短结构时,起始位为02,长帧时为82。
从机到主机的短结构值为06,长结构值为86。
而为“突发”模式的短结构值为01,长结构为81。
一般设备进行通讯接收到2个FF字节后,就将侦听起始位。
(3)ADDR:
地址字节,他包含了主机地址和从机地址,如前所述,短结构中占1字节,长结构中占5字节。
无论长结构还是短结构,因为HART协议中允许2个主机存在,所以我们用首字节的最高位来进行区分,值为1表示第一主机地址,第二主机用0表示。
“突发”模式是特例,0,1值将交替出现,也就是说,在该模式下,赋予2个主机的机会均等。
次高位为1表示为“突发”模式,短结构用首字节的0~4位表示值为0~15的从机地址,第5,6位赋0;而长结构用后6位表示从机的生产厂商的代码,第2个字节表示从机设备型号代码,后3~5个字节表示从机的设备序列号,构成“唯一”标志码。
长帧地址结构
短帧地址结构
另外,长结构的低38位如果都是0的话表示的是广播地址,即消息发送给所有的设备。
(4)COM:
命令字节,他的范围为253个,用HEX的0~FD表示。
31,127,254,255为预留值。
(5)BCNT:
数据总长度,他的值表示的是BCNT下一个字节到最后(不包括校验字节)的字节数。
接收设备用他可以鉴别出校验字节,也可以知道消息的结束。
因为规定数据最多为25字节,所以他的值是从0~27。
(6)RES:
状态字节,他也叫做“响应码”,顾名思义,他只存在于从机响应主机消息的时候,用2字节表示。
他将报告通讯中的错误、接收命令的状态(如:
设备忙、无法识别命令等)和从机的操作状态。
如果我们在通讯过程中发现了错误,首字节的最高位(第7位)将置1,其余的7位将汇报出错误的细节,而第2个字节全为0。
否则,当首字节的最高位为0时,表示通讯正常,其余的7位表示命令响应情况,第2个字节表示场设备状态的信息。
UART发现的通讯错误一般有:
奇偶校验、溢出和结构错误等。
命令响应码可以有128个,表示错误和警告,他们可以是单一的意义,也可以有多种意义,我们通过特殊命令进行定义、规定。
现场设备状态信息用来表示故障和非正常操作模式。
(7)DATA:
数据字节,首先我想说明的是并非所有的命令和响应都包含数据字节,他最多不超过25字节(随着通讯速度的提高,正在要求放宽这一标准)。
数据的形式可以是无符号的整数(可以是8,16,24,32bit),浮点数(用IEEE754
单精浮点格式)或ASCII字符串,还有预先制定的单位数据列表。
具体的数据个数根据不同的命令而定。
(8)CHK:
奇偶校验,方式是纵向奇偶校验,从起始字节开始到奇偶校验前一个字节为止。
另外,每一个字节都有1位的校验位,这两者的结合可以检测出3位的突发错误。
1.5 应用层
操作命令处于应用层,包括通用命令、普通命令和特殊命令。
通用命令的范围从0~30,普通命令是从32到126,特殊命令的范围是从128~253。
通用命令是所有现场装置都配备的,主要包括:
1)读制造商码和设备类型;
2)读一次变量PV和单位;
3)读当前输出和百分量程;
4)读取多达4个预先定义的动态变量;
5)读或写8字符标签16字符描述符日期;
6)读或写32字符信息;
7)读变送器量程单位阻尼时间常数;
8)读传感器编号和极限;
9)读或写最终安装数;
10)写登录地址。
常用命令提供的功能是大部分装置但不是全部现场装置都配备的,主要包括:
1)读4个动态变量之一;
2)写阻尼时间常数;
3)写变送器量程;
4)校准置零置间隔;
5)设置固定的输出电流;
6)执行自检;
7)执行主站复位;
8)调整PV零点;
9)写PV单位;
10)调整DAC零点于增益;
11)写变换函数平方根/线性;
12)写传感器编号;
13)读或写动态变量用途。
专用命令提供对特殊的现场装置适用的功能,包括:
1)读或写低流量截止值;
2)起动停止或取消累积器;
3)读或写密度校准系数;
4)选择一次变量;
5)读或写结构材料信息;
6)调整传感器校准值。
1.6 实例分析
例1:
主机到从机
FF
FF
FF
FF
FF
82
A6
06
BC
61
4E
01
00
B0
上面是主机到从机发送的一条消息。
前5个字节值都为FF,显然他是导言字节。
接着的82起始字节,表示主机到从机发出的长结构的STX帧消息。
后5个字节“A6,06,BC,61,4E”是地址字节化为二进制表示如下:
A6 06 BC 61 4E
10100110 00000110 10111100 01100001 01001110
可见首字节A6的最高位为1表示主机,次高位为0表示非突发模式,后面的38bit表示设备的惟一标号:
“100110”是生产厂家代码,值为38,是Rosemount公司的代码;
后一字节06是设备型号代码,06代表的型号是3051C;
后面的3个字节是设备识别号,本例中的值为12345678;
再接下来的01是命令字节,表示1号命令,即读取PV值后面的00是表示数据的长度;
本例中无数据,值为0;
最后是校验字节B0;
例2:
从机到主机
FFFFFFFFFF
86
A606BC614E
01
07
0000
06 40B00000
45
上面表示的是从机到主机的一条消息。
本例大部分与例1相似,不同的是数据字节不再为0,其中的06表示单位PSI,后面的4个字节是用浮点数表示的值,为5.5。
并且由于本例是由从机到主机的应答消息,所以存在着RES位,即本例中的“0000”,表示“OK”。
例3:
突发模式
FFFFFFFF
81
530304E6D7
03
1A
0060
413FA000
27
413FA000
39
42476000
06
BF066000
39
419500
00
D4
FF
上面是突发模式发出的一条消息。
第1个字节81表示突发的长结构模式,与前例中相似的地方不再介绍。
注意到状态字节“0060”后的字节“413FA000”,他表示的是当前的电流值,计算后是11.9766;
后面的“27”表示单位mA,后面的“39”表示“%”。
数据字节中的“42476000”,“BF066000”,“41950000”分别表示“SV”,“TV”,“FV”,表示方法与PV相同。
1.7 特点和优势
从HART技术转向具有先进功能的基金会现场总线,过程既简单成本又低,显露出当今快速发展的仪表市场中新的商机。
1、满足诸如压力和温度变送器等现场设备用的标准转换块的要求,这使多个厂商平台之间的一致性提高了,使设备更为简化了,使未来的现场校准装置工作时不需要设备描述(DDs)。
2、支持分调度,允许总线上的某些回路的执行速度比其它回路得快。
同样也支持双调度,所以新的控制策略能被下载下来而且变换能立即出现。
3、支持无扰动替换的固件下载,因而用户能轻松地使设备固件升级,通过最新的诊断和控制增强功能受益。
4、支持H1设备的快速链接定位。
标准链接为48ms,但是如果更快的链接定位速度(例如插槽时间、最小的交互PDU延迟,最大的响应延迟)都能得到支持,每次链接所需的时间是能缩短的。
这导致总线的循环时间比老式设备所需的时间短得多。
5、支持输出设备,例如阀门定位器和执行机构内的多变量控制器(MVC)发布,因而同时发布所有总线用的输出值的中央控制器能使通信和控制设备得到优化。
同样,多通道输入设备应支持MVC。
6、重新查看现场总线模式和状态机制时要仔细。
谨慎地使用数字输入DI块显示诸如就地超驰,手动操作,故障保护连锁等设备状态。
相反,设备的内部状态应通过模式参数让操作人员一目了然,而且应通过状态标签在控制策略中发挥作用。
7、HART协议保证功能块的执行尽可能快些,以便缩短总线总的循环时间,这可能需要对代码进行优化并采用微控制器,因为在大多数情况下采取这两个措施能使执行时间足以快些。
算法共处理器或许有用。
2 Hart-IP协议
2.1 概要
为了满足体量增长快速