Modbus寄存器类型

概述

一、线圈 (Coils)

1.2功能码

1.2.1详解

1.2.1.1读取线圈 (Coils)

1.2.1.2写入单个线圈

1.2.1.3写入多个线圈

1.3地址范围

1.4示例

二、离散输入 (Discrete Inputs)

2.1用途

2.2功能码

2.3地址范围

2.4存储

2.5读取操作

2.6响应格式

2.7读取过程

2.8示例

2.8.1构建请求

2.8.2发送请求

2.8.3接收响应

2.8.4解析响应

三、保持寄存器 (Holding Registers)

3.1用途

3.2功能码

3.2.1详解

3.2.1.1功能码:03,读取操作

3.2.1.2功能码:06,写单个保持寄存器

3.2.1.3功能码:16,写多个保持寄存器

3.3地址范围

3.4数据格式

3.5应用场景

3.6示例

3.6.1读取操作

3.6.2写入操作

3.7注意事项

四、输入寄存器 (Input Registers)

4.1用途

4.2功能码

4.2.1详解

4.2.1.1功能码

4.2.1.2请求格式

4.2.1.3响应格式

4.3地址范围

4.4数据格式

4.5示例

4.5.1确定寄存器类型

4.5.2选择功能码

4.5.3指定地址

4.5.4发送请求

4.5.5接收响应

4.6注意事项

五、举例说明


概述

在Modbus中,寄存器通常用于存储数据值,并可以通过不同的功能码来读取或写入这些值。Modbus 协议定义了几种不同的寄存器类型,每种类型都有其特定的用途。今天我们来详细介绍Modbus中常见的几种寄存器类型。

  • 线圈和离散输入通常用于表示二进制的状态,如开/关状态。
  • 保持寄存器和输入寄存器用于存储数值数据,如温度、压力等。
  • 寄存器地址以16位无符号整数表示的,从0x0000 (0) 开始,最大到0xFFFF (65535)。

一、线圈 (Coils)

1.1用途

用于表示二进制的状态(逻辑状态),如开关或继电器的位置,如ON/OFF或TRUE/FALSE。

1.2功能码

01 (Read Coils,读取线圈状态) 、05 (Write Single Coil,写单个线圈)、15(Write Multiple Coils,同时写入多个线圈的状态)。只读和可写两种

1.2.1详解

1.2.1.1读取线圈 (Coils)

功能码 01 (Read Coils)

  • 请求:发送一个包含起始地址和数量的请求。
  • 响应:接收一个包含线圈状态的数据包。
  • 数据格式:状态通常以位的形式存储在一个字节中,每个位对应一个线圈的状态。
1.2.1.2写入单个线圈

功能码 05 (Write Single Coil)

  • 请求:发送一个包含线圈地址和期望状态的请求。
  • 响应:接收一个确认写入成功的响应。
  • 数据格式:状态通常以位的形式发送,ON 为 1,OFF 为 0。
1.2.1.3写入多个线圈

功能码 15 (Write Multiple Coils)

  • 请求:发送一个包含起始地址、数量和期望状态的数据包。
  • 响应:接收一个确认写入成功的响应。
  • 数据格式:状态通常以位的形式发送,每个位对应一个线圈的状态。

1.3地址范围

通常从0x0000 (0) 开始,最大到0xFFFF (65535),但在实际应用中,线圈的地址范围可能会受到设备的限制。

1.4示例

如果我们要读取设备上的第1个线圈的状态,我们可以按照以下步骤来读取:

  • 选择功能码:使用功能码 01 (Read Coils)。
  • 确定地址:线圈的起始地址为 0x0000 (0)。
  • 发送请求:发送一个包含起始地址 0x0000 和数量 1 的请求。
  • 接收响应:接收包含线圈状态的数据包。
  • 解析响应:解析数据包中的位状态,确定线圈是否为 ON 或 OFF。

1.5注意事项

  • 地址映射:明确设备的线圈地址映射,不同的设备有不同的地址分配。
  • 兼容性:检查设备手册以及确认它支持的功能码。
  • 错误处理:处理可能会出现的通信错误或设备错误响应。

二、离散输入 (Discrete Inputs)

2.1用途

读取设备的状态信息,用于表示只读的二进制状态信息,例如传感器的状态、开关位置或其他布尔类型的输入。

2.2功能码

02 (Read Discrete Inputs,读取离散输入状态),用于从设备读取离散输入的状态。

2.3地址范围

通常从0x0000 (0) 开始,最大到0xFFFF (65535)。每个离散输入对应一个位,通常按字节组织,即每个字节包含8个离散输入。

2.4存储

离散输入通常存储在设备内部的RAM中,只读,不能通过Modbus写入。

2.5读取操作

通过功能码02读取离散输入的状态,请求中包括起始地址和要读取的数量。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

下一次春天見

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值