数据种类 |
离散输入(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区是只读。