zoukankan      html  css  js  c++  java
  • modbus tcp数据报文结构

    modbus tcp数据报文结构

    请求:00 00 00 00 00 06 09 03 00 00 00 01

    响应:00 00 00 00 00 05 09 03 02 12 34

      一次modbus tcp读取保持寄存器的通信分析(省略了ip/tcp头):从左向右分析该数据报文:

    请求:

    00 00为此次通信事务处理标识符,一般每次通信之后将被要求加1以区别不同的通信数据报文;

    00 00表示协议标识符,00 00为modbus协议;

    00 06为数据长度,用来指示接下来数据的长度,单位字节;

    09为设备地址,用以标识连接在串行线或者网络上的远程服务端的地址。以上七个字节也被称为modbus报文头;

    03为功能码,此时代码03为读取保持寄存器数据;

    00 00为起始地址; (word数量)。

    00 01为寄存器数量,(word数量)。

    //modscan32 里面的 (address-1)*2=点位里面设置的地址
    //modscan32 下面显示 的地址 是以字为单位,不是字节

    响应:

    00 00为此次通信事务处理标识符,应答报文要求与先前对应的请求保持一致;

    00 00为协议标识符,与先前对应的请求保持一致;

    00 05为数据长度,用来指示接下来数据的长度,单位字节;

    09为设备地址,应答报文要求与先前对应的请求保持一致;

    03为功能码,正常情况下应答报文要求与先前对应的请求保持一致,如果出错则返回80h+先前的功能码;

    02指示接下来数据的字节长度;

    12 34为被读取的保持寄存器中的数据值,即要求被读取的地址为00 00的保持寄存器中的数值为1234h。

    >>4c 00 00 00 00 06 01 03 0000 0006

    4c 请求回应 计数,
    00 00 00 00 固定头
    06 包长度 6个字节内容
    01 03 00 00 00 0a
    01 device id 01
    03 功能码
    0000 addreess:0001
    0006 length 6


    <<4c 00 00 00 00 0f 01 03 0c 3f 80 00 00 40 00 00 00 40 40 00 00

    4c 请求回应 计数,
    00 00 00 00 固定头
    0f 包长度 15个字节内容
    01 deviceid 01
    03 功能码
    0c 长度 3*4=12==0x0c


    3d000000000608030015000a
    >>3d 00000000 06 08 03 0015 000a

    3d 自增加索引
    00000000 固定
    06 长度
    08 deviceid
    03 功能码
    0015 addreess
    000a 长度 10

    7a0000000017080314405333334053333340533333
    <<3d 00000000 17 08 03 14 3f 8c cc cd 40 0c cc cd 40 53 33 33 40 8c cc cd 40 b0 00 00

    3d 自增加索引
    00000000 固定
    17 长度 5个点的数据*4=20==0x14 5个点的数据*4+3个字节标识=23==0x17
    08 deviceid
    03 功能码
    14 后面的长度

    全发float
    40533333 -> 3.30
    408ccccd -> 4.40

  • 相关阅读:
    windows注册服务
    比特币用户阶层和开发阶层之间的恩怨情仇
    陷门函数Trapdoor Function
    什么是混币、环签名、同态加密、零知识证明
    环签名:打开匿名的大门
    一个数独引发的惨案:零知识证明(Zero-Knowledge Proof)
    firefox浏览器不能使用window.close的解决方案
    Swift编程语言资料合集
    程序员的十大烦恼
    Net上传附件大小控控值(转)
  • 原文地址:https://www.cnblogs.com/bleachli/p/9327558.html
Copyright © 2011-2022 走看看