HART,可寻址远程传感器高速通道的开放通信协议。用于现场智能仪表和控制室设备之间的通信协议。HART装置提供具有相对低的带宽,适度响应时间的通信,经过10多年的发展,HART技术在国外已经十分成熟,并已成为全球智能仪表的工业标准。
HART协议采用基于Bell202标准的FSK频移键控信号,在低频的4-20mA模拟信号上叠加幅度为0.5mA的音频数字信号进行双向数字通讯,数据传输率为1.2kbps。由于FSK信号的平均值为0,不影响传送给控制系统模拟信号的大小,保证了与现有模拟系统的兼容性。在HART协议通信中主要的变量和控制信息由4-20mA传送,在需要的情况下,另外的测量、过程参数、设备组态、校准、诊断信息通过HART协议访问。
HART规范
HART协议实现了开放系统互连(OSI)7层协议模型的第1、 2、 3、 4和7层:
协议物理层
以贝尔202标准为基础,采用频移键控(FSK),以1200bps的速率通信。代表0和1位值的信号频率分别为2200和1200HZ。该低电平信号叠加在4~20mA的模拟测量信号之上,而不会对模拟信号造成任何干扰。
数据链路层
定义了一项主从协议 - 在正常使用下,现场设备只在收到信号时才做回答。可以有两个主设备,例如,控制系统作为第一主设备,而手持HART通信器作为第二主设备。时序规则定义每个主设备可以开始通信事务的时间。单个多点线缆对可以连接多达15个或更多的从设备。
网络层
提供路由、端到端安全及传输服务。它管理与通信设备之间端到端通信的“会话”。
传输层
数据链路层确保通信成功地从一个设备到另一个设备传播。传输层可以被用来确保端到端通信的成功。
应用层
定义了协议所支持的命令、响应、数据类型和状态报告。在应用层,协议的公共命令分为四大类:
1、通用命令 - 提供在所有现场设备都必须实现的功能
2、常用命令 - 提供很多设备所共有的功能,但并不是所有的现场设备都具有的功能
3、设备特定命令 - 提供某特定现场设备所特有的功能,由设备制造商所指定
4、设备系列命令 - 为特定测量类型的仪器提供一套标准化的功能,允许无需使用设备特定指令便能进行完全的通用性访问。
通用命令
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,Description and Date。
请求:无
响应:
字节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: 商标发行商代码Private Label Distributor Code
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: 最终装配号