HART协议数据格式和消息结构的举例分析

HART协议数据格式和消息结构的举例分析

 前面的文章中,我们对HART协议的消息格式的具体内容进行了分析。那么很多朋友还没有完全掌握,为了让大家对这部分知识有一个清晰的思路。下面我们来对HART协议的数据格式以及消息结构的内容进行一下举例分析。

  HART协议数据格式

  如果传送的命令不成功,那么响应中就不包含数据。然而响应值是从现场设备内存中取出的,是一个近似值。数据所占的字节和格式视不同的命令而定,具体的规则可以查询相关的资料。

  看实例了解HART协议消息结构

  例1:主机到从机  (0号命令 读取设备序号)

   
FFFFFFFFFF82A606BC614E0100B0

    上面是主机到从机发送的一条消息。前5个字节值都为FF,显然他是导言字节。接着的82起始字节,表示主机到从机发出的长结构的消息。后5个字节 “A6,06,BC,61,4E”是地址字节化为二进制表示如下: 

A6

06

BC

61

4E

1010 0110

0000 0110

1011 1100

0110 0001

0100 1110

    可见首字节A6的最高位为1表示主机,次高位为0表示非突发模式,后面的38 b表示设备的惟一标号:“100110”是生产厂家代码,值为38,是Rosemount公司的代码;后一字节06是设备型号代码,06代表的型号是3051C;后面的3个字节是设备识别号,本例中的值为12345678;再接下来的01是命令字节,表示1号命令,即读取PV值后面的00是表示数据的长度;本例中无数据,值为0;最后是校验字节B0。

    例2:从机到主机

   
FF FF FF FF FF86A6 06 BC 61 4E010700 0006 40 B0 00 0045

    HART协议的从机到主机的例子,表示的是从机到主机的一条消息。本例大部分与例1相似,不同的是数据字节不再为0,其中的06表示单位PSI;后面的4个字节是用浮点数表示的值, 为5.5。并且由于本例是由从机到主机的应答消息,所以存在着状态位,即本例中的00 00表示OK。

    例3:突发模式

   
FF FF FF FF FF8153 03 04 E6 D7031A00 6041 3F A0 002741 3F A0 003942 47 60 0006BF 06 60 003941 95 0000D4

    上面是突发模式HART协议发出的一条消息。

    第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”。

  • 1
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
#include "use.h" #include "Ver.H" #include #include #include #include "include.h" /******************************************************************* 1、菜单中这几个参数项需要读出和修改: P1中的:L,H,E,dr,P P2中的:Ed,SF,bo 一共7个参数项; ---这7个参数项不知道用什么命令来进行读写? 请你帮助考虑一下。 2、HART命令中,有如下命令应该要用到: ⑴ 0#命令---读标识码 (好像是个广播命令) ⑵ 3#命令---读主变量电流(测量值) ⑶ 6#命令---置随选地址(确定工作模式) ⑷ 15#命令---读主变量输出信息(上下限值) ⑸ 40#命令---进入/退出电流模式 ⑹ 41#命令---执行设备自检 ⑺ 42#命令---执行设备复位 ******************************************************************/ //前面的4个地址是固定的,后面一个是可以改的!用MP1.ADR 代替了! //#define adr0 0x02 //#define adr1 0x23 //#define adr2 0x34 //#define adr3 0x45 //#define MAX_0xff 5 //前导符的个数! //#define HART_VER 5 // 版本 //---------------------------------------------------------------------------------- //static unsigned char fHART_LONG_ADR=0; //=0 短地址标至;=1 是长地址! //static unsigned char cnt_0xff=MAX_0xff; //主机发送0XFF的个数,从机回复添加相同的个数 ! //************************************************************************** extern unsigned char cnt_0xff; //主机发送0XFF的个数,从机回复添加相同的个数 ! extern unsigned char fHART_LONG_ADR; //=0 短地址标至;=1 是长地址! //--------------------------------------------------------------------------------------------- unsigned char HART_Get_FF(unsigned char *p){ memset(p,0xff,cnt_0xff); return cnt_0xff;
HART(Highway Addressable Remote Transducer)协议是一种常用于过程控制领域的数字通信协议,用于传输仪表设备的参数和状态数据。PLC(Programmable Logic Controller)是一种用于自动化控制的可编程逻辑控制器。 要使PLC能够读取HART协议传输的数据,通常需要使用专门的HART模块或通信接口。这些模块或接口通常具有HART通信芯片和PLC通信芯片,用于在二者之间进行数据的转换和传递。 具体来说,PLC读取HART协议传输的数据的步骤如下: 1. 在PLC编程软件中,配置HART模块或通信接口的通信参数,例如波特率、通信地址等。 2. 在PLC程序中,设置读取HART数据的指令,通常是通过特定的函数块或指令来实现。这些函数块或指令会发送特定的命令到HART模块或通信接口,要求其向HART仪表发送数据读取请求。 3. HART模块或通信接口接收到读取请求后,会通过HART物理层和协议层与HART仪表进行通信。它会发送必要的命令到HART仪表,然后接收和解析仪表返回的数据。 4. 一旦HART模块或通信接口成功读取到仪表的数据,它会将数据转换为PLC可识别的格式,并将其传递给PLC。 5. PLC接收到HART模块或通信接口传递的数据后,可以通过编程实现对数据的处理和分析,例如进行比较、计算、控制等。 总结起来,要使PLC能够读取HART协议传输的数据,需要配备专用的HART模块或通信接口,并通过PLC编程设置相应的读取指令和参数。通过HART模块或通信接口与HART仪表进行通信,将仪表数据转换为PLC可识别的形式,并将其传递给PLC进行处理。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值