串行通信协议---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 版权声明:著作权归作者所有,商业转载请联系作者获得授权,非商业转载请注明出处 一、代理模式是什么? 代理模式是一种结构型的软件设计模式,在不改变原代码前提下,提供一个代理…...

使用VSCode开发Django指南
使用VSCode开发Django指南 一、概述 Django 是一个高级 Python 框架,专为快速、安全和可扩展的 Web 开发而设计。Django 包含对 URL 路由、页面模板和数据处理的丰富支持。 本文将创建一个简单的 Django 应用,其中包含三个使用通用基本模板的页面。在此…...

从WWDC看苹果产品发展的规律
WWDC 是苹果公司一年一度面向全球开发者的盛会,其主题演讲展现了苹果在产品设计、技术路线、用户体验和生态系统构建上的核心理念与演进脉络。我们借助 ChatGPT Deep Research 工具,对过去十年 WWDC 主题演讲内容进行了系统化分析,形成了这份…...

中南大学无人机智能体的全面评估!BEDI:用于评估无人机上具身智能体的综合性基准测试
作者:Mingning Guo, Mengwei Wu, Jiarun He, Shaoxian Li, Haifeng Li, Chao Tao单位:中南大学地球科学与信息物理学院论文标题:BEDI: A Comprehensive Benchmark for Evaluating Embodied Agents on UAVs论文链接:https://arxiv.…...

Psychopy音频的使用
Psychopy音频的使用 本文主要解决以下问题: 指定音频引擎与设备;播放音频文件 本文所使用的环境: Python3.10 numpy2.2.6 psychopy2025.1.1 psychtoolbox3.0.19.14 一、音频配置 Psychopy文档链接为Sound - for audio playback — Psy…...

成都鼎讯硬核科技!雷达目标与干扰模拟器,以卓越性能制胜电磁频谱战
在现代战争中,电磁频谱已成为继陆、海、空、天之后的 “第五维战场”,雷达作为电磁频谱领域的关键装备,其干扰与抗干扰能力的较量,直接影响着战争的胜负走向。由成都鼎讯科技匠心打造的雷达目标与干扰模拟器,凭借数字射…...

2025年渗透测试面试题总结-腾讯[实习]科恩实验室-安全工程师(题目+回答)
安全领域各种资源,学习文档,以及工具分享、前沿信息分享、POC、EXP分享。不定期分享各种好玩的项目及好用的工具,欢迎关注。 目录 腾讯[实习]科恩实验室-安全工程师 一、网络与协议 1. TCP三次握手 2. SYN扫描原理 3. HTTPS证书机制 二…...

毫米波雷达基础理论(3D+4D)
3D、4D毫米波雷达基础知识及厂商选型 PreView : https://mp.weixin.qq.com/s/bQkju4r6med7I3TBGJI_bQ 1. FMCW毫米波雷达基础知识 主要参考博文: 一文入门汽车毫米波雷达基本原理 :https://mp.weixin.qq.com/s/_EN7A5lKcz2Eh8dLnjE19w 毫米波雷达基础…...
Kubernetes 网络模型深度解析:Pod IP 与 Service 的负载均衡机制,Service到底是什么?
Pod IP 的本质与特性 Pod IP 的定位 纯端点地址:Pod IP 是分配给 Pod 网络命名空间的真实 IP 地址(如 10.244.1.2)无特殊名称:在 Kubernetes 中,它通常被称为 “Pod IP” 或 “容器 IP”生命周期:与 Pod …...
鸿蒙(HarmonyOS5)实现跳一跳小游戏
下面我将介绍如何使用鸿蒙的ArkUI框架,实现一个简单的跳一跳小游戏。 1. 项目结构 src/main/ets/ ├── MainAbility │ ├── pages │ │ ├── Index.ets // 主页面 │ │ └── GamePage.ets // 游戏页面 │ └── model │ …...

spring boot使用HttpServletResponse实现sse后端流式输出消息
1.以前只是看过SSE的相关文章,没有具体实践,这次接入AI大模型使用到了流式输出,涉及到给前端流式返回,所以记录一下。 2.resp要设置为text/event-stream resp.setContentType("text/event-stream"); resp.setCharacter…...