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. 对比Hashtable,HashMap,TreeMap,谈谈对HashMap的理解

    都实现了Map接口,存储的内容是基于key-value的键值对映射,一个映射不能有重复的键,一个键最多只能映射一个值. 1.初始化的时候:HashTable在不指定容量的情况下的默认容量是11,且不要 ...

  2. Docker-Compose搭建单体SkyWalking

    SkyWalking简介 SkyWalking是一款高效的分布式链路追踪框架,对于处理分布式的调用链路的问题定位上有很大帮助 有以下特点: 性能好 针对单实例5000tps的应用,在全量采集的情况下, ...

  3. Codeforces Gym101505G:Orchard Division(扫描线+线段树第k大)

    题目链接 题意 给出一个m*m的地图,上面有n个点,现在需要用一个自定义面积的矩形笼罩住恰好n/2个点,并且这个矩形需要有一个点在至少一个角落上,问这个矩形最小的面积是多少. 思路 有点类似于扫描线. ...

  4. visual studio code emmet 插件不提示?解决方案

    使用visual studio code编辑.vue文件时,emmet插件无法使用, 可以通过以下方试解决: code →首选项 →设置 ,在右侧窗口“用户配置”.“工作区设置”添加以下代码: // ...

  5. POI自动调整列宽支持中文

    /** * @Description:表格自适应宽度(中文支持) * @Author: * @param sheet sheet * @param columnLength 列数 */ private ...

  6. RedisDesktopManager远程连接Linux系统的Redis服务

    linux下安装redis :https://www.runoob.com/redis/redis-install.html 进入 src 运行redis   : ./redis-server 打开另 ...

  7. [AI开发]目标跟踪之速度计算

    基于视频结构化的应用中,目标在经过跟踪算法后,会得到一个唯一标识和它对应的运动轨迹,利用这两个数据我们可以做一些后续工作:测速(交通类应用场景).计数(交通类应用场景.安防类应用场景)以及行为检测(交 ...

  8. 嵊州D2T1 “我只是来打个电话”

    嵊州D2T1 “我只是来打个电话” 精神病院有一个这样的测试. 给出一个正整数集合,集合中的数各不相同,然后要求病人回答: 其中有多少个数,恰好等于集合中另外两个(不同的)数之和? 回答正确的人,即可 ...

  9. 从四个属性的角度来理解C语言的指针也许会更好理解

    文章会在文末更新! 关于指针是什么,很多教材已经作出了定义,大多数都会定义为"存放变量内存地址的变量".从这句话中我觉得除了让我知道这个定义有11个字以外,其他就没什么用了.我个人 ...

  10. 5.Ray-Handler之ToReadHandler编写

    如图右上角所示,Ray中有两类Handler(SubHandler和PartSubHandler),在使用中,SubHandler派生Actor的CoreHandler,PartSubHandler派 ...