Modbus通讯协议

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 |

本文部分借鉴与网络,如有侵权请联系删除!!!

相关推荐
速盾cdn1 小时前
速盾:CDN是否支持屏蔽IP?
网络·网络协议·tcp/ip
yaoxin5211231 小时前
第二十七章 TCP 客户端 服务器通信 - 连接管理
服务器·网络·tcp/ip
内核程序员kevin1 小时前
TCP Listen 队列详解与优化指南
linux·网络·tcp/ip
PersistJiao3 小时前
Spark 分布式计算中网络传输和序列化的关系(一)
大数据·网络·spark
黑客Ash5 小时前
【D01】网络安全概论
网络·安全·web安全·php
->yjy5 小时前
计算机网络(第一章)
网络·计算机网络·php
摘星星ʕ•̫͡•ʔ7 小时前
计算机网络 第三章:数据链路层(关于争用期的超详细内容)
网络·计算机网络
.Ayang7 小时前
SSRF漏洞利用
网络·安全·web安全·网络安全·系统安全·网络攻击模型·安全架构
好想打kuo碎7 小时前
1、HCIP之RSTP协议与STP相关安全配置
网络·安全