串行通信协议---HART协议
实际应用中,HART协议是仅次于Modbus协议的最接近统一现场总线的标准,主要是在4~20mA电流信号上面叠加数字信号,物理层采用Bell 202标准的FSK技术成功实现模拟信号和数字信号双向同时通信而互不干扰。HART协议规定了传输的物理形式、消息结构、数据结构和一系列操作指令,是一种主从协议,允许系统中存在两个主机(一个用于系统控制,另一个用于HART通信的手持设备),一对电缆线上最多可以连接15个从设备。
HART协议,即==Highway Addressable Remote Transducer Protocol ==,可寻址远程传感器高速公路协议,在4~20mA的模拟信号上叠加FSK数字信号,可以传输模拟信号和数字信号。
HART 将 1200 b/s的 FSK (Frequency Shiift Keying, 频移键控)信号加载在 4~20 mA 的模拟信号上进行通信,它的均值为 0,并且这个 FSK 信号对模拟信号毫无影响。在纯数字通信中,HART 最多可以允许加载 15 个现场设备。HART 协议为了在信号衰减的情况下继续通信而对接收器和发送器的灵敏性做了特别的规定,这样也减少了干扰和码间串扰的可能性。
HART 协议的显著特性之一就是它可以同时进行模拟和数字通信。多年以来,设备使用的现场通信标准是 4-20 mA 的模拟电流信号。在大多数应用中,它们用 4~20 mA 之间的值来表示被测量的参数,如温度和压力。而 HART 协议不仅在传输过程测量参数,还利用模拟信号上叠加的数字信号来传输控制信息。这样,HART 协议就可以支持大多数智能设备和大量存在的模拟设备。
FSK移频键控技术中逻辑1用1200HZ频率表示,逻辑0 用2200HZ频率表示,消息传输速率为1200b/s。
HART通信结构模型
以ISO的开放性互连模型为参照,分为三层,对应于OSI的应用层、数据链路层和物理层。
HART通信结构模型
OSI层次 | HART层次 |
---|---|
应用层 | HART命令 |
数据链路层 | 协议规范 |
物理层 | BELL 202 |
HART协议物理层
Bell 202 通信标准本来是在电话线上进行数字通信的标准,是利用电话线来传输数字信号的,也就是传真机用的通信协议。虽然 HART 信号的调制/解调也采用了与传真机相同的Bell 202 标准,但是HART 对阻抗和信号水平的规定与传真机不同,特别是HART 的4 mA低功耗要求。HART 信号的调制/解调需要使用专门的调制/解调器芯片来满足这些特别的性能要求。
HART 协议规定主设备(单主设备控制系统或手操机通信系统)传输的是电压信号,而从设备传输的是电流信号。通常的二线传输用于控制环路的电流,通过一些控制系统来抽样,进行模拟/数字信号的转换,这个转换要求不能影响现存的 HART 信号。
HART协议数据链路层
数据链路层协议规范的目的是建立一种与现场仪表等从设备间的可靠的双向数据通信通道。
数据链路层规定 HART 协议赖的格式,可寻址范围为 0-15。当地址为 0时,处于20mA及数字信号点对点模式。现场仪表与两个数字通信主设备(也称为通信设备或主设备)之间采用特定的串行通信,主设备包括 PC 或控制系统和手持通信器。在单点模式中,主变量(过程变量)可以以模拟形式输出,也可以以数字通信方式读出,当以数字方式读出时轮询地址始终为0。也就是说,单点模式时数字信号和 4~20 mA 的模信号同时有效。
HART 协议帧还可以在一根双绞线上以全数字的方式通信。当地址为 1-15 时,处于全数字通信状态,工作在一点对多点模式。一个链路上可支持 15 个短地址从设备,若使用长地址,设备数可不受限制,它只取决于所要求的通信链路上的查询速率。通信模式有问答方式、突发方式(点对点、自动连续地发送信息)。按问答方式工作时的数据更新速率为 2-3次按突发方式工作时的数据更新速率为 3~4 次/s。
采用全数字方式或多点模式时,4~20 mA 的模拟输出信号不再有效(输出设备在4 m时功耗最小,主要是为变送器供电,各个现场装置并联连接),系统以数字通信方式依次读并联在一对传输线上的多台现场仪表的测量值(或其他数据)。如果以这种方式构成控制系统,可以显著地降低现场布线的费用和减少主设备输入接口电路,这对于控制系统有重要价值,HART 协议根据冗余检错码信息,采用自动重复请求发送机制,消除了由于线路噪声或其“干扰引起的数据误码,可实现数据的无差错传输。
HART 协议把所有的设备分为3 类:从设备、突发模式设备和主设备。从设备是最普遍与最基本的设备类型,它接收和提供带有测量值或其他数据的数字信号,现场智能仪表一般为从设备。突发模式设备在固定的时间间隔发出带有测量值或其他数据的数字信号响应,而不包含被特别请求的数据,该设备通常作为一个独立广播的设备。主设备负责初始化、控制和终止与从设备或突发模式设备的交互。主设备又可分为第一主设备和第二主设备,第一主设备通常指控制系统,第二主设备指 HART 协议的手持设备。
HART协议应用层
HART 协议的应用层以命令的格式提供编程接口,所有的读写操作都以命令的形式完成。另外,链路管理等协议本身一些功能也由命令来实现。
在通信时,一条命令按命令格式组装成一个完整的 HART 协议帧,然后一次发送出去数据链路层规定了 HART 的格式,但是数据链路层并不解释 HART 中的数据段的含义这个工作由 HART 协议的应用层来完成。应用层规定了 HART 消息包中的3 类命令:第一是通用命令,适用于符合 HART 协议的所有产品,为符合 HART 协议的设备提供功能描述,第二类是普通命令,适用于符合 HART 协议的大部分产品,当设备具有某些功能时,该命令用于对这些功能的描述;第三类是特殊命令,适用于符合 HART 协议的特殊产品,提供一些特殊的功能描述命令。对于厂家生产的具有特殊功能的产品,HART 还提供了设备描述语言(Device Description Language,DDL),以确保互操作性。
各层间的功能关系
物理层的基本任务是为数据传输提供合格的物理信号波形,且直接与传输介质连接。物理层作为电气接口,一方面接收来自数据链路层的信息,把它转换为物理信号并传输到现场总线的传输介质上,起到发送驱动器的作用;另一方面,把来自总线传输介质的物理信号转按为信息并送往数据链路层,起到接收器的作用,当它收到来自数据链路层的数据信息时,需按照 HART 协议规范对数据加上前导码与定界符等,并对其进行数据编码,再经过发送驱动器,把所产生的物理信号传输到总线的传输介质上。另一方面,它又从总线上接收来自其他设备的物理信号,对其去除前导码、定界符后并进行解码,把数据信息送往数据链路层。而数据链路层规定了物理层和应用层之间的接口,该层还控制对传输介质的访问,决定是否可以访问以及何时访问。
HART的消息帧结构
RS-232 串行通信协议是传输一个字节 (Byte) 的协议,而Modbus 是用串口一次连续传输多个字节的协议。HART 是另外一种用串口一次连续传输多个字节的协议。一个 HART 包括多个字节,一个字节包含多个位 (Bit)。串行通信的一个字节一般包含了 11 位:1 个起始位、8个数据位、1 个奇/偶校验位及 1位停止位。HART 协议借用了串行通信的字节定义,即1个字节用了11位,波特率为 1200 b/s(较慢)。
一般的 HART 结构,包括导言(前导) 字节、起始字节、地址字节、命令字节、字节计数、状态字节、数据字节和校验字节等。每一部分均由多个字节组成,每个字节都有11位。
通信形式
通常 HART 协议按主-从模式通信,通信由主设备发起,从设备先“听”后“答”,第一主设备和第二主设备以相同的优先权轮流访问通信链路,但设定了不同的定时时间常数以防止“死锁”,避免两个主设备同时访问链路。当某一主设备通信结束后,需要首先侦听载波,等待一段时间以确保另一主设备能够访问通信链路,若通信链路上有载波存在,该主设备放弃使用通信链路;若定时时间溢出,该主设备可以继续访问通信链路。当通信链路上存在突发模式设备时,主设备只有突发模式设备与另一主设备的突发通信结束之后,方可访问通信链路。HART协议把突发功能作为现场仪表的一种可选功能。
HART的操作指令
HART协议操作命令可分为三类:通用命令、普通命令和特殊命令。其中,通用命令与普通命令统称为标准命令。
通用命令
- 读出制造厂及产品型号:
- 读出主变量及单位;
- 读出输出电流及其百分比:
- 读出最多 4 个预先定义的动态变量名;
- 读出或写入 8 个字符的标牌号,16 个字符的描述内容以及日期等;
- 读出或写入 32 个字符的信息;
- 读出变送器的量程、单位以及阻尼时间常数;
- 读出传感器串联数目及其限制;
- 读出或写入最后组装数目;
- 写入轮询地址等。
普通命令
- 读出最多 4 个动态变量;
- 写入阻尼时间常数;
- 写入变送器量程;
- 标定(设置零点和量程);
- 完成自检;
- 完成主设备复位;
- 微 D/A 转换器主变量零点;
- 写入主变量单位;
- 微 D/A 转换器的零点和增益;
- 写入变送类型 (开方/线性);
- 写入传感器串联数目;
- 读出或写入动态变量赋值等
特殊命令
- 线性标定;
- 温度标定;
- 读出或写入开方小信号截断值;
- 启动、停止或清除累积器;
- 选择主变量(质量、流量或密度);
- 读/写组态信息资料;
- 微调传感器的标定等
下回学RS-485
相关文章:

