Modbus-RTU功能码

这篇具有很好参考价值的文章主要介绍了Modbus-RTU功能码。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。


以下图片中的帧解析都不含站号和校验码

01读线圈

在一个远程设备中,使用该功能码读取线圈的 1 至 2000 连续状态。请求 PDU (功能码-地址-数据)详细说明了起始地址,即指定的第一个线圈地址和线圈编号。从零开始寻址线圈。因此寻址线圈 1-16 为 0-15(PLC地址一般也是这样,寄存器1在modbus协议中地址编号为0)。
根据数据域的每个比特将响应报文中的线圈分成为一个线圈。指示状态为 1= ON 和 0= OFF。第一个数据字节的 LSB(最低有效位)包括在询问中寻址的输出。其它线圈依次类推,一直到这个字节的高位端为止,并在后续字节中从低位到高位的顺序。
如果返回的输出数量不是八的倍数,将用零填充最后数据字节中的剩余比特(一直到字节的高位端)。字节数量域说明了数据的完整字节数。
Modbus-RTU功能码
Modbus-RTU功能码
*N=输出数量/8,如果余数不等于 0,那么N = N+1
Modbus-RTU功能码
Modbus-RTU功能码
将输出 27-20 的状态表示为十六进制字节值 CD,或二进制 1100 1101。输出 27 是这个字节的MSB,输出 20 是 LSB。
通常,将一个字节内的比特表示为 MSB 位于左侧,LSB 位于右侧。第一字节的输出从左至右为 27 至 20。下一个字节的输出从左到右为 35 至 28。当串行发射比特时,从 LSB 向 MSB 传输:20 . . .27、28 . . . 35 等等。
在最后的数据字节中,将输出状态 38-36 表示为十六进制字节值 05,或二进制 0000 0101。输出38 是左侧第六个比特位置,输出 36 是这个字节的 LSB。用零填充五个剩余高位比特。
注:用零填充五个剩余比特(一直到高位端)。

02读离散输入

在一个远程设备中,使用该功能码读取离散量输入的 1 至 2000 连续状态。请求 PDU 详细说明了起始地址,即指定的第一个输入地址和输入编号。从零开始寻址输入。因此寻址输入 1-16 为 0-15。
根据数据域的每个比特将响应报文中的离散量输入分成为一个输入。指示状态为 1= ON 和 0=OFF。第一个数据字节的 LSB(最低有效位)包括在询问中寻址的输入。其它输入依次类推,一直到这个字节的高位端为止,并在后续字节中从低位到高位的顺序。
如果返回的输入数量不是八的倍数,将用零填充最后数据字节中的剩余比特(一直到字节的高位端)。字节数量域说明了数据的完整字节数。
Modbus-RTU功能码
Modbus-RTU功能码将离散量输入状态 204-197 表示为十六进制字节值 AC,或二进制 1010 1100。输入 204 是这个字节的 MSB,输入 197 是这个字节的 LSB。
将离散量输入状态 218-213 表示为十六进制字节值 35,或二进制 0011 0101。输入 218 位于左侧第 3 比特,输入 213 是 LSB。
注:用零填充 2 个剩余比特(一直到高位端)。

03读保持寄存器

在一个远程设备中,使用该功能码读取保持寄存器连续块的内容。请求 PDU 说明了起始寄存地址和寄存器数量。从零开始寻址寄存器。因此,寻址寄存器 1-16 为 0-15。
将响应报文中的寄存器数据分成每个寄存器有两字节,在每个字节中直接地调整二进制内容。
对于每个寄存器,第一个字节包括高位比特,并且第二个字节包括低位比特。
Modbus-RTU功能码
Modbus-RTU功能码
Modbus-RTU功能码
将寄存器 108 的内容表示为两个十六进制字节值 02 2B,或十进制 555。将寄存器 109-110 的内
容分别表示为十六进制 00 00 和 00 64,或十进制 0 和 100。

04读输入寄存器

