modbus 功能码_Modbus常用功能码解释及示例(1)

Modbus在工业通信中有着广泛的应用,接下来的几篇文章,我们将给大家详细介绍下Modbus常用功能码的指令定义并给出示例。今天先来介绍下功能码01H和02H(名称中的H表示16进制数)。

1203bca1287c7d2dcf397a8638835386.png

1、功能码:01H

1)功能:读取从站(远程设备)的1~2000个连续线圈的状态数值;读取采用起始地址+线圈数量的方式;

2)操作方式:位操作;

3)说明:Modbus1号线圈的地址为0,2号线圈的地址为1,以此类推;因此,假设要读取1~10号线圈的值,其寄存器地址范围为:0~9;

4)发送指令示例:

假设从站地址为0x03,要读取编号从33~42的10个连续线圈的状态值,其寄存器地址范围为:0x0020~0x0029,则发送指令下图所示:

6aaf322700be47a46d3aeccd0264ae33.png

5)应答格式:

应答数据包括:从站地址+功能码+返回字节数+数据值+校验码

其中,线圈的状态以位的形式返回。状态为ON时,其值为1;状态为OFF时,其值为0;

数据以小端(Little Endian)的形式进行组织。即先存放LSB(最低权重位),再存放MSB。

每8个位组成一个字节,当线圈的数量不是8的倍数时,剩余的位数添0补位。

本例程读取10个线圈,10/8商1余2,因此需要2个字节存放应答数据。

字节1存放线圈编号33~40的数值(小端字节序,线圈40的值存放在bit7,线圈33的值存放在bit0);

字节2存放线圈编号41~42的数值,剩余位数添0补位;

假设线圈状态及数值如下面两张图所示:

8017ccd7fc8b32faab30f3753a449236.png
769d5a5b9b637bafc8ad235a0b0acb81.png

则,应答字节1的值为:11001011=0xCB;

应答字节2的值为:10=0x02

应答消息帧下图所示:

25fd6337bfcd5cf7ea44718e3d039632.png

2、功能码:02H

1)功能:读取从站1~2000个连续离散量输入的状态值;读取采用起始地址+通道数量的方式;

2)操作方式:位操作;

3)离散量输入通道地址编号从1开始,寄存器地址编号从0开始;

4)发送指令示例:

假设要读取从站地址为0x03的第110~119个数字量输入通道的数值,则发送指令如下图所示:

88f1f0a17f2d76eefa93ed977ad3119e.png

5)应答:应答格式与功能码01H类似

应答数据包括:从站地址+功能码+返回字节数+数据值+校验码

假设应答字节1的数据如下图所示:

6cbf3f69fd0316c8095240f07b7d0627.png

应答字节2的内容如下图所示:

e5feeb03d27a9665c6e43d0828ebbe35.png

应答消息帧如下图所示:

3615a562713cf0a43d02f9c5126f1557.png

好了,关于Modbus功能码01H和02H就先介绍到这里,如果你喜欢这篇文章,可以去官网(www.founderchip.com)下载本文PDF版本。

  • 2
    点赞
  • 12
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值