Modbus TCP 示例报文

调试modbus  tcp 整理百度文库文档如下

《modbus-tcp-报文举例分析》

《MODBUSTCP通讯报文》

关于Modbus 报文

Client request:

19 B2 00 00 00 06 06 03 00 27 00 02

上面是modbus客户端发出的报文内容,为modbus tcp/ip协议格式,其前面的六个字节为头字节( header handle);

19 B2 00 00 00 06

19 B2 两个字节是Client发出的检验信息,Sever端只是需要将这两个字节的内容copy以后再放到response的报文的相应位子就可以了

00 00 两个字节是表示tcp/ip 的协议的modbus的协议;

00 06 两个字节表示的是header handle后面还有多长的字节,即表示的是该字节以后的字节长度(lengch),可以看到在00 06后面还有 “06 03 00 27 00 02”六个字节,所以这两个字节表示的就是6;

PDU:

“06 03 00 27 00 02”

06 一个字节表示slave address;

03 为Fuction code ;

00 27 表示Client request的寄存器地址;

00 02 表示request 寄存器的长度;(寄存器个数)

Server response:

19 B2 00 00 00 07 06 03 04 00 00 00 00

Header handle : “ 19 B2 00 00 00 07”

19 B2 为Server返回的检验码,copy from Client request;

其它的表示与客户端的表示相同

PDU:

“ 06 03 04 00 00 00 00”

06 是Slave address,从地址数;

03是Function code ;

04表示了回复给Client request的需要读的寄存器的值的个数,这里因为主地址向从地址读了2个寄存器即2个16位的寄存器(2个字)所以这里为4个字节,因为2个字为4个字节,而04这个字节表示的就是从地址要回复给主地址的寄存器字节长度,

00 00 00 00 表示了4个字节的值

ModBusTcp与串行链路Modbus的数据域是一致的,具体数据域可以参考串行modbus。这里给出几个ModbusTcp的链路解析说明,辅助新人分析报文。

1、数据请求


97 76 00 00 00 06 04 04 00 7D 00 7D


示例


长度


说明


备注


Map报文头


0x97


1


事务处理标识符Hi


客户机发起,服务器复制,用于事务处理配对


0x96


1


事务处理标识符Lo


0x0000


2


协议标识符号


客户机发起,服务器复制

Modbus协议 = 0.


0x0006


2


长度


从本字节下一个到最后


0x04


1


单元标识符


客户机发起,服务器复制

串口链路或其他总线上远程终端标识


功能码


0x04


1


功能码,读寄存器


参考标准modbus协议


数据


0x007D


2


起始地址


0x 007D


2


寄存器数量


校验

2、数据请求回复


97 76 00 00 00 FD 04 04 FA AB 9E 41 18 7A E1 3F 94 7A E1 3F 94 0A 3D 3F 97 51 EC 3F 98 CC CD C0 6C 33 33 C0 E3 CC CD C0 EC EB 85 41 F1 D7 0A 41 E9 47 AE 41 ED EB 85 41 F1 19 9A 43 D0 E6 66 43 C9 4C CD 43 CF EB 85 41 F3 66 66 42 0F CC CD 41 C2 E6 66 44 0A 1E B8 41 FB A3 D7 42 0C CC CD 41 BC C0 00 44 0A B8 52 41 F6 5C 29 42 0F 47 AE 41 D1 C6 66 44 0A 00 00 00 00 C9 9E FF 7F C9 9E FF 7F C9 9E FF 7F C9 9E FF 7F C9 9E FF 7F C9 9E FF 7F C9 9E FF 7F C9 9E FF 7F C9 9E FF 7F 05 16 00 00 04 11 00 00 05 16 00 00 04 11 00 00 05 16 00 00 04 11 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 0A 00 0A 00 0A 00 0A 00 04 00 04 00 04 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 0F


示例


长度


说明


备注


Map报文头


0x97


1


事务处理标识符Hi


客户机发起,服务器复制,用于事务处理配对


0x96


1


事务处理标识符Lo


0x0000


2


协议标识符号


客户机发起,服务器复制

Modbus协议 = 0.


0x00FD


2


长度


从本字节下一个到最后


0x04


1


单元标识符


客户机发起,服务器复制

串口链路或其他总线上远程终端标识


功能码


0x04


1


功能码,读寄存器


参考标准modbus协议


数据


0x FA


1


字节个数


0x----


数据


校验

3、写多个寄存器


97 79 00 00 00 09 04 10 00 00 00 01 02 00 01


示例


长度


说明


备注


Map报文头


0x97


1


事务处理标识符Hi


客户机发起,服务器复制,用于事务处理配对


0x79


1


事务处理标识符Lo


0x0000


2


协议标识符号


客户机发起,服务器复制

Modbus协议 = 0.


0x0009


2


长度


从本字节下一个到最后


0x04


1


单元标识符


客户机发起,服务器复制

串口链路或其他总线上远程终端标识


功能码


0x10


1


功能码,读寄存器


参考标准modbus协议


数据


0x0000


2


起始地址


0x 0001


2


写寄存器数量


0x 02


1


写字节的个数


00 01


2


目标值


校验

4、写多个寄存器响应


97 79 00 00 00 06 04 10 00 00 00 01


示例


长度


说明


备注


Map报文头


0x97


1


事务处理标识符Hi


客户机发起,服务器复制,用于事务处理配对


0x79


1


事务处理标识符Lo


0x0000


2


协议标识符号


客户机发起,服务器复制

Modbus协议 = 0.


