在使用Modbus协议的时候,经常会遇到诸如40001、30001,10001之类的地址,这些数字代表什么含义呢?这其实是Modbus协议的数据模型和地址模型。

Modbus协议的数据模型

数据模型是对从站设备可访问的数据进行抽象,Modbus协议的数据模型定义了四种可访问的数据:

数据区块

数据类型

访问类型

线圈(Coils)

布尔

读/写

离散量输入
(Discrete Input)

布尔

只读

输入寄存器

(Input registers)

无符号2字节整型

只读

保持寄存器

(Holding registers)

无符号2字节整型

读/写

其中,离散量输入和线圈数据类型是布尔量,因此只支持以位(bit)的方式进行访问,输入寄存器和保持寄存器数据类型是无符号2字节整型,因此支持以字的方式进行访问。当主设备访问从设备的这些数据模型时,离散量输入和输入寄存器只支持以只读的方式进行访问,而线圈和保持寄存器既可以读也可以写。

地址前缀编号

编号范围

(1~65536)

编号范围

(1~9999)

数据

区块

数据

类型

访问

类型

0

000001~

065536

00001~

09999

线圈

(Coils)

布尔

读/写

1

100001~

165536

10001~

19999

离散量输入

(Discrete Input)

布尔

只读

3

300001~

365536

30001~

39999

输入寄存器(Input registers)

无符号2字节整型

只读

4

400001~

465536

40001~

49999

保持寄存器(Holding registers)

无符号2字节整型

读/写

数据模型中的每一种数据区块都最多允许有65536(2^16)个元素,Modbus定义了每个数据元素的地址,范围从0到65,535。但是每个数据元素的编号从1开始,范围从1到65,536。

需要说明的是:65536只是协议允许的最大元素范围,并不要求全部实现。Modbus协议允许设备根据自己的实际情况实现部分元素,甚至不要求实现模型中全部四种数据模型。譬如设备可能会选择不执行线圈、离散输入或输入寄存器,而只使用保持寄存器150至175和200至225。这是完全可以接受的,并且通过异常来处理无效的访问。

Modbus协议的地址模型

虽然规范将不同的数据类型定义为存在不同的区块中,并为每种类型分配一个本地地址范围,但这并不一定会转化为用于记录或理解给定设备的Modbus可访问内存的直观编址方案。

为了简化数据模型与设备存储区的对应关系,又引入了地址模型的概念,通过编号的方式对不同类型数据进行区分,也就是通过特定的编号作为前缀加到所讨论的数据地址中。如表中所示,通过0,1,3,4分别表示线圈,离散量输入,输入寄存器,和保持寄存器。

因此理论上,

线圈地址范围:000001~065536

离散量输入地址范围:100001~165536

输入寄存器地址范围:300001~365536

保持寄存器地址范围:400001~465536

由于65536是比较大的数值,实际应用一般不需要这么大的存储区,因此设备厂家普遍采用的是10000以内的地址范围,即:

线圈地址范围:00001~09999

离散量输入地址范围:10001~19999

输入寄存器地址范围:30001~39999

保持寄存器地址范围:40001~49999

有了该地址模型,我们就可以从Modbus寄存器的地址判断要访问的区块的类型。譬如常见到的寄存器地址40001/400001,最前面的4表明它是一个保持寄存器,后面的0001或者00001都是指第一个保持存储器,并且它的地址是0。寄存器30004表明它是输入寄存器,地址是3。寄存器10008表明它是离散量输入,地址是7。

要注意的是,保持寄存器和输入寄存器中的数值是2个字节,而线圈和离散量输入中数值大小仅为1bit (位)。

我们是专注于工业通信技术的HMS,更多工业物联网洞察和技术知识可关注公众号:

HMS工业网络,我们会深入浅出为您讲解Modbus,PROFIBUS,OPC UA, CANopen等网络协议,业内专家都在看!

【未经许可,禁止转载】

