电子开发网

电子开发网电子设计 | 电子开发网Rss 2.0 会员中心 会员注册
搜索: 您现在的位置: 电子开发网 >> 电子开发 >> PLC基础入门教程 >> 正文

MODBUS协议用03功能码为什么既能读又能写寄存器地址?

作者:佚名    文章来源:本站原创    点击数:    更新时间:2022-09-07

03 读保持寄存器

40001-49999

字操作

单个或多个

不应该是只能读的吗?

在使用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 (位)。

Tags:MODBUS,功能码  
责任编辑:admin
  • 上一篇文章:
  • 下一篇文章: 没有了
  • 相关文章列表
    梯形图实例 仪表与西门子PLC Modbus通讯实例称重仪表 指令MBUS_M
    西门子plc与modbus设备进485通信详解(modbus多机轮询)读取仪表
    手把手带你搞懂Modbus通信协议 报文格式详解
    寄存器PLC地址与寄存器modbus协议地址 三菱FX系列西门子s7系列pl
    Modbus协议基本知识 Modbus地址范围对应表
    Modbus-RTU协议解析
    MODBUS常用功能码学习及实例 modbus报文格式
    Modbus如何远距离传输? Modbus物联网
    Modbus和RS485的关系是什么?
    Modbus RS485接线方法  modbus接线方法 终端电阻
    MODBUS调试工具(modscan32)使用说明-MODBUS调试工具(modscan32)如
    RS-485终端电阻怎么接?485终端电阻接法解析
    modbus通讯 RS-485终端电阻的重要性
    Modbus功能码详解 读取线圈、保持寄存器
    modbus协议地址和常用功能码,modbus详解
    Modbus功能码介绍
    Modbus网关的概念/功能/作用/特点
    Modbus-RTU通讯协议03功能码详解——小白一看就会的协议解析
    西门子plc SMART200 通过Modbus读取温湿度传感器数据梯形图实例
    实现PLC与多台变频器的MODBUS/RTU通信   MODBUS协议报文格式
    MODBUS功能码实例  plc与仪表通信
    西门子plc modbus地址详解
    s7-200与计算机modbus通讯案例,西门子S7-200 Smart Modbus通信介
    Modbus通讯协议简介
    电力仪表怎么设置modbus ,电力-MODBUS_RTU通讯规约
    MODBUS规约报文解析
    modbus rtu六种功能码详细解析
    ModBus通信协议
    modbus通讯协议功能码一览_ModBus功能码定义
    西门子200SMART主站轮询MODBUS通信指令案例_梯形图实例
    请文明参与讨论,禁止漫骂攻击,不要恶意评论、违禁词语。 昵称:
    1分 2分 3分 4分 5分

    还可以输入 200 个字
    [ 查看全部 ] 网友评论
    推荐文章
    最新推荐
    关于我们 - 联系我们 - 广告服务 - 友情链接 - 网站地图 - 版权声明 - 在线帮助 - 文章列表
    返回顶部
    刷新页面
    下到页底
    晶体管查询