ModbusRTU 功能

测试工具:信捷 T-com 串口调试工具代替触摸屏;

测试设备:信捷 PLC ;                                                              

PLC 的内部软元件编号与 Modbus-RTU 地址编号请参考信捷 PLC Modbus 通讯功能章节。

Modbus 功能代码:

功能码(16 进制)功能
01读多个位
03读多个寄存器
05写单个位
06写单个寄存器
0F写多个位
10写多个寄存器

通讯格式:波特率 19200,偶校验(EVEN), 数据位 8 位,  停止位 1 位。

注意: 以下测试地址都是十六进制地址, 实际操作需将十六进制地址转换成十 进制地址输入到触摸屏中。

1.    01 功能码:  读取多个线圈位操作

例如:读取线圈 0X4800~0X4815 的位状态。

0X4800~0X4807:PLC Y0~Y7       0X4808~0X4815:PLC Y10~Y17

发送命令: 01 01 48 00 00 10 2A 66

动作设备号 (1 Byte)功能码 (1 Byte)起始地址  高位(1 Byte)起始地址  低位(1 Byte)总位数高位(1 Byte)总位数低位(1 Byte)CRC(1 Byte) (1 Byte)
发送0101480000102A66

返回命令: 01 01 02 00 00 B9 FC

动作设备号 (1 Byte)功能码 (1 Byte)字节数 (2 Byte)位状态  (On/Off)位状态  (On/Off)CRC(1 Byte) (1 Byte)
返回 ON010102FF03B80D
返回 Off0101020000B9FC

2.    03 功能码:  读取多个字操作(数据显示)

例如:读取 4X00~4X02 的数据。

4X000~4X003 :PLC D0~D2

4X00 = 4, 4X01= 5, 4X001= 1, 4X02= 2

发送命令: 01 03 00 00 00 04 44 09

动作设备号 (1 Byte)功能码 (1 Byte)起始地址  高位(1 Byte)起始地址  低位(1 Byte)总位数高位(1 Byte)总位数低位 (1 Byte)CRC(1 Byte) (1 Byte)
发送0103000000044409

发送命令: 01 03 08 00 04 00 05 00 01 00 02 CC 16

动 作设备号(1 Byte)功能码(1 Byte)字节数 (1Byte)寄 存 器 值高位 4X00寄 存 器 值低位 4X00寄存器值 高位    4X01寄存器值 低位    4X01寄 存 器 值高位 4X02寄 存 器 值低位 4X02
返 回010308000400050001
      寄存器值 高位    4X023寄存器值 低位    4X023CRC 
      0002CC16

3.    05 功能码:  写单个位操作(按钮)

例如:  置 ON 0X4800

0X4800 :PLC Y0

发送命令: 01 05 48 00 FF 00 9B 9A

动 作设备号(1 Byte)功能码(1 Byte)起始地址高 位(1 Byte)起始地址低 位(1 Byte)总位数 高 位 (1 Byte)总位数 低 位 (1 Byte)CRC(1Byte)(1Byte)
发 送01054800FF009B9A

返回命令: 01 05 48 00 FF 00 9B 9A

动作设备号(1 Byte)功能码(1 Byte)起始地址高位(1 Byte)起始地址低位(1 Byte)总位数高位(1 Byte)总位数低位(1 Byte)CRC(1 Byte)(1 Byte)
返回01054800FF009B9A

例如:置 OFF    0X4800

0X4800 :PLC Y0

发送命令: 01 05 48 00 00 00 DA 6A

动作设备号 (1 Byte)功能码 (1 Byte)起始地址  高位(1 Byte)起始地址  低位(1 Byte)总位数高位 (1 Byte)总位数低位 (1 Byte)CRC(1 Byte)(1 Byte)
发送010548000000DA6A

返回命令: 01 05 48 00 00 00 DA 6A

