关注、星标嵌入式客栈,精彩及时送达

初始HART总线
基本信息
HART(Highway Addressable Remote Transducer)可寻址远程变送器高速通道协议,翻译起来有点绕口。HART协议是用于过程控制设备的面向事务的通信服务。HART通信设备旨在增强传统的4-20 mA模拟信号传输,可在工业环境中提供相对低带宽、适度的响应时间的通信协议。应用包括远程过程变量查询,参数设置和诊断。从名字上就可看出,这个协议是用于变送器(有的也翻译为传感器),名字不重要,重要的是理解这究竟是什么个内涵.所谓变送器就是指能将现场情况的物理参数进行采集(比如温度、压力、流量等)并以工业标准模拟信号输出的设备,所谓工业标准模拟信号是指国际电工委员会(International Electro technical Commission,简称IEC)定义的4-20mA或者1-5V信号。那么HART协议究竟是怎样一个协议呢?HART协议是混合模拟信号以及数字信号的工业自动化开放协议。HART被广泛用于过程和仪表系统,从小型自动化应用到高度复杂的工业应用。它最显着的优点是,可以通过传统的4–20 mA仪表电流回路进行通信,有线HART协议的物理层为一对导线:- 该导线可以为设备供电
- 导线内为4-20mA电流环
- 同时进行模拟以及数字通信
- 访问仪表的参数及诊断信息,这不是简单的读取,而是有专用公共的命令规范,获取诊断数据。
- 支持多变量设备,这是什么意思呢?比如一个变送器可以同时测量压力以及温度,则是双变量变送器。
- 设备在线状态监测
- 完全开放的事实标准
- 标准通用命令及数据结构
- DDL(Device Description Language)支持,这是啥意思,就是用这样一种规范的文本描述语言抽象设备的信息其他的组态软件可以直接导入,从而实现互联互通。这就是标准的力量,不同厂家做的设备为什么可以在一个系统里快速组网,实现过程控制系统。
- 模拟4-20mA通信与数字通信同时进行
- 兼容现有的4-20mA设备,即便某个4-20mA设备没有HART支持。
- 模拟4-20mA本身就是一种通信,比如一个测量变动器可直接接入一个控制器的模拟4-20mA通道,将测量值实时传输给控制器,而控制器的4-20mA输出又可以接到执行器(比如阀门控制器)的4-20mA输入通道,从而控制阀门的开度,形成闭环控制。
网络分层
从前面介绍,基本知道了大致信息,现在来看看该协议的分层情况
从上面的图可以看出,HART协议对应OSI模型,实现了其中的5层:
- 有线物理层:这里有句题外话,协议的物理层负责地产BIT流的传输,其实你用其他的物理层来传HART报文是否可以呢?当然也是可以的,比如你就用SPI去传也能传能收,为什么不用?无法适应工业现场的噪声环境,也无法可能满足现场组网的需求,比如总线仲裁等。
- FSK物理层:有线HART的物理层主要采用采用FSK(Frequency Shift Keying)频移键控将0/1调制在4-20mA电流环路上,稍后在对FSK进行介绍。
- PSK物理层:实际上是C8PSK(Coherent 8-way Phase Shift Keying), 它实际上是一种数字通信调制技术,通过改变恒定频率参考信号(参考信号称为载波)的相位来传输数据。所谓相位就是通过精确地改变正弦或余弦输入时间来完成调制。
- RS-485物理层:这个是比较常见的半双工差分串行总线,实际上此类设备不是HART协议的主流,使用并不广泛。
- 无线物理层:无线HART则采用基于IEEE802.15.4的无线2.4GHz频段物理层。IEEE802.15.4是一项定义了低速无线个人局域网(low-rate wireless personal area networks简称LR-WPAN)操作的技术标准。它规范了LR-WPAN的物理层和媒体访问控制,并由IEEE 802.15工作组维护,该工作组在2003年定义了该标准。它是Zigbee,ISA100.11a,WirelessHART,MiWi,6LoWPAN,Thread和SNAP规范的基础,它们各自都通过开发IEEE 802.15.4中未定义的上层来进一步扩展了标准。6LoWPAN还定义了WPAN上的Internet协议(IP)的IPv6版本的绑定,并且本身被Thread等上层所使用。需要注意的是WIFI虽然也使用2.4GHz频段,但是它遵循802.11规范。所谓Mesh网络,看看下面这个网络拓扑图就很好理解了:

