Modbus-RTU

2024-02-27 08:30
文章标签 modbus rtu

本文主要是介绍Modbus-RTU,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

Modbus简介:

Modbus作用于OSI网络模型中的:物理层、数据链路层、应用层

Modbus有三类:RTU、ASCII、TCP。默认选项Modbus-RTU。

Modbus有单播和广播两种形式、在广播形式下,所有从站必须执行主站命令而无需应答返回

单播模式下Modbus主站对特定的从站发送请求后进入等待应答(同步启动超时机制),此时主站无法处理其他从站的回答。

一、Modbus4个存储区

Modbus根据寄存器不同,分为四种不同的寄存器:

Modbus有两种可读写的寄存器:线圈寄存器(DO)和保持寄存器(AO&设备设置)

Modbus有4个存储区:0,1,3,4,其中,1区,3区只读,0区4区可读可写。分别对应:

区号名称 读写地址范围
0输出线圈可读可写布尔量00001-09999
1输入线圈只读布尔量10001-19999
3输入寄存器只读寄存器30001-39999
4保持寄存器可读可写寄存器40001-49999

二、常用功能码

  • 01:读取线圈。读取1~2000个连续线圈,1表示ON,0表示OFF。
  • 02:离散量输入
  • 04:读输入寄存器,可读取大约1~125的连续输入寄存器,每个连续输入寄存器用两个字节表示
  • 05:写单个线圈
  • 0F:写多个线圈。可以对线圈序列中的每个线圈设置ON或者OFF。
  • 10:写多个寄存器

三、通信报文

Modbus的通信报文由三部分组成:地址域、协议数据单元(PDU)(由功能码和数据组成)、校验码

地址域:由1个字节构成。也就是两位16进制数字。从站的地址可有127个,其余位用作扩展。保留区可用作特定地址段的广播指令。地址域只跟从站有关,主站没有地址。

协议数据单元PDU:功能码的长度为1字节,而数据的长度不定。

四、PDU通信报文示例

PDU报文示例:主站请求报文:01 00 02 00 06,均为十六进制数字。表示从第3个线圈读取到第9个线圈。从站应答报文:01 01 00(注意返回数据长度为1字节,未使用到的位使用0进行填充)

01读取线圈状态

主站请求报文解析:

  • 01---功能码:读取线圈。
  • 00---读取线圈地址高位
  • 02---读取线圈地址低位
  • 00---读取线圈个数高位
  • 06---读取线圈个数低位

从站应答报文解析:

  • 01---功能码
  • 01---返回数据长度
  • 00---线圈状态 ,线圈状态从右边往左边(从低位开始记录)

0F写多个线圈报文: (改变线圈的ON OFF状态)

主站请求报文:0F 00 02 00 06 01 2A

从站应答报文:0F 00 02 00 06 

其中写入值42---对应的二进制值数位00 10 10 10 ,对应线圈序列为8---3(由报文中的起始地址以及写入线圈个数决定)

04读输入寄存器

主机报文:04 00 67 00 04

从机报文:04 08 F5 55 F5 55 18 63 01 1A


主机报文解析:

  • 04---功能码:表示读输入寄存器
  • 00与67---表示起始地址:起始地址为00 67,表示十进制的103,从104号寄存器开始读取(因为十六进制从0开始计数,而寄存器编号从1开始)
  • 00与04---表示读取的寄存器数量:数量位00 04,表示十进制的4,一共读取4个寄存器

从机报文解析:

  • 按照主机的请求报文,从站返回的报文将包含104->107共4个寄存器的值。
  • 04---功能码
  • 08---PDU数据长度,8字节

10写多个寄存器(用来改变热电偶类型)

主站报文:10 00 67 00 02 04 00 00 00 07

从站报文:10 00 67 00 02

五、校验码示例

主站报文:02 00 00 00 05

从站报文:82 03

可以看出主站的请求为:读取1~5号离散寄存器的状态。

ModbusRTU异常报文特征:为正常报文功能码的值+80,即为异常报文的功能码。示例中的03表示为异常码。查看Modbus异常码:03表示为非法数据值。

Modbus使用CRC(循环冗余校验):

在PDU报文的末端添加上CRC校验码,在RTU传输模式下,每个字节都会变成11位。

这篇关于Modbus-RTU的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/751812

