发送报文:

Modbus tcp 发送报文是由报文头(MBAP)和帧结构(PDU)组成的。

MBAP由7个字节组成:

00 00 00 00 00 06 01

00 00 事务处理标识,每次通讯后数字加一用来区分不同通信的报文(所以每次通信都不一样)。

00 00 协议标识符,当前00 00表示modbus TCP协议。

00 06 长度,表示PDU的数据由6个字节组成(就是说06后面还有6个字节)。

01   单元标识(就是设备地址)。

PDU由功能码和数据组成:

01 00 13 00 10

01 功能码。

00 13 起始地址(从00 13地址开始读,因为是16进制所以起始地址是00019)

00 10 数据长度(因为16进制,所以0010要读16个位,00019~00034)。

完整的一个TCP modbus发送报文:00 00 00 00 00 06 01 01 00 13 00 10

注意:假如功能码是03,起始地址还是00 13,那内部地址就是40019

接收报文:

00 00 00 00 00 05 01 01 02 3C 25

00 05后面还有5个字节。

以上其它都一样,02 代表字节计数。

3C 25 代表读取的值(转换二进制就是00111010 00100101,前8为代表00019~00026,后8位代表00028~00034)。

常见的功能码:

功能码

名称

功能

对应的地址类型

01

读线圈状态

读位(读N个bit)...读从机线圈寄存器,位操作

0x

02

读输入离散量

读位(读N个bit)...读离散输入寄存器,位操作

1x

03

读多个寄存器

读整形、字符型、状态字、浮点型(读N个words)...读保持寄存器,字节操作

4x

04

读输入寄存器

读整形、状态字、浮点型(读N个words)...读输入寄存器,字节操作

3x

05

写单个线圈

写位(写一个bit)...写线圈寄存器,位操作

0x

06

写单个保持寄存器

写整形、字符型、状态字、浮点型(写一个words)...写保持寄存器,字节操作

4x

0F

写多个线圈

写位(写N个bit)...强置一串连续逻辑线圈的通断

0x

10

写多个保持寄存器

写整形、字符型、状态字、浮点型(写N个words)...把具体的二进制强制装入一串连续的保持寄存器

4x

设备类型

读写属性

应用定义

功能码(16进制)

Modbus协议地址

内部地址

0x

可读可写

输出线圈

01、05、0F

0000起到FFFF

000001到065536

1x

只读

输入线圈

02

0000起到FFFF

100001到165536

3x

只读

输入寄存器

04

0000起到FFFF

300001到365536

4x

可读可写

保持寄存器写的时候功能码多为10

03、06、10

0000起到FFFF

400001到465536

5x

可读可写

同4x是保存寄存器,但在32位字节的时候要高低位互换。

03、06、10

0000起到FFFF

500001到565536

6x

可读可写

同4x,但在写的时候功能码要设为06。

03、06、10

0000起到FFFF

600001到665536

