JZGKCHINA
工控技术分享平台
引
言
HART协议最初是由美国Rosemount公 司开发,使用FSK技术,在4~20mA信号上叠加一个频率信号,成功实现了模拟信号和数字信号双向通讯,而互相之间没有干扰。HART协议使用OSI 标准的第一层物理层、第二层数据链路层和第七层应用层。HART协议是一种主从协议,规定了传输的物理形式、 消息结构、数据格式包括一系列操作指令,HART协议支持双主站,一对电缆线上最多可以连接15个从设备。
工作原理
HART 协议物理层
- 物理层规定了信号的传输方法、传输介质。采用Bell202标准的FSK频移键控信号,在低频的4~20mA模拟信号上叠,加一个频率数字信号进行双向数字通信。
- 数字信号的幅度为0 . 5 m A ,数据传输率为1200bps,1200Hz代表逻辑“1”,2200Hz代表逻辑“0”。数字信号波形如左图所示
HART 数据链路层
- 数据链路层规定HART协议帧的格式,可寻址范围0~15,“0”时,处于4~20mA及数字信号点对点模式,现场仪表与两个数字通信主设备(也称作通信设备或主设备)之间采用特定的串行通信,主设备包括PC机或控制室系统和手持通信器。单站操作中,主变量(过程变量)可以以模拟形式输出,也可以以数字通信方式读出,以数字方式读出时,轮询地址始终为0。也就是说,单站模式时数字信号和4~20mA模拟信号同时有效。
- “1~15”处于全数字通信状态,工作在点对多点模式,通信模式有“问答”式、“突发”式(点对点、自动连续地发送信息)。按问答方式工作时的数据更新速率为2~3次/s,按突发方式工作时的数据更新速率为3~4次/s。
- 在本质安全要求下,只使用一个电源,至多能连接15台现场仪表,每个现场设备可有256个变量,每个信息最大可包含4个变量。这就是所谓的多点(多站)操作模式。这种工作方式尤其适用于远程监控,如管道系统和油罐储存场地。
- 采用多点模式,4~20mA的模拟输出信号不再有效(输出设在4mA使功耗最小,主要是为变送器供电,各个现场装置并联连接 ),系统以数字通信方式依次读取并联到一对传输线上的多台现场仪表的测量值(或其它数据)。如果以这种方式构成控制系统,可以显著地降低现场布线的费用和减少主设备输入接口电路,这对于控制系统有重要价值。
- HART协议根据冗余检错码信息,采用自动重复请求发送机制,消除由于线路噪声或其他干扰引起的数据误码,实现数据无差错传送。
- HART协议的帧格式以8位为一个字节进行编码,对每个字节加上一个起始位、一个奇偶校验位和一个停止位以串行方式进行传输。通常采用UART(通用异步接收/发送器)来完成字节的传输。由于数据的有无和长短不恒定,所以HART数据的长度不能超过25个字节
HART 数据链路层-消息结构
如下所示,一条消息包括源地址、目的地址和一个校验位。每一个应答消息中包括现场设备状态,用于确保持续通讯的顺畅进行。数据位可有可无,视具体情况而定。一般每秒种可以传输2~3条消息。
(1)PREAMBLE 导言字节,一般是5~20个FF十六进制字节。他实际上是同步信号,各通讯设备可以据此略做调整,保证信息的同步。在开始通讯的时候,使用的是20个FF导言,从机应答0信号时将告之主机他“希望”接收几个字节的导言,另外主机也可以用59号命令告诉从机应答时应用几位导言。
(2)START 起始字节,他将告之使用的结构为“长”还是“短”、消息源、是否是“突发”模式消息。主机到从机为短结构时,起始位为02,长帧时为82。从机到主机的短结构值为06,长结构值为86。而为“突发”模式的短结构值为01,长结构为81。一般设备进行通讯接收到2个FF字节后,就将侦听起始位。
(3)ADDR 地址字节,他包含了主机地址和从机地址,如前所述,短结构中占1字节,长结构中占5字节。无论长结构还是短结构,因为HART协议中允许2个主机存在,所以我们用首字节的最高位来进行区分,值为1表示第一主机地址,第二主机用0表示。“突发”模式是特例,0,1值将交替出现,也就是说,在该模式下,赋予2个主机的机会均等。次高位为1表示为“突发”模式,短结构用首字节的0~ 4位表示值为0~15的从机地址,第5,6位赋0;而长结构用后6位表示从机的生产厂商的代码,第2个字节表示从机设备型号代码,后3~5个字节表示从机的设备序列号,构成“唯一”标志码。
(4)COM 命令字节,他的范围为253个,用HEX的0~FD表示。31,127,254,255为预留值。
(5)BCNT 数据总长度,他的值表示的是BCNT下一个字节到最后(不包括校验字节)的字节数。接收设备用他可以鉴别出校验字节,也可以知道消息的结束。因为规定数据最多为25字节,所以他的值是从0~27。
(6)STATUS 状态字节,他也叫做“响应码”,顾名思义,他只存在于从机响应主机消息的时候,用2字节表示。他将报告通讯中的错误、接收命令的状态(如:设备忙、无法识别命令等)和从机的操作状态。
如果我们在通讯过程中发现了错误,首字节的最高位(第7位)将置1,其余的7位将汇报出错误的细节,而第2个字节全为0。否则,当首字节的最高位为0时,表示通讯正常,其余的7位表示命令响应情况,第2个字节表示场设备状态的信息。
UART发现的通讯错误一般有:奇偶校验、溢出和结构错误等。命令响应码可以有128个,表示错误和警告,他们可以是单一的意义,也可以有多种意义,我们通过特殊命令进行定义、规定。现场设备状态信息用来表示故障和非正常操作模式。
(7)DATA 数据字节,首先我想说明的是并非所有的命令和响应都包含数据字节,他最多不超过25字节(随着通讯速度的提高,正在要求放宽这一标准)。数据的形式可以是无符号的整数(可以是8,16,24,32 b),浮点数(用IEEE754单精浮点格式)或ASCII字符串,还有预先制定的单位数据列表。具体的数据个数根据不同的命令而定。
(8)CHK 奇偶校验,方式是纵向奇偶校验,从起始字节开始到奇偶校验前一个字节为止。另外,每一个字节都有1位的校验位,这两者的结合可以检测出3位的突发错误。
HART 应用层
操作命令处于应用层,包括通用命令、普通命令和特殊命令。
通用命令的范围从0~30:
0,11:设备识别(厂商、设备类型、版本)
1,2,3:读测量值
6:置随选地址
12,13,17,18:读、写用户输入文本信息
14,15:读设备信息(传感器序列号,传感限,报警操作,范围,传输结构)
16,19:读、写最终装配号
普通命令是从32到126,提供了大多数设备的功能命令。
普通命令中的123和126号命令并非“公共”的,他们专用于生产厂家在生产设备时输入设备的特殊信息,一般用户是不会改动的,像设备识别号之类。也可以用于直接读、写存储器。
33,61,110:读测量值
34~37,44,47:设置操作变量(范围、时限、PV值、传输功能)
38:复位“结构变化”标志
39:EPROM控制
40~42:对话功能(固定电流模式、自测、复位)
43,45,46:模拟输入、输出整流
48:读附设备的状态
49:写传感器序列号
50~56:用传输变量
57,58:单元信息(标志、描述、数据)
59:写所需导言号
60,62~70:使用复合模拟输出
107~109:突发模式控制
常用重要命令介绍
0,11:用于识别现场设备。我们知道无论采用长结构还是短结构都可以标识现场设备,应答0号命令的信息中就包含了对不同设备的标识;然后,主机建立不同的标志,为随后的长结构命令做准备。在HART4.0版本及以前,传输类型码分为2字节:一个是生产厂商代码,另一个是设备类型代码。而两个字节还可以节略。到了HART5.0版本就必须使用扩充的代码表示设备信息,还用ID号代替了最终流水线号。
一个主机通常以0号命令开始通讯,赋予随选地址0,然后扫描1~15地址,看谁期待操作,显然由于HART5.0版本后的设备,主机可以使用11号命令,再带一个全0的广播地址,外加命令中的标志作为数据,等待着具有相同标志的从机响应,而应答的11号命令等同于0号命令。
HART 命令分析
例1:主机到从机
上面是主机到从机发送的一条消息。前5个字节值都为FF,显然他是导言字节。接着的82起始字节,表示主机到从机发出的长结构的消息。
后5个字节 “A6,06,BC,61,4E”是地址字节化为二进制表示如下:
- 可见首字节A6的最高位为1表示主机,次高位为0表示非突发模式,后面的38 b表示设备的惟一标号:
- “100110”是生产厂家代码,值为38,是Rosemount公司的代码;
- 后一字节06是设备型号代码,06代表的型号是3051C;
- 后面的3个字节是设备识别号,本例中的值为12345678;
- 再接下来的01是命令字节,表示1号命令,即读取PV值后面的00是表示数据的长度;
- 本例中无数据,值为0;
- 最后是校验字节B0
例2:从机到主机
- 上面表示的是从机到主机的一条消息。本例大部分与例1相似,不同的是数据字节不再为0,其中的06表示单位PSI;
- 后面的4个字节是用浮点数表示的值, 为5.5。
- 并且由于本例是由从机到主机的应答消息,所以存在着状态位,即本例中的“00 00”,表示“OK”。
例3:突发模式
上面是突发模式发出的一条消息。
- 第1个字节81表示突发的长结构模式,与前例中相似的地方我们不再介绍。
- 注意到状态字节“00 60”后的字节“41 3FA000”,他表示的是当前的电流值,计算后是11. 976 6;
- 后面的27表示单位mA,像后面的39表示“%”一样。
- 数据字节中的“42 47 60 00”,“BF06 60 00”,“41 95 0000”分别表示“SV”,“TV”,“FV”表示方法与PV相同。
- 经过解释后的消息可以表示为:“LBTXS/RdAllPv/026/0060/11.9766/mA/11.9766/%/49.8438/psi/-0.524902/%/18.625/D4”。
标准的HART协议命令格式
读设备序号命令格式说明如下:
由于要确保待发的命令完整的发送,我们特意在标准命令格式序文前加了一个起始位“23”和在校验位后加了一个结束符“40”。
例如:发送读取设备序号命令 23 FF FF FF FF FF 02 80 00 00 82 40
命令注解如下表所示:
返回的命令格式如下表所示:
返回的数据为:FF FF FF FF FF 06 80 00 0E 00 40 FE 50 7F 06 05 01 01 08 00 6B 73 3A 30
返回数据命令注解如下表所示:
返回数据6B 73 3A就是这台设备的序号。
起始位和结束符只在发送命令时做确定命令的完整发送,它不改变命令本身,更不会影响数据的转换。
发送读取液位计动态变量命令
命令格式说明如下表所示:
返回的数据为:FF FF FF FF FF 86 90 7F 6B 73 3A 03 15 00 40 40 D4 E0 00 2D 3E 09 1C 2D 2D 3E 92 E3 9E 20 41 D4 B2 B8 01
返回数据命令注解如下表所示:
往期回顾
老曹带你做大神之走进奇妙的工控世界(一)
老曹连载:(二~七) 老曹带你做大神之走进奇妙的工控世界(八)
公开课|Modbus协议精讲
公开课 | 工控系统的网络安全
一小时完成上位机
姿势已摆好
就等你点啦
作 者 简 介
曹俊义
工业物联网资深构建专家
工厂智能化改造践行专家
资深工业网络通讯专家
工业自动化控制系统专家
ProSoft产品顶级技术专家
工业通讯领域沉浸十数年,深喑各种工业通讯协议和工业网络架构以及国内外多种主流PLC应用和操作、熟知罗克韦尔、施耐德、西门子、GE等知名品牌的冗余系统,对工业无线通讯、工业物联网、工业IT与OT的融合,有着前瞻性的独到见解和务实的实践经验。
现任伟联科技董事长。努力为中国工业信息化、数字化、智能化的深入发展做出贡献。
更多资讯 请关注我们