清泛IT社区App Inventor 2 中文社区

搜索

扫码访问移动社区 移动社区,您的掌上技术专家

关注我,精彩不错过! 关注我,精彩不错过!

扫码安装最新版AI伴侣 最新版AI伴侣v2.75

Aia Store .aia 源码一站式解决方案 发布日志AI2连接测试ai2Starter模拟器

App Inventor 2 离线版AI2 拓展接入DeepSeek VIP会员 享专有教程,免费赠送基础版*技术支持服务! AI2入门必读中文文档中文教程IoT专题

查看: 16|回复: 1
打印 上一主题 下一主题

[AI2教程] Modbus硬件控制01——什么是Modbus

  • TA的每日心情
    开心
    2025-04-25 21:27
  • 签到天数: 37 天

    [LV.5]常住居民I

    14

    主题

    53

    帖子

    2428

    积分

    版主

    Rank: 7Rank: 7Rank: 7

    积分
    2428
    跳转到指定楼层
    楼主
    发表于 昨天 12:33 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
    本帖最后由 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-ASCII
    • Modbus-TCP

    以上三种协议,一个设备只会有一种协议,如果你的设备使用的是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、帧结构

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

    • 地址: 占用一个字节,范围0-255,其中有效范围是1-247,其他有特殊用途,比如255是广播地址(广播地址就是应答所有地址,正常的需要两个设备的地址一样才能进行查询和回复)。

    • 功能码:占用一个字节,功能码的意义就是,知道这个指令是干啥的,比如你可以查询从机的数据,也可以修改数据,所以不同功能码对应不同功能。

    • 数据:根据功能码不同,有不同结构,在下面的实例中有说明。

    • 校验:为了保证数据不错误,增加这个,然后再把前面的数据进行计算看数据是否一致,如果一致,就说明这帧数据是正确的,我再回复;如果不一样,说明你这个数据在传输的时候出了问题,数据不对的,所以就抛弃了。


    2、实战

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

  • TA的每日心情
    开心
    昨天 06:41
  • 签到天数: 488 天

    [LV.9]以坛为家II

    769

    主题

    1324

    帖子

    3万

    积分

    管理员

    Rank: 9Rank: 9Rank: 9

    积分
    34956

    AI2中文网VIP弹球达人接水果达人撸猫达人

    沙发
    发表于 昨天 15:19 来自手机 | 只看该作者
    感谢分享
    App Inventor 2 中文网 - MIT同步更新的中文本土化平台!v2.75 支持Android 14 更新日志
    回复

    使用道具 举报

    您需要登录后才可以回帖 登录 | 立即注册

    本版积分规则

    © 2025 tsingfun.com, Inc.  沪ICP备2020034476号-1  沪公网安备31011702000040号

    GMT+8, 2025-06-20 03:12 , Processed in 0.027354 second(s), 33 queries .