14、modbus poll 使用教程小记1

2024-06-13 11:12
文章标签 使用 教程 14 modbus poll 小记

本文主要是介绍14、modbus poll 使用教程小记1,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

开发平台:Win10 64位
Modbus Slave版本:64位 7.0.0
Modbus Poll版本:64位 7.2.2
因为项目中经常会用到modbus协议,所以就避免不了的要使用modbus测试工具,Modbus Slave/Poll无疑是众多测试工具中应用最广泛的。


文章目录

  • 一、Modbus 协议
  • 二、Modbus Slave(Server-从站)
    • 2.1 窗口状态栏
    • 2.2 连接
    • 2.3 新建保存
    • 2.4 配置窗口信息
    • 2.5 数据操作
  • 三、Modbus Poll(Client-主站)
    • 3.1 状态框
    • 3.2 创建连接
    • 3.3 配置窗口信息
    • 3.4 修改寄存器值(06或16功能码时生效):
    • 3.5 显示
  • 四、总结
  • 五、参考文献
    • 5.1 https://www.cnblogs.com/The-explosion/p/11512677.html
    • 5.2 https://blog.csdn.net/u012749085/article/details/125270869


一、Modbus 协议

Modbus协议是一种通用通讯协议并且已广泛应用于当今工业控制领域。控制器相互之间或控制器经由网络(如以太网)可以通过此协议和其它设备之间进行通信。Modbus协议使用的是主从通讯技术,即由主设备主动查询和操作从设备。一般将主控设备方所使用的协议称为Modbus Master,从设备方使用的协议称为Modbus Slave。典型的主设备包括工控机和工业控制器等,典型的从设备如PLC可编程控制器等。
Modbus通讯物理接口:

  1. 串口(包括RS232、RS485和RS422)。
  2. 以太网口。
    通讯方式:
    1、异步串行传输(各种介质如有线RS-232-/422/485/;光纤、无线等):对应的通信模式是Modbus RTU或Modbus ASCII。
    2、以太网:对应的通信模式是Modbus TCP/IP。
    3、高速令牌传递网络:对应的通信模式是Modbus PLUS。
    其通信遵循以下的过程:主设备向从设备发送请求,从设备分析并处理主设备的请求,然后向主设备发送结果。Modbus的工作方式是请求/应答,每次通讯都是主站先发送指令,可以是广播,或是向特定从站的单播;从站响应指令,并按要求应答,或者报告异常。当主站不发送请求时,从站不会自己发出数据,从站和从站之间不能直接通讯。
    在这里插入图片描述
    报文格式:表头 + 功能码 + 数据区 + 校验码
    Modbus TCP基于以太网和TCP/IP协议,Modbus RTU和Modbus ASCII则是使用异步串行传输(通常是RS-232/422/485)。
    在这里插入图片描述
    如图所示,串行传输的物理层是RS-485或RS-232,数据链路层是Modbus的串行传输协议;Modbus TCP传输的1、2、3、4层实现和日常所见的以太网、因特网一样,Modbus默认采用的TCP端口号是502。
    以太网(modbus tcp/ip)
    对于Modbus TCP而言,主站通常称为Client,从站称为Server;而对于Modbus RTU和Modbus ASCII来说,主站是Master,从站是Slave。

二、Modbus Slave(Server-从站)

modbus slave和modbus poll是一款modbus开发和调试工具,具备Modbus从机/主机程序模拟功能,可以非常方便的进行modbus调试。其中Modbus Slave是一个模拟Modbus协议从机的上位机软件,主要用于模拟测试跟其他主机设备通信的过程。该软件内部封装标准Modbus协议栈,通过图形化界面使得操作更为简便。目前软件支持01、02、03、04、05、06、15、16功能码,原始报文查看,数据记录等功能,是调试Modbus协议栈的好帮手。

2.1 窗口状态栏

打开软件后,界面一般如下图所示,其中
ID:表示当前窗口通信的从机地址(Slave ID)
F:表示当前窗口的功能码(Function)
No Connection:表示当前窗口的未连接。
在这里插入图片描述

2.2 连接