在一个远程设备中,使用该功能码读取 1 至大约 125 的连续输入寄存器。请求 PDU 说明了起始地址和寄存器数量。从零开始寻址寄存器。因此,寻址输入寄存器 1-16 为 0-15。
将响应报文中的寄存器数据分成每个寄存器为两字节,在每个字节中直接地调整二进制内容。
对于每个寄存器,第一个字节包括高位比特,并且第二个字节包括低位比特。
Modbus-RTU功能码
Modbus-RTU功能码
Modbus-RTU功能码
将输入寄存器 9 的内容表示为两个十六进制字节值 00 0A,或十进制 10。

05写单个线圈

在一个远程设备上,使用该功能码写单个输出为 ON 或 OFF。
请求数据域中的常量说明请求的 ON/OFF 状态。十六进制值 FF 00 请求输出为 ON。十六进制值00 00 请求输出为 OFF。其它所有值均是非法的,并且对输出不起作用。
请求 PDU 说明了强制的线圈地址。从零开始寻址线圈。因此,寻址线圈 1 为 0。线圈值域的常量说明请求的 ON/OFF 状态。十六进制值 0XFF00 请求线圈为 ON。十六进制值 0X0000 请求线圈为OFF。其它所有值均为非法的,并且对线圈不起作用。
正常响应是请求的应答,在写入线圈状态之后返回这个正常响应。
Modbus-RTU功能码
Modbus-RTU功能码

06写单个寄存器

在一个远程设备中,使用该功能码写单个保持寄存器。
请求 PDU 说明了被写入寄存器的地址。从零开始寻址寄存器。因此,寻址寄存器 1 为 0。
正常响应是请求的应答,在写入寄存器内容之后返回这个正常响应。
Modbus-RTU功能码
Modbus-RTU功能码
Modbus-RTU功能码

15写多个线圈

在一个远程设备中,使用该功能码强制线圈序列中的每个线圈为 ON 或 OFF。请求 PDU 说明了强制的线圈参考。从零开始寻址线圈。因此,寻址线圈 1 为 0。
请求数据域的内容说明了被请求的 ON/OFF 状态。域比特位置中的逻辑“1”请求相应输出为ON。域比特位置中的逻辑“0”请求相应输出为 OFF。
正常响应返回功能码、起始地址和强制的线圈数量。
Modbus-RTU功能码
这是一个请求从线圈 20 开始写入 10 个线圈的实例:
请求的数据内容为两个字节:十六进制 CD 01 (二进制 1100 1101 0000 0001)。使用下列方法,二进制比特对应输出。
Modbus-RTU功能码

传输的第一字节(十六进制 CD)寻址为输出 27-20,在这种设置中,最低有效比特寻址为最低输
出(20)。
传输的下一字节(十六进制 01)寻址为输出 29-28,在这种设置中,最低有效比特寻址为最低输出
(28)。
应该用零填充最后数据字节中的未使用比特。
Modbus-RTU功能码

16写多个寄存器

在一个远程设备中,使用该功能码写连续寄存器块(1 至约 120 个寄存器)。
在请求数据域中说明了请求写入的值。每个寄存器将数据分成两字节。
正常响应返回功能码、起始地址和被写入寄存器的数量。
Modbus-RTU功能码
Modbus-RTU功能码文章来源地址https://www.toymoban.com/news/detail-441583.html