- 链路层:
- 数据链路层为数据传输提供可靠的、面向事务的通信路径。对于FSK/PSK HART通信是通过双绞线进行传输,双绞线可能同时传输4-20mA信号。数据链路层将通过使用错误检测信息和自动重复请求(Automatic Repeat Request 简称ARQ)协议来请求重新传输可能被线路噪声或其他干扰破坏的数据块,从而来纠正由于通信链路上的噪声引起的错误。
- 对于无线HART,则通过基于时间同步的TDMA/CSMA机制进行链路管理、冲突检测。在检测到出错时自动重复请求的跳频技术。所谓跳频,就是在802.15.4规范的带宽里,将带宽划分为多个信道,主从直接约定好跳频机制,从而有效的利用空闲信道。
- 网络层(仅无线HART):主要实现功率优化,mesh网络管理。网络时间同步,时间同步的精确性对于基于时分复用 (Time-division multiple access简称TDMA) 的网络至关重要,时间不同步,网络将瘫痪。
- 传输层:HART的传输层主要对于大块数据进行拆分传输。
- 应用层:应用层定义了协议支持的公共命令,响应,数据类型和状态报告。因此HART应用层确保不同公司的设备的互操作性中起着重要作用。所谓互操作性,是指互联互通的基础上,还定义了应用操作。比如温度变送器,接入控制系统可以很容易与另一个阀门控制器、加热控制器快速组成温控系统。
HART规范书
HART原来由HART基金会管理,现在由FieldComm Group进行管理,FieldComm Group由现场总线基金会(Fieldbus Foundation 简称FF)以及HART基金会合并而来,统一管理FF以及HART总线标准。有兴趣可以去https://www.fieldcommgroup.org/进一步了解。那么HART协议标准文档基本由哪些组成呢?这里总结了一个思维导图供参考:
物理层
一般的,FSK/PSK物理层与数据链路层都按照下面的模型进行设计,本文仅介绍最为常用 的FSK物理层,对C8PSK有兴趣的,可以查阅HCF_SPEC-60。FSK物理层
HART采用二进制频移键控(Binary FSK简称BFSK),其工作原理为:
调制器与解调器一起组成了调制解调器,对于设备间通信而言基本都有这样一个调制解调的过程。发送端调制器:


HART采用连续相位频移键控(Continuous Phase Frequency-Shift-Keying,也简称为CPFSK)技术,所谓连续相位可以观察0/1相邻的点,简单理解就是赋值是连续的。HART利用1200Hz正弦电流信号表征逻辑1,而由2200Hz正弦电流信号表征逻辑0。0/1调制的时间宽度是一样的,采用一周期1200Hz正弦时间。这些调制的信号再线性叠加到4-20mA上,因此在4-20mA上的波形大致就是这样:

有童鞋可能会说,这样岂不是污染了4-20mA环路吗?HART协议规定调制信号的频带基本须在500-10KHz内:

4-20mA变送通道的变化频率低于1200Hz,设备会做一个低通滤波,滤除掉这些调制信号,再进入被接入设备的I/V转换电路,进而采样环路电流。所以一般的,接入端会并接一个250欧的电阻,将4-20mA转换为1-5V,当然也可能是其他电阻值。工业测量的过程量,一般都是低频信号,所以这样设计是没有问题的。此调制解调器器可以由专用芯片完成,比如 安森美的NCN5192,Maxim的DS8500等都可以,也可以自己设计调制电路实现。
链路层
链路层向上层提供稳定可靠的数据链路服务,以及对下层的物理层介质进行介质访问管理,同时定义了数据报文结构。帧结构
首先来看看HART协议报文结构:





- 主要主站
- 辅助主站

