Modbus协议

发布时间:2024年01月13日

一.起源

Modbus由Modicon公司于1979年开发,是一种工业现场总线协议标准。Modbus通信协议具有多个变种,其中有支持串口,以太网多个版本,其中最著名的是Modbus RTUModbus ASCIIModbus TCP三种。其中Modbus TCP是在施耐德收购Modicon后1997年发布的。

二.分类

  1. Modbus RTU:运行在串口上的协议,采用二进制表现形式以及紧凑的数据结构,通信效率较高,应用比较广泛

  2. Modbus ASCII:运行在串口上的协议,采用ASCII码进行传输,并且每个字节的开始和结束都有特殊字符作为标志,传输效率远远低于Modbus RTU,一般只有通讯量比较少时才会考虑

  3. Modbus TCP:Modbus TCP是基于以太网的变体,使用TCP/IP协议栈进行数据传输。它使用标准的以太网物理层和IP网络连接,可以通过以太网进行设备间的通信。

三.应用场景

Modbus协议是现在国内工业领域应用最多的协议,不只PLC设备,各种终端设备,比如水控机、水表、电表、工业秤、各种采集设备。

四.Modbus TCP协议

1.Modbus TCP特点

  1. 采用主从问答的通信,主机可以对应多个从机,可以特意问某个从机。不仅采集还要控制,有问必有答。

  2. 使用TCP/IP协议栈,能够实现可靠的数据传输,并支持通过路由器或者互联网对设备进行远程访问和控制。

  3. 支持高速通信,与Modbus RTU或Modbus ASCII等串行通信相比较,它的通信速度更快,可以实现更高的数据传输效率。

4.Modbus TCP端口号默认502

  1. 灵活性高,可以通过可编程控制器(PLC)或其他设备对不同种类的数据(如寄存器或线圈)进行读写。

总之,Modbus TCP是一种基于以太网的工业自动化控制系统通信协议,它具有高速通信、报文完整性和可靠性等特点。如果您还有其他问题,可以继续向我提问。

2.Modbus TCP组成

Modbus TCP协议包含三部分:报文头、功能码、数据

![2023-11-15T15:53:14.png][1]

报文头:7个字节 (byte)功能码:1个字节
Modbus TCP/IP协议最大数据帧长度为260字节

(1)MBAP报文头

![2023-11-15T15:54:23.png][2]

事务处理标识符:区分消息 ,一般主机怎么发,从机怎么回复。
协议标识符: 固定 00 00
长度:接下来的字节长度。
单元标识符:从机id
总结:报文头包含的内容个数、顺序都不可以调换

(2)寄存器(存储数据)
Modbus TCP使用不同类型的寄存器来存储和读取数据,包括离散量输入线圈输入寄存器保持寄存器

  1. 线圈寄存器(Coil Register)和离散量输入寄存器(Discrete Input Register)都属于位寄存器。每个寄存器占用1字节,用于存储开关状态(0或1)。线圈寄存器用于控制IO设备的输出状态,而离散量输入寄存器则用于读取输入信号。

  2. 输入寄存器(Input Register)和保持寄存器(Holding Register)属于字寄存器。每个寄存器占用2个字节,用于存储工业设备的值。保持寄存器可以读写,用于存储配置参数、控制命令或状态信息。而输入寄存器只支持读取,用于获取工业设备的输入数据,例如AD采集值或传感器读数。

总结而言,通过Modbus TCP协议可以通过不同类型的寄存器来读取和写入数据。线圈寄存器和离散量输入寄存器用于控制和读取开关量状态,而输入寄存器和保持寄存器用于读取和存储字节或字数据。对于每种寄存器类型,客户端可以使用相应的功能码进行读写操作。

(3)功能码
![2023-11-15T16:03:32.png][3]

寄存器PLC地址和寄存器的对应关系:
00001-09999 :线圈
10001-19999:离散量输入
30001-39999:输入寄存器
40001-49999:保持寄存器

在这里插入图片描述

在这里插入图片描述
在这里插入图片描述

五.Modbus RTU协议

1.与Modbus TCP的区别

![2023-11-15T16:11:48.png][4]

在一般工业场景中,使用Modbus RTU的情况更常见一些。Modbus RTU是基于串行通信协议的一种形式,通常使用RS-232或RS-485等工业总线协议进行数据的收发。

与Modbus TCP不同,Modbus RTU没有报文头中的MBAP字段。而在尾部,Modbus RTU增加了两个CRC检验字节(CRC16),用于数据完整性的校验。这是因为在网络协议中,如TCP协议,已经包含了自带的校验机制,所以在Modbus TCP中不需要使用CRC校验码。

总体而言,Modbus RTU和Modbus TCP在使用方法上基本一致,只是在创建Modbus对象时有所不同。对于Modbus TCP,需要传入网络Socket信息;而对于Modbus RTU,则需要传入串口相关信息。

2.Modbus RTU特点

Modbus RTU也是主从问答协议,由主机发起,一问一答
Modbus RTU通过串口进行通信

设置串口参数:
设置串口参数时要求:
波特率为9600
8位数据位
1位停止位
无流控

3.Modbus RTU协议格式

Modbus RTU数据帧组成:地址码 功能码 数据 校验码
地址码:从机id
功能码:(同Modbus TCP)读:01 02 03 04 写单个:05 06 写多个:0f 10
数据:起始地址 数量 数据
校验码:2个字节,对地址码、功能码和数据进行校验,通过函数自动生成

4442874.png

文章来源:https://blog.csdn.net/m0_73731708/article/details/135570032
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。