Modbus常用功能码详解

01H–读线圈状态

  1. 描述:读从站(Slave)线圈寄存器,位操作,可读单个或者多个
  2. 主站发送请求:假设从站地址为1,寄存器开始地址0x0023,寄存器结束地址0x0038,总共读取21个线圈。协议格式如下:
    在这里插入图片描述
  3. 从站响应主站请求:返回数据的每一位对应线圈状态:1-ON,0-OFF
    在这里插入图片描述
    3.1 数据Byte1表示0x0023~0x002A的线圈状态,Byte1的最低位代表最低地址的线 圈状态,可以理解为小端模式
    在这里插入图片描述
    3.2 数据Byte2表示0x002B~0x0032的线圈状态
    在这里插入图片描述
    3.3 数据Byte3表示0x0033~0x0037的线圈状态,不够8位,字节高位填充为0
    在这里插入图片描述

02H–读离散输入状态

  • 读离散输入寄存器,位操作,可读单个或多个,协议类似功能码0X01协议

03H–读保持寄存器

  1. 描述:读保持寄存器,字节指令操作,可读单个或者多个(保持寄存器是一个字:word)
  2. 主站发送请求:从站地址0x01,保持寄存器起始地址0x0032,读2个保持寄存器
    在这里插入图片描述
  3. 从站响应主站请求
    在这里插入图片描述
    数据存储顺序
    在这里插入图片描述

04H–读输入寄存器

  1. 描述:读输入寄存器,字节指令操作,可读单个或者多个
  2. 主站发送请求:同0x03功能码
  3. 从站响应主站请求:同0x03功能码

05H–写单个线圈

  1. 描述:写单个线圈,位操作,只能写一个,写0xFF00表示设置线圈状态为ON,写0x0000表示设置线圈状态为OFF
  2. 主站发送请求:设置0x0032线圈为ON
    在这里插入图片描述
  3. 从站响应主站请求:同发送指令

0FH–写多个线圈

  1. 描述:写多个线圈寄存器。若数据区的某位值为“1”表示被请求的相应线圈状态为ON,若某位值为“0”,则为状态为OFF
  2. 主站发送请求:线圈地址为0x04A5,写12个线圈
    在这里插入图片描述
  • DATA1的数据为0x0C
    在这里插入图片描述
  • DATA2的数据为0x02,不够8位,字节高位填充0
    在这里插入图片描述
  1. 从站响应主站请求
    在这里插入图片描述

06H–写单个保持寄存器

  1. 描述:写单个保持寄存器,字节指令操作,只能写一个
  2. 主站发送请求:写0x0032保持寄存器为0x1232
    在这里插入图片描述
  3. 从站响应主站请求:同发送指令

10H–写多个保持寄存器

  1. 描述:写单个保持寄存器,字节指令操作,只能写一个
  2. 主站发送请求:保持寄存器起始地址为0x0034,写2个寄存器4个字节的数据
    在这里插入图片描述
    数据存储顺序
    在这里插入图片描述
  3. 从站响应主站请求
    在这里插入图片描述
发布了13 篇原创文章 · 获赞 2 · 访问量 300

猜你喜欢

转载自blog.csdn.net/MOOG007/article/details/104776680