首页 > 其他分享 >Modbus协议学习记录

Modbus协议学习记录

时间:2022-09-04 15:23:38浏览次数:75  
标签:协议 报文格式 线圈 0x00 11H Modbus 地址 寄存器 记录

Modbus通信协议

目录

一丶Modbus基础

1.基于串口通信的Modbus

RTU模式

  • 端口号(Prot)
  • 波特率(Baud)
  • 奇偶校验
  • 停止位
  • 数据位
  • CRC(循环冗余校验)

ASCII模式

  • 端口号(Prot)
  • 波特率(Baud)
  • 奇偶校验
  • 停止位
  • 数据位
  • LRC(纵向冗余校验)

2.基于TCP/IP通信的Modbus

二丶ModbusRTU报文说明

通用报文格式(数据已16进制形式表示)

地址 功能吗 数据 CRC校验
1*byte 1*byte N*byte 2*byte

1.读取输出线圈(功能码01H)

主站询问报文格式

从站地址 功能码 起始地址(高位) 起始地址(低位) 线圈数量(高位) 线圈数量(低位) CRC校验
0x11H 0x01 0x0 0x13 0x00 0x1B xxxx

​ 含义:读 11H (17)号从站输出线圈,起始地址=0013H=19,对应地址 00020;线圈数=001BH=27;结束地址 =00020+27-1=00046,

​ 即读 11H (17)号从站输出线圈 00020--00046,共 27个线圈状态。

从站应答报文格式

从站地址 功能码 字节计数 线圈状态20-27 线圈状态28-35 线圈状态36-43 线圈状态44-46 CRC校验
0x11H 0x01 0x4 0xCD 0x6B 0xB2 0x05 xxxx

含义:返回 11H (17)号从站输出线圈 00020—00046,共 27个线圈状态,分别为CD 6B B2 05

CD=1100 1101 对应00020-00027 6B=0110 1011 对应00028-00035
B2= 1011 0010 对应00036-00043 05=0000 0101 对应00044-00046

2.读取输入线圈(功能码02H)

主站询问报文格式

从站地址 功能码 起始地址(高位) 起始地址(低位) 线圈数量(高位) 线圈数量(低位) CRC校验
0x11H 0x02 0x0 0xC4 0x00 0x1D xxxx

含义:读 11H (17)号从站输入线圈,起始地址=00C4H=196,对应地址 10197;线圈数=001DH=29;结束地址 =10197+29-1=10225,

​ 即读 11H (17)号从站输出线圈 10197—10225,共 29个线圈状态。

从站应答报文格式

从站地址 功能码 字节计数 线圈状态20-27 线圈状态28-35 线圈状态36-43 线圈状态44-46 CRC校验
0x11H 0x02 0x4 0xCD 0x6B 0xB2 0x05 xxxx

含义:返回 11H (17)号从站输入线圈 10197—10225,共 29个线圈状态,分别为CD 6B B2 05

CD=1100 1101 对应10197-10204 6B=0110 1011 对应10205-10212
B2=1011 0010 对应10213-10220 05=0000 0101 对应10221-10225

3.读取保持寄存器(功能码03H)

主站询问报文格式

从站地址 功能码 起始寄存器(高位) 起始寄存器(低位) 寄存器数量(高位) 寄存器数量(低位) CRC
0x11 0x03 0x00 0x6B 0x00 0x02 XXXX

含义:读 11H (17)号从站保持寄存器,起始地址=006BH=107,对应地址 40108;寄存器数=0002H=2;结束地址 = 40108+2-1=40109,

即读 11H (17)号从站保存寄存器40108—40109,共 2个寄存器的值。

从站应答报文格式

从站地址 功能码 字节计数 40108(高位) 40108(低位) 40109(高位) 40109(低位) CRC
0x11 0x03 0x04 0x02 0x2B 0x01 0x06 XXXX

含义:返回 11H (17)号从站保存寄存器40108—40109 ,共 2个寄存器的值,分别为02 2B 01 06

因此40108寄存器对应值为022BH 40109寄存器对应值为0106H

4.读取输入寄存器(功能码04H)

主站询问报文格式

