1.简介

HART(Highway Addressable Remote Transducer可寻址远程传感器高速通道)协议,主要用于工业自动化领域的通信协议,专为发送和接收数字信息而设计,同时也支持模拟信号(如4-20 mA信号)的传输。这种设计使得HART设备能够同时传输模拟信号和数字数据,从而提供了更加灵活和强大的通信能力。

标准的HART传输是叠加在4-20mA信号上的FSK(移动键控)信号,替代方案是C8PSK(同调8路相移键控)信号,代替方案提高了HART的数字传输速率。此外还有一些基于RS-485、IP、TDMA的HART通讯方式,在此不再赘述。

本文仅讨论HART FSK。

2.报文格式

2.1 HART字节

因为HART协议有自己独特的物理层通讯方式,所以其在数据链路层上的传输采用一个被称为HART字节组的传输方式,每次传输会发送一个11位的HART字节,多个HART字节中的数据部分组合成一个有效的HART数据帧。(这个过程可以不准备的类比成一长串数据通过多个TCP/IP数据包发送的过程)

HART字节的格式如下:

用途开始位HART字节奇校验位停止位
长度1bit8bit1bit1bit
描述固定为0,表示开始HART数据,从LSB(最低有效位)开始,以MSB(最高有效位)结束。用于校验数据固定为1,表示结束

2.2HART报文格式

结构如下:

用途长度描述
前导码5-20字节5-20个0xFF,用于传输的开始,
起始字节1字节用来标识数据包的起始位置
地址1或5字节包含了主机地址和从机地址,短帧中占1字节,长帧中占5字节
扩展0-3字节用于潜在的扩展,长度由其实字节指示
命令1字节表示这条数据的作用
字节计数1字节状态和数据部分的大小,单位:字节
状态2字节只存在于从机响应主机的消息,报告错误和状态
数据0-253字节不是所有的命令都有数据字节,用于存放数据
校验和1字节纵向奇偶校验,用于检测错误

2.2.1 前导码

前导码出现在每条消息的开头。前导码由一系列相同的字节组成,通常是连续的"FF"字节(在二进制中为11111111)。前导码的主要作用包括几个方面:

  • 同步:前导码为接收设备提供了同步信号,帮助接收设备确定数据帧的开始位置。通过识别这一系列重复的模式,接收端的解码器可以与发送端的数据流同步,从而正确地解读后续传来的信息(比如起始位、地址、命令、数据等)。
  • 清除线路:连续的前导码有助于清除通信线路上的任何噪声或干扰,确保数据传输的清晰度和准确性。这种"清道"的作用对于在现场环境中运行的工业设备尤其重要,因为这些环境往往充满电磁干扰。
  • 接收器准备:前导码还给接收设备足够的时间来准备接收即将到来的数据。在HART通信中,接收设备(如处理器或控制器)需要调整其接收机制以准确解码即将到来的信息。前导码的存在为这种调整提供了缓冲时间。

2.2.2 起始字节

结构:

