找回密码
 立即注册

QQ登录

只需一步,快速开始

查看: 1059|回复: 10

谈谈MODBUS协议数据模型和地址模型

  [复制链接]
  • 打卡等级:即来则安
  • 打卡总天数:27
  • 打卡月天数:6
  • 打卡总奖励:7736
  • 最近打卡:2025-12-20 00:35:11

3317

主题

285

回帖

2万

积分

管理员

积分
23881
发表于 2024-11-5 23:18:15 | 显示全部楼层 |阅读模式
在使用MODBUS协议编程的时候,会遇到诸如40001、10001之类的地址,这究竟是代表什么意思呢?昌晖仪表来谈谈MODBUS协议的数据模型和地址模型,这样大家就能理解这个问题。

1、MODBUS协议的数据模型

数据模型是对可访问数据的一种抽象,MODBUS协议的数据模型定义了四种可访问的数据,分别是:
◆离散量输入(Discrete Input);
◆线圈(Coils);
◆输入寄存器(Input registers);
◆保持寄存器(Holding registers);
其中,离散量输入和线圈只支持以位(bit)的方式进行访问,输入寄存器和保持寄存器只支持以字(WORD)的方式进行访问;离散量输入和输入寄存器只支持以只读的方式进行访问,而线圈和保持寄存器既可以读也可以写。

数据模型中成员的特点如下面的表格所示:

MODBUS协议定义的数据模型

区块 访问长度 访问方式 说明

离散量输入 位(bit) 只读 数据由IO系统提供
线圈 位(bit) 读/写 可通过应用程序改写
输入寄存器 字(word) 只读 数据由IO系统提供
保持寄存器 字(word) 读/写 可通过应用程序改写

既然数据模型是一种抽象,在实际使用时必须将其映射到真实的物理存储区才能被访问。

MODBUS协议允许设备将四种数据分别映射到不同的存储区块中,各个区块之间相互独立,使用不同的功能码可读取到不同的数值,如下图所示:


图1 MODBUS数据模型映射到不同的存储区块

MODBUS协议也允许设备将四种数据映射到同一存储区块中,这样通过不同的功能码读取数据可能会得到相同的数据(比如:输入寄存器和保持寄存器为同一物理区块),如下图所示:


图2 MODBUS数据模型映射到同一区块

数据模型中的每一种数据都最多允许有65536个元素(编号1-65536),元素的地址编号从0开始,因此地址的范围为:0-65535。需要说明的是:65536只是协议允许的最大元素范围,但并不要求全部实现。MODBUS协议允许设备根据自己的实际情况实现部分元素,甚至不要求实现模型中全部四种数据;

2、MODBUS协议的地址模型
为了简化数据模型与设备存储区的对应关系,引入了一种地址模型。该模型通过编号的方式对不同类型数据进行区分,各数据的地址编号请看下面的表格:
MODBUS地址模型

MODBUS数据模型/数据区 MODBUS地址编号

线圈 0
离散量输入 1
输入寄存器 3
保持寄存器 4

MODBUS地址模型的编号从1开始。

由于每一种数据都最大支持65536个元素,因此理论上,对于线圈型数据来说,其地址范围为000001-065536;类似的,离散量输入,其地址范围为100001-165536;输入寄存器,其地址范围为300001-365536;保持寄存器,其地址范围为400001-465536。

由于65536是比较大的数值,实际应用一般不需要这么大的存储区,因此PLC厂家普遍采用的是10000以内的地址范围,即:线圈地址范围为00001-09999;离散量输入地址范围为10001-19999;输入寄存器地址范围为30001-39999;保持寄存器地址范围为40001-49999。

有了该地址模型,我们就可以从MODBUS寄存器的地址判断要访问的区块的类型。比如本文开头提到到地址40001就是保持存储器的第一个值的地址,而10001就是离散量输入的第一个值的地址;要注意的是,保持寄存器和输入寄存器的每个值的大小为16bits(字),而线圈和离散量输入每个值的大小为1bit(位)。

各PLC厂家根据PLC的实际情况,将MODBUS的地址模型映射到实际的存储区。一般来说,线圈对应过程输出映像区(Q);离散量输入对应过程输入映像区(I);输入寄存器对应模拟量输入(AI);保持寄存器对应数据块或V存储区或M存储区。以西门子S7-200 SMART为例,其MODBUS地址与存储器地址的对应关系如下表所示:

MODBUS地址 S7-200 SMART存储区

00001-00256 Q0.0-Q31.7
10001-10256 I0.0-I31.7
30001-30056 AIW0-AIW110
40001-4×××× V-V+2*(××××-1)

MODBUS地址模型对于MODBUS-RTU/ASCII和MODBUS-TCP协议都是适用的。

好了,关于MODBUS的地址模型与数据模型昌晖仪表就先介绍到这里。


工控课堂 www.gkket.com

0

主题

101

回帖

149

积分

新手上路

积分
149
发表于 2025-11-14 11:00:41 | 显示全部楼层
说得对!狠狠赞同,没毛病~
工控课堂 www.gkket.com

0

主题

87

回帖

150

积分

新手上路

积分
150
发表于 2025-11-14 11:14:30 | 显示全部楼层
这逻辑绝了,分析得太到位了吧
工控课堂 www.gkket.com

0

主题

84

回帖

145

积分

新手上路

积分
145
发表于 2025-11-14 11:37:27 | 显示全部楼层
内容太顶了!疯狂点赞,已默默收藏~
工控课堂 www.gkket.com

0

主题

89

回帖

142

积分

新手上路

积分
142
发表于 2025-11-14 12:14:24 | 显示全部楼层
来凑个热闹,为楼主增加点人气!
工控课堂 www.gkket.com

0

主题

116

回帖

173

积分

新手上路

积分
173
发表于 2025-11-14 13:39:36 | 显示全部楼层
打卡路过,支持优质原创内容~
工控课堂 www.gkket.com

0

主题

129

回帖

209

积分

注册会员

积分
209
发表于 2025-11-14 14:04:20 | 显示全部楼层
赞同 + 10086,完全说出了我的想法!
工控课堂 www.gkket.com

0

主题

120

回帖

288

积分

注册会员

积分
288
发表于 2025-11-15 05:06:05 | 显示全部楼层
来凑个热闹,增加点人气~
工控课堂 www.gkket.com

0

主题

47

回帖

55

积分

新手上路

积分
55
发表于 2025-11-17 22:40:35 | 显示全部楼层
笑不活了,评论区比正文还精彩!
工控课堂 www.gkket.com

0

主题

64

回帖

94

积分

新手上路

积分
94
发表于 2025-11-20 14:40:10 | 显示全部楼层
路过打卡,为优质内容疯狂打 call
工控课堂 www.gkket.com
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

关闭

站长推荐上一条 /1 下一条

QQ|手机版|免责声明|本站介绍|工控课堂 ( 沪ICP备20008691号-1 )

GMT+8, 2025-12-22 16:07 , Processed in 0.113337 second(s), 26 queries .

Powered by Discuz! X3.5

© 2001-2025 Discuz! Team.

快速回复 返回顶部 返回列表