Modbus TCP
发送报文:
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相关推荐
- tcp转串口_PROFIBUS DP与Modbus/TCP网络转换操作指南
>>PROFIBUS DP转Modbus/TCP网关操作指南 摘要: 本文以NT100-RE-DP网关为例,实现Modbus/TCP Client与PROFIBUS DP设备间的通讯,从而 ...
- 10通信端口感叹号_S71200 技术篇——MODBUS TCP通信
一.S7-1200 Modbus TCP 通信指令块 图1. Modbus TCP V4.0 版本指令块 二.S7-1200 Modbus TCP 实验环境 下面以两台S7-1200之间进行 Modb ...
- modbus tcp 入门详解
Modbus tcp 格式说明 通讯机制 附C#测试工具用于学习,测试 前言: 之前的博客介绍了如何用C#来读写modbus tcp服务器的数据,文章:http://www.cnblogs.com/d ...
- js实现modbus_nodejs中使用modbus-serial库创建Modbus TCP读取设备的数据
nodejs中使用modbus-serial库创建Modbus TCP读取设备的数据 在nodejs中安装modbus-serial库 本人使用的开发环境是Windows10下的VSCode,安装并配 ...
- DotNetty 实现 Modbus TCP 系列 (三) Codecs Handler
DotNetty 实现 Modbus TCP 系列 (一) 报文类 DotNetty 实现 Modbus TCP 系列 (二) ModbusFunction 类图及继承举例 DotNetty 作为一个 ...
- DotNetty 实现 Modbus TCP 系列 (二) ModbusFunction 类图及继承举例
DotNetty 实现 Modbus TCP 系列 (一) 报文类 ModbusFunction 类图如下: 如前文所述,所有请求/相应的 PDU 均继承自 ModbusFunction,其子类传入对 ...
- DotNetty 实现 Modbus TCP 系列 (一) 报文类
Modbus TCP/IP 报文 报文最大长度为 260 byte (ADU = 7 byte MBAP Header + 253 byte PDU) Length = Unit Identifier ...
- 客户机和服务器在s7通信中各有什么作用,哪些通信口可以进行 Modbus TCP 通讯,作为 Modbus 服务器的 SIMATIC S7 CPU 可以...
以下通信端口可用于 Modbus/TCP 协议:在默认情况下,端口号 502 作为 Modbus 服务器的本地端口. 可以在 Modbus 客户机中设置需要的本地端口,通常使用从 2000 开始的端口 ...
- 1200可以读取modbus tcp_S7-1200 作 MODBUS TCP服务器
S7-1200 Modbus TCP 通信指令块 STEP 7 V13 SP1 软件版本中的Modbus TCP库指令目前最新的版本已升至V4.0,该版本的使用需要具备以下两个条件: 1. 软件版本: ...
- 通讯接口应用笔记3:使用W5500实现Modbus TCP服务器
前面我们设计实现了W5500的驱动程序,也讲解了驱动的使用方式.在最近一次的项目应用中,正好有一个使用W5500实现TCP通讯的需求,所以我们就使用该驱动程序轻松实现.这一篇中我们就来说一说基于我 ...
最新文章
- 芯片开发者46%年收入达30万元,7纳米制程以内开发者30%超50万元
- 微信小程序封装的Promise工具类 ES6语法
- Ubuntu 20.04 linux系统安装docker
- C# 将DataGridView里面的数据提取到DataTable中
- 让sublime text显示空格,到底是点还是横杠TabError: inconsistent use of tabs and spaces in indentation
- 为什么word中插入对象会自动关闭word_你常常忽视的Word文本操作小技巧
- jsp版本的环境变量集合
- bzoj2437 [Noi2011]兔兔与蛋蛋
- Microsoft Office Mobile 2010 Beta 于 4 月 5 日过期
- 中兴盒子B860AV2.1-A-B-M-U,通刷,线刷刷机固件
- implement 和 extends 的区别
- 国内八家域名注册商优缺点比较(转)
- matlab 地址中有变量,在matlab中符号变量
- linux开发员用游戏本吗,为什么很多程序员使用thinkpad而不是同等价位的游戏本呢?...
- 5G网络用户面时延测量
- 程序员加班看不上球赛崩溃,外卖小哥伸出援手:我帮你改代码
- 行走在投资界的程序员:千淘资本合伙人李华兵
- 去年190家共享经济平台融资1159亿 共享汽车融资最多
- 守恒定律、连续性方程和玻印亭矢量
- 深度学习的权重衰减是什么_权重衰减和L2正则化是一个意思吗?它们只是在某些条件下等价...