两种连接方式:

  1. 普通连接:点击菜单栏"Connection"->“Connect…”(或者按快捷键F3)弹出连接配置窗口。连接选项有多个,“Serial Port”–当前是用串口通信。如果使用的是TCP/IP,则选择“Modbus/TCP”。
    在这里插入图片描述
    Serial Port(串口)配置:在配置窗口中配置好端口号、波特率、数据位、校验位、停止位,一般是9600波特率(9600 Baud),8个数据位(8 Data bits),无校验位(None Parity),1个停止位(1 Stop Bit)。以上参数配置要根据实际通信的从机设备进行匹配设置。对于7以上的版本,会自动识别当前使用了哪些端口,这里会把使用过的端口重命名,方便识别,这一点挺好用的。
    Mode:RTU模式或ASCII模式,这里要根据通信的从机设备进行选择,工业应用的话一般使用RTU模式,很少使用ASCII模式。
    请添加图片描述
    Flow Control(流控制):如果用到的是232、485或422接口,则不需要使用这个配置,按默认即可。配置完点OK即可完成设置进行连接,等待Client(Modbus Poll)端进行读取设置数据即可。
    TCP配置:设置好IP及端口号,Modbus/TCP的默认端口号为502。实际根据从机设备的IP和端口号来设置。Ignore Unit ID可以选择是否忽略设备ID进行通信。
    在这里插入图片描述
  2. 快速连接
    点击菜单栏"Connection"->“Quick Connect”(或者按快捷键F5),或者点击图标进行快速连接。快速连接就是不需要再去设置连接参数,直接根据当前配置开启连接。

2.3 新建保存

点击"File"->“New”,或者点击图标 可以新建一个通信窗口。
在这里插入图片描述
每一个窗口代表一条通信指令或者说一个从站,具体通信的从机地址、寄存器/线圈类型、可读写的寄存器/线圈个数都是可以独立设置的。
在这里插入图片描述
点击"File"->“Save”,或者点击图标进行窗口保存。“File”->"Save as…"则可以另存为一个文件。保存窗口可以把窗口的配置信息一并保存下来。
在这里插入图片描述

2.4 配置窗口信息

点击"Setup"->“Slave Definition…”,或者按快捷键F8,或者在要设置的窗口单击右键,选择"Slave Definition…",可以打开窗口信息配置界面。
在这里插入图片描述

  1. Slave ID:配置从机地址
  2. Function:配置寄存器/线圈类型
  3. Address:配置读/写的寄存器/线圈起始地址
  4. Quantity:配置读/写的寄存器/线圈个数
    在这里插入图片描述
    Rows:可以选择该窗口一列可以显示多少行,数字是对应的行数,最后一个选项"Fit to Quantity"是可以根据前面设置的"Quantity"数量自动匹配行数。
    Hide Alias Columns:可以选择是否隐藏"Alias"列。
    PLC Addresses(Base 1):可以选择通信的基地址是从0开始还是从1开始。
    在这里插入图片描述
    Error Simulation(故障模拟)
    Skip response:跳过响应,目前实测是主机每发10帧,Slave这边会有一帧不回。
    请添加图片描述
    Insert CRC/LRC error:插入CRC/LRC错误,目前实测是主机每发10帧,Slave这边会有一帧返回错误CRC/LRC校验。
    在这里插入图片描述
    Response delay:延迟回复时间,可以设置接收到数据后延时回复的时间。
    在这里插入图片描述
    Return exception 06. Busy:返回设备繁忙状态,即故障码06。
    在这里插入图片描述
    设置完成点"OK"即可。

2.5 数据操作

双击数据的位置,可修改当前地址的寄存器/线圈数值。
“Auto increment"可选择是否每次通信后自动增加数值。(可以作为一个心跳包来使用)
在这里插入图片描述
寄存器备注:双击数据前的空白区域(Alias列),根据实际寄存器/线圈的数据含义,可对其进行定义备注,方便调试时查看。
在这里插入图片描述
数据类型修改:点击需要修改的数据(可以批量选择),右键单击,选择"Format”,根据使用的场景选择不同的数据类型。
在这里插入图片描述
背景色及文字颜色修改:选择要修改的颜色的数据,右键,选择"Foreground",在弹出的窗口中可以设置字体颜色。选择"Background"则可以设置背景色。
字体及大小:选择要修改的数据,右键选择"Font",在弹出的窗口里选择字体、字形及大小,确认即可修改。
在这里插入图片描述

三、Modbus Poll(Client-主站)

Modbus主机仿真器,用于测试和调试Modbus从设备。该软件支持ModbusRTU、ASCII、TCP/IP。用来帮助开发人员测试Modbus从设备或其它Modbus协议的测试和仿真。它支持多文档接口,即,可以同时监视多个从设备/数据域。每个窗口简单地设定从设备ID,功能,地址,大小和轮询间隔。你可以从任意一个窗口读写寄存器和线圈。如果你想改变一个单独的寄存器,简单地双击这个值即可。或者你可以改变多个寄存器/线圈值。提供数据的多种格式方式,比如浮点、双精度、长整型(可以字节序列交换)。