相关文章

Modbus-RTU协议

一、协议概述 Modbus-RTU(Remote Terminal Unit)是一种基于主从架构的通信协议,采用二进制数据表示,消息中的每个8位字节含有两个4位十六进制字符。它主要通过RS-485、RS-232、RS-422等物理接口实现数据的传输,传输距离远、抗干扰能力强、通信效率高。 二、报文结构 一个标准的Modbus-RTU报文通常包含以下部分: 地址域:单个字节,表示从站设备

Modbus从基地址 1 和基地址 0 开始的区别

Modbus 是一种应用于工业自动化领域的通信协议,在设备之间进行数据交换。它支持多种数据类型(如线圈、离散输入、输入寄存器、保持寄存器),每种数据类型都有特定的地址范围。在使用 Modbus 通信时,设备的地址可以从 1 或 0 开始计数,这取决于具体实现。这种不同的基地址(1 或 0)选择,可能导致实际读取或写入的地址存在偏差,因此理解其差异是十分重要的。 1. Modbus 地址的基本概念

网关桥梁:modbus 转 profinet 网关中频加热机的智能融合之旅

一、项目序章:金属热处理的智慧曙光在金属锻造的辉煌舞台上,中频感应加热电源以其高效节能、精准控温的卓越才艺,成为了热处理、焊接与成型艺术中不可或缺的幕后英雄。然而,随着工业自动化的浪潮汹涌而至,如何让这位英雄融入智能工厂的广阔天地,实现远程指挥与智能操控,成为了新时代的命题。本案例,便是一场关于中频感应加热电源与工业网关携手,共绘智能工厂新蓝图的壮丽篇章。 二、系统蓝图:织就智慧互联的经纬1

HART转Modbus转换器

功能说明                 HART 转 Modbus 模块实现将 HART 信号中的数字信号转换为符合 Modbus RTU/ASCII 标准的 RS485 信号和 RS232 信号,实现仪表的数据读取功能。 主要技术指标 接线方法以及指示灯 24V-IN : 供电端口, 7-24V 都可以。 RS232-T ,

JAKA学习2:博途组态配置PROFINET和MODBUS

目录 一、GSD文件安装与设备组态1.1、GSD安装1.2、PROFINET设备组态 二、远程启动顺序2.1、启动步骤2.2、安全点配置 三、JAKA配置3.1、输入输出点配置 一、GSD文件安装与设备组态 1.1、GSD安装 1.2、PROFINET设备组态 二、远程启动顺序 2.1、启动步骤 1、 要保证DO9已开机状态,(开机可以远程控制,接个继电器

WinCC Modbus TCP 通信

概述 从版本WinCC V7.0 开始,WinCC支持Modbus TCP通讯,WinCC中的Modbus TCP驱动主要是针对施耐德PLC开发的,支持的PLC类型如下: 图1 本文档以Quantum CPU651和 Premium P57为例,介绍WinCC V7.2 的Modbus TCP通讯的组态步骤。并在最后列出WinCC和第三方Modbus TCP设备通讯的注意事项。 W

【CRC校验】CRC-16/MODBUS 源码(查表法)

废话少说,直接上代码: 源码 /*************************** CRC校验函数 ***************************//* Table of CRC values for high-order byte */const uint8_t crcTableHigh[] = {0x00, 0xC1, 0x81, 0x40, 0x01, 0xC0, 0x8

Modbus通信主站和从站点区别的理解

定义 在Modbus协议中,主站和从站的角色分工非常明确: 主站(Master):主站是通信的发起者,它控制着整个通信过程。它发送请求并等待从站的响应。主站可以是PLC、计算机或其他控制器。它根据需要发起读写操作,并负责处理从站返回的数据。 从站(Slave):从站响应主站的请求,它的行为由主站的指令决定。每个从站都有一个唯一的地址,以便主站能准确地定位到它。当从站接收到主站的请求时,它会

MFC程序+modbus协议+modebus poll测试

##1. modebus poll和modbus slave决定收发帧格式 参考博客 https://blog.csdn.net/tt094534/article/details/54928878?locationNum=11&fps=1 《Modbus软件开发实战》第63页—4.2.4借助工具软件观察和理解 ####首先定义从机的发送帧 打开model slave 具体修改是直接在编辑框输入