从站地址 功能码 起始寄存器(高位) 起始寄存器(低位) 寄存器数量(高位) 寄存器数量(低位) CRC
0x11 0x04 0x00 0x6B 0x00 0x02 XXXX

含义:读 11H (17)号从站输入寄存器,起始地址=006BH=107,对应地址 30108;寄存器数=0002H=2;结束地址 = 30108+2-1=30109,

即读 11H (17)号从站输入寄存器30108—30109,共 2个寄存器的值。

从站应答报文格式

从站地址 功能码 字节计数 30108(高位) 30108(低位) 30109(高位) 30109(低位) CRC
0x11 0x04 0x04 0x02 0x2B 0x01 0x06 XXXX

含义:返回 11H (17)号从站输入寄存器30108—30109 ,共 2个寄存器的值,分别为02 2B 01 06

因此30108寄存器对应值为022BH 30109寄存器对应值为0106H

5.预置单个线圈(功能码05H)

主站询问报文格式

从站地址 功能码 线圈地址(高位) 线圈地址(低位) 断通标志 断通标志 CRC
0x11 0x05 0x00 0xAC 0xFF 0x00 XXXX

含义:强制 11H (17)号从站某个线圈的值,线圈地址=00ACH=172,对应地址 00173;断通标志为FF00H表示置位,断通标志为0000H表示复位,即置位 11H (17)号从站输出线圈00173。

从站询问报文格式

从站地址 功能码 线圈地址(高位) 线圈地址(低位) 断通标志 断通标志 CRC
0x11 0x05 0x00 0xAC 0xFF 0x00 XXXX

含义:强制 11H (17)号从站输出线圈00173为1后原文返回

6.预置单个线圈(功能码0FH)

主站询问报文格式

从站地址 功能码 起始(高位) 起始(低位) 线圈数(高位) 线圈数(低位) 字节计数 字节1 字节2 CRC
0x11 0x0F 0x00 0x13 0x00 0x0A 0x02 0xCD 0x00 XXXX

含义:预置 11H (17)号从站多个线圈的值,线圈起始地址=0013H=19,对应地址 00020;线圈数=0x000A=10,结束地址为00020+10-1=00029,写入值为0xCD00,即预置 11H (17)号从站线圈:
00020-00027=0xCD=1100 1101 00028-00029=0x00=0000 0000

从站询问报文格式

从站地址 功能码 起始(高位) 起始(低位) 线圈数(高位) 线圈数(低位) CRC
0x11 0x0F 0x00 0x13 0x00 0x0A XXXX

含义:预置 11H (17)号从站线圈:00020-00027=0xCD=1100 1101 00028-00029=0x00=0000 0000

7.预置单个线圈(功能码0FH)

主站询问报文格式

从站地址 功能码 起始(高位) 起始(低位) 线圈数(高位) 线圈数(低位) 字节计数 字节1 字节2 CRC
0x11 0x0F 0x00 0x13 0x00 0x0A 0x02 0xCD 0x00 XXXX

含义:预置 11H (17)号从站多个线圈的值,线圈起始地址=0013H=19,对应地址 00020;线圈数=0x000A=10,结束地址为00020+10-1=00029,写入值为0xCD00,即预置 11H (17)号从站线圈:
00020-00027=0xCD=1100 1101 00028-00029=0x00=0000 0000

从站询问报文格式

从站地址 功能码 起始(高位) 起始(低位) 线圈数(高位) 线圈数(低位) CRC
0x11 0x0F 0x00 0x13 0x00 0x0A XXXX

含义:预置 11H (17)号从站线圈:00020-00027=0xCD=1100 1101 00028-00029=0x00=0000 0000

8.预置单个线圈(功能码06H)

主站询问报文格式

从站地址 功能码 寄存器地址(高位) 寄存器地址(低位) 写入值(高位) 写入值(低位) CRC
0x11 0x06 0x00 0x87 0x03 0x9E XXXX

含义:预置 11H (17)号从站某个寄存器的值,寄存器地址=0087H=135,对应地址 40136;写入值为0x039E,即预置 11H (17)号从站保存寄存器40136值为0x039E。

