HART通信协议V1.7(C9,C33,C132)
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
HART通信协议
VER 1.6一.概述
HART(Highway Addressable Remote Transducer)协议采用基于Bell202标准的FSK频移键控信号,在低频的4-20mA模拟信号上叠加幅度为0.5mA的音频数字信号进行双向数字通讯,数据传输率为1200bps。
由于FSK信号的平均值为0,不影响传送给控制系统模拟信号的大小,保证了与现有模拟系统的兼容性。
在HART协议通信中主要的变量和控制信息由4-20mA传送,在需要的情况下,另外的测量、过程参数、设备组态、校准、诊断信息通过HART协议访问。
在应用层,HART 规定了一系列命令,按命令方式工作。
它有三类命令,第一类称为通用命令,这是所有设备都理解、执行的命令;第二类称为普通应用命令,所提供的功能可以在许多现场设备(尽管不是全部)中实现;第三类称为设备专用命令,以便于工作在某些设备中实现特殊功能,这类命令既可以在基金会中开放使用,又可以为开发此命令的公司所独有。
二.含义
1、主机(Master):分为第一主机和第二主机,它能连接在HART网络上,发出命令与从
机通讯;
2、从机(Field Device):连接在过程控制现场中,具有测量、计算多种变量功能,并能与
主机进行HART通讯的设备;
3、长帧(Long Frame):地址Ad dress由5字节组成的HART数据帧,所有的HART命令
都支持长帧数据帧。
长帧地址各字节含义如下图所示:
制造商ID 号(Manufacturer ID )由HART 基金会分配;
在生产中,同类型设备序列号唯一,并且永不重复。
广播地址使用长帧结构,低38 BIT 全为0。
厂商指定的设备类型(Decive Type )与制造商ID 满足下表要求;
设备类型代码指定原则
4、 短帧(Short Frame ):地址Ad dress 由1字节组成的HART 数据帧,短帧只有通用命令
Command 0能够使用,短帧字节含义如下:所有的HART 从机都支持长、短帧。
低6位短帧地址:轮询从机地址
主机地址0:第二主机1:第一主机
1:从机在突发模式0:正常模式短帧Address 字节含义
5、 请求帧(STX ):由主机(如手抄器)向从机(现场设备)发出请求数据命令;
6、应答帧(ACK):从机回复给主机的数据;
7、前导符(Preamble):发起命令(数据)传输的设备在传输数据帧前发送的0xFF字符,
发送该字符的数量一般为5—20个,该数量可以通过命令来改变;前导符的使用是为了使数据接收端在硬件电路上产生CD载波检测信号,以实现数据通讯的同步。
8、定界符(Delimiter):表示数据帧传输的开始,指明数据的传输方向、物理层类型,同
时它也指定了数据帧的帧类型(长、短帧),其含义内容如下:
:突发模式
:主机向从机请求数据(STX)
:从机向主机回复数据(ACK)
:异步(FSK)
:同步(ACK)
00
:短帧1字节(轮询)
1:长帧5字节(唯一地址)
定界符Delimiter字节含义
9、地址(Address):由定界符Delimiter指定为短帧(1字节)或长帧(5字节)两种类型,长、短帧释义如前述;
10、扩展字节(Expansion Bytes):本公司目前的HART协议版本保留,为0;
11、命令(Command):功能码,指明一个数据帧的具体实现功能,命令有通用命令、普通应用命令、设备专用命令三大类;
12、数据字节数(Bytes Count):指实际的数据Data的数量;
13、数据(Data):设置或读取指定从机的参数数据(通信的最终结果);
14、校验字节(Check Byte):从定界符(Delimiter)到数据(Data)的所有字节的‘异或’值,即纵向校验。
三.HART通讯规范
1、通信帧格式:由前导符和数据帧构成,各数据域释义如上
通信帧格式
2、通讯速率:1200Bps;
3、通讯信号:Bell202标准的FSK频移键控信号,‘1200Hz’代表数字1,‘2200Hz’代表
数字0;
4、数据格式(11位):1位起始位、8位数据位、1位停止位、1位校验位,字节奇(Odd)
校验;
5、应答数据帧的数据个数(Bytes Count)至少为2字节,这两个字节分别为响应码
(Response Code)和设备状态码(Fiel d Device Status);
6、响应码格式:从机回复给主机的命令执行情况代码,当通讯出错时,响应吗最高位
bit7=1,这时设备状态码无实际意义;当bit7=0时,表示通讯正常,余下6 bits表示命令执行情况的响应。
7、通讯正常时响应码(bit7=0,低6 bits):
* 具体含义因不同命令而定,可查看相关的HART命令资料。
8、通讯出错时响应代码(bit7=1)含义如下:
9、设备状态码:含义如下
10、数据类型:HART通讯协议支持以下类型的数据:字符串Str、日期Date、单或双
精度浮点数Float、无符号整型数Unsigned、有符号整型数Signed、联合体Enum或位Bit。
数据传输顺序:MSB至LSB。
1)字符串:字符串支持标准的拉丁字母Latin和封装格式Packed的ASCII码,拉丁字符每
个字母占1个字节;封装格式的ASCII 码每字母占1个字节的6位,因此,每4个字母封装在3个字节中,在使用过程中需要打包和解包操作。
2)浮点数:满足IEEE754标准要求,单精度浮点数用4个字节表示,双精度浮点数用8个字节表示。
23—bit 小数
8—bit 指数
1—bit 符号位
单精度浮点数格式
不可识别的浮点数用0x7f 、0xa0、0x00、0x00表示。
11、
设备变量状态(Device Variable Status ):所有需要周期处理的数据(如设备变量
和动态变量)都包含一个设备变量状态字节,其内容定义如下:默认0xc0
设备变量状态字节含义
四.HART应用命令
命令有通用命令、普通应用命令、设备专用命令三大类,通用命令是所有的HART现场设备都必须响应的命令;普通应用命令只被设备部分应用;设备专用命令是生产商根据需要制定的命令。
(一)通用命令
mand 0:读唯一标识
1)短帧
请求帧STX:
响应帧ACK:
注:状态=通讯状态+设备状态,其含义如前述,以下不再赘述。
2)长帧
请求帧STX:
响应帧ACK:
正常响应帧数据内容
mand 1:读主变量
请求帧STX:
响应帧ACK:
正常响应帧数据内容
mand 2:读环路电流和量程百分比请求帧STX:
响应帧ACK:
正常响应帧数据内容
mand 3:读动态变量和环路电流
注:本公司压力变送器只有1个动态变量,即主变量请求帧STX:
响应帧ACK:
正常响应帧数据内容
mand 6:设置轮询地址
请求帧STX:
请求帧数据内容
响应帧ACK:
正常响应帧数据内容同请求帧
注:现场设备在制造时就设置轮询地址为0,并且环路电流被允许,这是为了保证HART现场设备能够接到一个只有模拟信号的现场装置。
当轮询地址设置为0时,从设备必须同时工作在环路电流模式(一对一),电流和基本变量值相关联;当轮询地址设置其它值时,从设备必须同时工作在非环路电流模式(一对多),电流设置为能够维持操作的最小值。
mand 7:读环路配置
请求帧STX:
响应帧ACK:
正常响应帧数据内容
mand 8:读动态变量分类
请求帧STX:
响应帧ACK:
正常响应帧数据内容
mand 9:读设备变量和状态
通过Command 9,最多可读取4个设备变量。
分别是:第1变量:压力值(主变量)
第2变量:电流值
第3变量:百分比值
第4变量:温度值
请求帧STX:
响应帧ACK:
正常响应帧数据内容
注:当试图要读取的设备变量(最多4个变量,变量个数任意读取,读取第二变量必须读取第一(主)变量,读第三变量必须读取第一、二变量)
mand 11:以短标签方式读唯一标识
请求帧STX:
响应帧数据内容同Command 0
mand 12:读信息
请求帧STX:
响应帧ACK:
正常响应帧数据内容
mand 13:读短标签、设备描述符和日期
请求帧STX:
响应帧ACK:
正常响应帧数据内容
mand 14:读主变量传感器信息
传感器序列号、极限/最小量程单位代码、传感器上限、传感器下限、主变量最小量程
请求帧STX:
响应帧ACK:
正常响应帧数据内容
mand 15:读设备信息
报警码、传感器功能码、主变量单位、主变量上下限值、阻尼、写保护、产品发行人、是否有模拟信号连接在通道上
请求帧STX:
响应帧ACK:
正常响应帧数据内容
mand 16:读最终装配号请求帧STX:
响应帧ACK:
正常响应帧数据内容
mand 17:写信息
请求帧STX:
请求帧数据内容
响应帧ACK:
正常响应帧数据内容同响应帧
mand 18:写短标签、设备描述符和日期
请求帧STX:
请求帧数据内容
响应帧ACK:
正常响应帧数据内容同响应帧
mand 19:写最终装配号请求帧STX:
请求帧数据内容
响应帧ACK:
正常响应帧数据内容同请求帧
mand 20:读长标签
请求帧STX:
响应帧ACK:
正常响应帧数据内容
mand 21:以长标签方式读唯一标识请求帧STX:
请求帧数据内容
响应帧数据内容同Command 0 mand 22:写长标签请求帧STX:
请求帧数据内容
响应帧ACK:
正常响应帧数据内容同请求帧
(二)普通应用命令
mand 33:读设备变量
通过Command 33,可读取最多5个设备变量。
分别是:
第1变量:压力值(主变量)
第2变量:电流值
第3变量:百分比值
第4变量:温度值
第5变量:传感器电压值
* 注:HART 6规定设备变量数不超过4个,以上“第5变量”仅供我公司内部使用,HART 认证时将屏蔽该变量;
请求帧STX:
响应帧ACK:
正常响应帧数据内容
2. Command 34:写主变量阻尼值
本命令相当于本地组态功能“06 DAMP ”,设置电子阻尼时间(0~32s )。
请求帧STX :
请求帧数据内容 响应帧ACK :
正常响应帧数据内容同请求帧
3. Command 35:写主变量下限值和上限值
本命令相当于本地组态功能“04 LRV
”和“05 URV ”,即无压力零点和量程设置。
请求帧STX : 请求帧数据内容
响应帧ACK:
正常响应帧数据内容同请求帧
mand 36:写主变量上限值
本命令相当于本地组态功能“03 SPAN”,即有压力量程设置。
通入满量程压力,待读数稳定后,执行本命令。
执行后,变送器将当前压力值设置为上限,输出电流20mA。
请求帧STX:
响应帧ACK:
mand 37:写主变量下限值
本命令相当于本地组态功能“02 ZERO”,即有压力零点设置。
通入零点压力,待读数稳定后,执行本命令。
执行后,变送器将当前压力值设置为下限,输出电流4mA。
请求帧STX:
响应帧ACK:
mand 38:复位配置改变标志
该命令复位设备状态字节的bit 6位,当有设置命令执行后,该为重新置位
请求帧STX:
:
响应帧ACK
当设置值为非0数据时设备的环路恒定输出一个4-20mA范围内的一个电流值,当设置值为0时,退出固定电流模式。
请求帧STX:
请求帧数据内容 响应帧ACK :
正常响应帧数据内容同请求帧
8. Command 41:使设备执行自检
请求帧STX : 响应帧ACK
:
9. Command 43: 主变量调零
详见Common Practice Command Specification
mand 44:写主变量单位
本命令相当于本地组态功能“07 UNIT”,设置主变量(压力)工程单位。
请求帧STX:
请求帧数据内容
响应帧ACK:
正常响应帧数据内容同请求帧。
mand 45:调整环路电流零点
调整环路电流曲线的偏移量,使零点电流对应4mA。
本命令不影响电流曲线的斜率。
请求帧STX:
请求帧数据内容
响应帧ACK:
正常响应帧数据内容同请求帧
mand 46:调整环路电流增益
调整环路电流曲线的斜率,使电流对应20mA。
本命令不影响4mA对应的值。
请求帧STX:
请求帧数据内容
响应帧ACK:
正常响应帧数据内容同请求帧
mand 47:写主变量转换功能
本命令相当于本地组态功能“08 FUNCT”,设置主变量转换特性输出。
请求帧STX:
请求帧数据内容
响应帧ACK:
正常响应帧数据内容同请求帧
mand 49:写主变量传感器序列号请求帧STX:
请求帧数据内容
响应帧ACK:
正常响应帧数据内容同请求帧
mand 54:读设备变量信息(可选)本产品只读主变量信息。
请求帧STX:
请求帧数据内容
响应帧ACK:
正常响应帧数据内容(主变量)
注:当试图要读取的设备变量不存在或不支持时,对应的响应数据内容如下:
mand 59:写响应前导符个数
请求帧STX:
请求帧数据内容
响应帧ACK:
正常响应帧数据内容同请求帧
mand 71:锁定设备
请求帧STX:
请求帧数据内容
响应帧ACK:
正常响应帧数据内容同请求帧
mand 76:读设备锁定状态请求帧STX:
响应帧ACK:
正常响应帧数据内容
(三)设备专用命令
mand 130 读材料信息
读变送器各组件的材料信息(12Bytes)。
请求帧STX:
响应帧ACK:
正常响应帧数据内容:
mand 131 写材料信息
写变送器各组件的材料信息(12 Bytes)。
请求帧STX:
响应帧ACK:
正常响应帧数据内容同请求帧
mand 132 读硬件与传感器详细信息读PCB序列号、传感器序列号、类型、量程等信息。
请求帧STX:
响应帧ACK:
正常响应帧数据内容
mand 133 写硬件与传感器详细信息写PCB序列号、传感器序列号、类型、量程等信息。
请求帧STX:
响应帧ACK:
正常响应帧数据内容同请求帧。
mand 134 读变量显示模式
读变量显示模式(DMV)。
请求帧STX:
响应帧ACK:
正常响应帧数据内容:
mand 135 写变量显示模式
本命令相当于本地组态功能“09 DMV”,即设置变送器显示屏上变量的显示模式。
请求帧STX:
响应帧ACK:
正常响应帧数据内容同请求帧。
mand 136 写小压力切除值
当主变量转换功能(Command 47)设为“平方根”时,本命令用于设置小压力切除的数值(百分比),数值范围0~6.0。
当切除值为0时,表示小压力切除功能关闭。
请求帧STX:
响应帧ACK:
正常响应帧数据内容同请求帧。
设置出错的响应码:
0x80:主变量为线性输出,操作无效。
0x81:所设数值超范围。
mand 137 按键测试
测试各按键是否正常。
测试期间,命令发送周期为1秒。
请求帧STX:
响应帧ACK:
正常响应帧数据内容
mand 138 读存储器数据(可选)
请求帧STX:
请求帧数据:
响应帧ACK:
正常响应帧数据内容
mand 139 写存储器数据(可选)请求帧STX:
请求帧数据:
响应帧ACK:
正常响应帧数据内容同请求帧。
以下命令140~141用于读/写校准数据。
1. 压力工厂校准:即“标定”,制造商使用。
建立传感器电压值(Vs)与所施加的标定压力值(Pc)的对应关系。
经过
工厂校准后输出的压力值称为原始压力值(P0)。
2. 压力用户校准:制造商或用户使用。
当原始压力值(P0)误差较大时,可进行用户校准。
建立原始压力值(P0)与期望压力值(Pi)之间的关系。
3. 4-20mA工厂校准:用于校准电流输出。
建立原始电流值(I0)与期望电流值(Ii)之间的关系。
4. 4-20mA用户校准:同工厂校准,但校准点数固定为2个(4mA和20mA)。
5. 温度补偿:
温度设定点:温度补偿的温度值,由变送器测量并通过HART传给上位机。
如:-39.5,-10.1,
0.02,15.3,35.0(DegC)
压力设定点:每个温度设定点下施加的标准压力值,由上位机设定,并控制压力控制器输出相应的压力。
如:-1000.0,-500.0,0,500.0,1000.0(kPa)
压力测量点:每个压力设定点对应的实际测量值,由变送器测量并通过HART传给上位机。
如:-997.4,-498.8,0.8,501.2,1002.6(kPa)
mand 140 读校准数据
请求帧STX:
请求帧数据:
响应帧ACK:
正常响应帧数据内容:。