分析使用Modbus协议时的常见问题

Modbus协议最初是由Modicon开发的,它是一种应用层总线设备协议,基于为PLC设备设计的基于串行总线的主从模式。

ModbusTCP是封装在TCP数据包中的Modbus协议。

尽管有一些更改,但它基本上是主从模式。

随着嵌入式技术的发展,该公司自主开发了许多家用系统的控制和采集单元。

通常建议这些公司的串行通信协议采用Modbus协议。

许多用户对modbus协议有误解。

现在分析如下:一,Modbus保持和输入寄存器以字(16位)为单位。

例如,4 ****(保持寄存器/输出寄存器)和3 ****(输入寄存器)以字为单位。

因此,如果您从40001寄存器开始读取16位无符号数,则将返回2个字节,并且可以从40002中读取下一个16位无符号数。

从40001寄存器返回4个字节,下一个32位浮点数必须从40003开始。

2),将40001定义为32位浮点数,并将40002定义为下一个32位浮点数。

第二,寄存器的最小地址是1,消息的起始地址是0。

在数据消息中,所有的Modbus地址都从0开始。

消息中的第一时间为0。

例如:1。

在控制器中,“线圈1”的地址为0。

Modbus消息的地址字段中的值为00 00. 2.线圈127的十六进制消息地址为十六进制007E(十进制126)3.保持寄存器40001的消息地址为00 00。

如果操作“保持寄存器”,则协议使用“ 4XXXX”。

代表该寄存器。

4.保持寄存器40108的消息地址为十六进制006B(十进制为107)。

简而言之,Modbus地址通常指的是4 ****(保持寄存器/输出寄存器)和3 ****(输入寄存器)。

:例如,设备手册可以简要说明该设备支持Modbus RTU标准协议,并详细描述其地址对应关系:40001。

模拟量采集通道1,16位带符号数字,.....例如,组态软件的地址设置通常是一个输出寄存器,从地址1开始,连续多少个。

或指定400001:16位带符号的数字。

但是,在数据消息级别,寄存器的起始地址从0开始。

数据消息包括:设备地址+功能代码+起始地址+寄存器数+校验位。

其中,起始地址从0开始。

例如:从设备17读取从40001开始的2个寄存器数据的消息设备地址。

功能码起始地址登记号码检查11& nbsp;& nbsp;& nbsp;& nbsp;& nbsp;& nbsp;& nbsp;& nbsp;& nbsp;& nbsp ;  03& nbsp;& nbsp;& nbsp;& nbsp;& nbsp;& nbsp;& nbsp;& nbsp;& nbsp; 00 00& nbsp;& nbsp;& nbsp;& nbsp;& nbsp;& nbsp;& nbsp;& nbsp; 00 02 ; nbsp; -常见问题:1,使用并定义40000个地址; 2,分析消息时,直接使用消息的起始地址作为应用层寄存器地址。

3,Modbus写寄存器命令不同。

常用的Modbus寄存器为:线圈,输入,保持寄存器和输入寄存器。

从Modbus设备的角度来看,输入是主机计算机,它收集Modbus设备的信息,即这些寄存器是只读的。

因此,Modbus协议没有用于写入输入(输入)和输入寄存器(输入寄存器)的命令。

线圈是状态量,对应于Modbus设备的开关输出(DO),保持寄存器(Holding Registers)是模拟量,对应于Modbus设备的模拟输出(AO)。

这些寄存器需要由Modbus设备的上位计算机设置。

即,可以写入的寄存器。

在Modicon_Modbus协议协议中,有两个写命令,用于写线圈(线圈)和保持寄存器(保持寄存器):1),写单个寄存器:强制单线圈(强制单线圈)功能代码05(0x05)写单个寄存器(预置单保持寄存器)功能代码06(0x06)2),写入多个寄存器并写入多线圈(强制多线圈)功能代码15(0x0F)

产品知识/行业、品牌资讯