前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >HART报文详解

HART报文详解

原创
作者头像
杜衡老师
发布2024-04-06 23:55:34
3130
发布2024-04-06 23:55:34
举报
文章被收录于专栏:工控协议详解

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 数据

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

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 1.简介
  • 2.报文格式
    • 2.1 HART字节
      • 2.2HART报文格式
        • 2.2.1 前导码
        • 2.2.2 起始字节
        • 2.2.3 地址
        • 2.2.4 扩展
        • 2.2.5 命令
        • 2.2.6 状态
        • 2.2.7 数据
    领券
    问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档