Modbus协议长啥样呢?Modbus RTU协议有哪些参数?

发布者:美好的人生最新更新时间:2024-07-01 来源: elecfans关键字:Modbus协议  RTU协议  参数 手机看文章 扫描二维码
随时随地手机看文章

Modbus 协议可以走串口,可以走网口。

我们就先以Modbus RTU为主,毕竟Modbus RTU用的实在太多了。


其实只要把Modbus RTU掌握了,理解了,其它衍生出来的协议,自然也就理解了。

那Modbus 协议长啥样呢。

我们先来直接看一组数据。

主站发送:01 03 00 14 00 01 C4 0E

从站回复:01 03 02 00 63 F8 6D

好,不管你有没有学过Modbus协议,我们先假装看懂了上面的报文。

我们进入情景中。

现场有一个HMI。

还有一个PLC。

PLC接了100个灯,100个门,100个称。

“谁家PLC会接这么多个灯,接这么多称呀。”

“你管的着么,双十一打折,多买了几个不行呀。”

那灯的数据呢,就只有开还是关。也就是非0即1了。是开关类型。

那称的数据呢,如果单位是克,那可以是0到9999克,比如,这个称只能称到9999克上限。

那HMI通过Modbus协议,理应可以读到100个灯里,任意一个或者连续几个灯的数据。

也可以读一个称或者连续几个称的数据。

也就是报文上,要能把这些表现出来。

比如HMI想读第20个称的数据,只读一个。

那20,也就是十六进制0x14。

读一个,1,也就是0x01 。

我们看一下报文。

01 03 00 14 00 01 C4 0E。

真的有14 这个字节。

但是是00 14 呢还是14 00 还是14 呢。

如果只有一个字节,只能表示0到255。不行,数量太少了,肯定不够。那必须两个字节表示。

所以,0014就是第20个称。也就是我们所说的地址了。

1.jpg

这么乍一看,好像只需要三个字段,就可以表示HMI所需要读的数据了。

确实也是呀。HMI只是想读一个称的数据,没必要发其它不相关的数据的呀。

“HMI可以连接多个PLC嘛,怎么连接?”

“HMI可以通过485,接几个PLC的哦。”

“可是我要怎么知道我要读哪个PLC的数据呢”

“这样吧,我们给不同的PLC起一个编号,也就是站号,这样就可以了。”

“那Modbus协议上,我是不是也带这个站号呢。”

“是的,我们在Modbus上面加个站号就是行了。这样,如果PLC收到的报文,是自己的站号的,就回复,不是自己站号的,就不要回复,就解决了呀。”

“嗯,好办法。那就用第一个字节表示吧。”

1.jpg

这样,一个Modbus RTU协议,就此诞生了。

我们再回过头来总结看一下,这个modbus 协议,大概就五个参数。

1.jpg

我们每个字段开始聊一下。

第一个字段,就是站号。

主设备是没有站号的。只有从设备有站号。

为什么主设备没有站号呢。

主要是因为在一个modbus 通信里,有且只能有一个主站。只有主站才能主动发报文,从设备接到报文再判断是否要回复。

那从设备是否只能一个呢。

如果是接到485总线上面,从站就可以有多个了。一般建议不超过32个。这个梗下期会聊的。

主设备要访问哪个设备的时候呢,就根据站号来区分了。

不过,有时候呢,如果需要同时操作多个从设备,比如,想让10个从设备同时开灯,怎么做比较合适呢。

逐个发送写请求,那效率就有点慢了。

于是就有广播站号的概念了。站号0代表广播站号,当主站对站号0进行写操作的时候,所有的从设备收到命令之后,一般只执行,不回复。

第二个字段,是功能码。

这个功能码呢,我们换一个角度去讲解。

我们回归到协议本身,这个协议主要就是用于通信,采集和控制的。那采集什么数据呢。

就是位变量和数值变量。有只读的,可读可写的。

1.jpg

其实到这里,我们基本就把modbus协议掌握了。

modbus ascii和modbus tcp 也离不了这几个参数。

一般来说新手只要了解到这里,基本可以了。modbus 就算是入门了。

至于是要继续还是从入门到放弃,就看缘分了。

笔者从事物联网以来,接触的设备支持modbus的,不在少数。可以说,99%就只用到前面介绍的内容,真的不能更多了。

所以,本文就不再深入讲解modbus rtu更多的功能码和内容了。