串行通信协议---HART协议
实际应用中,HART协议是仅次于Modbus协议的最接近统一现场总线的标准,主要是在4~20mA电流信号上面叠加数字信号,物理层采用Bell 202标准的FSK技术成功实现模拟信号和数字信号双向同时通信而互不干扰。HART协议规定了传输的物理形式、消息结构、…...
【独家】华为OD机试 - 寻找密码(C 语言解题)
最近更新的博客 华为od 2023 | 什么是华为od,od 薪资待遇,od机试题清单华为OD机试真题大全,用 Python 解华为机试题 | 机试宝典【华为OD机试】全流程解析+经验分享,题型分享,防作弊指南华为od机试,独家整理 已参加机试人员的实战技巧本期题目:寻找密码 题目 小王在进行游…...

FPGA有哪些优质的带源码的IP开源网站?
这是某乎上的一个问题,我觉得还不错,今天就系统性的总结一下1、fpga4funhttps://www.fpga4fun.com/你能在这个网站上找到什么?您可以找到信息页面,以及使用 FPGA 板构建的 FPGA 项目。注重点:项目。FPGA 项目使用一种称…...

基于模型预测控制(MPC)的微电网调度优化的研究(Matlab代码实现)
💥💥💞💞欢迎来到本博客❤️❤️💥💥 🏆博主优势:🌞🌞🌞博客内容尽量做到思维缜密,逻辑清晰,为了方便读者。 ⛳️座右铭&a…...