用途地址类型扩展字节数物理层类型帧类型
长度1bit2bit2bit3bit
描述0:轮询 - 字节地址(短帧)
1:唯一 - 字节地址(长帧)
通常为0000:异步(例如,FSK)
11:同步(例如,C8PSK
001:突发帧响应
010:主机到现场设备
110:现场设备到主机

2.2.3 地址

地址部分,1字节为短帧,5字节为长帧。

短帧:

用途主机序突发模式设备地址
长度1bit1bit2bit4bit
描述1:第一主机
0:第二主机
1:是
0:否
始终为00

长帧:

用途主机序突发模式扩展的设备类型设备ID
长度1bit1bit14bit24bit
描述1:第一主机
0:第二主机
1:是
0:否

2.2.4 扩展

扩展部分主要为未来预留,它主要规划了以下方面的作用:

  • 设备识别和分类:扩展字段允许对连接到系统的设备进行更详细的识别和分类。通过这些字段,系统可以识别设备的类型、制造商和其他相关信息。这对于系统配置和故障排除非常有用。
  • 增强的设备信息:一些扩展字段用于存储有关设备性能、功能和配置选项的额外信息。这使得操作者可以更准确地控制设备,同时优化系统的整体性能。
  • 改进的诊断能力:扩展字段可以包含有关设备状态和健康的详细信息,使得对设备进行远程监控和诊断成为可能。这有助于提前发现问题,减少系统停机时间。
  • 更高的数据传输效率:通过利用扩展字段传输数据,HART协议能够在保持向后兼容的同时,提供更高的数据传输效率和更大的数据容量。
  • 支持新技术和功能:随着过程控制技术的发展,新的监测和控制需求不断出现。扩展字段为支持这些新技术和功能提供了可能,确保了HART协议的长期适用性和灵活性。

2.2.5 命令

命令分为三种类别:通用、常用实践(也译作常见做法)、设备特定(专用命令),通用命令即所有采用HART协议的设备都要遵循的,常用实践为常见设备都要遵循的,特备特定为针对某些厂家或型号的设备才有的命令。

机翻自HART通信基金会官网

命令编号命令描述类型
0读取设备ID通用
1读取主要变量通用
2读取回路电流和量程百分比通用
3读取动态变量和回路电流通用
6写入轮询地址通用
7读取回路配置通用
8读取动态变量分类通用
9带状态读取设备变量通用
11读取与标签关联的唯一标识符通用
12读取信息通用
13读取标签、描述符、日期通用
14读取主要变量传感器信息通用
15读取设备信息通用
16读取最终组装号通用
17写信息通用
18写标签、描述符、日期通用
19写最终组装号通用
20读取长标签通用
21读取与长标签关联的唯一标识符通用
22写长标签通用
38重置配置更改标志通用
48读取额外的设备状态通用
33读取设备变量常用实践
34写主要变量阻尼值常用实践
35写主要变量量程值使用命令35写入的数据将更新菜单中的4mA和20mA设置常用实践
36设置主要变量上限量程值常用实践
37设置主要变量下限量程值常用实践
40进入/退出固定电流模式常用实践
41执行自检常用实践
44写主要变量单位常用实践
45调整回路电流零点常用实践
46调整回路电流增益常用实践
47写主要变量传递函数常用实践
54读取设备变量信息常用实践
59写响应前导符数量常用实践
71锁定设备常用实践
76读取设备锁定状态常用实践
140写入场统计信息 覆盖设备记录的最大值和最小值设备特定
141读取场统计信息 从设备读取当前的最大值和最小值设备特定
144写开关1配置 写入开关1模式、设定点、死区、锁存设置、延迟设置设备特定
145读开关1配置 读取开关1模式、设定点、死区、锁存设置、延迟设置设备特定
221启用/禁用写保护,修改密码 允许启用/禁用写保护模式并允许编辑设备密码设备特定
222读、写保护状态 读取设备的写保护状态设备特定
223写入跳闸计数器 向与开关1和开关2关联的跳闸计数器写入一个0 – 9999之间的无符号16位整数设备特定
224切换 1和2 读取与开关1和开关2关联的跳闸计数器的值,该数值为一个0 – 9999之间的无符号16位整数设备特定
225手动重置 重置一个或多个处于锁存状态的开关设备特定
226读取开关锁存状态 读取一个或多个开关的锁存状态设备特定
244写开关2配置 写入开关2模式、设定点、死区、锁存设置、延迟设置设备特定
245读开关2配置 读取开关2模式、设定点、死区、锁存设置、延迟设置设备特定
246写堵塞端口设置设备特定
247读堵塞端口设置设备特定
248写偏移和量程设备特定
249读偏移和量程设备特定

2.2.6 状态

状态分1个字节的响应码和1个字节的设备状态码。

2.2.6.1 响应码

正常通讯时,最高bit为0,响应码为:

响应码含义
0x00执行成功
0x02错误的命令
0x03设置参数太大
0x04设置参数太少
0x05接收的数据太少
0x06专用命令错
0x07处于写保护模式
0x081、更新失败2、设置为接近值3、延时响应
0x091、低限范围值太大2、不正确的电流模式
0x0a1、低限范围值太小2、无效的就地锁定
0x0b1、上限范围值太大2、多从机模式3、无效设备变量代码4、调整超范围5、不能就地锁定
0x0c1、上限范围值太小2、无效单位代码3、无效的模式选择4、无效的插槽号
0x0d1、上、下限范围值超标2、计算错误3、无效的命令号
0x0e1、量程太小2、设置的下限值引起上限值改变而超出传感器极限
0x0f无效的模拟通道号
0x10访问受限
0x11无效的设备变量索引
0x12无效的单位代码
0x13设备变量的应用不合理
0x14无效的扩展命令号
0x1c不支持的单位代码
0x20
0x21延迟响应开始
0x22延迟响应进行中
0x40命令不能执行

通讯故障时,最高位bit为1,响应码为:

响应码含义
0xc0接收字节字节奇校验出错
0xa0接收缓冲区数据覆盖错
0x90没有接收到停止位出错
0x88校验字节出错
0x82接收缓冲区溢出

具体含义受不同命令影响,想见基金会资料。

2.2.6.2 设备状态码
状态码含义
0x80设备故障
0x40配置参数改变
0x20设备冷启动
0x08环路电流固定模式
0x04环路电流饱和
0x02设备变量(没有映射到主变量)超限
0x01主变量超出极限

2.2.7 数据

数据部分格式取决于命令的不同,均由不同的命令定义。


杜衡老师
1 声望2 粉丝

引用和评论

0 条评论