MODBUS协议地址类型全解析【详解】.docxVIP

  • 1
  • 0
  • 约1.8千字
  • 约 4页
  • 2026-02-03 发布于江苏
  • 举报

MODBUS协议地址类型全解析【详解】

对于工业自动化领域的工程师和开发者而言,MODBUS协议是通信标准中的常客。然而,协议中诸如0x、1x、3x、4x等设备类型地址,常常让初学者感到困惑。这些地址类型究竟是什么?它们与PLC的实际物理点位如何对应?又分别支持哪些读写操作?本文将系统性地解析这些核心概念,并提供清晰的对照指南。

理解基础:地址类型与物理映射

首先需要明确,MODBUS协议中的这些地址类型(有时也称为“引用类型”或“数据表”),其设计源于早期的ModiconPLC内存区域划分。它们本质上是一种对设备内部数据空间的逻辑编址方式,与PLC的物理输入输出点位和数据存储区存在典型的映射关系:

0x(线圈Coils):通常映射到PLC的数字量输出点。可读可写,代表一个开关量输出状态。

1x(离散输入DiscreteInputs):通常映射到PLC的数字量输入点。只读,代表一个开关量输入状态。

3x(输入寄存器InputRegisters):通常映射到PLC的模拟量输入通道或只读的数据区。只读,用于存放16位的数据。

4x(保持寄存器HoldingRegisters):通常映射到PLC的数据寄存器(如D寄存器)。可读可写,是MODBUS中最常用的数据交换区域,用于存放各种参数、设定值等。

理解这一层映射关系,是正确使用MODBUS地址的关键第一步。

各地址类型功能详解与对比

下表汇总了常见MODBUS地址类型的关键属性,包括其通用名称、读写特性、对应的标准功能码及其含义。

MODBUS常见地址类型功能对照表

地址类型

通用名称

读写属性

支持的功能码(Hex)

功能码含义

典型PLC映射

0x

线圈

可读可写

01

读线圈状态

数字量输出点(Q/Y)

05

写单个线圈

0F

写多个线圈

1x

离散输入

只读

02

读离散输入状态

数字量输入点(I/X)

3x

输入寄存器

只读

04

读输入寄存器

模拟量输入(AI)

4x

保持寄存器

可读可写

03

读保持寄存器

数据寄存器(D,V)

06

写单个寄存器

10

写多个寄存器

6x

-

可读可写

03

读保持寄存器

特定设备的数据区

06

写单个寄存器

重要说明与扩展类型:

1、5x地址类型:其功能码支持与4x(保持寄存器)完全一致。它们的关键区别在于数据字节的解析顺序(字节序)。当处理32位、64位等多字节数据时,使用4x和5x读取同一数据,其高、低字节或高、低字在报文中的排列顺序可能是相反的。例如,一个32位无符号整数0从同一设备用4x地址读取的原始寄存器序列可能是[0x1234,0x5678],而用5x地址读取则可能得到[0x5678,0x1234]。这在对接不同厂商设备时需特别注意。

2、3x_bit与4x_bit:这两种是上述3x和4x的变体。它们使用相同的读功能码(04H和03H),但目标不同。

3x/4x:读取的是整个16位寄存器的值。

3x_bit/4x_bit:用于读取某个特定寄存器中某一个二进制位(Bit)的状态。这常用于从模拟量数据或状态字中提取特定的标志位,而无需客户端解析整个数据字。

应用选择与注意事项

如何选择:选择地址类型首先取决于你要访问的数据的物理性质(是开关量输入/输出,还是模拟量或数据)和访问需求(只需读取,还是需要读写)。例如,要读取一个传感器的开关状态,应使用1x;要设定一个变频器的频率,则应写入4x或6x。

功能码的选用:05和06用于写入单个点位或寄存器,而0F和10用于批量写入,效率更高。在实际主站编程时,需根据从站设备支持情况和操作需求选择。

地址偏移:需注意,协议中的地址编号通常是从0开始的,但有些软件或设备手册可能显示为从1开始(即“协议地址”+1)。在配置时务必确认设备定义的地址偏移量。

数据格式:寄存器(3x,4x,5x,6x)存放的是16位数据。对于浮点数、长整数等,需要按照设备规定的格式(如ModbusRTU32-bitFloat)在多个连续寄存器中组合解析,并同样要注意前述的字节序问题。

掌握这些地址类型的区别与联系,是构建稳定、准确MODBUS通信的基础。建议在实际项目中,结合设备手册和本文的对照表进行配置与调试。

文档评论(0)

1亿VIP精品文档

相关文档