介质管理服务
- RESET复位原语,比如你自己做的调制解调器或者现有的芯片,需要实现状态复位的操作,比如现成的芯片可能提供复位脚或者控制命令,那么编程就是控制物理层进行复位。
- ENABLE使能原语,对物理层的使能控制操作,比如MODEM芯片的ENABLE引脚的控制
- DATA传输/接受原语,将物理层数据进行收发控制,对于发,就是将上层数据发送给物理层发送到总线介质的意思,对于收而言就是物理层接收到的BIT流进行成帧,并上传给上层。
链路管理服务
链路管理主要描述链路层对应用层的服务,主要分两种服务,报文服务,以及管理服务:- **报文服务:**发送消息和接收回复的基本功能。此外,还指定了SAP,以允许捕获未经请求的消息,比如捕获Burst报文。
- 管理服务:管理服务指允许配置数据链路层本身参数的服务。
看这个图好像很复杂,其实就是描述了应用层对链路层三种基本操作:
- TRANSMIT发送服务原语:应用层发送报文给链路层
- RECEIVE接受服务原语:接收报文并传输给应用层
- CYCLIC捕获服务原语:周期性接受总线Burst报文,所谓Burst就是某一个站点周期性向总线广播报文,一般会将测量值或控制信息周期性广播,接收设备可以捕获该数据实现相应的应用控制。
介质控制
无Buest设备:主要是完成介质冲突控制的,采用令牌传递方式进行介质冲突控制,当总线中没有Burst设备时,其控制状态机如下:

应用层
应用层主要定义:- 通过协议传输应用数据的格式;
- 所有现场设备的版本规则;
- 定义通用命令编号,通用惯例,特定设备和设备系列命令使用;
- 私有HART命令的构造要求;
- 所有命令响应都需要返回的命令状态字节;
- 设备使用状态和现场设备变量;
- 主机用于识别现场设备和管理HART网络的过程
- 设备修订版所针对的HART现场通信协议规范的所有要求都必须遵守
- 必须删除命令4和命令5
- 除命令0外,所有命令都必须仅以长帧格式实现,命令0必须同时以短帧和长帧格式实现。
- 必须为每个主机提供设备状态字节中单独的配置更改位(即一个用于主要主机,另一个用于辅助主机)。当接收到命令38时,必须仅复位与发出命令的主机相对应的位。根据HART 5的要求,这些位必须是非易失性的。所谓非易失性就是掉电保存。
- 必须为每个主机在设备状态字节中提供一个单独的冷启动位
- 必须支持通用实践命令规范中指定的命令38和命令48
- 设备修订版所针对的HART现场通信协议规范的所有要求都必须遵守
- 必须为每个主机提供设备状态字节中单独的配置更改位
- 必须为每个主机在设备状态字节中提供一个单独的冷启动位
- 必须支持通用实践命令规范中指定的命令38和命令48
- 如果支持“Burst模式”,则必须添加2条其他“Burst消息”。且必须添加事件通知。
- 必须遵守设备修订版所针对的HART现场通信协议规范的所有要求。
- 必须按照“通用实践命令规范”中的说明来支持命令38和命令48。
- 2字节命令格式:命令字段为0x1F,可在数据字段中找到WO字节扩展命令号。
总结一下
HART总线,是工业现场设备应用最为广泛的总线协议之一,除此之外还有常见的modbus协议、Profibus协议、FF基金会总线协议等。其实总线通信协议都有其相似的地方,这也是为什么有OSI七层模型这一说,就是我们日常生活息息相关的TCP/IP协议栈也脱离不了这些相似的地方。本文旨在梳理一下比较重要的信息,方便对有兴趣的童鞋起到一个提纲携领的作用,主要参考HART标准,同时加入自己的理解。短短的一篇文章并不能完整的总结这样一个协议,还有很多细节没有囊括,比如变量管理、诊断定义等等,具体开发中请以HART标准为准。整理本文,也是对之前工作中所使用到的工业总线协议做个总结。整理不易,如觉得有价值,请转发给有需要的朋友,是对我最大的支持和肯定!—END—
往期精彩推荐,点击即可阅读