动作设备号 (1 Byte)功能码 (1 Byte)起始地址  高位(1 Byte)起始地址  低位(1 Byte)总位数高位 (1 Byte)总位数低位 (1 Byte)CRC(1 Byte) (1 Byte)
返回010548000000DA6A

4.    06 功能码:  写单个字操作

例如:  地址 4X00 写数据 8

4X00 :PLC D0

发送命令: 01 06 00 00 00 08 88 0C

动作设备号 (1 Byte)功能码(1 Byte)起始地址 高位(1 Byte)起始地址 低位(1 Byte)寄存器值 高位(1 Byte)寄存器值 低位(1 Byte)CRC     (1 Byte) (1 Byte)
发送010600000008880C

返回命令: 01 06 00 00 00 08 88 0C

动作设备号 (1 Byte)功能码(1 Byte)起始地址 高位(1 Byte)起始地址 低位(1 Byte)寄存器值 高位(1 Byte)寄存器值 低位(1 Byte)CRC     (1 Byte) (1 Byte)
返回010600000008880C

5.    10 功能码:  写多个字操作(数据输入写双字 Dword)

例如:  分别给地址 4X00 写数据 10, 4X01 写数据 11, 4X02 写数据 12

4X00~4X02 :PLC D0~D2

发送命令: 01 10 00 00 00 03 06 00 0A 00 0B 00 0C 0F 46

动 作设 备 号(1功 能 码(1起始地址 高位(1 Byte)起始地址 低位(1 Byte)寄存器  总数高位 (1 Byte)寄存器  总数低位 (1 Byte)寄存器  总字节数 (1 Byte)寄存器 值高位寄存器值 低位(1 Byte)
 Byte)Byte)     (1Byte) 
发 送01100000000306000A
    寄存器值 高位(1 Byte)寄存器值 低位(1 Byte)寄存器值 高位(1 Byte)寄存器值 低位(1 Byte)CRC 
    000B000C0F46

返回命令: 01 10 00 00 00 03 80 08

动作设备号(1 Byte)功能码(1 Byte)起始地址高位(1 Byte)起始地址低位(1 Byte)寄存器总数高位(1 Byte)寄存器总数低位(1 Byte)CRC(1 Byte) (1 Byte)
发送0110000000038008

6.    0F 功能码:  写多个位操作

例如:  置 ON 0X4800~0X4803

0X4800~0X4807:PLC Y0~Y7 0X4810 :PLC Y10

发送命令: 01 0F 48 00 00 09 02 FF 01 AD 48

动作设备号 (1 Byte)功能码 (1 Byte)起始地址 高位(1 Byte)起始地址 低位(1 Byte)位总数 高位  (1 Byte)位总数 低位  (1 Byte)寄位总 字节数 (1 Byte)位的值 低位  (1Byte)位的值 高位  (1Byte)
发送数据010F4800000902FF01
        CRC 
        AD48

返回命令: 01 0F 48 00 00 09 82 6D

动作设备号 (1 Byte)功能码 (1 Byte)起始地址高位 (1 Byte)起始地址低位 (1 Byte)位总数高位(1 Byte)位总数低位(1 Byte)CRC 
返回010F48000009826D