3.1 状态框

在这里插入图片描述
Tx = 0表示向主站发送数据帧次数,图中为0次;
Err = 0表示通讯错误次数,图中为0次;
ID = 1表示模拟的Modbus子设备的设备地址,图中地址为1;
F = 03表示所使用的Modbus功能码,图中为03功能码;
SR = 1000ms表示发送周期,1S一次。
红字部分,表示当前的错误状态,“No Connection”表示未连接状态。

3.2 创建连接

点击Connetion选择Connect…,或者F3快捷键直接通过默认参数设置进行连接,根据从站设备的设置选择是Serial Port(串口)还是Modbus Tcp/IP。
在这里插入图片描述
如果是Serial Port,就需要根据从站设置参数设置端口号,波特率等参数,Mode一般工业选择RTU模式。在这里插入图片描述
如果是Modbus Tcp/IP就需要设置下从站的IP及端口号,一般端口号默认502。
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

3.3 配置窗口信息

单击Setup----Read/Write Definition… 或者按F8进行参数设置,或者在要设置的窗口单击右键,选择"Read/Write Definition…",会弹出参数设置对话框。
在这里插入图片描述
在这里插入图片描述
Slave ID为要访问的Modbus从机的地址,
Function 功能码的选择,
Address 为寄存器起始地址,根据功能码的不同,访问地址不同,这里默认是Protocol address地址,可以勾选下面的Plc address(Base 1)选择地址从1开始。
Quantity:为访问寄存器个数。
Scan Rate为读取数据周期,轮询发送,单位毫秒。
Modbus协议同时规定了二十几种功能码,但是常用的只有8种,用于对存储区的读写,如下表所示:
在这里插入图片描述
当然我们用的最多的就是03和06 一个是读取数据,一个是修改数据。

3.4 修改寄存器值(06或16功能码时生效):

在主窗口寄存器地址上双击鼠标,弹出修改对话框,可以修改此寄存器的值,06:修改(写入)一个地址,16:修改(写入)多个地址
在这里插入图片描述

3.5 显示

点击Display可以设置数据的显示方式,默认为Signed方式(16进制无符号二进制),数据范围为-32768~32767。
在这里插入图片描述
改变地址开始模式(Plc Address(Base1)和Protocol Address(Base0))。
在这里插入图片描述
查看通讯数据帧:
点击“Display”----“Communication”,可以调出收发数据帧监视信息对话框,用来查看分析收发的数据帧。这其实就是modbus报文。
在这里插入图片描述
Rx为接收到的消息帧,Tx为发送到的数据。报文格式如下:
在这里插入图片描述

注意,报文里面都是16进制表示的,也就是说14是0x14,对应的10进制是20,17是0x17,对应10进制是23,对于Rx来说,上面红框开始的17就代表后面有多个字节,01代表从站站号,03代表功能号,14代表后面有多少字节,1-10分别代表从从站读取的数据,因为一个寄存器地址是用16位数据即两个字节表示的,所以是20个字节,10个寄存器值。

四、总结

笔者使用poll比较多,所以就针对poll说下平常使用中要注意的问题。

  1. 起始地址
    在这里插入图片描述
    PLC Address(Base 1)(PLC地址)
    PLC地址一般采用10进制描述,共有5位,其中第一位代码寄存器类型,例如40001、30002等。
    Protocol address(协议地址)
    指通信时使用的寄存器地址,在实际编程中,由于寄存器PLC地址前缀的区分作用,所以只需说明后4位数,而且需转换为4位十六进制地址。例如PLC地址40001对应寻址地址0x0000,40002对应寻址地址0x0001,寄存器寻址地址一般使用16进制描述。再如,PLC寄存器地址40003对应协议地址0002,PLC寄存器地址30003对应协议地址0002。在实际编程中,由于前缀的区分作用,所以只需说明后4位数,而且需转换为4位十六进制地址。在数据报文中,所有的modbus地址都是从0开始的。也就是首次出现的数据项在报文中的地址为0。
    所以这里一定要注意,不管是读数据还是写数据,地址要和PLC或者从站设计者确定下。
  2. 数据类型
    这个也是个很重要的问题,默认poll读取的数据都是按照Signed(有符号16位整型)显示的,如果下位机(从站)不是按照这个来的,比如温湿度、浓度等参数,需要小数表示,一些数据需要32位来表示,这就需要重新设置了,不然读取的数据没问题,但是因为数据格式不对,显示的也不对,比如Signed类型的36,在32位Signed,大端模式下就等于2359297.所以一定要和下位机确定数据格式,尤其是浮点型和32位类型表示的数据的时候。
    在这里插入图片描述
    在这里插入图片描述

