前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >详解Modbus协议功能码

详解Modbus协议功能码

作者头像
Hello工控
发布2024-06-26 09:04:44
780
发布2024-06-26 09:04:44
举报
文章被收录于专栏:Hello工控Hello工控

我们上期重点介绍了常用的几种功能码:

Modbus协议这些功能码(01,02,03,04,05,15,16等等)你都用过吗?

当然完整的可以查看Modbus官方的文档的第6章节:

我们这里针对其中几种详细的展开说明。

01(0x01) Read Coils

功能码01 (01十六进制) 读取线圈

功能:读取从机中离散线圈的开/关状态。

请求(Request)

请求消息指定要读取的起始线圈和线圈数量。

示例:从从站设备地址4读取地址10...22(线圈11到23)的13个线圈的请求:

响应(Response)

线圈状态响应消息以数据字段的每个位表示一个线圈的状态。状态表示为:1表示开(ON),0表示关(OFF)。第一个数据字节的最低位包含请求中指定地址的线圈状态。其他线圈按顺序向该字节的高字节端排列,并且在后续字节中从低字节到高字节排列。如果返回的线圈数量不是8的倍数,则最终数据字节中的剩余位将用零填充(向字节的高字节端)。字节计数字段指定了完整数据字节的数量。

以下是对请求的响应示例:

注意:LRC代表纵向冗余校验(Longitudinal Redundancy Check),是一种错误检测方法。CR LF代表回车换行,是结束字符

状态转移图

下图是读线圈这类事务状态转移图:

关于mb_req_pdu的说明,可参考:聊聊三种不同的Modbus协议PDU(Modbus协议帧结构)

03(0x03) Read Hoding Register

功能码03 (03十六进制) 读取保持寄存器

功能:读取从机中保持寄存器的二进制内容。

请求(Request)

请求消息指定要读取的起始寄存器和寄存器数量。

示例:从从站设备1读取0...1(寄存器40001到40002)的请求:

响应(Response)

响应消息中的寄存器数据,每个寄存器由两字节组成,每个字节内的二进制内容右对齐。对于每个寄存器,第一个字节包含高字节位,第二个字节包含低字节位。

以下是对请求的响应示例:

注意:LRC代表纵向冗余校验(Longitudinal Redundancy Check),是一种错误检测方法。CR LF代表回车换行,是结束字符

状态转移图

下图是读保持寄存器这类事务状态转移图:

05(0x05)Write Singal Coil

功能码05 (05十六进制) 写入单个线圈

功能:将单个线圈写入开(ON)或关(OFF)状态。

请求(Request)

请求消息指定要写入的线圈引用。线圈的地址从0开始,线圈1的地址为0。

请求的开/关状态由请求数据字段中的常数指定。十六进制的FF 00值请求将线圈设置为开(ON)。十六进制的00 00值请求将其设置为关(OFF)。所有其他值都是非法的,不会影响线圈。

以下是写入从站设备17中线圈173(地址172(0xAC))为开状态的请求示例:

响应(Response)

正常响应是请求的回声,在写入线圈状态后返回。以下是对请求的响应示例:

状态转移图

下图是写单个线圈这类事务状态转移图:

16(0x10)Write Multiple Registers

功能码16 (10十六进制) 写入多个寄存器

将一系列值写入到一系列保持寄存器中。

请求(Request)

请求消息指定要写入的寄存器引用。寄存器的地址从0开始,寄存器1的地址为0。

请求写入的值在请求数据字段中指定。数据按每寄存器两字节组成。

以下是写入从站设备17的40002开始的两个寄存器(4个字节),写入十六进制值00 0A和01 02的请求示例:

响应(Response)

正常响应返回从机地址、功能码、起始地址和已写入的寄存器数量。以下是对上述请求的响应示例:

状态转移图

下图是写多个寄存器这类事务状态转移图:

好了,关于最常用的几种功能码的功能介绍、请求及响应方式、还有状态转移逻辑图归纳完毕,如果还需要查看其他功能码,请看参考链接的内容。

参考链接:

  1. https://modbus.org/docs/Modbus_Application_Protocol_V1_1b.pdf
  2. https://www.modbustools.com/modbus.html

--------END--------

喜欢本文请在下方分享及“点赞”和“在看”

本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2024-06-25,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 Hello工控 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档