Modbus TCP报文详解

一.Modebus协议构成

        Modbus TCP 通信协议包括3部分:报文头,功能码,数据。

         Modbus TCP/IP协议最大数据帧为260个字节。

二.MBAP报文头构成

        报文头一共占7个字节,他们分别是有事务处理标识符(2个字节),协议标识符(2个字节),长度(2个字节),单元标识符(1个字节)构成。

 三.功能代码

        功能代码占1个字节,主机给从机发送Modbus协议,从机根据功能码的不同完成不同的操作。

        再讲解功能码之前,先要了解一下寄存器。

     1.寄存器

        寄存器一共可以分成4种,分别是离散量输入,线圈,输入寄存器,保持寄存器。四种寄存器中又可以划分成两大类分别是:

        1)位寄存器(每个寄存器占1个字节):离散量输入  线圈

         工业上主要用于控制IO设备。

       线圈寄存器,类比为开关量,每一个bit都对应一个信号的开关状态。所以一个byte就可以同时控制8路的信号。比如控制外部8路io的高低。 线圈寄存器支持读也支持写,写在功能码里面又分为写单个线圈寄存器和写多个线圈寄存器。

        离散输入寄存器,离散输入寄存器就相当于线圈寄存器的只读模式,他也是每个bit表示一个开关量,而他的开关量只能读取输入的开关信号,是不能够写的。比如我读取外部按键的按下还是松开。

        2)字寄存器(每个寄存器占2个字节):输入寄存器  保持寄存器

        工业上主要用于存储工业设备的值。

        保持寄存器,这个寄存器的单位不再是bit而是两个byte,也就是可以存放具体的数据量的,并且是可读写的。比如我我设置时间年月日,不但可以写也可以读出来现在的时间。写也分为单个写和多个写

        输入寄存器,这个和保持寄存器类似,但是也是只支持读而不能写。一个寄存器也是占据两个byte的空间。类比我我通过读取输入寄存器获取现在的AD采集值

      2.功能代码

        根据四种不同的寄存器,一共可以分为8种功能代码。

        

 【1】读线圈状态:01H

 【2】读离散量输入线圈:02H

【3】读保持寄存器:03H

【4】读输入寄存器:04H

总结:读线圈(寄存器)询问报文模版:报文头  功能码  起始地址  读取个数

                                        应答报文模版:报文头  功能码  字节计数  数据

 【5】写单个线圈:05H

 从机回复的报文形式和主机发送的一模一样,只是为了告诉主机已经收到,所以这里不再赘述。

【6】写单个保持寄存器:06H

  从机回复的报文形式和主机发送的一模一样,只是为了告诉主机已经收到,所以这里不再赘述。

【7】写多个线圈:0FH

【8】写多个保持寄存器:10H

 总结:1)写单个线圈或保持寄存器

                模版:报文头  功能码  地址  写入的状态或数据(线圈就是改变通断状态,保持寄存器是写入数据)

             2)写多个线圈或保持寄存器

                模版:报文头  功能码  地址  个数  字节计数  数据

  • 26
    点赞
  • 42
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
ModbusPoll是一个模拟Modbus协议主机的上位机软件,主要用于模拟测试与其他从机设备通信的过程。它支持Modbus TCP/IP协议,可以通过图形化界面进行操作,具有异常报文检测、原始报文查看、数据记录等功能。在进行ModbusPoll TCP报文分析时,可以利用该软件来观察Modbus通信过程中的各种报文。通过ModbusPoll的功能,可以帮助我们对Modbus设备进行测试和调试,更好地理解和分析Modbus TCP报文的内容。<span class="em">1</span><span class="em">2</span><span class="em">3</span> #### 引用[.reference_title] - *1* [modbus学习1](https://blog.csdn.net/b_linile/article/details/100115591)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_1"}}] [.reference_item style="max-width: 33.333333333333336%"] - *2* [【工具使用】Modbus Poll软件使用详解](https://blog.csdn.net/XiaoTao_hu/article/details/129794849)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_1"}}] [.reference_item style="max-width: 33.333333333333336%"] - *3* [基于Python的ModbusTCP客户端实现详解](https://download.csdn.net/download/weixin_38560502/12861650)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_1"}}] [.reference_item style="max-width: 33.333333333333336%"] [ .reference_list ]
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值