国内外常见的PLC,还有各种单片机做出来的控制器,基本也就围绕0X,1X,4X,3X功能码的这几个功能码。

所以当你网上搜索出来各种中英文介绍Modbus 协议,讲一大堆,不知道哪些要看,哪些不要看。笔者的经验告诉我,不需要全都了解。

我们先看看读的。

1.jpg

寄存器比较特殊,8个位占一个字节。在Modbus回复的数据里,并不是用一个字节表示一个位寄存器。而是用一个位,表示一个位寄存器。

这样读20个寄存器,就需要3个字节了。

这样从站回复的数据就是FF FF 0F了。

也就是从站是至少一个字节起回复,不够一个字节的位,按一个字节回复。

大概的公式就是 位寄存器个数/8 得到字节个数,然后再看是否整除,如果不整除,有余数,则再补一个寄存器。

20/8=2,然后有余数,余数是4。所以是三个字节。最后一个字节,只取低4位有效。

4.[功能码02]读1X寄存器,地址10,读16个寄存器

1.jpg

2.jpg

总结起来,Modbus协议,也就常见8种功能码。由于多写可以兼容单写,甚至有的控制器,直接去掉单写命令,用多写实现,这样就只有6种功能码了。


关键字:Modbus协议  RTU协议  参数 引用地址:Modbus协议长啥样呢?Modbus RTU协议有哪些参数?

上一篇:Modbus协议上手实践篇
下一篇:发电机无功补偿过高的危害

推荐阅读最新更新时间:2024-11-13 19:31

