zoukankan      html  css  js  c++  java
  • modbus通信协议

     一、Modbus通信协议概述

          Modbus是一种串行通信协议,是Modicon公司(现在的施耐德电气 Schneider Electric)于1979年为使用可编程逻辑控制器(PLC)通信而发表。Modbus已经成为工业领域通信协议的标准,是工业电子设备之间非常常见的通信方式。

    二、Modbus寄存器地址

    1、Modbus寄存器类型

          Modbus中,寄存器可以分为两大类,分别为位变量(Coils)和整形变量(Registers)。每一种寄存器类型,根据读写方式的不同,又可分为两种只读(R)和读写(R/W)。

    2、Modbus寄存器地址

    三、Modbus功能码

    四、Modbus协议详解

    0x01(读线圈)

    请求:从机地址      功能码      寄存器起始地址H       寄存器起始地址L      读取数量H      读取数量L      CRCH      CRCL
    响应:从机地址      功能码      字节数量      读取数据      CRCH      CRCL  (一个地址的数据为1位,数据可能有多个字节)

    eg1:从从机0x01中,读取线圈寄存器起始地址为0x0001的寄存器数据,读1位

    请求:

            

    应答:

            

    eg2:从从机0x01中,读取线圈寄存器起始地址为0x0000的寄存器数据,读4位

    请求:

            

    应答:

            

    0x02(读离散量输入)

    请求:从机地址      功能码      寄存器起始地址H       寄存器起始地址L      读取数量H      读取数量L      CRCH      CRCL
    响应:从机地址      功能码      字节数量      读取数据      CRCH      CRCL  (一个地址的数据为1位,数据可能有多个字节)

    eg:从从机0x01中,读取离散量输入寄存器起始地址为0x0000的寄存器数据,读4位

    请求:

            

    应答:

            

    0x03(读保持寄存器)

    请求:从机地址      功能码      寄存器起始地址H       寄存器起始地址L      读取数量H      读取数量L      CRCH      CRCL
    响应:从机地址      功能码      字节数量      读取数据      CRCH      CRCL  (一个地址的数据为2个字节,数据可能有多个字节)

    eg1:从从机0x01中,读取保持寄存器起始地址为0x03E8的寄存器数据,读1个

    请求:

            

    应答:

            

    eg2:从从机0x01中,读取保持寄存器起始地址为0x03E8的寄存器数据,读3个

    请求:

            

    应答:

            

    0x04(读输入寄存器)

    请求:从机地址      功能码      寄存器起始地址H       寄存器起始地址L      读取数量H      读取数量L      CRCH      CRCL
    响应:从机地址      功能码      字节数量      读取数据      CRCH      CRCL  (一个地址的数据为2个字节,数据可能有多个字节)

    eg:从从机0x01中,读取输入寄存器起始地址为0x03E8的寄存器数据,读1个

    请求:

            

    应答:

            

    0x05(写单个线圈)

    请求:从机地址      功能码      寄存器地址H       寄存器地址L      输出值H      输出值L      CRCH      CRCL
    响应:从机地址      功能码      寄存器地址H       寄存器地址L      输出值H      输出值L      CRCH      CRCL

    eg:向从机0x01里,写入线圈寄存器起始地址为0x0000的数据0xFF00(打开,另关闭是0x0000)

    请求:

            

    应答:

            

    0x06(写单个保持寄存器)

    请求:从机地址      功能码      寄存器地址H       寄存器地址L      输出值H      输出值L      CRCH      CRCL
    响应:从机地址      功能码      寄存器地址H       寄存器地址L      输出值H      输出值L      CRCH      CRCL

    eg:向从机0x01里,写入保持寄存器地址为0x03EA的数据0x0002

    请求:

            

    应答:

            

    0x0F(写多个线圈)

    请求:从机地址      功能码      寄存器起始地址H       寄存器起始地址L      写入寄存器数量H       写入寄存器数量L      字节数量       输出值      CRCH      CRCL
    响应:从机地址      功能码      寄存器起始地址H       寄存器起始地址L      写入寄存器数量H       写入寄存器数量L      CRCH      CRCL

    eg:向从机0x01里,写入线圈寄存器起始地址为0x0000的数据0xFF00(打开,另关闭是0x0000),写入4位

    请求:

            

    应答:

            

    0x10(写多个保持寄存器)

    请求:从机地址      功能码      寄存器起始地址H       寄存器起始地址L      写入寄存器数量H       写入寄存器数量L      字节数量       输出值      CRCH      CRCL
    响应:从机地址      功能码      寄存器起始地址H       寄存器起始地址L      写入寄存器数量H       写入寄存器数量L      CRCH      CRCL

    eg:向从机0x01里,写入保持寄存器起始地址为0x03EA的数据0x00030000,写入了2个寄存器数据

    请求:

            

    应答:

            

    参考资料:modbus通讯协议详解

  • 相关阅读:
    hdu 6049 Sdjpx Is Happy
    L2-012. 关于堆的判断
    L2-010. 排座位
    L2-009. 抢红包
    L2-007. 家庭房产
    L2-008. 最长对称子串
    L2-011. 玩转二叉树
    l2-006 树的遍历
    l2-005
    l1-20 帅到没朋友
  • 原文地址:https://www.cnblogs.com/amanlikethis/p/13974414.html
Copyright © 2011-2022 走看看