Modbus协议的数据模型和地址模型,Modbus寄存器40001,30001是什么意思?相关推荐

  1. modbus协议crc校验c语言代码,MODBUS通信协议中CRC校验码的计算(C/C++)实现

    错误检测的方法 错误校验(CRC)域占用两个字节,包含了一个16位的二进制值.CRC值由传输设备计算出来,然后附加到数据帧上,接收设备在接收数据时重新计算CRC值,然后与接收到的CRC域中的值进行比较 ...

  2. MThings 下载地址 (支持以主机或从机方式进行MODBUS协议簇调试调测运维 工具 助手)

    提醒:MThings并非简单的通信调试工具,是一款专业的上位机软件,需具备一定的Modbus基础知识,请慎重上手使用. 官方下载http://www.gulink.cn/download 安裝后,如程 ...

  3. Modbus 协议详解

    Modbus 协议详解 通信协议是指双方实体完成通信或服务所必须遵循的规则和约定,例如我们为实现人与人之间的交流需要约定统一的语言,统一的文字,规定语速等等. 而对于设备之间,协议定义了数据单元使用的 ...

  4. Modbus协议介绍

    Modbus协议介绍 简介 Modbus是一种串行通信协议,是Modicon公司(现在的施耐德电气Schneider Electric)于 1979年为使用可编程逻辑控制器(PLC)通信而发表.Mod ...

  5. Modbus协议在串行链路上的实现

    目录 1.串行链路通信简介 2.串行链路通信协议原理 3.串行链路通信帧描述 4.RTU.ASCII串行传输模式 4.1.RTU传输模式 4.2.ASCII传输模式 1.串行链路通信简介 Modbus ...

  6. Modbus协议(翻自wiki)

    文章目录 原文 译文 Modbus Modbus对象类型 协议版本 通讯和设备 帧格式 支持的功能代码 主要功能代码的请求和响应数据格式 功能代码 1(读取线圈)和功能代码 2(读取离散输入) 功能码 ...

  7. Modbus协议完整版

    第一部分:Modbus协议 1 引言 1.1 范围 MODBUS是OSI模型第7层上的应用层报文传输协议,它在连接至不同类型总线或网络的设备之间提供客户机/服务器通信. 自从1979年出现工业串行链路 ...

  8. ModBus串口【01】Modbus协议介绍

    Modbus协议简介 文章目录 Modbus协议简介 1.啥是Modbus协议? 2.Modbus模型 3.Modbus协议版本 4.Modbus通信 5.Modbus不同存储区介绍: 6.Modbu ...

  9. MODBUS协议详解

    MODBUS协议详解 一.了解MODBUS MODBUS 是 OSI 模型第 7 层上的应用层报文传输协议,它在连接至不同类型总线或网络的设备之间提供客户机/服务器通信. 它主要用于工业自动化设备通信 ...

最新文章

  1. Go 知识点(08) — 对未初始化的 channel 进行读写操作
  2. OpenCV camshift目标追踪
  3. 对象属性操作函数:hasattr(),getattr(),setattr()
  4. 收集53个程序员段子
  5. 一次堆外内存泄露的排查过程
  6. java游戏服务器面试_我做游戏开发这八年
  7. 类的6个默认成员函数:构造函数、析构函数、拷贝构造函数、重载运算符、三/五法则
  8. python37.dll可能与您正在运行_模块可能与您正在运行的Windows版本不兼容。检查该模块是否与regsvr32.exe的x86或x64...
  9. java unsigined short_LDD之数据类型
  10. Linux init详解 (0,1,2,3,4,5,6)
  11. MongoDB数据库的优点
  12. 怎么把word压缩到最小?
  13. VS+Qt手动生成moc文件
  14. 星浩资本-以流程为中心
  15. python 期货现货差价监测_数字货币期货现货差价监控
  16. ac68u、r8500 梅林固件扩展为一个小型 linux 系统
  17. js 各省市地名数据(包含各省市区域代码)(未测试)
  18. 嵌入式应用软件任务划分的原则
  19. String类中的trim()方法实现
  20. Visual Studio 2022 vcvarsXXX.bat文件所在的目录

热门文章

  1. 利用端口,进程,文件,服务和日志信息来排查系统安全
  2. 周志华-机器学习(线性模型)
  3. 源代码世界3—海上高墙
  4. Mysql优化——唯一索引和普通索引的选择
  5. hexo butterfly主题 添加全局吸底APlayer
  6. 如何使用 Go 语言重新思考可视化编程?
  7. inconsistent datatypes: expected DATE got NUMBER
  8. TF2.0 API学习(Python)六:函数compute_loss、函数bbox_giou、函数bbox_iou
  9. Oracle分区表概述、分类、使用方法及注意事项
  10. 《如何五分钟创建自己的新币token 》Dapp开发 Web3+以太坊+智能合约开发 (一)