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协议讲解的更多相关文章

  1. 国标电表DLT645转MODBUS TCP协议转换器MRD-5021,工业设备,浪涌三级保护MRD

    DL/T645转ModbusTcp协议转换器 MRD-5021具有1 路RS485及1路以太网接口,最多支持同时采集5个DL/T645-1997或者5个2007协议国标电表设备,支持DL/T645协议 ...

  2. 【.NET6+Modbus】Modbus TCP协议解析、仿真环境以及基于.NET实现基础通信

    前言:随着工业化的发展,目前越来越多的开发,从互联网走向传统行业.其中,工业领域也是其中之一,包括各大厂也都在陆陆续续加入工业4.0的进程当中. 工业领域,最核心的基础设施,应该是与下位硬件设备或程序 ...

  3. Modbus TCP协议说明

    协议帧 事物处理标识| 协议标识| 长度| 从机地址| 功能码| 数据 0x00 00| 0x00 00| 0x00 08| 0x01| 0x0F| 0x00 14 0x00 01 0x01 0x01 ...

  4. 【应用笔记】【AN001】VC#开发环境下基于以太网的4-20mA电流采集(基于modbus tcp 协议)

    版本:第一版 作者:毛鹏 杨帅 日期:20151108 简介 4-20mA电流环具有广泛的应用前景,在许多行业中都发挥着重要作用.本文主要介绍了以太网接口的4-20mA电流采集模块在VC#环境下进行温 ...

  5. C# ModBus Tcp读写数据 与服务器进行通讯

    前言 本文将使用一个NuGet公开的组件技术来实现一个ModBus TCP的客户端,方便的对Modbus tcp的服务器进行读写,这个服务器可以是电脑端C#设计的,也可以是PLC实现的,也可以是其他任 ...

  6. modbus tcp 入门详解

    Modbus tcp 格式说明 通讯机制 附C#测试工具用于学习,测试   前言: 之前的博客介绍了如何用C#来读写modbus tcp服务器的数据,文章:http://www.cnblogs.com ...

  7. Modbus tcp 格式说明 通讯机制 附C#测试工具用于学习,测试

    前言: 之前的博客介绍了如何用C#来读写modbus tcp服务器的数据,文章:http://www.cnblogs.com/dathlin/p/7885368.html 当然也有如何创建一个服务器文 ...

  8. 开放型Modbus/TCP 规范

    修订版 1.0,1999 年3 月29 日Andy SwalesSchneider 电气公司aswales@modicon.com目录目录............................... ...

  9. 采用VSPD、ModbusTool模拟串口、MODBUS TCP设备进行Python采集软件开发

    版权声明:本文为博主原创文章,欢迎转载,并请注明出处.联系方式:460356155@qq.com 不少仪器/设备都提供了数据采集的接口,其中不少是串口或网络的MODBUS/TCP协议. 串口是比较简单 ...

  10. freemodbus modbus TCP 学习笔记

    1.前言     使用modbus有些时间了,期间使用过modbus RTU也使用过modbus TCP,通过博文和大家分享一些MODBUS TCP的东西.在嵌入式中实现TCP就需要借助一个以太网协议 ...

随机推荐

  1. C# 死锁 TaskCompletionSource

    在异步转同步时,使用不当容易造成死锁(程序卡死) 看如下案例: 有一个异步方法 private static async Task TestAsync() { Debug.WriteLine(&quo ...

  2. python多线程爬取图片二

    上一篇的多线程是使用类创建的,这一次使用函数创建多线程,还是同一个网站https://www.quanjing.com/category/1286521/1.html, 代码如下: # 多线程,自动创 ...

  3. HDU 1565:方格取数(1)(最大点权独立集)***

    http://acm.hdu.edu.cn/showproblem.php?pid=1565 题意:中文. 思路:一个棋盘,要使得相邻的点不能同时选,问最大和是多少,这个问题就是最大点权独立集. 可以 ...

  4. ajax 前端发含有列表的数据

    在前端页面也可以给后端发送一个包含列表的数据 html <body> <h3>index页面 </h3> <input type="text&quo ...

  5. Redis复制流程:图解

    一.新版复制PSYNC命令实现:复制实现总流程 (1)通过客户端向从服务器发送 slaveof <master_ip> <master_port>:此为异步执行,从服务器设置好 ...

  6. Ubuntu系统 apt-get update失败解决办法

    使用apt-get的时候发现ubuntu和阿里云均已经不提供该版本的源,所以需要找到其他的替代源. 使用的ubuntu版本是14.10,属于非LTS(长期支持版本),因此前一段时间还可以使用apt-g ...

  7. 手动启动log4j|nginx实现http https共存

    手动加载log4j.xml文件 DOMConfigurator.configure("src/main/resources/log4j.xml"); log4j.propertie ...

  8. 项目心得——mybatisplus注解

    最近在做的项目中使用了mybatisplus,遇到了一些小问题,特此记录. 1.在sql查询后返回的数据中,会存在一些实体类中本没有的字段: 遇到这个问题时,我理所当然的就去实体类中添加了这个字段,但 ...

  9. JavaScript权威指南第六版(阅读笔记)

    前言: 对于软件行业学习是无止境的,因为知识更替非常快,能够快速稳固掌握一门新技术是一个程序员应该具备的基本素质. 了解一门语言,了解它的概念非常重要,但是一些优秀的设计思想需要细心和大量实践才能慢慢 ...

  10. 【最短路算法例题-升降梯上】-C++

    描述 启了升降梯的动力之后,探险队员们进入了升降梯运行的那条竖直的隧道,映入眼帘的是一条直通塔顶的轨道.一辆停在轨道底部的电梯.和电梯内一杆控制电梯升降的巨大手柄. Nescafe之塔一共有N层,升降 ...