从站询问报文格式

从站地址 功能码 寄存器地址(高位) 寄存器地址(低位) 写入值(高位) 写入值(低位) CRC
0x11 0x06 0x00 0x87 0x03 0x9E XXXX

含义:预置 11H (17)号从站保存寄存器40136值为0x039E后原文返回

9.预置单个线圈(功能码10H)

主站询问报文格式

从站地址 功能码 起始(高位) 起始(低位) 数量(高位) 数量(低位) 字节计数 字节1 字节2 字节3 字节4 CRC
0x11 0x10 0x00 0x87 0x00 0x02 0x04 0x01 0x05 0x0A 0x10 XXXX

含义:预置 11H (17)号从站多个寄存器的值,寄存器起始地址=0087H=135,对应地址 40136;寄存器数=0x0002=2,结束地址为40136+2-1=40137,写入值为0x0105,0x0A10,即预置 11H (17)号从站寄存器:
40136=0x0105 40137=0x0A10

从站询问报文格式

从站地址 功能码 起始(高位) 起始(低位) 数量(高位) 数量(低位) CRC
0x11 0x10 0x00 0x87 0x00 0x02 XXXX

含义:预置 11H (17)号从站寄存器:40136=0x0105 40137=0x0A10

标签:协议,报文格式,线圈,0x00,11H,Modbus,地址,寄存器,记录
From: https://www.cnblogs.com/LuckyWyu/p/16654024.html

相关文章

  • 多机器的键鼠互通——Synergy配置记录
    使用Synergy(推荐,跨操作系统,操作简单),主要参考链接:https://blog.csdn.net/gaoyi135/article/details/103198210配置经历:检查是否在一个局域网时,发现主机和笔记本无法互相......
  • 并发学习记录10:共享模型之无锁
    一个小例子引入importjava.util.ArrayList;importjava.util.List;importjava.util.concurrent.atomic.AtomicInteger;interfaceAccount{IntegergetBalance......
  • vulhub漏洞复现记录
    vulhub复现activemqCVE-2015-5254ActiveMQ是什么?https://zhuanlan.zhihu.com/p/79264007ActiveMQ是Apache出品,最流行的,能力强劲的开源消息总线。ActiveMQ是一个......
  • wingw-w64安装排坑记录
     最近开发一个GO项目,使用了cgo,依赖gcc根据其他网上下载了mingw-w64-installer.exe在线安装,地址:https://sourceforge.net/projects/mingw-w64/files/本人下载了64位版......
  • 记录下学习esp8266的过程,之后要一直玩一玩这块的东西
    今天的目标是使用wifi模块进行联网。---------------具体的操作流程如下。  首先打开哔站,搜索esp8266教程,选择一个快速入门教程,这个视频的作者言简意赅,干货满满,然后......
  • google 变量命名规则简要记录
    1、文件命名规则好的文件名命名可以很清晰的看出这个文件将要承载的内容,Google给出的规则为:文件名要全部小写,可以包含下划线(_)或连字符(-).按项目约定来,例如:cmd......
  • 前端学习各种问题以及解决方法的记录
    问题描述:div宽度溢出问题,div设置margin和padding后宽度出现溢出。解决方式:css中添加如下代码:*{-webkit-box-sizing:border-box;-moz-box-sizing:border-box......
  • 并发学习记录09:共享模型之内存
    Java内存模型JMM指的是Javamemorymodel,它定义了主存,工作内存等抽象概念,相当于做一个隔离层,将底层CPU寄存器,缓存,硬件内存,CPU指令优化提供的功能通过一个简单接口给使用......
  • 力扣leetcode刷题记录1----
    【以下题目来源均来自力扣leetcode】 595.大的国家World 表:【描述】name是这张表的主键。这张表的每一行提供:国家名称、所属大陆、面积、人口和GDP值。【问题】......
  • .NET 6.0中定制日志记录
    如何定制.NET6.0的日志记录 大家好,我是张飞洪,感谢您的阅读,我会不定期和你分享学习心得,希望我的文章能成为你成长路上的垫脚石,让我们一起精进。本章是《定制ASPNET......