Postman接口测试之Mock快速入门
一、Mock简介 1.Mock定义 Mock是一种比较特殊的测试技巧,可以在没有依赖项的情况下进行接口或单元测试。通常情况下,Mock与其他方法的区别是,用于模拟代码依赖对象,并允许设置对应的期望值。简单一点来讲,就是Mock创建…...

分享一个国内可用的免费ChatGPT网站
背景 ChatGPT作为一种基于人工智能技术的自然语言处理工具,近期的热度直接沸腾🌋。 作为一个程序员,我也忍不住做了一个基于ChatGPT的网站,免费!免登陆!!国内可直接对话ChatGPT,也…...
15. 三数之和(Java)
给你一个整数数组 nums ,判断是否存在三元组 [nums[i], nums[j], nums[k]] 满足 i ! j、i ! k 且 j ! k ,同时还满足 nums[i] nums[j] nums[k] 0 。请 你返回所有和为 0 且不重复的三元组。 注意:答案中不可以包含重复的三元组。 示例 …...

Navicat Premium 16安装教程
1.鼠标右击【Navicat Premium 16(64bit)】压缩包(win11及以上系统需先选择“显示更多选项”)选择【解压到 Navicat Premium 16(64bit)】。 2.打开解压后的文件夹,鼠标右击【setup】选择【以管理员身份运行】。 3.点击【下一步】。 4.选择【我…...

