1024程序员节来一篇Modbus吧,一起来深入了解Modbus的世界-CSDN博客

90 阅读5分钟

Modbus是一种工业通信协议,用于在不同设备之间传递数据。它是一个开放的协议,由Modicon公司于1979年开发。现在,Modbus已经成为工业自动化领域最流行的通信协议之一。

文章目录

1. 什么是Modbus?

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

在这里插入图片描述

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

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

  • 公开发表并且无版权要求
  • 易于部署和维护
  • 对供应商来说,修改移动本地的比特或字节没有很多限制

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

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


2. Modbus的三种变体

大致分为以下几种:

  • Modbus-RTU
  • Modbus-ASCII
  • Modbus-TCP

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

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

(1) Modbus RTU

Modbus RTU是Modbus协议的最常见变体之一。它使用二进制编码,并且数据被传输到串行通信线路上。Modbus RTU使用RS-485串行通信标准,这使得它非常适合用于长距离通信。

Modbus RTU的数据帧包含一个地址功能码数据校验。它支持读取和写入多个寄存器或线圈,以及读取和写入单个寄存器或线圈。

  1. 起始位(Start Bit) :一个低电平位,用于标识帧的开始。
  2. 地址位(Address) :一个8位的二进制数,用于标识从站(Slave)的地址,范围0-255,其中有效范围是1-247,其他有特殊用途,比如255是广播地址(广播地址就是应答所有地址,正常的需要两个设备的地址一样才能进行查询和回复)。主站(Master)通过发送带有从站地址的帧来与特定的从站通信。
  3. 功能码(Function Code):一个8位的二进制数,用于标识主站要执行的操作类型。功能码定义了Modbus协议支持的各种操作,如读取寄存器、写入寄存器、读取线圈等。
  4. 数据字段(Data Field) :一个可变长度的字段,用于存储要传输的数据。数据字段的长度取决于功能码和操作类型。
  5. CRC校验(Cyclic Redundancy Check) :一个16位的校验码,用于检测数据传输过程中是否发生了错误。CRC校验码由发送方计算,并附加在帧的末尾。接收方在接收到帧后计算CRC校验码,与接收到的校验码进行比较,以确认数据的完整性。
  6. 结束位(Stop Bit) :一个高电平位,用于标识帧的结束。

整个Modbus RTU帧结构的长度是可变的,取决于数据字段的长度。通常情况下,一个完整的Modbus RTU帧的长度在8256个字节之间。

在Modbus RTU网络中,主站通过发送帧来与从站进行通信。从站接收到帧后,根据帧中的地址和功能码进行相应的操作,并将结果返回给主站。通过这种帧结构,Modbus RTU实现了高效、可靠的数据传输。

Modbus RTU的优点是速度快、可靠性高、传输距离远。缺点是需要专门的硬件支持,且对于不同的设备,需要使用不同的寄存器地址。

(2) Modbus ASCII

Modbus ASCII是Modbus协议的另一种变体。它使用ASCII编码,并且数据被传输到串行通信线路上。Modbus ASCII也使用RS-485串行通信标准。

Modbus ASCII的数据帧包含一个地址功能码数据校验。与Modbus RTU不同的是,Modbus ASCII使用可见字符来表示二进制数据。

Modbus ASCII的优点是易于调试和理解,缺点是速度慢、可靠性低、传输距离短。

(3) Modbus TCP/IP

Modbus TCP/IP是Modbus协议的第三种变体。它使用TCP/IP协议进行通信,因此可以通过以太网进行通信。

Modbus TCP/IP的数据帧包含一个TCP头Modbus头数据校验和。它支持读取和写入多个寄存器或线圈,以及读取和写入单个寄存器或线圈。

Modbus TCP/IP的优点是速度快、可靠性高、传输距离远。缺点是需要网络支持,且对于不同的设备,需要使用不同的寄存器地址。

总结

Modbus协议是工业自动化领域最流行的通信协议之一。它有三种不同的变体:Modbus RTU、Modbus ASCII和Modbus TCP/IP。这些变体的主要区别在于它们的物理层和传输方式。Modbus RTU和Modbus ASCII使用串行通信标准进行通信,而Modbus TCP/IP使用TCP/IP协议进行通信。Modbus RTU和Modbus ASCII的优点是速度快、可靠性高,缺点是需要专门的硬件支持和对不同设备使用不同的寄存器地址。Modbus TCP/IP的优点是速度快、可靠性高、传输距离远,缺点是需要网络支持和对不同设备使用不同的寄存器地址。