一种便携式多参数环境监测仪器的设计
本文以智能建筑为应用背景,介绍一种通用性很强的便携式多参数环境监测仪。它以MSP430F437超低功耗单片机为核心,配置新式的微型低功耗传感器,实现了建筑物内温度、湿度、光照度、有害气体浓度等参数的采集处理、存储、通信等功能。 文中详细阐明了传感器的选取、硬件结构、软件流程等相关技术,并指出该仪器的特点和优势。 1 传感器的选取 传感器是决定监测仪精度的关键元件。传感器的选择主要依据工作环境、测量精度、线性度、互换性、灵敏度、响应速度、稳定性、功耗、体积大小以及易于与MCU接口等。本监测仪选用的各类传感器分别为:集成温度传感器TMP35、集成湿度传感器HM1500、热线型半导体气敏传感器MR511以及集成光照度传感器TS
[测试测量]
一种便携式多<font color='red'>参数</font>环境监测仪器的设计
理解传统眼图参数测量的局限
引论 眼图参数,特别是眼高和眼宽,经常造成工程师的困惑,针对眼高眼宽以及其他像1电平、0电平等眼图参数的算法并不是通用的,因为他们假设眼图垂直片段上的电压分布很好的拟合高斯分布。对于光信号,这是一个很好的假设。实际上,眼图参数最初就是定义用在光信号上的,没有考虑ISI等信号完整性的影响,通过电路板和互联器件传输的串行信号的眼图片段通常不是高斯分布的。这样测试出来的眼高眼宽的结果可能不会返回正确的结果,这篇文章针对眼高测量,讨论为什么会发生这种状况,并且给读者避免这种状况的建议,相似的分析适用于眼宽,但是不在这篇文章中讨论。 眼图参数的算法基于高斯模型,使用眼图中心的3sigma来定义眼高和眼宽。描述光信号眼图时,这种算法工作的很好
[测试测量]
理解传统眼图<font color='red'>参数</font>测量的局限
Atmega16中使用modbus协议
调试工具:Modbus Poll 编程软件:Atmel Studio 7 理解:PC中的Modbus Poll是主机,而AVR芯片作为从机 此处有两种串行传输模式:RTU和ASCII 此处使用了RTU模式,这种模式的主要优点是较高的数据密度,在相同的波特率下比ASCII 模式有更高的吞吐率。每个报文必须以连续的字符流传送。 //以下是必要的函数 void usart_init(uint baud)//波特率 { UCSRA = 0X00; UCSRB = 0X00; UCSRC = 0X86;// 访问UCSRC 异步 奇偶禁止 停止位1位 字符8位 ba
[单片机]
虚拟仪器在火箭发动机参数测试中的应用
1. 引言   当今在科技不断飞速发展的情况下,测试系统对所应用的方法和设备、技术等提出了越来越高的要求。虚拟仪器通过软件来取代部分传统的硬件设备,也就是说, 软件即仪器 。用这种软件来进行数据采集、处理、存储、打印及图表等功能,将使仪器之间的数据交换及信息综合等能力增强。同时,虚拟仪器的使用也使得其自身的升级和改进变得更加容易。LabVIEW的界面友好、编程方便、功能强大,成为虚拟仪器系统开发的优秀平台。它能够在有限的基本硬件支持下,通过软件完成数据的采集与控制、数据分析与处理以及数据显示与存储,从而实现各种现实 2. 虚拟仪器测试系统的硬件结构   在虚拟仪器测试系统的五种基本构成方式中,PC DAQ/PCI虚拟仪器系统是最廉价
[测试测量]
虚拟仪器在火箭发动机<font color='red'>参数</font>测试中的应用
别被低频噪声吓到,使用4200A-SCS参数分析仪测量1/f 电流噪声
别被低频噪声吓到,使用 4200A-SCS 参数分析仪测量1/f 电流噪声 电子器件本身就有各种不同的噪声源,包括热噪声、散粒噪声、白(宽带)噪声和1/f (闪烁效应)噪声。1/f 噪声是低频电子噪声,其中电流 (ISD) 或功率 (PSD) 频谱密度与频率成反比。许多元器件类型都会有 1/f 噪声,包括半导体器件、某些类型的电阻器、石墨烯之类的 2D 材料,甚至包括化学电池。为确定一种器件的 1/f 噪声,我们通常要测量电流相对于时间的关系,然后把数据转换到频域中。快速傅立叶变换 (FFT) 是把时域数据转换成频域数据的一种流行方法。 在测量设置中,噪声来自不同的来源,其中之一是测量仪器本身。为提取被测器件 (DUT)
[测试测量]
别被低频噪声吓到,使用4200A-SCS<font color='red'>参数</font>分析仪测量1/f 电流噪声
织物涨破强度测试仪的产品参数说明
涨破测试仪 涨破破强度测试仪分为两种一种是液压涨破和气动涨破通过液压作用于橡胶鼓膜上方的测试样品,将被测样品胀破,用来测试针织、梭织、无纺布、纸张、卡板纸在胀破时的Z大压力值和胀破高度。液压式自动涨破测试仪,采用高精度压力传感器、进口非接触式线性位移传感器,精确测试样品胀破瞬间的爆破力和高度。全透明进口亚克力测试杯,便于全程观察样品涨破情况。大功率电动推杆,扭矩大、加压平稳精确,Z大压力可达6000kPa。多种测试杯可供选择。 数字式液压胀破测试仪,全自动液压涨破仪,气动涨破仪测试范围: 包括纺织制品、无纺布、纸张、塑料等片状材料。 数字式液压胀破测试仪|全自动液压涨破仪|涨破仪产品参数: a)测试压力范围:zui大600
[测试测量]
智能芯片哪家强 四核参数之真实对比
    对于选择智能电视(参数 图片 文章)盒子,更多的消费者只是看重品牌抑或是其中的特色功能,在硬件配置方面很多消费者往往是比较容易忽略的,因为不像计算机中的一些硬件配置,大多的智能电视盒子都标榜着4核CPU、2G内存,这些雷同的数据往往就让我们忽视了对于硬件的追求,但是殊不知,即使是同一品牌的电视盒子,不同型号所使用到的核心解决方案也会存在明显的不同,即使同样标榜着相同的4核心CPU,也会有在很多的参数中存在不同的优势和劣势,     如今制造智能电视盒芯片的厂商比较集中在全志,炬芯、瑞芯微、华为海思等,然而在这些厂商推出的4核芯片中,在线程数,核心架构以及GPU上还是存在明显的不同的,而今天我们就直接将这些核心组件的
[家用电子]
C++含参数函数的继承方法
方法:先继承类然后映射函数。 #include iostream.h class animal { public: animal(char thename); }; animal::animal(char thename) { char name; cout thename endl; } class pig:public animal //先继承类,并在次写上子类映射函数 { public: pig(char thename); }; pig::pig(char thename):animal(thename) //后映射函数。注意父类函数此时无需再定义数据类型 { } class turtle:public anim
[单片机]
小广播
最新嵌入式文章
何立民专栏 单片机及嵌入式宝典

北京航空航天大学教授,20余年来致力于单片机与嵌入式系统推广工作。

 
EEWorld订阅号

 
EEWorld服务号

 
汽车开发圈

电子工程世界版权所有 京ICP证060456号 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2024 EEWORLD.com.cn, Inc. All rights reserved