蓝桥杯刷题冲刺 | 倒计时8天
作者:指针不指南吗 专栏:蓝桥杯倒计时冲刺 🐾马上就要蓝桥杯了,最后的这几天尤为重要,不可懈怠哦🐾 文章目录1.三角形的面积2.图中点的层次1.三角形的面积 题目 链接: 三角形的面积 - 蓝桥云课 …...
四.JAVA基础面试题:重要知识
四.JAVA基础面试题:重要知识 1.为什么JAVA只有值传递 2.JAVA获取运行时类的四种方式 四.JAVA基础面试题:重要知识 1.为什么JAVA只有值传递 实参:传递给形参的实际参数。 形参:接受实参的参数。值传递:方法接受实参…...

某面试官分享经验:看求职者第一眼,开口说第一句话,面试结果就差不多定了,准确率高达90%以上...
我们以前分享过许多经验,但大多是站在打工人的视角上,今天给大家带来一个面试官的经验:1. 看求职者第一眼,开口说第一句话,面试结果就差不多定了,准确率高达90%以上。2. 绝不考八股文,如果问技术…...

Java开发 - 消息队列之RabbitMQ初体验
目录 前言 RabbitMQ 什么是RabbitMQ RabbitMQ特点 安装启动 RabbitMQ和Kafka的消息收发区别 RabbitMQ使用案例 添加依赖 添加配置 创建RabbitMQ配置类 RabbitMQ消息的发送 RabbitMQ消息的接收 测试 结语 前言 前一篇,我们学习了Kafka的基本使用&#…...

蓝桥杯入职项目(HTML + springBoot)
文章目录需要解决npm包安装axioshttp-servedebug开发下个阶段测试运行方式注意清理磁盘缓存问题解决HTML Web项目的结构通常是基于MVC(Model-View-Controller)模式设计的。下面是一般的项目结构:index.html:项目的入口文件&#x…...
【IAR工程】STM8S208RB基于ST标准库下按键检测
【IAR工程】STM8S208RB基于ST标准库下按键检测📍相关篇《【IAR工程】STM8S208RB基于ST标准库下GPIO点灯示例》🎈《【IAR工程】STM8S208RB基于ST标准库下EXTI外部中断》🔖基于ST STM8S/A标准外设库:STSW-STM8069,版本号:2.3.1&…...
【5】深度学习之Pytorch——如何使用张量处理文本数据集(语料库数据集)
在计算机领域,不断崛起的两个领域,一个是CV一个是NLP,下面我们可以探索一下深度学习在NLP的应用和特点。 深度学习在自然语言处理(NLP)领域有广泛的应用。以下是一些主要的应用和特点: 语音识别࿱…...

《Spring系列》第5章 refresh()
前言 Spring框架中最重要的肯定是IOC容器,那么其如何进行初始化,就是通过refresh()这个方法,无论是单独使用Spring框架,还是SpringBoot,最终都会通过执行到这个方法,那么下面会介绍一下这个方法 一、IOC容…...

