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. Python开发【第九篇】: 并发编程

    内容概要 操作系统介绍 进程 线程 协程 二. 进程 python并发编程之多进程理论部分 在python程序中的进程操作 运行中的程序就是一个进程.所有的进程都是通过它的父进程来创建的.因此,运行起 ...

  2. fis3前端工程构建配置入门教程

    一.前言 fis3是百度推出的一款前端工程构建工具,类似的还有webpack,gulp等工具:无论大家有没有使用过,从事前端行业应该都略知一二了,所以对于此类工具用干嘛的我这里就不做重复了. 其实对于 ...

  3. 新手如何学python?

    在学习Python前,你应该规划好自己的学习方向,毕竟Python的方向比较多,比如: web开发 爬虫 自动化开发(运维,测试).脚本开发 大数据(数据挖掘,数据分析) 人工智能.机器学习 选择好自 ...

  4. Codeforces 617E:XOR and Favorite Number(莫队算法)

    http://codeforces.com/problemset/problem/617/E 题意:给出n个数,q个询问区间,问这个区间里面有多少个区间[i,j]可以使得ai^ai+1^...^aj ...

  5. idea 提示:ERROR util.Shell: Failed to locate the winutils binary in the hadoop binary path java.io.IOException解决方法

    Windows系统中的IDEA链接Linux里面的Hadoop的api时出现的问题 提示:ERROR util.Shell: Failed to locate the winutils binary ...

  6. django基础知识之中间件:

    中间件 是一个轻量级.底层的插件系统,可以介入Django的请求和响应处理过程,修改Django的输入或输出 激活:添加到Django配置文件中的MIDDLEWARE_CLASSES元组中 每个中间件 ...

  7. C++20 的 Modules

    最近看了两篇关于 C++ 20 Modules 很有意思的文章,戳: <Understanding C++ Modules: Part 1: Hello Modules, and Module ...

  8. js 为何范围内随机取整要用floor,而不是ceil或者round呢

     壹 ❀ 引 我在如何使用js取任意范围内随机整数这篇博客中,列举并分析了取[n,m)与[n,m]范围内整数的通用方法,并在文章结果留了一个疑问:为什么通用方法中取整操作,我们使用Math.floor ...

  9. C++学习书籍推荐《The C++ Standard Library 2nd》下载

    百度云及其他网盘下载地址:点我 编辑推荐 经典C++教程十年新版再现,众多C++高手和读者好评如潮 畅销全球.经久不衰的C++ STL鸿篇巨著 C++程序员案头必 备的STL参考手册 全面涵盖C++1 ...

  10. 哈工大计算机网络Week1-网络应用

    目录 哈工大计算机网络Week1-网络应用 2.1网络应用的体系结构 特点 应采取什么结构 C/S结构 客户机/服务器 P2P CS vs P2P 混合结构 思考题目 2.2网络应用的基本原理 网络应 ...