『7x24小时有问必答』
Modbus 协议定义了四种常用的数据类型,用于区分不同属性的设备数据:
数据种类
离散输入(Discrete Inputs):
这是1位的布尔型数据,通常用于表示设备的状态,比如传感器的开关状态、报警的信号等。
线圈(Coils):
同样是1位的布尔型数据,通常用于控制继电器或其他输出设备,比如电机的启动或停止、阀门的开启或关闭等。
输入寄存器(Input Registers):
16位无符号整数或16位带符号整数,占两个字节,用于表示模拟量输入、计数器或温度等测量值。
保持寄存器(Holding Registers):
也是16位的整数,可以读写,用来存储数据量、累计值或任何需要远程读取或修改的参数(时间年月日等)。
数据类型

位(Bit)
长度:1个字节包含8位
举例:继电器的开关状态
描述:包含离散输入和线圈,一个字节包含8位,用来表示设备状态信息,也可以控制设备的状态(如开启关闭)。

整数(Integer)
长度:通常是两个字节16位
举例:读取压力变送器的数据102kPa
描述:包含保持寄存器和输入寄存器,用来表示各种整数的数据量。

浮点数(Float)
长度:通常是四个字节32位
举例:压力12.0523MPa
描述:两个连续的寄存器存储,通常用来表示高精度数值,如压力、温度等。

字符串(String)
长度:不固定(通常占用多个字节)
举例:设备的序列号
描述:通常是厂家信息,比如设备序列号(2024XXXXXXXXX)可能占用6到12个字节不等。

功能码
Modbus功能码有21种,但是常用的只有下面8种:
0x01: 读线圈寄存器
0x02: 读离散输入寄存器
0x03: 读保持寄存器
0x04: 读输入寄存器
0x05: 写单个线圈寄存器
0x06: 写单个保持寄存器
0x0f: 写多个线圈寄存器
0x10: 写多个保持寄存器

存储区
Modbus协议规定了4个存储区 分别是0、1、3、4区 其中0区和4区是可读可写,1区和3区是只读。
需要注意的是,MODBUS协议本身并不定义具体的数据类型表示,而是由具体的设备制造商或应用程序决定如何解释寄存器中的数据。因此,在开发或配置MODBUS设备时,必须参考相关的设备手册或协议规范,以确保正确地读取和写入数据。

免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?立即注册

x
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

上一主题上一主题         下一主题下一主题
QQ手机版小黑屋粤ICP备17165530号

关于我们·投诉举报· 用户帮助· 联系我们 · 本站服务 · 版权声明· 隐私政策 · 投搞指南

法律保护:PLC技术网,plcjs.com,plcjs.net等字样
Copyright 2010-2030. All rights reserved. 


微信公众号二维码 抖音二维码 百家号二维码 今日头条二维码哔哩哔哩二维码