首页 > 其他分享 >Modbus协议整理

Modbus协议整理

时间:2023-04-21 16:32:14浏览次数:72  
标签:协议 00 01 校验 Modbus CRC 地址 寄存器 整理



文章目录

  • 01 读线圈状态
  • 示例
  • 02 读输入位状态
  • 示例
  • 03 读保持寄存器
  • 示例
  • 04 读输入寄存器
  • 示例
  • 05 写单个线圈
  • 示例
  • 06 写单个保持寄存器
  • 示例
  • 15 写多个线圈
  • 示例
  • 16 写多个保持寄存器
  • 示例


01 读线圈状态

读取从机的线圈状态(ON/OFF),位操作。

例:请求从机设备17读00020-00056线圈。其中00020-00056为线圈的寄存器信息地址,这些线圈的寄存器寻址地址为0019 – 0055,共访问37个线圈。

描述

Hex

从机地址

11

功能码

01

起始地址(高)

00

起始地址(低)

13

线圈数量(高)

00

线圈数量(低)

25

CRC校验(高)

CRC校验(低)

响应:响应信息中的各线圈的状态与数据区的每一位的值相对应,1代表ON;0代表OFF。若返回的线圈数不是8的倍数,则在最后的数据字节未使用的位中全部填充0,字节数区说明全部数据的字节数。

描述

Hex

从机地址

11

功能码

01

返回字节数

05

数据1(线圈00027-线圈00020)

CD

数据2(线圈00035-线圈00028)

6B

数据3(线圈00043-线圈00036)

B2

数据4(线圈00051-线圈00044)

0E

数据5(线圈00056-线圈00052)

1B

CRC校验(高)

CRC校验(低)

使用Modbus Slave、Modbus Slave和Virtual Serial Port Driver,三个工具进行modbus通信模拟

示例

发送 读取从00地址开始后8个线圈的状态

从机地址

功能码

起始地址(高)

起始地址(低)

线圈数量(高)

线圈数量(低)

CRC校验(高)

CRC校验(低)

01

01

00

00

00

08

3D

CC

回复 00到07的线圈的状态都是off

从机地址

功能码

返回字节数

数据1

CRC校验(高)

CRC校验(低)

01

01

01

00

51

88

Tx: 01 01 00 00 00 08 3D CC
Rx: 01 01 01 00 51 88


发送 读取从01地址开始后4个线圈的状态

从机地址

功能码

起始地址(高)

起始地址(低)

线圈数量(高)

线圈数量(低)

CRC校验(高)

CRC校验(低)

01

01

00

01

00

04

6C

09

回复 01到04的线圈的状态分别是on on on off

从机地址

功能码

返回字节数

数据1

CRC校验(高)

CRC校验(低)

01

01

01

07

10

4A

Tx: 01 01 00 01 00 04 6C 09
Rx: 01 01 01 07 10 4A


02 读输入位状态

读取从机的输入状态(ON/OFF),位操作。

用法同上

示例

发送 读取从00地址开始后8个输入位的状态

从机地址

功能码

起始地址(高)

起始地址(低)

输入位数量(高)

输入位数量(低)

CRC校验(高)

CRC校验(低)

01

02

00

00

00

08

79

CC

回复 00到07的输入位的状态都是off

从机地址

功能码

返回字节数

数据1

CRC校验(高)

CRC校验(低)

01

02

01

00

A1

88

Tx: 01 02 00 00 00 08 79 CC
Rx: 01 02 01 00 A1 88


发送 读取从01地址开始后4个的状态

从机地址

功能码

起始地址(高)

起始地址(低)

输入位数量(高)

输入位数量(低)

CRC校验(高)

CRC校验(低)

01

02

00

01

00

04

28

09

回复 01到04的输入位的状态分别是on on on off

从机地址

功能码

返回字节数

数据1

CRC校验(高)

CRC校验(低)

01

02

01

07

E0

4A

Tx: 01 02 00 01 00 04 28 09
Rx: 01 02 01 07 E0 4A


03 读保持寄存器

读取从机的保持寄存器,一个寄存器两个字节,字操作。

例:请求从机设备17的0x13,0x14,0x15三个寄存器的数据

描述

Hex

从机地址

11

功能码

03

寄存器起始地址(高)

00

寄存器起始地址(低)

13

寄存器数量(高)

00

寄存器数量(低)

03

CRC校验(高)

CRC校验(低)

响应:

描述

Hex

从机地址

11

功能码

03

返回字节数

06

数据1(寄存器0x13高位)

CD

数据1(寄存器0x13低位)

6B

数据2(寄存器0x14高位)

6B

数据2(寄存器0x14低位)

6B

数据3(寄存器0x15高位)

6B

数据3(寄存器0x15低位)

6B

CRC校验(高)

CRC校验(低)

示例

发送 读取从00地址开始后8个保持寄存器的值

从机地址

功能码

寄存器起始地址(高)

寄存器起始地址(低)

寄存器数量(高)

寄存器数量(低)

CRC校验(高)

CRC校验(低)

01

03

00

00

00

08

44

0C