到了这里,关于Modbus-RTU功能码的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • STM32硬件库(非HAL库)实现MODBUS RTU协议的03,06功能码(读以及与单个发送)

    本人软件工程专业,关于硬件只有408的基础,后续学习发现一些博主所讲以及b站上所给的教程并不是很清晰,故编写此文档供大家查看。 如果我说的地方哪里有问题,希望大家可以给出意见!(●ˇ∀ˇ●) 参考文档: Modbus通讯协议常用功能码解释_modbus功能码_Lee139499的博客

    2024年02月03日
    浏览(24)
  • Profibus-DP转modbus RTU网关modbus rtu协议

    捷米JM-DPM-RTU网关在Profibus总线侧实现主站功能,在Modbus串口侧实现从站功能。可将ProfibusDP协议的设备(如:E+H流量计、倍福编码器等)接入到Modbus网络中;通过增加DP/PA耦合器,也可将Profibus PA从站接入Modbus网络。在Modbus串口侧提供RS485和RS232两种电平接口。 捷米JM-DPM-RTU网关

    2024年02月10日
    浏览(32)
  • Modbus RTU通信应用

    1.1 概述         Modbus串行通信协议是Modicon公司在1970年开发的。         Modbus串行通信协议有Modbus ASCII和Modbus RTU两种模式,Modbus RTU协议通信效率较高,应用更加广泛。         Modbus RTU协议是基于RS232和RS485串行通信的一种协议,数据通信采用主从方式进行传送,主站

    2024年02月15日
    浏览(35)
  • MODBUS RTU通讯常见错误代码

    错误代码 MB_MASTER 报错8200(端口正忙于处理传送请求),如何处理? 此情况是由于MB_MASTER的DONE或ERROR均

    2024年02月13日
    浏览(40)
  • C# ModBus协议(RTU )详细指南

    ModBus协议:官方的解释是Modbus协议是一种通信协议,用于在自动化设备之间进行数据传输。它最初是由Modicon公司于1979年开发的,现在已成为工业界的一种通用协议。Modbus协议有多种变体,包括 Modbus-RTU、Modbus-TCP和Modbus-ASCII 等,其中Modbus-RTU是最常用的变体之一。Modbus协议基于

    2024年02月04日
    浏览(48)
  • modbus-tcp-rtu协议图表

    MODBUS TCP 读寄存器 请求 序号 意义 所占字节 字节存放格式 1 事务处理标识 2个字节 高字节在前 2 协议标识 2个字节 高字节在前 3 长度 2个字节 高字节在前 4 单元标识 1个字节 0x00-0xff 5 功能码 1个字节 0x03 6 起始寄存器地址 2个字节 高字节在前 7 寄存器个数 2个字节 高字节在前

    2024年01月23日
    浏览(27)
  • Modbus RTU通讯实例:安科瑞电表通讯

    方法有两种,一种是从电表的侧面直接查看,端子为30、31分A、B两种,A+、B-接USB线的相应位置如下图 第二则是从用户手册里读取,有需要的朋友可以私信我,无偿。 我用的是dtech的usb2.0转422RS485线,一般在内部就有二维码,可以下载出来串口驱动 我这里使用的是HslCommunica

    2024年02月14日
    浏览(33)
  • STM32开发之Modbus协议(RTU从站)

    说明 1、本文不做协议格式的讲解,只做实现,如需了解协议格式,自行搜索 2、本文不依赖于硬件相关的资源,建立在硬件通讯之上,通过回调的形式和对应的硬件进行关联 3、相关协议内容参照,上一篇RTU主站 宏定义(modbus_core_define) crc校验(modbus_core_crc) 头文件 源文件

    2024年02月11日
    浏览(30)
  • STM32开发之Modbus协议(主站RTU)

    在单片机方面,针对于通讯常用的协议之一modbus,这里将modbus协议和硬件之间的关系完全独立出来,硬件和协议之间的联系采用的是回调的方式进行一个关联。 1、此协议可直接移植,并不需要关心硬件相关的。 2、modbus相关协议概念自行查找,本文只做代码的实现。 宏定义(

    2024年02月12日
    浏览(34)
  • MODBUS RTU 通信协议 CRC16校验算法

    CRC校验码是一个2个字节(16位二进制)的数。 发送端:发送的数据计算CRC校验码----发送:数据+CRC校验码 接收端:收到数据后重新计算CRC校验码,然后和接收到数据中的CRC校验码进行比较,判断是否相等。 如果不相等:数据传输过程中出错,给出错误应答。 CRC16 校验源码

    2024年02月16日
    浏览(39)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包