全面解析:HART命令手册

4星 · 超过85%的资源 需积分: 43 181 下载量 80 浏览量 更新于2024-09-09 2 收藏 62KB DOC 举报
"这篇文档是关于HART协议的中文命令大全,涵盖了从0到11的基本命令,提供了每个命令的功能描述、请求格式和响应数据的详细信息,旨在帮助开发者理解和使用HART通信协议进行设备控制与数据交互。" HART(Highway Addressable Remote Transducer)协议是一种用于智能仪表和过程控制系统的通信协议,它允许数字信号在4-20mA的模拟信号上叠加,实现模拟和数字信号的混合传输。以下是对标题和描述中涉及的HART命令的详细解释: 1. HART命令0:读标识码 这个命令用于获取设备的身份信息,包括制造商ID、设备类型、软件和硬件版本、设备ID以及物理信号类型等。这对于识别和配置设备非常有用。 2. HART命令1:读主变量(PV) 主变量通常是设备的核心测量值,如压力、温度或流量。此命令无请求参数,响应中包含主变量的浮点型数值及单位代码,可以获取设备当前的测量值。 3. HART命令2:读主变量电流值和百分比 除了主变量值,此命令还提供主变量电流值(对应4-20mA信号)和其相对于满量程的百分比,有助于监控设备的输出状态。 4. HART命令3:读动态变量和主变量电流 除了主变量,还可以读取最多四个动态变量,如传感器温度等,以及主变量电流值。这有利于获取设备的全面状态信息。 5. HART命令6:写POLLING地址 POLLING地址用于控制主变量的模拟输出。设置为0时,设备的主变量输出活动并响应应用过程;设置为1-15时,输出不活动且设定为主变量模拟输出固定。此命令用于管理和配置设备的响应模式。 6. HART命令11:用设备的Tag读设备的标识 设备的Tag通常是一个可读性强的名称,用于区分网络中的多个设备。此命令用于获取设备的标识,方便设备管理和诊断。 其余的HART命令(命令4至5和7至10)在此文档中未详细描述,可能包括预留或特定用途的命令。在实际应用中,开发者需要查阅更详细的HART协议规范来获取这些命令的具体信息。 了解并熟练使用这些HART命令,可以帮助工程师有效地与HART兼容的现场设备进行通信,实现远程监控、参数配置、故障排查等功能,从而优化过程控制系统的运行和维护。
2018-02-21 上传
#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;