ThreeJS-缩放、旋转(四)
代码: <template> <div id"three_div"> </div> </template> <script> import * as THREE from "three"; import {OrbitControls } from three/examples/jsm/controls/OrbitControls export default { name: &quo…...

数据更新 | CnOpenData法拍房数据
法拍房数据 一、数据简介 法拍房,即“法院拍卖房产”,是被法院强制执行拍卖的房屋 。当债务人(业主)无力履行借款合约或无法清偿债务时,而被债权人经司法程序向法院申请强制执行,将债务人名下房屋拍卖&…...

【Spring从成神到升仙系列 五】从根上剖析 Spring 循环依赖
👏作者简介:大家好,我是爱敲代码的小黄,独角兽企业的Java开发工程师,CSDN博客专家,阿里云专家博主📕系列专栏:Java设计模式、数据结构和算法、Kafka从入门到成神、Kafka从成神到升仙…...

设计模式之代理模式(C++)
作者:翟天保Steven 版权声明:著作权归作者所有,商业转载请联系作者获得授权,非商业转载请注明出处 一、代理模式是什么? 代理模式是一种结构型的软件设计模式,在不改变原代码前提下,提供一个代理…...
[特殊字符] 智能合约中的数据是如何在区块链中保持一致的?
🧠 智能合约中的数据是如何在区块链中保持一致的? 为什么所有区块链节点都能得出相同结果?合约调用这么复杂,状态真能保持一致吗?本篇带你从底层视角理解“状态一致性”的真相。 一、智能合约的数据存储在哪里…...
云计算——弹性云计算器(ECS)
弹性云服务器:ECS 概述 云计算重构了ICT系统,云计算平台厂商推出使得厂家能够主要关注应用管理而非平台管理的云平台,包含如下主要概念。 ECS(Elastic Cloud Server):即弹性云服务器,是云计算…...

【JavaEE】-- HTTP
1. HTTP是什么? HTTP(全称为"超文本传输协议")是一种应用非常广泛的应用层协议,HTTP是基于TCP协议的一种应用层协议。 应用层协议:是计算机网络协议栈中最高层的协议,它定义了运行在不同主机上…...

蓝牙 BLE 扫描面试题大全(2):进阶面试题与实战演练
前文覆盖了 BLE 扫描的基础概念与经典问题蓝牙 BLE 扫描面试题大全(1):从基础到实战的深度解析-CSDN博客,但实际面试中,企业更关注候选人对复杂场景的应对能力(如多设备并发扫描、低功耗与高发现率的平衡)和前沿技术的…...
生成 Git SSH 证书
🔑 1. 生成 SSH 密钥对 在终端(Windows 使用 Git Bash,Mac/Linux 使用 Terminal)执行命令: ssh-keygen -t rsa -b 4096 -C "your_emailexample.com" 参数说明: -t rsa&#x…...

新能源汽车智慧充电桩管理方案:新能源充电桩散热问题及消防安全监管方案
随着新能源汽车的快速普及,充电桩作为核心配套设施,其安全性与可靠性备受关注。然而,在高温、高负荷运行环境下,充电桩的散热问题与消防安全隐患日益凸显,成为制约行业发展的关键瓶颈。 如何通过智慧化管理手段优化散…...

涂鸦T5AI手搓语音、emoji、otto机器人从入门到实战
“🤖手搓TuyaAI语音指令 😍秒变表情包大师,让萌系Otto机器人🔥玩出智能新花样!开整!” 🤖 Otto机器人 → 直接点明主体 手搓TuyaAI语音 → 强调 自主编程/自定义 语音控制(TuyaAI…...

【JavaWeb】Docker项目部署
引言 之前学习了Linux操作系统的常见命令,在Linux上安装软件,以及如何在Linux上部署一个单体项目,大多数同学都会有相同的感受,那就是麻烦。 核心体现在三点: 命令太多了,记不住 软件安装包名字复杂&…...

pikachu靶场通关笔记22-1 SQL注入05-1-insert注入(报错法)
目录 一、SQL注入 二、insert注入 三、报错型注入 四、updatexml函数 五、源码审计 六、insert渗透实战 1、渗透准备 2、获取数据库名database 3、获取表名table 4、获取列名column 5、获取字段 本系列为通过《pikachu靶场通关笔记》的SQL注入关卡(共10关࿰…...
Python ROS2【机器人中间件框架】 简介
销量过万TEEIS德国护膝夏天用薄款 优惠券冠生园 百花蜂蜜428g 挤压瓶纯蜂蜜巨奇严选 鞋子除臭剂360ml 多芬身体磨砂膏280g健70%-75%酒精消毒棉片湿巾1418cm 80片/袋3袋大包清洁食品用消毒 优惠券AIMORNY52朵红玫瑰永生香皂花同城配送非鲜花七夕情人节生日礼物送女友 热卖妙洁棉…...