0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

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

冬至子 来源:物联网诸子东 作者:诸子东 2023-08-10 16:36 次阅读

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种功能码了。

声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • 单片机
    +关注

    关注

    6002

    文章

    43982

    浏览量

    620916
  • ModBus协议
    +关注

    关注

    3

    文章

    148

    浏览量

    33196
  • CRC校验
    +关注

    关注

    0

    文章

    81

    浏览量

    15032
  • RTU
    RTU
    +关注

    关注

    0

    文章

    345

    浏览量

    28348
  • PLC控制器
    +关注

    关注

    0

    文章

    33

    浏览量

    9074
收藏 人收藏

    评论

    相关推荐

    Modbus库开发笔记之十一:关于Modbus协议栈开发的说明

    /Modbus其次,Modbus协议国标,包括三个文件。我们这个协议栈就是按照国标开发的标准协议,但不完全,包括
    发表于 08-27 20:32

    modbus协议讲解modbus-rtu以及modbus-tcp协议详解

    modbus协议讲解modbus-rtu以及modbus-tcp协议详解,见附件。
    发表于 03-01 10:14

    Modbus TCP协议学习笔记分享

    公司于1979年开发,是一种工业现场总线协议标准。1996年施耐德公司推出基于以太网TCP/IP的modbus协议:modbusTCP。Modbus协议是一项应用层报文传输协议,包括A
    发表于 07-01 10:36

    什么是Modbus协议?如何写稳定的Modbus代码?

    什么是Modbus协议Modbus协议哪些分类?使用Modbus时有哪些注意事项?如何写稳定的Modbus代码?
    发表于 07-02 06:54

    modbus协议笔记

    已经成为工业领域通信协议的业界标准,并且现在是工业电子设备之间常用的连接方式。Modbus作为目前工业领域应用最广泛的协议,与其他通信协议相比,
    发表于 07-02 07:17

    Modbus-RTU协议模式学习下载

    1.Modbus定义: 是一种串行通信协议,一开始是为使用PLC(即可编程逻辑控制器)设备通信而发表,已成为工业上通信协议的标准,是工业电子设备间常用连接方式。2.Modbus协议组成
    发表于 07-02 06:12

    Modbus协议是什么?Modbus协议主要有哪些应用?

    请问一下Modbus协议是什么?Modbus协议主要有哪些应用?
    发表于 07-15 12:04

    Modbus协议的特点是什么

    Modbus协议的特点是什么?Modbus协议哪几类功能码?
    发表于 09-26 08:13

    Modbus协议地址与协议层次

    Modbus协议地址是什么意思?Modbus协议层次何优势?
    发表于 09-28 06:27

    Modbus协议是什么

    Modbus协议是什么?MODBUS功能码哪些?MODBUS协议哪几种传输模式?
    发表于 09-29 07:06

    Modbus是什么?Modbus协议哪些优点

    Modbus是什么?Modbus协议哪些优点?Modbus协议包括哪些?
    发表于 09-30 08:40

    Modbus-RTU协议包括哪些

    Modbus-RTUModbus 一个工业上常用的通讯协议、一种通讯约定。Modbus协议包括RTU、ASCII、TCP。其中MODBUS-RTU
    发表于 02-16 07:43

    如何快速实现Modbus RTUModbus TCP协议转换?

    Modbus协议是工业现场串口设备之间常用的连接方式,其中最常见的就是Modbus RTUModbus TCP两种。许多工厂需要将现场各种不同型号设备的数据都能够通过一个上位机软件或
    发表于 08-18 18:36

    Modbus协议的理解

    系统的兼容,最好采用通用的通讯协议。   我们可以Modbus协议进行修改,使之能使用在自己的系统中。Modbus协议包括ASCII、RTU、TCP等,并没有规定物理层。此
    发表于 05-05 16:47

    Modbus协议网关是什么?Modbus协议网关的功能

    Modbus协议网关是一种专门用于工业自动化环境中的网络设备,其主要功能是实现不同通信协议之间的转换,尤其是将基于Modbus协议的设备或系统与使用其他协议的设备、控制系统或信息系统连
    的头像 发表于 04-11 15:51 138次阅读