Modbus poll和Modbus Slave使用心得

发布时间 2023-10-07 11:30:15作者: emanlee

Modbus poll和Modbus Slave使用心得

====================

1.Modbus Poll使用

1.1程序主窗口

Tx = 0表示向主站发送数据帧次数,图中为0次;

Error = 0表示通讯错误次数,图中为0次;

ID = 1表示模拟的Modbus子设备的设备地址,图中地址为1;

F = 03表示所使用的Modbus功能码,图中为03功能码;

SR = 1000ms表示扫描周期。红字部分,表示当前的错误状态,“No Connection”表示未连接状态。

1.2参数设置

单击菜单【Setup】中【Read/Write Definition.. F8】进行参数设置,会弹出参数设置对话框。

Slave ID为要访问的Modbus从站(从机)的地址,对应主窗口(主画面)中的ID值,默认为1;

Function为寄存器功能码的选择,共四种,分别对应关系如下:

功能码 寄存器范围 对应紫金桥的寄存器类型
01/05 00001~09999 DO
02 10001~19999 DI
04 30001~39999 AR
03/06/10 40001~49999 HR

紫金桥软件常用为03功能码。

Address 为寄存器起始地址,默认从0开始;

Quantity为寄存器连续个数,默认为10个,对应组态软件的通道数量;

Scan Rate为读取数据周期,单位毫秒,默认为1000ms;

Rows指的是软件界面的寄存器显示多少行。

设置完成单击OK按钮,模拟窗口将显示定义的寄存器列表。

1.3显示设置

数据显示方式设置:

默认情况下,寄存器数据的显示方式为Signed方式(16进制无符号二进制),数据范围为-32768~32767。如果要以其他数值方式显示,可以通过菜单【Display】进行选择设置,如下图所示:

Long为长整数据类型,占四个字节;

Float为单精度型浮点数据类型,占四个字节,指数范围为-127~128;

Double为双精度型浮点数据类型,占八个字节,指数范围为-1023~1024;

Long Inverse、Float Inverse、Double Inverse为对应数据类型的逆向型,当确定数据类型选择正确但数据显示不正常时,可考虑为该数据类型的逆向型,选择Inverse类型显示。

报文数据显示方式设置:

通过点击菜单【Display】下的最后一个“Communication Traffic”按钮,可以显示出当前发送命令和接收的数据报文。

其中前6位为数据帧的序号,Tx为当前主站发送的数据报文,Rx为从站接收的数据报文。

发送分析:01表示从机地址;03表示modbus功能码;00 00表示寄存器起始地址;00 0A表示读取的寄存器个数(十六进制转换为十进制为10个);C5 CD为CRC校验码。

接收分析:01表示从机地址;03表示modbus功能码;14表示后面数据的字节数(十六进制转换为十进制为20字节);后面数据00 0A为一个寄存器的数据(一个寄存器占俩个字节,00为一个字节,0A也为一个字节);00 08也为一个寄存器的数据,以此类推共有10个寄存器的数据(与上面发送报文里的读取寄存器个数一致);最后BE 97也为CRC校验码。

综上,图中发送报文含义是主机使用03功能码,向地址为01的从机发起询问,询问从起始地址为0的寄存器开始的十个寄存器的数据;接收报文含义是地址为01的从机使用03功能码应答主机的询问,依次回复总计为二十个字节的十个寄存器的数据。

其中,若01 03后面为0X 80则为错误响应,说明连接错误。

1.4通讯连接

单击菜单【Connection】中【Connect.. F3】进行通讯连接,如下图 :

Serial Port表示使用的串口(COM3),根据实际情况选择串口或者TCP/IP进行连接;

Mode,表示Modbus协议模式,使用串口时分为RTU和ASCIIl两种;使用TCP/IP时自动为TCP模式;

Response Timeout,表示读取超时时间,从站在超时时间内没有返回数据,则认为通讯失败;

Delay Between Polls,每次扫描的最小间隔时间,默认为10ms;

IP Address,表示TCP/IP模式时从站IP地址。 ;

Port,表示TCP模式时从站网络端口。

根据需要对参数进行设置,默认为:串口1、波特率9600、数据位8位、无校验位、1位停止位。确认设置后点击OK按钮即可。如果连接并读取正确,此时主窗口将显示读取寄存器的相关信息。

1.5寄存器值改变

在主窗口寄存器地址上双击鼠标,弹出修改对话框:

在Value框中输入修改的值点击“Send”。范围为-32768——32767。

