HART数据格式解析101.docx
《HART数据格式解析101.docx》由会员分享,可在线阅读,更多相关《HART数据格式解析101.docx(20页珍藏版)》请在冰豆网上搜索。
![HART数据格式解析101.docx](https://file1.bdocx.com/fileroot1/2022-10/13/6c1fcb7a-bb15-496c-87d9-40ae224da1d1/6c1fcb7a-bb15-496c-87d9-40ae224da1d11.gif)
HART数据格式解析101
HART数据格式解析2014-10-14
1)前导码FF:
5~20个字节
2)定界符:
只有1字节。
此字段的最高位决定该帧是长型帧还是短型帧;低三位表示了不同的帧的类型,其余位保留。
3)地址:
①长帧格式地址:
共5个字节(40位)。
长帧格式地址建立在设备唯一标识符的基础上,设备唯一标识符标志了每个从设备或现场仪表。
它分为三个部分:
(1).第一字节的最高位是主设备地址位,该位为1时表示基本主设备,为0时表示副主设备。
(2).第一字节的第六位是成组模式设备,该位为1时,表示从设备处于成组模式,为0时表示从设备没有处于成组模式。
(3).长地址的其他部分是设备的惟一标识符,共38位。
均为0表示广播地址。
②短帧格式地址:
只有1字节。
为保证向后兼容性,HART协议规定只有0号通用命令支持短帧格式。
它使协议
可动态地将链路上每个设备与一个短帧地址相关联。
短帧地址可在链路初始化时
使用,以便快速检测链路地址空间。
短帧地址分四部分:
最高位是主设备地址:
该位为1时表示主设备,为0时表示副主设备;
第六位为成组模式设备位:
为1时表示从设备处于成组模式,为0时,表示从设备没处
于成组模式;
第四、五位必须置为0;
最低四位表示巡检地址。
4)命令字节:
为1字节
它表明该帧所封装的HART命令,命令字节值在从设备响应
中原封不动地返回。
5)字节计数:
为1字节
它表明此字节与最后的帧校验字节之间的数据字节个数。
用于识别帧的结束。
字节长度范围应该是在0-27。
6)数据域:
由整数字节的用户数据构成,长度为0-25字节
7)校验字节:
1个字节,一般为除开前导码和校验字节之外所有字节的异或之和
8)响应码:
2字节,只在从-主帧中出现。
响应码第一字节指明通信状态。
第二字节表示现场设备工作状
态。
该帧数据只有在响应码第一字节的位7(b7)为0时才有效。
①响应码的第一个字节的第7位如果置位,则剩余的位包含了有关通信错误的信息;第一个字节的第7位如果复位,则剩余的位用来表示命令响应信息。
?
Bit7=1时,其余位表示接收时的错误信息:
?
Bit6垂直奇偶校验错误
?
Bit5覆盖错误
?
Bit4帧错误
?
Bit3纵向奇偶校验错误
?
Bit2保留,应清零。
?
Bit1缓冲区溢出
?
Bit0未定义:
至今尚未定义
?
Bit7=0时,则该字节包含有关命令执行情况的信息。
其余bit6-bit0编码,范
围无符号整数0—127,如:
?
响应码#32忙(00100000)2
响应码#64命令不支持
②响应码的第二个字节为与设备的操作状态有关的信息,如在第一个字节中报告有错误,则该字节无意义。
?
?
?
?
?
?
?
?
?
该字节各位的意义如下:
Bit7现场设备工作不正常Bit6组态变化:
写或设置命令被执行Bit5冷启动:
由于设置信息的重安装Bit4有更多的状态信息可用Bit3基本变量的模拟输出被固定Bit2基本变量的模拟输出己饱和Bit1非基本变量超限Bit0基本变量超限
主从设备的短帧格式:
主从设备长帧格式:
HART通用命令一览
HART命令0:
读标识码
返回扩展的设备类型代码,版本和设备标识码。
请求:
无
响应:
字节0:
254
字节1:
制造商ID(Enum)
字节2:
设备类型(Enum)
字节3:
请求的最小前导符数(主->从)
字节4:
通用命令文档版本号
字节5:
设备规范版本号
字节6:
设备软件版本号
字节7:
(前五个bit)设备硬件版本号
(后三个bit)物理信号类型(Enum)
字节8:
设备标志
字节9-11:
设备ID号
HART命令1:
读主变量(PV)
以浮点类型返回主变量的值。
请求:
无
响应:
字节0:
主变量单位代码字节1-4:
主变量
HART命令2:
读主变量电流值和百分比
读主变量电流和百分比,主变量电流总是匹配设备的AO输出电流。
百分比没有限制在0-100%之间,如果超过了主变量的范围,会跟踪到传感器的上下限。
请求:
无
响应:
字节0-3:
主变量电流,单位毫安字节4-7:
主变量量程百分比
HART命令3:
读动态变量和主变量电流
读主变量电流和4个(最多)预先定义的动态变量,主变量电流总是匹配设备的AO输出电流。
每种设备类型都定义的第二、第三和第四变量,如第二变量是传感器温度等。
请求:
无
响应:
字节0-3:
主变量电流,单位毫安
字节4:
主变量单位代码
字节5-8:
主变量
字节9:
第二变量单位代码
字节10-13:
第二变量
字节14:
第三变量单位代码
字节15-18:
第三变量
字节19:
第四变量单位代码
字节20-23:
第四变量
HART命令4:
保留
HART命令5:
保留
HART命令6:
写POLLING地址
这是数据链路层管理命令。
这个命令写Polling地址到设备,该地址用于控制主变量AO输出和提供设备标识。
只有当设备的Polling地址被设成0时,设备的主变量AO才能输出,如果地址是1~15则AO处于不活动状态也不响应应用过程,此时AO被设成最小;并设置传输状态第三位——主变量模拟输出固定;上限/下限报警无效。
如果Polling地址被改回0,则主变量AO重新处于活动状态,也能够响应应用过程。
请求:
字节0:
设备的Polling地址
响应:
字节0:
设备的Polling地址
HART命令7:
HART命令8:
HART命令9:
HART命令10:
HART命令11:
用设备的Tag读设备的标识
这是一个数据链路层管理命令。
这个命令返回符合该Tag的设备的扩展类型代码、版本和设备标识码。
当收到设备的扩展地址或广播地址时执行该命令。
响应消息中的扩展地址和请求的相同。
请求:
字节0-5:
设备的Tag,ASCII码
响应:
字节0:
254
字节1:
制造商ID代码
字节2:
制造商设备类型代码
字节3:
请求的前导符数
字节4:
通用命令文档版本号
字节5:
变送器版本号
字节6:
本设备的软件版本号
字节7:
本设备的硬件版本号
字节8:
设备的Flags
字节9-11:
设备的标识号
HART命令12:
读消息(Message)
读设备含有的消息。
请求:
无
响应:
字节0-23:
设备消息,ASCII
HART命名13:
读标签Tag,描述符Description和日期Date
读设备的Tag,DescriptionandDate。
请求:
无
响应:
字节0-5:
标签Tag,ASCII
字节6-17:
描述符,ASCII
字节18-20:
日期,分别是日、月、年-1900
HART命令14:
读主变量传感器信息
读主变量传感器序列号、传感器极限/最小精度(Span)单位代码、主变量传感器上限、主变量传感器下限和传感器最小精度。
传感器极限/最小精度(Span)单位和主变量的单位相同。
请求:
无
响应:
字节0-2:
主变量传感器序列号
字节3:
主变量传感器上下限和最小精度单位代码
字节4-7:
主变量传感器上限
字节8-11:
主变量传感器下限字节12-15:
主变量最小精度
HART命令15:
读主变量输出信息
读主变量报警选择代码、主变量传递(Transfer)功能代码、主变量量程单位代码、主变量上限值、主变量下限值、主变量阻尼值、写保护代码和主发行商代码。
请求:
无
响应:
字节0:
主变量报警选择代码
字节1:
主变量传递Transfer功能代码
字节2:
主变量上下量程值单位代码
字节3-6:
主变量上限值
字节7-10:
主变量下限值
字节11-14:
主变量阻尼值,单位秒
字节15:
写保护代码
字节16:
商标发行商代码PrivateLabelDistributorCode
HART命令16:
读最终装配号
读设备的最终装配号。
请求:
无
响应:
字节0-2:
最终装配号
HART命令17:
写消息
写消息到设备。
请求:
字节0-23:
设备消息,ASCII
响应:
字节0-23:
设备消息,ASCII
HART命令18:
写标签、描述符和日期
写标签、描述符和日期到设备。
请求:
字节0-5:
标签Tag,ASCII
字节6-17:
描述符Descriptor,ASCII
字节18-20:
日期
响应:
字节0-5:
标签Tag,ASCII
字节6-17:
描述符Descriptor,ASCII字节18-20:
日期
HART命令19:
写最后装配号
写最后装配号到设备。
请求:
字节0-2:
最终装配号
响应:
字节0-2:
最终装配号
命令33:
读变送器变量
读选择的变送器变量。
这个命令有Burst模式操作的能力,与命令107一起组态写Burst模式变送器变量。
请求:
字节0:
分配到Slot0的变送器变量代码
字节1:
分配到Slot1的变送器变量代码
字节2:
分配到Slot2的变送器变量代码
字节3:
分配到Slot3的变送器变量代码
响应:
字节0:
分配到Slot0的变送器变量代码
字节1:
Slot0单位代码
字节2-5:
Slot0所选变送器变量数据
字节6:
分配到Slot1的变送器变量代码
字节7:
Slot1单位代码
字节8-11:
Slot1所选变送器变量数据
字节12:
分配到Slot2的变送器变量代码
字节13:
Slot2单位代码
字节14-17:
Slot2所选变送器变量数据
字节18:
分配到Slot3的变送器变量代码
字节19:
Slot3单位代码字节20-23:
Slot3所选变送器变量数据
命令34:
写主变量阻尼值
主变量阻尼值表示一个时间常数(该时间到时,对阶跃响应的输出应该是稳态值的63%)。
主变量的模拟和数字输出都使用这个变量。
请求:
字节0-3:
主变量阻尼值,单位秒
响应:
字节0-3:
实际主变量阻尼值,单位秒
命令35:
写主变量量程值
主变量量程上限和下陷是独立的。
该命令收到的主变量量程单位不影响该设备的主变量单位。
主变量量程值按照接收单位返回。
多数设备允许设备的量程上限比下限低,以使设备工作在反向输出。
请求:
字节0:
主变量量程单位代码
字节1-4:
主变量量程上限
字节5-8:
主变量量程下限
响应:
字节0:
主变量量程单位代码
字节1-4:
主变量量程上限字节5-8:
主变量量程下限
命令36:
设置主变量量程上限
将主变量的当前值设置成主变量量程上限,量程上限的改变不影响量程下限的值。
按下设备上的“SPAN”按钮执行与该命令相同的功能。
多数设备允许设备的量程上限比下限低,以使设备工作在反向输出。
请求:
无
响应:
无
命令37:
设置主变量量程下限
按下设备上的“ZERO”按钮执行与该命令相同的功能。
将主变量的当前值设置成主变量量程下限,量程下限的改变将成比例的改变量程上限的值,因此精度Span保持不变。
当这个改变把量程上限推到了传感器上限时,主变量