北岛夜话
原创工业智能控制领域(PLC、单片机/嵌入式、机器人、通信、机器视觉)的技术及经验分享。
文章528 浏览8061545

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

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

cover.png

1、功能码:01H
1)功能:读取从站(远程设备)的1~2000个连续线圈的状态数值;读取采用起始地址+线圈数量的方式;
2)操作方式:位操作;
3)说明:Modbus1号线圈的地址为0,2号线圈的地址为1,以此类推;因此,假设要读取1~10号线圈的值,其寄存器地址范围为:0~9;
4)发送指令示例:
假设从站地址为0x03,要读取编号从33~42的10个连续线圈的状态值,其寄存器地址范围为:0x0020~0x0029,则发送指令下图所示:

01_send_frame.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补位;
假设线圈状态及数值如下面两张图所示:

01_response_byte1.png/

01_response_byte2.png/

则,应答字节1的值为:11001011=0xCB;
应答字节2的值为:10=0x02
应答消息帧下图所示:

01_response_frame.png/

2、功能码:02H
1)功能:读取从站1~2000个连续离散量输入的状态值;读取采用起始地址+通道数量的方式;
2)操作方式:位操作;
3)离散量输入通道地址编号从1开始,寄存器地址编号从0开始;
4)发送指令示例:
假设要读取从站地址为0x03的第110~119个数字量输入通道的数值,则发送指令如下图所示:

02_send_frame.png/

5)应答:应答格式与功能码01H类似
应答数据包括:从站地址+功能码+返回字节数+数据值+校验码
假设应答字节1的数据如下图所示:

02_response_byte1.png/

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

02_response_byte2.png/

应答消息帧如下图所示:

02_response_frame.png/

好了,关于Modbus功能码01H和02H就先介绍到这里,欢迎扫描下方的二维码关注我们的微信公众号。

founderchip.png

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

来源:本站|   大小:485KB|   下载次数:2564次

取消

感谢您的支持,欢迎常来看看!

扫码支持
一点动力,多少随意

打开支付宝扫一扫,即可进行扫码打赏哦

发表评论