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

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

3天内不再提示

modbus协议的一些笔记

汽车电子技术 来源:嵌入式情报局 作者: 情报小哥 2023-02-21 10:29 次阅读

大家好,我是情报小哥~

最近使用modbus协议与第三方设备进行通信,有几点在这里小结分享一些,也避免大家以后掉坑,本文不做系统的modbus协议解说,仅对使用过程中遇到的问题和注意事项进行描述,以基于RS485的modbus-RTU为例进行讲解:

1、字节序问题

modbus采用大端字节序进行报文传输,这个非常重要,字节序不正确则对多字节数据无法解析和组拼。

这里所说的大端字节序表示:一个数据的高字节将被优先发送,如一个word大小的数据为0x1234,那么在modbus协议打包成一帧数据进行发送的时候在规定数据域中先发送0x12,然后发送0x34,其他多字节数据类型、CRC16校验也是类似的传输顺序。

总线上的发送与接收方都要遵循大端的字节序发送格式。

2、单播与广播

在modbus总线上采用单播和广播的方式进行通信,同一总线上一般都只有一个主机、多个从机;在同一时间内一个主机可以通过地址区分与想要的从机通信,这边是单播方式;同时modbus总线也可以一个主机以广播的方式与多个从机进行通信。

平时我们也称这种通信方式为主从通信(Maser/Slave),主机发送请求消息,当从机接收到正确消息后响应请求返回给主机;同时主机也可以直接发消息修改从机的数据,实现主从数据的双向读写。

3、与PLC通信协议

具体与什么设备通信,只是不同的设备所支持的功能码不同,或相关的叫法和习惯不同,具体需要根据相应的设备来进行区分了,但都符合modbus协议标准。

在跟PLC进行通信的时候其给过来的协议会指明相应的PLC地址而此地址与实际发送modbus报文数据帧中的寄存器等地址并不是一致的。

图片

如上图所示PLC工程师一般都会以PLC地址为基础给出协议,而很多其他软件工程师对接的时候,以为PLC地址(也叫PLC的存储地址)便是modbus报文数据帧中的寄存器地址,其实两者并不相等。

西门子的PLC地址其每个功能码所对应的modbus报文地址都是从0开始,即从0x0000~0xFFFF;所以你可以把PLC地址看成是一种绝对地址,而modbus报文地址仅仅只是在该功能码下的一个相对地址。

如采用03H功能码读取PLC存储地址是40002的寄存器,而此时modbus报文中的寄存器地址为01。

图片

3、线圈和寄存器的理解

由于早期PLC对于一些布尔量均是用于控制一些继电器或者接触器等等,这些器件主要是通过线圈来进行吸合与弹开,后面叫法也就沿用下来了,同时线圈分配输入线圈和输出线圈,跟我们平时MCU的IO引脚的电平读写有点类似。

而对于一些非bool类型的数据均采用寄存器的概念来继续传输,相信这样便可以对PLC中的这些名字进一步理解了。

4、RS485终端电阻

对于较长距离的RS485通信,采用线型连接并增加终端120Ω匹配电阻来降低干扰增加总线通信的稳定性,如下图所示:

图片

最 后

好了,这里小哥就简单介绍了最近使用modbus的一些踩坑笔记,记得关注学习哦。

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

    关注

    8

    文章

    6512

    浏览量

    87609
  • MODBUS
    +关注

    关注

    27

    文章

    1440

    浏览量

    75693
  • 字节
    +关注

    关注

    0

    文章

    37

    浏览量

    13412
收藏 人收藏

    评论

    相关推荐

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

    `对于Modbus协议栈的整个开发内容,前面已经说得很清楚了,接下来我们说明下与开发没有直接关系的内容。首先,关于我为什么开发这个协议栈的问题。我们的初衷只是想能够在开发产品时不用每次都重写这
    发表于 08-27 20:32

    种基于MODBUS协议的工业控制系统设计

    种基于MODBUS协议的工业控制系统设计附件种基于MODBUS协议的工业控制系统设计.pdf162.0 KB
    发表于 10-16 13:35

    Modbus TCP协议学习笔记分享

    公司于1979年开发,是种工业现场总线协议标准。1996年施耐德公司推出基于以太网TCP/IP的modbus协议:modbusTCP。Modbus协议
    发表于 07-01 10:36

    modbus协议笔记

    1 Modbus协议概要​ Modbus通信协议由Modicon公司(现在的施耐德电气Schneider Electric)于1979年为可编程逻辑控制(即PLC)通信而发表。目前,Modbu
    发表于 07-02 07:17

    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协议

    1、Modbus是什么?  Modbus协议,从字面理解它包括Mod和Bus两部分,首先它是种bus,即总线协议,和I2C、SPI类似,总线就意味着有主机,有从机,这些设备在同
    发表于 10-28 14:23

    Modbus协议的理解

    。   对于Modbus协议一些猜测:   1.Modus协议既然是将数据字节按ASCII码发送,为什么不以高4字节+低4字节的方式呢?我猜测的因为停止位是0x0D和0X0A,如果采用高4字节+低4字节
    发表于 05-05 16:47

    Modbus协议简介及其特点

    Modbus协议是什么,Modbus协议的特点,本文针对Modbus协议的概况加以阐述。
    发表于 11-02 15:00 4471次阅读

    modbus协议应用指南

    modbus协议
    发表于 12-04 09:45 1次下载

    modbus协议功能码分类 modbus协议功能码是什么,有什么作用

    Modbus协议是一种用于工业领域常见的通信协议,它基于主从结构,用于在不同设备之间实现数据交换。Modbus协议的功能码是决定数据交换类型和操作的重要部分。下面将详细介绍Modbus协议
    的头像 发表于 01-31 14:47 1544次阅读

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

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