当前位置: 首页 > article >正文

Modbus知识详解

Modbus知识详解



## 1.什么是Modbus?

**顾名思义**,它是一个Bus(总线),即总线协议。比如串口协议、IIC协议、SPI都是通信协议。你接触到这种协议,相信你所处的行业是工业电子方面或者你的产品用于工业。

好了,现在知道了大概知道了,这是一个总线协议,是一个Mod什么的公司发表的一个通信协议。

## 2.Modbus用来干什么?

用两个字概括:**通信**

是的,所有协议都是用来通信的,协议的制定就是让两个人根据这个协议看懂传来的一组数据。比如我给你一个**6666**,你要是没有协议,就只知道这是**6666**,而有了协议,你就知道了这是在问我是不是大佬?当然,也可以表示其他意思,具体什么意思就看你协议怎么制定!

## 3.Modbus的内容是什么?

大致分为以下几种:

- Modbus-RTU
- Modbus-ASCII
- Modbus-TCP
- 以上三种协议,一个设备只会有一种协议,如果你的设备使用的是Modbus-RTU,只需查看以下对应部分,一般来说大部分的设备都是Modbus-RTU协议的。

## 4.通讯过程

Modbus是**主从方式通信**,也就是说,不能同步进行通信,总线上每次只有一个数据进行传输,即主机发送,从机应答,主机不发送,总线上就没有数据通信。(所以说,这也算是一个缺点了)



**举例2**: 就像打电话,你得知道对方的电话(这就是唯一地址),然后你打电话过去,相当于主机查找从机,然后对方接通电话,给你回复(返回数据),正常是这样的。
Sorry ! The subscriber you dialled is busy now, please redial later.
如果这时候,对方正在打电话,你应该听到的是"`sorry,you…`"这一串英文,说明对方忙,但是`Modbus总线`不能判断对方是否忙,也没有对应的仲裁机制,好了你又知道了一个缺点了!但是,你可以用软件的办法进行适当的处理数据!

## 5 .Modbus-RTU协议

**设备必须要有RTU协议!这是Modbus协议上规定的,且默认模式必须是RTU,ASCII作为选项**。(也就是说,一般的设备只有RTU这个协议,ASCII一般很少)所以说,一般学习Modbus协议,只需要了解RTU的协议,ASCII作为学习的了解就足够了。

### 1、帧结构

**帧结构 = 地址 + 功能码+ 数据 + 校验**

- **地址**: 占用一个字节,范围0-255,其中有效范围是1-247,其他有特殊用途,比如255是广播地址(广播地址就是应答所有地址,正常的需要两个设备的地址一样才能进行查询和回复)- **功能码**:占用一个字节,功能码的意义就是,知道这个指令是干啥的,比如你可以查询从机的数据,也可以修改数据,所以不同功能码对应不同功能。
- **数据**:根据功能码不同,有不同结构,在下面的实例中有说明。
- **校验**:为了保证数据不错误,增加这个,然后再把前面的数据进行计算看数据是否一致,如果一致,就说明这帧数据是正确的,我再回复;如果不一样,说明你这个数据在传输的时候出了问题,数据不对的,所以就抛弃了。

### 2、实战

只谈理论大家可能不太明白,下面举一个例子。Modbus-RTU协议一般我们用的最多功能码就是`03`和`06`,大部分都是用modbus来查询传感器上的信息用`03`查询功能码,如果需要修改传感器寄存器的值就用`06`修改功能码,其他的不需要过多关注,学多了你也记不住,哈哈哈!

#### 2.1 查询功能码0x03

功能描述:现在我是主机,我要查询从机地址为01的数据。我现在用电脑的modbus调试助手来代替主机,stm32来代替从机。

http://www.kler.cn/a/463676.html

相关文章:

  • 单片机--51- RAM
  • @colyseus/loadtest 插件详解
  • 代码随想录算法训练营第十七天-二叉树-654.最大二叉树
  • STM32-笔记19-串口打印功能
  • arm rk3588 升级glibc2.31到2.33
  • AIGC与未来的通用人工智能(AGI):从生成内容到智能革命
  • 华为云Welink数据怎么连接到小满CRM?
  • gesp(C++一级)(12)洛谷:B3953:[GESP202403 一级] 找因数
  • 电脑与手机
  • GPT分区 使用parted标准分区划分,以及相邻分区扩容
  • 苍穹外卖04——Redis初入门 在店铺打烊or营业状态管理功能中的使用
  • 条款35:考虑虚函数以外的其它选择(Consider alternatives to virtual functions)
  • 元宇宙金融新纪元:CZ协议全球启航
  • ctrip 小试牛刀记录
  • 分布式系统架构6:链路追踪
  • 基于SpringBoot的题库管理系统的设计与实现(源码+SQL+LW+部署讲解)
  • ESP32 I2S音频总线学习笔记(一):初识I2S通信与配置基础
  • MySQL 分库分表
  • 对称密码算法(分组密码算法 序列密码算法 密码杂凑算法)中的基本操作
  • 28.Marshal.PtrToStringAnsi C#例子