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协议的帧结构如下:

modbus-tcp一般没有效验

(1). 事务处理标识:客户端生成的随机数,由服务器返回,可用于匹配请求和响应。

(2). 协议标识:在Modbus TCP中,该字段固定是00 00。

(3). 数据长度:请求或响应数据的长度,包括单元标识符、功能代码、数据和校验和,但不包括MBAP头。

(4). 单元标识符:在Modbus TCP中,一般设置为0或者连续的从设备地址。

(5). 功能代码:表示要执行的功能。

(6). 数据:根据功能代码不同,数据字段的长度也不同。

事务处理标识符协议标识数据长度单元标识符功能码数据字段
00 0100 0000 06010300 00 00 0A

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

  • 14
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值