HART报文详解

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字节 奇校验位 停止位
长度 1bit 8bit 1bit 1bit
描述 固定为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 起始字节

结构:

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

2.2.3 地址

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

短帧:

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

长帧:

用途 主机序 突发模式 扩展的设备类型 设备ID
长度 1bit 1bit 14bit 24bit
描述 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 处于写保护模式
0x08 1、更新失败2、设置为接近值3、延时响应
0x09 1、低限范围值太大2、不正确的电流模式
0x0a 1、低限范围值太小2、无效的就地锁定
0x0b 1、上限范围值太大2、多从机模式3、无效设备变量代码4、调整超范围5、不能就地锁定
0x0c 1、上限范围值太小2、无效单位代码3、无效的模式选择4、无效的插槽号
0x0d 1、上、下限范围值超标2、计算错误3、无效的命令号
0x0e 1、量程太小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 数据

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

posted @ 2024-04-06 23:52  杜衡老师  阅读(12)  评论(0编辑  收藏  举报