modbus-tcp协议讲解
MODBUS功能码简介
|
代码 |
中文名称 |
位操作/字操作 |
操作数量 |
|
01h |
读线圈状态 |
位操作 |
单个或多个 |
|
02h |
读离散输入状态(只能读到0或1) |
位操作 |
单个或多个 |
|
03h |
读保持寄存器(保持寄存器可以通过06h功能写入) |
字操作 |
单个或多个 |
|
04h |
读输入寄存器(输入寄存器只能读取,不能通过06h功能写入) |
字操作 |
单个或多个 |
|
05h |
写单个线圈(线圈表示用来控制输出IO控制) |
位操作 |
单个 |
|
06h |
写单个保持寄存器 |
字操作 |
单个 |
|
0Fh |
写多个线圈 |
位操作 |
多个 |
|
10h |
写多个保持寄存器 |
字操作 |
多个 |
Modbus TCP介绍
示例-通过03功能码读寄存器(从寄存器00开始,读取两个值,读到01寄存器结束)
客户端发送 01 02 00 00 00 06 01 03 00 00 00 02
01 02 00 00 00 06 (固定报文头)
- 01 02: 客户端发出的检验信息, server端会将这两个字节内容复制到回应的报文第一二位.一般我们会将第一二位进行不停递加,然后根据服务器返回的相应内容, 来验证服务器回应信息的时效性
- 00 00: 表示tcp/ip 的协议的modbus的协议
- 00 06: 表示客户端发送的后面带了多少字节.
01 03 00 00 00 02(用户数据)
- 01: 表示设备地址
- 03: 表示读保持寄存器功能码
- 00 00: 表示客户端读取的寄存器起始地址
- 00 02: 表示读取的寄存器值个数(由于为02,所以会读出寄存器00h和01h的值)
返回值如下图所示:

服务器返回值 01 02 00 00 00 07 01 03 04 04 7B 00 FF
- 01 02: 服务器回应的检验信息
- 00 00: 表示tcp/ip 的协议的modbus的协议
- 00 07: 表示服务器发送的后面带了多少字节.
- 01: 表示设备地址
- 03: 表示功能码
- 04: 表示后面发送的寄存器00的字节长度
- 04 7B: 表示寄存器00的值
- 00 FF: 表示寄存器01的值
示例-06功能码写单个寄存器(向寄存器03地址里写值)
客户端发送 01 02 00 00 00 06 01 06 00 03 00 FF
01 02 00 00 00 06 (固定报文头)
- 01 02: 客户端发出的检验信息
- 00 00: 表示tcp/ip 的协议的modbus的协议
- 00 06: 表示客户端发送的后面带了多少字节.
01 06 00 03 00 FF (用户数据)
- 01: 表示设备地址
- 06: 表示写单个保持寄存器功能码
- 00 FF: 表示写入寄存器03h的值为0xFF
返回值如下图所示:

服务器返回 01 02 00 00 00 06 01 06 00 03 00 FF
后面的06 00 03 00 FF:表示客户端使用06功能码成功向寄存器03h分别写入了0xFF值
示例-10功能码写多个寄存器(向寄存器03~06地址里写不同值)
客户端发送 01 02 00 00 00 10 01 10 00 03 00 04 08 FF FF 00 0A 00 0F 00 06
01 02 00 00 00 10 (固定报文头)
- 01 02: 客户端发出的检验信息
- 00 00: 表示tcp/ip 的协议的modbus的协议
- 00 10: 表示客户端发送的后面带了多少字节.
01 10 00 03 00 04 08 FF FF 00 0A 00 0F 00 06 (用户数据)
- 01: 表示设备地址
- 10: 表示写多个保持寄存器功能码
- 00 03: 表示客户端写入的寄存器起始地址
- 00 04: 表示写入的寄存器值个数(由于为04,所以会写入寄存器03h~06h的值)
- 08: 表示后面写入的字节个数
- FF FF: 表示写入寄存器03h的值
- 00 0A: 表示写入寄存器04h的值
- 00 0F: 表示写入寄存器05h的值
- 00 06: 表示写入寄存器06h的值
返回值如下图所示:

服务器返回 01 02 00 00 00 06 01 10 00 03 00 04
后面的10 00 03 00 04:表示客户端使用10功能码成功向寄存器03h~06h分别写入了值
部分参考内容:https://blog.csdn.net/mikasoi/article/details/81782159
modbus-tcp协议讲解的更多相关文章
- 国标电表DLT645转MODBUS TCP协议转换器MRD-5021,工业设备,浪涌三级保护MRD
DL/T645转ModbusTcp协议转换器 MRD-5021具有1 路RS485及1路以太网接口,最多支持同时采集5个DL/T645-1997或者5个2007协议国标电表设备,支持DL/T645协议 ...
- 【.NET6+Modbus】Modbus TCP协议解析、仿真环境以及基于.NET实现基础通信
前言:随着工业化的发展,目前越来越多的开发,从互联网走向传统行业.其中,工业领域也是其中之一,包括各大厂也都在陆陆续续加入工业4.0的进程当中. 工业领域,最核心的基础设施,应该是与下位硬件设备或程序 ...
- Modbus TCP协议说明
协议帧 事物处理标识| 协议标识| 长度| 从机地址| 功能码| 数据 0x00 00| 0x00 00| 0x00 08| 0x01| 0x0F| 0x00 14 0x00 01 0x01 0x01 ...
- 【应用笔记】【AN001】VC#开发环境下基于以太网的4-20mA电流采集(基于modbus tcp 协议)
版本:第一版 作者:毛鹏 杨帅 日期:20151108 简介 4-20mA电流环具有广泛的应用前景,在许多行业中都发挥着重要作用.本文主要介绍了以太网接口的4-20mA电流采集模块在VC#环境下进行温 ...
- C# ModBus Tcp读写数据 与服务器进行通讯
前言 本文将使用一个NuGet公开的组件技术来实现一个ModBus TCP的客户端,方便的对Modbus tcp的服务器进行读写,这个服务器可以是电脑端C#设计的,也可以是PLC实现的,也可以是其他任 ...
- modbus tcp 入门详解
Modbus tcp 格式说明 通讯机制 附C#测试工具用于学习,测试 前言: 之前的博客介绍了如何用C#来读写modbus tcp服务器的数据,文章:http://www.cnblogs.com ...
- Modbus tcp 格式说明 通讯机制 附C#测试工具用于学习,测试
前言: 之前的博客介绍了如何用C#来读写modbus tcp服务器的数据,文章:http://www.cnblogs.com/dathlin/p/7885368.html 当然也有如何创建一个服务器文 ...
- 开放型Modbus/TCP 规范
修订版 1.0,1999 年3 月29 日Andy SwalesSchneider 电气公司aswales@modicon.com目录目录............................... ...
- 采用VSPD、ModbusTool模拟串口、MODBUS TCP设备进行Python采集软件开发
版权声明:本文为博主原创文章,欢迎转载,并请注明出处.联系方式:460356155@qq.com 不少仪器/设备都提供了数据采集的接口,其中不少是串口或网络的MODBUS/TCP协议. 串口是比较简单 ...
- freemodbus modbus TCP 学习笔记
1.前言 使用modbus有些时间了,期间使用过modbus RTU也使用过modbus TCP,通过博文和大家分享一些MODBUS TCP的东西.在嵌入式中实现TCP就需要借助一个以太网协议 ...
随机推荐
- C# 死锁 TaskCompletionSource
在异步转同步时,使用不当容易造成死锁(程序卡死) 看如下案例: 有一个异步方法 private static async Task TestAsync() { Debug.WriteLine(&quo ...
- python多线程爬取图片二
上一篇的多线程是使用类创建的,这一次使用函数创建多线程,还是同一个网站https://www.quanjing.com/category/1286521/1.html, 代码如下: # 多线程,自动创 ...
- HDU 1565:方格取数(1)(最大点权独立集)***
http://acm.hdu.edu.cn/showproblem.php?pid=1565 题意:中文. 思路:一个棋盘,要使得相邻的点不能同时选,问最大和是多少,这个问题就是最大点权独立集. 可以 ...
- ajax 前端发含有列表的数据
在前端页面也可以给后端发送一个包含列表的数据 html <body> <h3>index页面 </h3> <input type="text&quo ...
- Redis复制流程:图解
一.新版复制PSYNC命令实现:复制实现总流程 (1)通过客户端向从服务器发送 slaveof <master_ip> <master_port>:此为异步执行,从服务器设置好 ...
- Ubuntu系统 apt-get update失败解决办法
使用apt-get的时候发现ubuntu和阿里云均已经不提供该版本的源,所以需要找到其他的替代源. 使用的ubuntu版本是14.10,属于非LTS(长期支持版本),因此前一段时间还可以使用apt-g ...
- 手动启动log4j|nginx实现http https共存
手动加载log4j.xml文件 DOMConfigurator.configure("src/main/resources/log4j.xml"); log4j.propertie ...
- 项目心得——mybatisplus注解
最近在做的项目中使用了mybatisplus,遇到了一些小问题,特此记录. 1.在sql查询后返回的数据中,会存在一些实体类中本没有的字段: 遇到这个问题时,我理所当然的就去实体类中添加了这个字段,但 ...
- JavaScript权威指南第六版(阅读笔记)
前言: 对于软件行业学习是无止境的,因为知识更替非常快,能够快速稳固掌握一门新技术是一个程序员应该具备的基本素质. 了解一门语言,了解它的概念非常重要,但是一些优秀的设计思想需要细心和大量实践才能慢慢 ...
- 【最短路算法例题-升降梯上】-C++
描述 启了升降梯的动力之后,探险队员们进入了升降梯运行的那条竖直的隧道,映入眼帘的是一条直通塔顶的轨道.一辆停在轨道底部的电梯.和电梯内一杆控制电梯升降的巨大手柄. Nescafe之塔一共有N层,升降 ...