0x0006


2


长度


从本字节下一个到最后


0x04


1


单元标识符


客户机发起,服务器复制

串口链路或其他总线上远程终端标识


功能码


0x10


1


功能码,读寄存器


参考标准modbus协议


数据


0x0000


2


起始地址


0x 0001


2


寄存器个数


校验

原文地址:https://www.cnblogs.com/DreamRecorder/p/9081134.html

时间: 2024-10-20 23:08:53

Modbus TCP 示例报文的相关文章

开放型Modbus/TCP 规范

修订版 1.0,1999 年3 月29 日Andy SwalesSchneider 电气公司[email protected]目录目录............................................................................................................................ 21.该规范的发展概况...............................................

MODBUS TCP/IP协议规范详细介绍

1.该规范的发展概况 原始版本1997年9月3日作为公共评论的草案. 再版1999年3月29日,即修订版1.0. 没有大的技术改动,仅作了补充说明.增加了附录A和B作为对一些常用执行问题的回应. 该Modbus/TCP规范在万维网上公开发行.它表明开发者的意愿是把它作为工业自动化领域具有互用性的标准. 既然MODBUS和MODBUS/TCP作为事实上的"实际"标准,而且很多生产商已经实现了它的功能,此规范主要是阐述在互连网上具有普遍可用性的基于TCP通讯协议的MODBUS报文的特殊编码

EasyARM i.mx28学习笔记——通过modbus tcp控制GPIO

0 前言 本文使用freemodbus协议栈,在EasyARM i.mx287上实现了modbus tcp从机.在该从机中定义了线圈寄存器,其中线圈寄存器地址较低的4位和EasyARM的P2.4至P2.5关联,通过modbus指令可控制GPIO的输出.本文修改自freemodbus 示例LINUXTCP,经过简单的修改也可用于其他Linux开发板. [相关博文] [EasyARM i.mx28学习笔记--文件IO方式操作GPIO] [EasyARM i.mx28学习笔记--安装和使用tftp]

组态王MODBUS TCP数据报格式

在大家通读Modbus协议时,总是会碰到一些容易混淆的名词,从而导致对于协议的解读出现问题,在本文中,我 们对于Modbus协议中可能会给大家造成困惑的名词作相关的解释. 1.功能码:功能码在modbus协议用于表示信息帧的功能,常用的功能码有03,04,06,16等,其中03功能码的作 用是读保持寄存器内容,04功能码的作用是读输入寄存器内容(输入寄存器和保持寄存器的区别看下文),06功 能码的内容是预置单个保持寄存器,16功能码的内容则是预置多个保持寄存器. 2.输入寄存器和保持寄存器:04

DotNetty 实现 Modbus TCP 系列 (四) Client & Server

本文已收录至:开源 DotNetty 实现的 Modbus TCP/IP 协议 Client public class ModbusClient { public string Ip { get; } public int Port { get; } public short UnitIdentifier { get; } public IChannel Channel { get; private set; } private MultithreadEventLoopGroup group;

C#ModBus Tcp

上一篇博客已经完成 C#ModBus Tcp Master的实现 本篇主要对不同的功能码所发出的报文进行解析(包括请求报文及响应报文) 读操作 功能码 0x01 读一组线圈 读取站号为1 从地址12开始的10个线圈 测试结果 上一篇博客已经总结了读操作报文格式,就按照格式划分 报文解析: 注意:报文中线圈起始地址 00000 对应设备中 10001 地址,其他顺延 功能码0x02 报文格式与功能码0x01一致,只是第八字节的功能码变为02 其他完全一致,不再重复解析 功能码0x03 读一组保持寄

python中的tcp示例详解

python中的tcp示例详解  目录 TCP简介 TCP介绍 TCP特点 TCP与UDP的不同点 udp通信模型 tcp客户端 tcp服务器 tcp注意点 TCP简介 TCP介绍 TCP协议,传输控制协议(英语:Transmission Control Protocol,缩写为 TCP)是一种面向连接的.可靠的.基于字节流的传输层通信协议,由IETF的RFC 793定义. TCP通信需要经过创建连接.数据传送.终止连接三个步骤. TCP通信模型中,在通信开始之前,一定要先建立相关的链接,才能发

Modbus库开发笔记之三:Modbus TCP Server开发

在完成了前面的工作后,我们就可以实现有针对性的应用了,首先我们来实现Modbus TCP的服务器端应用.当然我们不是做具体的应用,而是对Modbus TCP的服务器端应用进行封装以供有需要时调用. 这里我们不涉及TCP的协议,这部分与Modbus没有必然联系,我们只是在其应用层运行Modbus协议而已. 对于Modbus TCP的服务器我们需要实现几个功能:首先是对接收到客户端命令进行解析,我们只实现前面提到的8中常用的功能吗的支持.其次在解析完成后,我们要实现对应各种功能码的操作.具体架构如下

Windows Socket编程示例-TCP示例程序

前面一部分是介绍,后面有示例 1.网络中进程之间如何通信? 首要解决的问题是如何唯一标识一个进程,否则通信无从谈起!在本地可以通过进程PID来唯一标识一个进程,但是在网络中这是行不通的.其实TCP/IP协议族已经帮我们解决了这个问题,网络层的"ip地址"可以唯一标识网络中的主机,而传输层的"协议+端口"可以唯一标识主机中的应用程序(进程).这样利用三元组(ip地址,协议,端口)就可以标识网络的进程了,网络中的进程通信就可以利用这个标志与其它进程进行交互. 使用TCP