Slave ID为要访问的Modbus从站的地址,对应主画面中的ID值,默认为1。 ;

Address 为当前操作的寄存器的地址。图中为对寄存器40002操作;Use Function为所使用的功能码,可以选择06或16功能码进行写入。

1.6断开连接

点击【Disconnect F4】即可断开连接结束测试,此时主窗口中出现红色的“No Connection”表示未连接状态。

2.Modbus Slave使用

2.1程序主窗口

ID = 1表示模拟的Modbus子设备的设备地址,图中地址为1;

F = 03表示所使用的Modbus功能码,图中为03功能码。

此时处于“No connection”未连接状态。

2.2参数设置

点击菜单“Setup”中“Slave Definition.. F2”进行参数设置,会弹出设置框。

Slave ID为Modbus从站地址,对应主画面中的ID值,默认为1;

Function 为寄存器功能码的选择,共四种,分别对应关系如下:

紫金桥软件常用功能码为03功能码;

Address 为寄存器起始地址。默认从1开始;

quantity为寄存器连续个数。默认为10个;

Rows指的是软件界面的寄存器显示多少行。

设置OK按钮,模拟窗口将显示定义的寄存器列表。

2.3显示设置

数据显示方式设置:

默认情况下,寄存器数据的显示方式为Signed方式(16进制无符号二进制),数据范围为-32768——32767。如果要以其他数值方式显示,可以通过菜单“Display”进行选择设置,如下图所示:

Long为长整数据类型,占四个字节;

Float为单精度型浮点数据类型,占四个字节,指数范围为-127~128;

Double为双精度型浮点数据类型,占八个字节,指数范围为-1023~1024;

Long Inverse、Float Inverse、Double Inverse为对应数据类型的逆向型,当确定数据类型选择正确但数据显示不正常时,可考虑为该数据类型的逆向型,选择Inverse类型显示。

报文数据显示方式设置:

通过点击菜单【Display】下的最后一个“Communication Traffic”按钮,可以显示出当前发送命令和接收的数据报文。

其中前6位为数据帧的序号,Tx为当前主站发送的数据报文,Rx为从站接收的数据报文。

其报文发送分析及接收分析同上文1.3中的发送分析及接收分析。

2.4通讯连接

点击菜单“Connection”中“Connect.. F3”进行连接。弹出连接对话框:

Connection中的“Serial Port”表示使用的串口(COM2),根据实际情况选择不同的串口、TCP/IP或者UDP/IP进行连接;

Mode,表示Modbus协议模式,使用串口时有RTU和ASCII两种;使用TCP/IP时自动为TCP模式;

用户可根据需要对串口参数进行设置,默认为:串口1,波特率9600,数据位8位,无校验位,1位停止位。确认设置后点击“OK”按钮即可。此时主窗口中红色的“No connection”表示未连接状态的信息消失,表明从站处于正常连接状态。

2.5寄存器值改变

在主窗口寄存器地址上双击鼠标,弹出修改对话框:

在Value框中输入修改的值点击“OK”。范围为-32768——32767。

2.6断开连接

点击“Disconnect F4”即可断开连接结束测试,此时主窗口中出现红色的“No connection”表示未连接状态。

3.Modbus主机/从机模拟程序测试

3.1添加端口

通过工具添加COM2和COM3两个端口。

3.2配置modbus poll和modbus slave

打开已经安装的modbuspoll和modbus slave软件,根据测试需求分别配置主从端的相关配置,如图:

以上配置的是10个寄存器从机设备ID为1但只读取前6个计数器的数据,可根据测试需求设置。

2、接下来分别进行连接,注意要修改连接界面的端口,poll为主机,slave为从机,分别选择com2和com3端口,其他选项如波特率9600,比特位8,校验位1,无等价位等根据实际情况修改,然后点击确定进行连接。未连接成功窗口第二行会给出提示信息, 如果两个软件中都没有出现红字错误提示信息,黑字数据是不断的变化即连接成功。

通讯开始,主机端显示TX=232,Err=0,ID=1,F=03,SR=1000ms。意思是,发送232次命令,错误次数0,从机ID为1,使用03功能码,轮询间隔为1000ms。

使用工具栏的”Communication Traffic”按钮,可以显示出当前发送和接收的数据报文。

其报文发送分析及接收分析同上文1.3中的发送分析及接收分析。

4.实例

=====================

https://blog.csdn.net/yiyantangad/article/details/131431022

=====================

 

=====================

 

=====================