协议帧

事物处理标识|  协议标识|       长度|  从机地址| 功能码| 数据
0x00 00| 0x00 00| 0x00 08| 0x01| 0x0F| 0x00 14 0x00 01 0x01 0x01
  • 事物处理标识(占2字节)

    区分不同报文,请求和应答的一组报文有相同的事物处理标识。每次通信之后应当自增。

  • 协议标识(占2字节)

    0x0000 表示ModBus TCP

  • 长度(占1个字节)

    表示之后还有多少字节

  • 从机地址(占1个字节)

    表示设备地址(多个设备接一个总线)

  • 功能码(占1个字节)

    功能码部分定义如下:

功能码 描述 访问类型 PLC地址 数据类型 操作数量
0x01 线圈寄存器 00001-09999 单/多
0x02 离散输入寄存器 10001-19999 单/多
0x03 保持寄存器 40001-49999 单/多
0x04 输入寄存器 30001-39999 单/多
0x05 线圈寄存器 00001-09999
0x06 保持寄存器 40001-49999
0x0F 线圈寄存器 00001-09999
0x10 保持寄存器 40001-49999
  • 寄存器起始地址

    表示寄存器地址

  • 数据部分

写请求数据帧

寄存器首地址|写个数|长度|值
0x0014|0x0001| 0x01|0x01
  1. 寄存器首地址(占两个字节),表示此次操作从哪个寄存器开始
  2. 写个数占(两个字节),表示批量操作多少个寄存器。例如首地址为0x0014,写个数为0x0002,则表示同时写0x0014和0x0015两个寄存器。
  3. 长度(占一个字节),表示该字节后还有多少字节。
  4. 值表示要写入的值。如果功能码是位操作,则值需要被拆成位赋值。例如写首地址为0x0014,写个数为0x0002。写字节为0x01,值为0x02。由于0x02用位表示为00000010,赋值后寄存器的结果为0x0014为0,0x0015为1。

写响应数据帧:

寄存器首地址|写个数
0x0014|0x0001
  1. 寄存器首地址(占两个字节),表示此次操作从哪个寄存器开始
  2. 写个数(占两个字节),表示此次操作了多少个寄存器。

读请求数据帧

寄存器首地址|读个数
0x0014|0x0001
  1. 寄存器首地址(占两个字节),表示此次操作从哪个寄存器开始读
  2. 读个数(占两个字节),表示要求读多少个寄存器。

读响应数据帧

读状态|读取值
0x01|0x01
  1. 读状态表示读操作是否成功。0x01表示成功,0x02表示失败。
  2. 读取值表示读操作获取的值。如果功能码是位操作,那么读取的值也需要按位解析。例如从0x0014开始读取两个寄存器值。假设读到的值为0x03,那么表示0x0014和0x0015的值均为1。

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

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

  4. 开放型Modbus/TCP 规范

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

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

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

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

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

  7. modbus tcp 入门详解

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

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

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

  9. freemodbus modbus TCP 学习笔记

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

随机推荐

  1. 大数据篇:Hbase

    大数据篇:Hbase Hbase是什么 Hbase是一个分布式.可扩展.支持海量数据存储的NoSQL数据库,物理结构存储结构(K-V). 如果没有Hbase 如何在大数据场景中,做到上亿数据秒级返回. ...

  2. php--理解PHP的依赖注入和laravel的服务容器

    写在前面 为了了解laravel的服务容器在网上搜了许多文章,其中大多数都有其侧重点,没有很系统的一套东西以供参考,看完之后仍觉似乎少了一根把他们串起来的绳子,近期有幸拜读了陈昊的<Larave ...

  3. 使用mpvue开发小程序如何定义全局变量

    我们创建好mpvue项目之后,找到src/main.js打开在后面添加一行代码 (注意:不能在const app = new Vue(App) 之前添加) Vue.prototype.globalDa ...

  4. 路由与交换,cisco路由器配置,基础知识点(二)

    1.进退用户/特权/全局模式 (1)从用户模式进入特权模式 enable (2)从特权模式进入全局配置模式 configure terminal (3)从其他模式回到特权模式 end (4)从特权模式 ...

  5. Array(数组)对象-->pop() 方法

    1.定义和用法 pop() 方法用于删除数组的最后一个元素并返回删除的元素. 语法: array.pop() 注意:此方法改变数组的长度! 举例: var arr = [1,2,3,4,5]; con ...

  6. 用threejs 实现3D物体在浏览器展示

    用threejs 实现3D物体在浏览器展示,通过鼠标平移,缩放,键盘箭头按钮左右移动等功能展示. <!DOCTYPE html> <html> <head> < ...

  7. MySQL的单表查询

    单表查询 单表查询语法: select distinct 字段1,字段2... from 表名 where 条件 group by field having筛选 order by 关键字执行的优先级: ...

  8. 百度智能云虚拟主机 Typecho 分类功能失效 | 开启伪静态地址

    出现的问题 $this->is() 方法失效,无法正确判断 archive.category.tags 页面类型. 点击分类页面.归档页面时,虽然 URL 是正确的,但网页内容却是 index. ...

  9. selenium 元素定位常用的方法

    元素定位的方法有2个 driver.findElement(By.args) 返回值是WebElement            //此方法是获取单一的页面元素 driver.findElements ...

  10. 如何将dotnet core webapi发布到docker中…

    如何将dotnet core webapi发布到docker中 今天想起来撸一下docker,中途还是遇到些问题,但是这些问题都是由于路径什么的导致不正确,在这儿还是记录下操作过程,今天是基于wind ...