清泛IT社区

标题: Modbus硬件控制01——什么是Modbus [打印本页]

作者: mzb2012    时间: 昨天 12:33
标题: Modbus硬件控制01——什么是Modbus
本帖最后由 mzb2012 于 2025-06-19 12:37 编辑

Modbus算是嵌入式领域比较经典一种通信协议,不管你是初学者,还是工作多年的工程师,都很有必要了解一下。

1.什么是Modbus?

1.什么是Modebus

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

好了,现在知道了大概知道了,这是一个总线协议,是一个Mod什么的公司发表的一个通信协议。那为什么要用这个呢? 答案就是他们都在用,你就得学,啊哈哈!

正经的说,它被工业领域所接受的原因是它具备一下三个优点

简单的概括,就是免费+简单+方便修改!

归纳:Modbus就是一种用在工业上的简单协议!

2.Modbus用来干什么?2.Modbus用来干什么?

2.Modbus用来干什么?

用两个字概括:通信

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

归纳:Modbus用来通信喽,是个人都知道!

3.Modbus的内容是什么?

3.Modbus内容是什么?

大致分为以下几种:

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

4.通讯过程

4.通讯过程

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

举例1: 一个总线上有一个主机,多个从机,主机查询其中一个从机,首先你必须得这些从机分配地址(这样才能知道哪个从机,而且每个地址必须唯一),分配好地址后,主机要查询,然后数据下发(数据内容下面会介绍),从机得到主机发送的数据,然后对应地址的从机回复,主机得到从机数据,这样就是一个主机到从机的通信过程,是不是很简单呢?

举例2: 就像打电话,你得知道对方的电话(这就是唯一地址),然后你打电话过去,相当于主机查找从机,然后对方接通电话,给你回复(返回数据),正常是这样的。

如果这时候,对方正在打电话,你应该听到的是"sorry,you…"这一串英文,说明对方忙,但是Modbus总线不能判断对方是否忙,也没有对应的仲裁机制,好了你又知道了一个缺点了!但是,你可以用软件的办法进行适当的处理数据!

5 Modbus-RTU协议

5.Modbus-RTU协议

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

1、帧结构

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

2、实战

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


作者: App Inventor 2     时间: 昨天 15:19
感谢分享




欢迎光临 清泛IT社区 (https://bbs.tsingfun.com/) Powered by Discuz! X3.3