回复 00到07的保持寄存器的值都为0x0000

从机地址

功能码

返回字节数

数据

数据

数据

数据

数据

数据

数据

数据

数据

数据

数据

数据

数据

数据

数据

数据

CRC校验(高)

CRC校验(低)

01

03

10

00

00

00

00

00

00

00

00

00

00

00

00

00

00

00

00

E4

59

Tx: 01 03 00 00 00 08 44 0C
Rx: 01 03 10 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 E4 59


04 读输入寄存器

读取从机的输入寄存器,一个寄存器两个字节,字操作。

用法同上

示例

发送 读取从00地址开始后8个寄存器的值

从机地址

功能码

寄存器起始地址(高)

寄存器起始地址(低)

寄存器数量(高)

寄存器数量(低)

CRC校验(高)

CRC校验(低)

01

04

00

00

00

08

F1

CC

回复 00到07的寄存器的值都为0x0000

从机地址

功能码

返回字节数

数据

数据

数据

数据

数据

数据

数据

数据

数据

数据

数据

数据

数据

数据

数据

数据

CRC校验(高)

CRC校验(低)

01

04

10

00

00

00

00

00

00

00

00

00

00

00

00

00

00

00

00

55

2C

Tx: 01 04 00 00 00 08 F1 CC
Rx: 01 04 10 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 55 2C


05 写单个线圈

ff00h为写1,0000h为写0。

例:把地址为0的线圈写1

描述

Hex

从机地址

11

功能码

05

寄存器起始地址(高)

00

寄存器起始地址(低)

00

线圈值(高)

ff

线圈值(低)

00

CRC校验(高)

CRC校验(低)

响应:

描述

Hex

从机地址

11

功能码

05

寄存器起始地址(高)

00

寄存器起始地址(低)

00

线圈值(高)

ff

线圈值(低)

00

CRC校验(高)

CRC校验(低)

示例

发送 把地址为1的线圈写0

从机地址

功能码

寄存器起始地址(高)

寄存器起始地址(低)

线圈值(高)

线圈值(低)

CRC校验(高)

CRC校验(低)

01

05

00

01

00

00

9C

0A

响应

从机地址

功能码

寄存器起始地址(高)

寄存器起始地址(低)

线圈值(高)

线圈值(低)

CRC校验(高)

CRC校验(低)

01

05

00

01

00

00

9C

0A

Tx: 01 05 00 01 00 00 9C 0A
Rx: 01 05 00 01 00 00 9C 0A


06 写单个保持寄存器

写从机的保持寄存器,一个寄存器两个字节,字操作。

例:往地址为0的寄存器写1

描述

Hex

从机地址

11

功能码

06

寄存器起始地址(高)

00

寄存器起始地址(低)

00

寄存器值(高)

00

寄存器值(低)

01

CRC校验(高)

CRC校验(低)

响应:

描述

Hex

从机地址

11

功能码

06

寄存器起始地址(高)

00

寄存器起始地址(低)

00

寄存器值(高)

00

寄存器值(低)

01

CRC校验(高)

CRC校验(低)

示例

发送 把地址为1的线圈写1

从机地址

功能码

寄存器起始地址(高)

寄存器起始地址(低)

寄存器值(高)

寄存器值(低)

CRC校验(高)

CRC校验(低)

01

06

00

01

00

01

19

CA

响应

从机地址

功能码

寄存器起始地址(高)

寄存器起始地址(低)

寄存器值(高)

寄存器值(低)

CRC校验(高)

CRC校验(低)

01

06

00

01

00

01

19

CA

Tx: 01 06 00 01 00 01 19 CA
Rx: 01 06 00 01 00 01 19 CA


15 写多个线圈

写从机的多个线圈,位操作。

例:请求从机设备17写00020-00030线圈,未使用位补0。

描述

Hex

从机地址

11

功能码

0f

起始地址(高)

00

起始地址(低)

13

线圈数量(高)

00

线圈数量(低)

0a

字节数

04

数据1(线圈27-20)

00

数据2(线圈29-28)

00

CRC校验(高)

CRC校验(低)

响应:

描述

Hex

从机地址

11

功能码

0f

起始地址(高)

00

起始地址(低)

13

线圈数量(高)

00

线圈数量(低)

0a

CRC校验(高)

CRC校验(低)

示例

发送

从机地址

功能码

起始地址(高)

起始地址(低)

线圈数量(高)

线圈数量(低)

字节数

数据1

CRC校验(高)

CRC校验(低)

01

0F

00

01

00

08

01

37

82

83

响应

从机地址

功能码

起始地址(高)

起始地址(低)

线圈数量(高)

线圈数量(低)

CRC校验(高)

CRC校验(低)

01

0F

00

01

00

08

05

CD

Tx: 01 0F 00 01 00 08 01 37 82 83
Rx: 01 0F 00 01 00 08 05 CD


16 写多个保持寄存器

写从机的保持寄存器,一个寄存器两个字节,字操作。
例:往地址0x13,0x14的寄存器写值

描述

Hex

从机地址

11

功能码

10

寄存器起始地址(高)

00

寄存器起始地址(低)

