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的数据帧包含一个地址、功能码、数据和校验。它支持读取和写入多个寄存器或线圈,以及读取和写入单个寄存器或线圈。
- 起始位(Start Bit) :一个低电平位,用于标识帧的开始。
- 地址位(Address) :一个8位的二进制数,用于标识从站(Slave)的地址,范围0-255,其中有效范围是1-247,其他有特殊用途,比如255是广播地址(广播地址就是应答所有地址,正常的需要两个设备的地址一样才能进行查询和回复)。主站(
Master
)通过发送带有从站地址的帧来与特定的从站通信。 - 功能码(Function Code):一个8位的二进制数,用于标识主站要执行的操作类型。功能码定义了Modbus协议支持的各种操作,如读取寄存器、写入寄存器、读取线圈等。
- 数据字段(Data Field) :一个可变长度的字段,用于存储要传输的数据。数据字段的长度取决于功能码和操作类型。
- CRC校验(Cyclic Redundancy Check) :一个16位的校验码,用于检测数据传输过程中是否发生了错误。CRC校验码由发送方计算,并附加在帧的末尾。接收方在接收到帧后计算CRC校验码,与接收到的校验码进行比较,以确认数据的完整性。
- 结束位(Stop Bit) :一个高电平位,用于标识帧的结束。
整个Modbus RTU帧结构的长度是可变的,取决于数据字段的长度。通常情况下,一个完整的Modbus RTU帧的长度在8至256个字节之间。
在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的优点是速度快、可靠性高、传输距离远,缺点是需要网络支持和对不同设备使用不同的寄存器地址。