Modbus TCP相关推荐

  1. tcp转串口_PROFIBUS DP与Modbus/TCP网络转换操作指南

    >>PROFIBUS DP转Modbus/TCP网关操作指南 摘要: 本文以NT100-RE-DP网关为例,实现Modbus/TCP Client与PROFIBUS DP设备间的通讯,从而 ...

  2. 10通信端口感叹号_S71200 技术篇——MODBUS TCP通信

    一.S7-1200 Modbus TCP 通信指令块 图1. Modbus TCP V4.0 版本指令块 二.S7-1200 Modbus TCP 实验环境 下面以两台S7-1200之间进行 Modb ...

  3. modbus tcp 入门详解

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

  4. js实现modbus_nodejs中使用modbus-serial库创建Modbus TCP读取设备的数据

    nodejs中使用modbus-serial库创建Modbus TCP读取设备的数据 在nodejs中安装modbus-serial库 本人使用的开发环境是Windows10下的VSCode,安装并配 ...

  5. DotNetty 实现 Modbus TCP 系列 (三) Codecs Handler

    DotNetty 实现 Modbus TCP 系列 (一) 报文类 DotNetty 实现 Modbus TCP 系列 (二) ModbusFunction 类图及继承举例 DotNetty 作为一个 ...

  6. DotNetty 实现 Modbus TCP 系列 (二) ModbusFunction 类图及继承举例

    DotNetty 实现 Modbus TCP 系列 (一) 报文类 ModbusFunction 类图如下: 如前文所述,所有请求/相应的 PDU 均继承自 ModbusFunction,其子类传入对 ...

  7. DotNetty 实现 Modbus TCP 系列 (一) 报文类

    Modbus TCP/IP 报文 报文最大长度为 260 byte (ADU = 7 byte MBAP Header + 253 byte PDU) Length = Unit Identifier ...

  8. 客户机和服务器在s7通信中各有什么作用,哪些通信口可以进行 Modbus TCP 通讯,作为 Modbus 服务器的 SIMATIC S7 CPU 可以...

    以下通信端口可用于 Modbus/TCP 协议:在默认情况下,端口号 502 作为 Modbus 服务器的本地端口. 可以在 Modbus 客户机中设置需要的本地端口,通常使用从 2000 开始的端口 ...

  9. 1200可以读取modbus tcp_S7-1200 作 MODBUS TCP服务器

    S7-1200 Modbus TCP 通信指令块 STEP 7 V13 SP1 软件版本中的Modbus TCP库指令目前最新的版本已升至V4.0,该版本的使用需要具备以下两个条件: 1. 软件版本: ...

  10. 通讯接口应用笔记3:使用W5500实现Modbus TCP服务器

      前面我们设计实现了W5500的驱动程序,也讲解了驱动的使用方式.在最近一次的项目应用中,正好有一个使用W5500实现TCP通讯的需求,所以我们就使用该驱动程序轻松实现.这一篇中我们就来说一说基于我 ...

最新文章

  1. 芯片开发者46%年收入达30万元,7纳米制程以内开发者30%超50万元
  2. 微信小程序封装的Promise工具类 ES6语法
  3. Ubuntu 20.04 linux系统安装docker
  4. C# 将DataGridView里面的数据提取到DataTable中
  5. 让sublime text显示空格,到底是点还是横杠TabError: inconsistent use of tabs and spaces in indentation
  6. 为什么word中插入对象会自动关闭word_你常常忽视的Word文本操作小技巧
  7. jsp版本的环境变量集合
  8. bzoj2437 [Noi2011]兔兔与蛋蛋
  9. Microsoft Office Mobile 2010 Beta 于 4 月 5 日过期
  10. 中兴盒子B860AV2.1-A-B-M-U,通刷,线刷刷机固件
  11. implement 和 extends 的区别
  12. 国内八家域名注册商优缺点比较(转)
  13. matlab 地址中有变量,在matlab中符号变量
  14. linux开发员用游戏本吗,为什么很多程序员使用thinkpad而不是同等价位的游戏本呢?...
  15. 5G网络用户面时延测量
  16. 程序员加班看不上球赛崩溃,外卖小哥伸出援手:我帮你改代码
  17. 行走在投资界的程序员:千淘资本合伙人李华兵
  18. 去年190家共享经济平台融资1159亿 共享汽车融资最多
  19. 守恒定律、连续性方程和玻印亭矢量
  20. 深度学习的权重衰减是什么_权重衰减和L2正则化是一个意思吗?它们只是在某些条件下等价...

热门文章

  1. 2020最新软件测试面试题及答案,收藏为来年跳槽做准备
  2. 增长黑客电子书pdf樊灯推荐
  3. iis php mime_Win2003 手机站IIS MIME类型设置大全
  4. Google V8引擎浅析
  5. 蓝鲸智云体系介绍2(20210805)
  6. Ubuntu18.04分区方案
  7. CentOS 7 初始化系统
  8. Unity 引导动画的制作
  9. Duplicate resources
  10. Matlab中prod函数