13

寄存器数量(高)

00

寄存器数量(低)

02

字节数

04

数据1(高位)

00

数据1(低位)

00

数据2(高位)

00

数据2(低位)

00

CRC校验(高)

CRC校验(低)

响应:

描述

Hex

从机地址

11

功能码

10

寄存器起始地址(高)

00

寄存器起始地址(低)

13

寄存器数量(高)

00

寄存器数量(低)

02

CRC校验(高)

CRC校验(低)

示例

发送 往01 02地址分别写入0x1122 0x3344

从机地址

功能码

寄存器起始地址(高)

寄存器起始地址(低)

寄存器数量(高)

寄存器数量(低)

字节数

数据1(高位)

数据1(高位)

数据2(高位)

数据2(高位)

CRC校验(高)

CRC校验(低)

01

10

00

01

00

02

04

11

22

33

44

83

96

响应

从机地址

功能码

寄存器起始地址(高)

寄存器起始地址(低)

寄存器数量(高)

寄存器数量(低)

CRC校验(高)

CRC校验(低)

01

10

00

01

00

02

10

08

Tx: 01 10 00 01 00 02 04 11 22 33 44 83 96
Rx: 01 10 00 01 00 02 10 08



标签:协议,00,01,校验,Modbus,CRC,地址,寄存器,整理
From: https://blog.51cto.com/u_16081772/6213496

相关文章

  • 物联网常见协议之Amqp协议及使用场景解析
    摘要:本文围绕AMQP协议,为大家详细解析AMQP协议、核心技术亮点、多协议之间的对比以及使用实践。本文分享自华为云社区《物联网常见协议之Amqp协议及使用场景解析》,作者:张俭。引言本文围绕AMQP协议,为大家详细解析AMQP协议、核心技术亮点、多协议之间的对比以及使用实践,并介绍华为......
  • Swift CustomStringConvertible 协议的使用
    目录一、前言二、使用场景1.整型类型的枚举使用2.Class类型的使用一、前言先看一下Swift标准库中对CustomStringConvertible协议的定义publicprotocolCustomStringConvertible{///Atextualrepresentationofthisinstance.//////Callingthispropert......
  • ubuntu下修复apt-get时错误方法整理
    ubuntu下修复apt-get时错误方法整理出现错误:您可能需要运行“apt-get-finstall”来纠正下列错误:下列软件包有未满足的依赖关系:linux-headers-2.6.37-6-generic-pae:依赖:linux-headers-2.6.37-6但是它将不会被安装linux-image-generic-pae:依赖:linux-image-2.6.37-6-ge......
  • 常用网络协议神图
    本图来自网络-------------------------------......
  • 整理非系统进程说明
            不定期更新内容进程说明 mDNSResponder.exe 一款名为Bonjour的音乐分享软件相关程序这个进程很多时候是安装了ADOBECS3之后出现的。不过,苹果公司的一些产品(如Safari浏览器)中也捆绑有它,不过在安装前会询问,而且在系统的“添加或者删除程序”中也有卸载入口。......
  • HTTP 协议
    概念:HyperTextTransferProtocol,超文本传输协议规定了浏览器和服务器之间的数据传输的规则HTTP协议特点基于TCP协议:面向连接,安全基于请求模型的:一次请求对应一次响应HTTP协议是无状态的协议:对于事务的处理没有记忆能力。每次请求-响应都是独立的。缺点:多次请求间不能共......
  • HTTP协议的基本概念
    HTTP协议简介HTTP(HyperTextTransferProtocol,超文本传输协议)是一种用于传输超媒体文档(例如HTML)的应用层协议。HTTP协议是一个无状态的协议,意味着服务器并不会记住任何之前的请求和响应。HTTP协议基于客户端-服务器架构模型,客户端发送一个请求到服务器,然后服务器处理请求并发......
  • QUIC协议 对比 TCP/UDP 协议
    QUIC协议是HTTP3引入的,所以需要了解HTTP的版本迭代。HTTP1.x队头阻塞:下个请求必须在前一个请求返回后才能发出,导致带宽无法被充分利用,后续请求被阻塞(HTTP1.1尝试使用流水线(Pipelining)技术,但先天FIFO(先进先出)机制导致当前请求的执行依赖于上一个请求执行的完成,容易引起队头阻......
  • day 04 4.1web开发核心之http协议
    web开发核心之http协议http协议1.什么是请求头请求体,响应头响应体2.URL地址包括什么3.get请求和post请求到底是什么4.Content-Type是什么【一】简介HTTP协议是HyperTextTransferProtocol(超文本传输协议)的缩写,是用于万维网(WWW:WorldWideWeb)服务器与本地浏览......
  • asp.net程序通过Microsoft Azure中SAML协议实现单点登录
    1.新建应用程序登录Azure门户,进入左侧菜单“企业应用程序--所有应用程序”,点“新建应用程序”,继续点“创建你自己的应用程序”,如下图选择和录入名称:填好应用的名称、想要如何处理应用程序必须选择第三个“继承未在库中找到的任何其他应用程序(非库)”,之后点“创建”按钮;2.单......