谈谈MODBUS协议数据模型和地址模型
网络整理 2022-08-03

在使用MODBUS协议编程的时候,会遇到诸如40001、10001之类的地址,这究竟是代表什么意思呢?来谈谈MODBUS协议的数据模型和地址模型,这样大家就能理解这个问题。

1、MODBUS协议的数据模型

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


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

MODBUS协议定义的数据模型


区块               访问长度      访问方式    说明
离散量输入     位(bit)         只读            数据由IO系统提供
线圈               位(bit)         读/写           可通过应用程序改写
输入寄存器     字(word)     只读            数据由IO系统提供
保持寄存器     字(word)     读/写           可通过应用程序改写
既然数据模型是一种抽象,在实际使用时必须将其映射到真实的物理存储区才能被访问。

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

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的地址模型与数据模型就先介绍到这里。

相关阅读




声明: 本文转载自其它媒体或授权刊载,目的在于信息传递,并不代表本站赞同其观点和对其真实性负责,如有新闻稿件和图片作品的内容、版权以及其它问题的,请联系我们及时删除。(联系我们,邮箱:evan.li@aspencore.com )
0
评论
  • 报名中:IIC Shenzhen - 2022国际集成电路展览会暨研讨会


  • 相关技术文库
  • 模拟
  • 模电
  • 运放
  • 放大
  • 一张图读懂内存反碎片化

    -----------分割线•以下为文字版----------- 以最简单易懂的方式为大家介绍什么是内存反碎片化技术 内存反碎片化引擎,是由 OPPO 自主研发、首个针对物理内存碎片化,虚拟内存碎片化进行优化的技术,搭配 ColorOS 7 UI FIRST,从系统底层保障手机运行时刻流畅

    昨天
  • UFS特性介绍

    UFS发展史 在手机飞速发展的近 10 年,巨大的市场需求催生出移动存储的快速发展,人们需要越来越来越多的空间和越来越快的存储速度。下图是一个俗称存储 8+256G 的手机模块连接示意图。   图 1 手机存储连接   JEDEC在2011推出了UFS1.0协议标准,从2015开始手

    昨天
  • 谈谈内存压缩那些事

     1. 技术背景 说到压缩这个词,我们并不陌生,应该都能想到是降低占用空间,使同样的空间可以存放更多的东西,类似于我们平时常用的文件压缩,内存压缩同样也是为了节省内存。 尽管当前android手机6GB,8GB甚至12GB的机器都较为常见了,但内存无论多大,总是会

    昨天
  • F2FS技术拆解

    F2FS (Flash Friendly File System) 是专门针对SSD、eMMC、UFS等闪存设备设计的文件系统。由三星工程师Jaegeuk Kim于2012年10月发布到Linux社区,并于2012年12月进入Linux 3.8 内核主线。和UBIFS、JFFS2等文件系统不同,F2FS并不直接面向裸NAND闪存设计,而是

    昨天
  • 采用单片机AT89C52的可调直流稳压电源设计

    总体设计思想及方案本设计主要采用单片机AT89C52作为处理计算核心,完成外部调节与控制。本系统主要由六个单元模块组成,即电源模块、按键模块、单片机最小系统模块

    昨天
  • 为什么要采用相关双取样电路处理图像信息

      APS像素阵列中同一列的每一个像素上,都有一个共享的列像素信号输出端(ColumnOutput),如图所示。每一列像素的这个共享输出端,都经过一个列模拟信号

    前天
  • 世界抛弃模拟技术会怎样?

      “不要模拟、不要模拟!”这句话在纽约一家中等规模的电子维修商店中回响。当我把古老的模拟式开盘式多声道录音机带过来,将服务手册的封面呈现在店主面前时,他如是说

    前天
  • PCB布线:直角走线差分走线和蛇形线设计

    布线(Layout)是PCB设计工程师最基本的工作技能之一。走线的好坏将直接影响到整个系统的性能,大多数高速的设计理论也要最终经过Layout得以实现并验证,由

    前天
  • 详解STM32 ADC

    01 ADC简介 ADC是Analog-to-DigitalConverter的缩写。指模/数转换器或者模拟/数字转换器。是指将连续变量的模拟信号转换为离散的数字信号的器件。典型的模拟数字转换器将模拟信号转换为表示一定比例电压值的数字信号。 从ST

    前天
  • 放大器的传递函数

    欢迎加入技术交流QQ群(2000人):电力电子技术与新能源 1105621549 高可靠新能源行业顶尖自媒体 在这里有电力电子、新能源干货、行业发展趋势分析、最新产品介绍、众多技术达人与您分享经验,欢迎关注微信公众号:电力电子技术与新能源(Micro_Grid),论坛:w

    前天
  • 放大器驱动SAR ADC电路的设计难点

    SAR ADC的驱动电路设计存在多个难点,处理不当将导致ADC输出码值跳动范围巨大。上周接触到的一个案例就是这样,与工程师检视完原理图,发现工程师是一款仪表放大器直接驱动16bit 1.5M SAR ADC,并且模拟电路由DCDC直接供电。查阅相应数

    09-27
  • 输入阻抗的模型与应用

    在非电量测试中,处理传感器的输出电信号是放大器的重要应用。由于传感器输出阻抗大小不一,在具体设计中需要选择输入阻抗适合的放大器进行阻抗转化,避免因为阻抗问题导致传输信号失真。本篇将讨论输入阻抗的模型与应用。     1 放大

    09-27
下载排行榜
更多
广告