五、参考文献

5.1 https://www.cnblogs.com/The-explosion/p/11512677.html

5.2 https://blog.csdn.net/u012749085/article/details/125270869

这篇关于14、modbus poll 使用教程小记1的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/1057139

相关文章

使用Python和Pyecharts创建交互式地图

《使用Python和Pyecharts创建交互式地图》在数据可视化领域,创建交互式地图是一种强大的方式,可以使受众能够以引人入胜且信息丰富的方式探索地理数据,下面我们看看如何使用Python和Pyec... 目录简介Pyecharts 简介创建上海地图代码说明运行结果总结简介在数据可视化领域,创建交互式地

Java Stream流使用案例深入详解

《JavaStream流使用案例深入详解》:本文主要介绍JavaStream流使用案例详解,本文通过实例代码给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友参考下吧... 目录前言1. Lambda1.1 语法1.2 没参数只有一条语句或者多条语句1.3 一个参数只有一条语句或者多

Java Spring 中 @PostConstruct 注解使用原理及常见场景

《JavaSpring中@PostConstruct注解使用原理及常见场景》在JavaSpring中,@PostConstruct注解是一个非常实用的功能,它允许开发者在Spring容器完全初... 目录一、@PostConstruct 注解概述二、@PostConstruct 注解的基本使用2.1 基本代

C#使用StackExchange.Redis实现分布式锁的两种方式介绍

《C#使用StackExchange.Redis实现分布式锁的两种方式介绍》分布式锁在集群的架构中发挥着重要的作用,:本文主要介绍C#使用StackExchange.Redis实现分布式锁的... 目录自定义分布式锁获取锁释放锁自动续期StackExchange.Redis分布式锁获取锁释放锁自动续期分布式

springboot使用Scheduling实现动态增删启停定时任务教程

《springboot使用Scheduling实现动态增删启停定时任务教程》:本文主要介绍springboot使用Scheduling实现动态增删启停定时任务教程,具有很好的参考价值,希望对大家有... 目录1、配置定时任务需要的线程池2、创建ScheduledFuture的包装类3、注册定时任务,增加、删

使用Python实现矢量路径的压缩、解压与可视化

《使用Python实现矢量路径的压缩、解压与可视化》在图形设计和Web开发中,矢量路径数据的高效存储与传输至关重要,本文将通过一个Python示例,展示如何将复杂的矢量路径命令序列压缩为JSON格式,... 目录引言核心功能概述1. 路径命令解析2. 路径数据压缩3. 路径数据解压4. 可视化代码实现详解1

Pandas透视表(Pivot Table)的具体使用

《Pandas透视表(PivotTable)的具体使用》透视表用于在数据分析和处理过程中进行数据重塑和汇总,本文就来介绍一下Pandas透视表(PivotTable)的具体使用,感兴趣的可以了解一下... 目录前言什么是透视表?使用步骤1. 引入必要的库2. 读取数据3. 创建透视表4. 查看透视表总结前言

Python 交互式可视化的利器Bokeh的使用

《Python交互式可视化的利器Bokeh的使用》Bokeh是一个专注于Web端交互式数据可视化的Python库,本文主要介绍了Python交互式可视化的利器Bokeh的使用,具有一定的参考价值,感... 目录1. Bokeh 简介1.1 为什么选择 Bokeh1.2 安装与环境配置2. Bokeh 基础2

Android使用ImageView.ScaleType实现图片的缩放与裁剪功能

《Android使用ImageView.ScaleType实现图片的缩放与裁剪功能》ImageView是最常用的控件之一,它用于展示各种类型的图片,为了能够根据需求调整图片的显示效果,Android提... 目录什么是 ImageView.ScaleType?FIT_XYFIT_STARTFIT_CENTE

Java学习手册之Filter和Listener使用方法

《Java学习手册之Filter和Listener使用方法》:本文主要介绍Java学习手册之Filter和Listener使用方法的相关资料,Filter是一种拦截器,可以在请求到达Servl... 目录一、Filter(过滤器)1. Filter 的工作原理2. Filter 的配置与使用二、Listen