相关新闻

  • RS-485总线优化指南:解决不同设备通讯中的电平不稳定问题

    RS-485总线优化指南:解决不同设备通讯中的电平不稳定问题

    RS-485总线应用中,时常会遇到不同的RS-485设备之间通讯,不同的设备间兼容性存在不同,有的设备很稳定,有的设备却时常收到异常数据,这是什么原因导致的呢?又应如何避免呢? RS-485应用异常 某储能客户在使用ZLG的全隔离RS-485收发芯片SM4500过程中,时常会出现数据不稳定情况,如下图 1,客户设备与不同的RS-485设备通讯时,有的设备通讯稳定,有的设备则时不时会收到异常电平。 图1 SM4500应用简图经过测试发现客户板卡RS-485通道在空闲时,总线电平处于0电位。如图 1…

    Modbus技术文档 2024年2月20日
  • Modbus Poll 异常功能解释与详细说明

    Modbus Poll 异常功能解释与详细说明

    Modbus Poll是一种广泛用于Modbus通信协议的测试工具,它允许用户模拟主设备(通常是客户端)与从设备(通常是服务器)之间的通信,以验证通信的正常性。在Modbus Poll的使用中,用户可能会遇到各种异常功能,这些异常功能对于故障诊断和问题解决至关重要。本文将深入探讨Modbus Poll中的异常功能,为用户提供详细的解释和说明。 Modbus Poll 异常功能的概述 Modbus Poll异常功能是指在使用该工具时可能出现的不正常行为或错误情况。这些异常功能是用户了解问题并采取适…

    Modbus技术文档 2023年11月3日
  • Modbus异常相应代码说明

    Modbus异常相应代码说明

    Modbus通信协议是工业自动化中常用的协议,它允许主设备(通常是客户端)与从设备(通常是服务器)之间进行数据交换。在Modbus通信中,服务器(从设备)必须生成适当的响应来处理请求,并在必要时发送异常响应。本文将深入探讨Modbus响应的生成和异常处理。 Modbus响应类型 Modbus通信中,根据请求的处理结果,可以生成两种类型的响应: Modbus异常响应的目的 Modbus异常响应的主要目的是向客户端提供与请求处理过程中检测到的错误相关的信息。它帮助客户端了解通信问题的具体原因,从而采…

    Modbus技术文档 2023年11月3日
  • 在Modbus通讯中发送时间戳的参考方法

    在Modbus通讯中发送时间戳的参考方法

    在Modbus协议中嵌入时间戳需要一些谨慎考虑,因为Modbus本身没有定义专门的时间戳对象。以下是如何在Modbus(RS485)通信中发送时间戳的一些建议方法和步骤: 如何在Modbus (RS485)通信中发送时间戳 在工业自动化和远程监测应用中,时间戳对于确切的数据关联至关重要。尤其是在Modbus通信中,没有内置的时间戳机制,因此需要特别关注如何嵌入时间戳。以下是实现这一目标的方法和步骤: 步骤1:选择时间戳格式 首先,您需要选择适当的时间戳格式。常见的时间戳格式之一是使用POSIX(…

    Modbus技术文档 2023年10月31日
  • 渐进式解决Modbus通信问题的方法

    渐进式解决Modbus通信问题的方法

    在工业自动化领域,Modbus通信协议是一种常见的选择,但有时会出现通信问题。本文将介绍一些渐进式步骤,以帮助您排查和解决Modbus通信问题。 1:确认从站是否支持Modbus 首先,确保每个从站都真正支持Modbus协议。有时,设备具备Modbus连接器,但却没有可用的硬件或固件支持。因此,在问题排查的第一步,您需要验证每个从站是否具备硬件和固件支持,并且已启用Modbus功能。 2:选择协议 -Modbus RTU还是Modbus ASCII? Modbus协议有两种常见的变种:RTU和A…

    Modbus技术文档 2023年10月30日
  • Modbus如何读取单个及多个寄存器的方法

    Modbus如何读取单个及多个寄存器的方法

    当你涉及工业自动化、传感器和设备之间的通信时,Modbus协议通常会出现在你的工具箱中。Modbus是一种用于读取和控制设备数据的通信协议,它在工业控制系统中得到了广泛的应用。现在,让我们以小白理解的方式来解释Modbus如何读取保持寄存器的数据,包括单个寄存器和多个寄存器的读取。 什么是Modbus? Modbus是一种通信协议,用于连接各种工业设备、传感器和控制器。它允许这些设备之间进行数据交换,以实现监控、控制和数据采集。Modbus协议有不同的变种,包括Modbus RTU、Modbus…

    Modbus技术文档 2023年10月29日

发表回复

您的电子邮箱地址不会被公开。 必填项已用*标注

邮箱

cloud@modbus.cn

QQ
QQ
微信
微信
分享本页
返回顶部