Modbus通讯协议
Modbus协议是一种用于电子控制器之间的通信协议,它允许不同类型的设备之间进行通信,以便进行数据交换和控制。Modbus协议最初为可编程逻辑控制器(PLC)通信开发,现已广泛应用于工业自动化领域,包括但不限于工业控制、楼宇自动化、能源管理等领域。该协议支持多种通信接口和物理介质,包括串行(RS-232、RS-485等)、以太网以及无线通信等,使其能够适应各种不同的应用场景。
Modbus用来干什么?
Modbus协议就是用来进行通信的一种限制,客户端给服务器发送一条命令帧,服务器接收到命令帧后给客户端返回一条响应帧。 比如:客户端给服务器发送一条123,当服务器接收到的消息也就是123,如果遵守Modbus协议的话它可能就是其他意思,具体需要根据客户端发送的请求帧来判断。 (说白了就是通过modbus协议告诉服务器你要干什么)
Modbus 主/从技术
Modbus RTU 协议使用主/从技术在设备之间进行通信。这意味着,任何使用 Modbus RTU 协议的应用程序都将有一个 Modbus 主站和至少一个 Modbus 从站。Modbus Master 通常是一台运行软件的主机监控计算机,它将与一个或多个 Modbus Slave 设备进行通信。
Modbus 从设备是执行系统参数测量和控制系统中的开/关设备的设备。为了执行这些任务,主站向 Modbus 从站发送消息,请求执行特定任务。
Modbus RTU 协议使用格式化的消息在主机和从机之间进行通信。消息由系统 Master 发起并发送到 Slave 设备。然后,从站以请求的数据进行响应,或者确认它执行了请求的功能。所有进出主站的消息都包含一个两字节(16 位)CRC(循环冗余校验)校验和值,用于错误检查。如果将无效请求传输到 Modbus 从站,则会返回一个字节(8 位)错误代码值,说明请求错误的原因。
Modbus 主站消息包含几个重要的信息。每条消息都以接受消息的设备的从地址开始。接下来是要执行的功能编号(或命令)。后面是指定函数正确执行所需的任何数据。从地址是一个单字节(8 位)值,可用值范围在 0-247 之间。Modbus 功能号也是一个字节值,并且在协议中定义了许多标准化功能号。支持所请求功能所需的任何数据值的长度将是一个或多个字节。Modbus 从站响应消息将包含响应的从站地址、功能编号和主站请求的任何必要数据。
Modbus协议的主要特点:
灵活性:支持多种通信模式,如ASCII、RTU(串行通信)和TCP/IP(网络通信),这使得Modbus协议能够适应不同的通信需求和数据传输方式。
主从架构:系统中有一个主节点(Master)和多个从节点(Slave),主节点负责发起请求,从节点响应请求,这种架构使得Modbus协议非常适合于需要集中控制和分散监测的应用场景。
数据校验:为了确保数据传输的准确性,Modbus协议采用了数据校验机制,如奇偶校验、LRC校验和CRC校验等,以减少数据传输错误的可能性。
功能码:Modbus协议使用功能码(FC)来定义不同的操作类型,如读取寄存器值、写入寄存器值等,这些功能码使得主节点可以精确控制从节点的行为。
modbus通信的过程?
上位机需要选择合适的 Modbus 协议栈、配置 Modbus 通信参数、建立 Modbus 通信连接、发送 Modbus 命令帧、接收 Modbus 响应帧和关闭 Modbus 通信连接等步骤。
Modbus的三种协议
Modbus-RTU协议
Modbus RTU 协议是一种开放的串行协议,广泛应用于当今的工业监控设备中。该协议使用 RS-232 或 RS-485 串行接口进行通信,并得到市场上几乎所有商业 SCADA、HMI、OPC 服务器和数据采集软件程序的支持。因此,很容易将 Modbus 兼容设备集成到新的或现有的监控应用程序中,并具有即时的软件支持。
帧结构:设备地址、功能码、数据和CRC校验字段。
常用功能码:Modbus-RTU协议定义了一系列常用的功能码,用于执行不同的操作,如读取保持寄存器、写入单个寄存器、写入多个寄存器等。
(1). 功能码-0x03读保持寄存器:该功能码用于从设备中读取一个或多个保持寄存器的值。
(2). 功能码-0x06写单个寄存器:该功能码用于向设备中写入一个保持寄存器的值。
(3). 功能码-0x10写多个寄存器:该功能码用于向设备中写入多个连续的保持寄存器的值。
Modbus-ASCII协议
Modbus-ASCII是一种基于ASCII码的Modbus通信协议。数据以ASCII字符形式传输,每个字节由两个ASCII字符表示。
帧形式:起始符号、设备地址、功能码、数据和LRC校验字段。
Modbus-TCP协议
Modbus TCP是Modbus协议的一种变体,它使用TCP/IP网络进行设备之间的通信。Modbus TCP协议帧与Modbus RTU或Modbus ASCII不同,因为它包含了TCP头部、IP头部以及可能的以太网头部。
Modbus TCP协议的帧结构如下:
(1). MBAP头(Modbus应用数据单元):
事务处理标识:客户端生成的随机数,由服务器返回,可用于匹配请求和响应。
协议标识:在Modbus TCP中,该字段固定是00 00。
数据长度:请求或响应数据的长度,包括单元标识符、功能代码、数据和校验和,但不包括MBAP头。
单元标识符:在Modbus TCP中,一般设置为0或者连续的从设备地址。
(2). 功能代码:表示要执行的功能。
(3). 数据:根据功能代码不同,数据字段的长度也不同。
(4). 校验和:使用CRC(循环冗余校验)算法得到的校验和,用于检测传输过程中数据的完整性。
|---------|-------|-------|-------|-----|-------------|------|
| 事务处理标识符 | 协议标识 | 数据长度 | 单元标识符 | 功能码 | 数据字段 | 效验 |
| 00 01 | 00 00 | 00 06 | 01 | 03 | 00 00 00 0A | 9378 |
本文部分借鉴与网络,如有侵权请联系删除!!!