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. 并发编程-Future+callable+FutureTask 闭锁机制

    项目中经常有些任务需要异步(提交到线程池中)去执行,而主线程往往需要知道异步执行产生的结果,这时我们要怎么做呢?用runnable是无法实现的,我们需要用callable实现. FutureTask ...

  2. HDU 3879 && BZOJ 1497:Base Station && 最大获利 (最大权闭合图)

    http://acm.hdu.edu.cn/showproblem.php?pid=3879 http://www.lydsy.com/JudgeOnline/problem.php?id=1497 ...

  3. ORACLE导入数据库详细步骤

    登录PLSQL 点击然后打开命令窗口执行命令 创建表空间(红色字体是你需要创建表空间的地址,蓝色的是表空间大小) create temporary tablespace ZJY_TEMP tempfi ...

  4. flask高级编程 LocalStack 线程隔离

    转:https://www.cnblogs.com/wangmingtao/p/9372611.html   30.LocalStack作为线程隔离对象的意义 30.1 数据结构 限制了某些能力 30 ...

  5. python的列表使用

    1.什么是列表 列表是由一系列按特定顺序排列的元素,元素之间可以没有任何关系:可以创建空列表,也可以将任何东西添加进列表. 列表用 [ ] 表示: cars = ['golf', 'magotan', ...

  6. 企业如何从“API优先”的策略中获益

    在过去的几年里,全球API经济在以难以置信的速度进行快速地增长.物联网.人工智能.自动驾驶等等众多令人充满期待的技术正蓬勃发展,这也证明了API对于如今整个技术圈子的重要性,也预示着在不久的将来它还将 ...

  7. CF543B Destroying Roads 题解

    看到没有题解就贡献一波呗 分析: 这题其实就是想让我们求一个图中两条最短路的最短(好把更多的边删掉). 我们先考虑一条最短路,别问我我怎么会的显然,就是s和t跑个最短路再用n-就行. 然后就是两条喽! ...

  8. 洛谷P2598 [ZJOI2009]狼和羊的故事 题解

    题目链接: https://www.luogu.org/problemnew/show/P2598 分析: 我们知道此题的目的是将狼和羊分割开,很容易想到狼在S,羊在T中. 首先,我们可以在狼,羊,空 ...

  9. Storm之API简介

    Storm之API简介 Component组件 1)基本接口 (1)IComponent接口 (2)ISpout接口 (3)IRichSpout接口 (4)IStateSpout接口 (5)IRich ...

  10. Unity AR Foundation 和 CoreML: 实现手部的检测和追踪

    0x00 前言 Unity的AR Foundation通过上层抽象,对ARKit和ARCore这些底层接口进行了封装,从而实现了AR项目的跨平台开发能力. 而苹果的CoreML是一个可以用来将机器学习 ...