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

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/703685.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

0602 差分式放大电路

差分式放大电路 差分放大电路的基本概念直接耦合放大电路中的零点漂移 6.2.1 差分式放大的基本概念 6.2.2 直接耦合放大电路中的零点漂移 6.2.3 BJT射极耦合差分式放大电路 差分放大电路的基本概念 直接耦合放大电路中的零点漂移

WebSocket 快速入门 与 应用

WebSocket 是一种在 Web 应用程序中实现实时、双向通信的技术。它允许客户端和服务器之间建立持久性的连接,以便可以在两者之间双向传输数据。 以下是 WebSocket 的一些关键特点和工作原理: 0.特点: 双向通信:WebSocket 允许服务…

MySQL密码自动过期配置

目录 一、密码自动过期 1、临时 2、永久 3、查看 4、账号设置 一、密码自动过期 登录数据库查看是否生效 mysql -u root -p #查看数据库账号状态 select user,host,password_expired,password_lifetime,password_last_changed,account_locked from mysql.user; 1、passwo…

【博士每天一篇文献-算法】Progressive Neural Networks

阅读时间:2023-12-12 1 介绍 年份:2016 作者:Andrei A. Rusu,Neil Rabinowitz,Guillaume Desjardins,DeepMind 研究科学家,也都是EWC(Overcoming catastrophic forgetting in neural networks)算法的共同作者。 期刊: 未录用&am…

2024-2025最新软考系统架构设计师的复习资料教材,解决如何快速高效通过该考试,试题的重点和难点在哪里?案例分析题和论文题的要点和踩坑点分析

目录 引言考试概述 考试结构考试内容 复习策略 制定复习计划学习资源 知识点详解 系统架构基础设计原则与模式系统分析与设计软件开发过程项目管理系统集成性能与优化安全性设计新兴技术 试题解析 选择题案例分析题论文题 重点与难点分析模拟试题与答案参考资料总结 引言 系…

transformers 阅读:BERT 模型

前言 想深入理解 BERT 模型&#xff0c;在阅读 transformers 库同时记录一下。 笔者小白&#xff0c;错误的地方请不吝指出。 Embedding 为了使 BERT 能处理大量下游任务&#xff0c;它的输入可以明确表示单一句子或句子对&#xff0c;例如<问题&#xff0c;答案>。 …

RK3568笔记三十一:ekho 6.3 文本转语音移植

若该文为原创文章&#xff0c;转载请注明原文出处。 移植的目的是在在OCR识别基础上增加语音播放&#xff0c;把识别到的文字直接转TTS播报出来&#xff0c;形成类似点读机的功能。 1、下载文件 libsndfile-1.0.28.tar.gz ekho-6.3.tar.xz 2、解压 tar zxvf libsndfile-1.0…

使用MATLAB对地铁站、公交站等求解最短路径

使用MATLAB对城市的地铁站、公交站等站点&#xff0c;根据站点的经纬度坐标和彼此之间的权重&#xff0c;求解其最短路径、途径站点和路程 已知的数据如图&#xff0c;是西安市地铁站点的数据&#xff0c;保存在一个Excel里 如图&#xff0c;每列的内容都在上面&#xff0c;不…

smart_rtmpd 的后台管理

高效的流媒体服务器 smart_rtmpd&#xff0c;您值得拥有 smart_rtmpd 的下载地址 https://github.com/superconvert/smart_rtmpd smart_rtmpd 的管理后台 https://github.com/superconvert/smart_rtmpd/edit/master/web%20manager/src/README.md web 管理后台说明 web 管理…

鹏城实验室PCLmed团队荣获ImageCLEFmedical 2024冠军,实现医疗图像解读新突破

在近期举行的ImageCLEFmedical 2024全球医疗图像分析和文本生成竞赛中&#xff0c;鹏城实验室专注于医学模型研究的PCLmed团队凭借卓越的技术实力和创新的解决方案&#xff0c;从来自世界各地的61支参赛队伍中脱颖而出&#xff0c;斩获冠军殊荣。这一成就不仅彰显了团队在医疗图…

树结构的实现

树的概念 树是一种非线性的数据结构&#xff0c;它是由n个有限节点组成一个具有层次关系的集合&#xff0c;它看起来像棵树&#xff0c;所以称其为“树”。如下图&#xff1a; 树可以分为根和子树&#xff0c;而子树又可以被分为根和子树&#xff0c;故我们可以用递归对其进行实…

基恩士LT-X8000A的IP地址

在这里插入图片描述 192.168.0.256 192.168.0.1 LT-X8000A

Kotlin 协程真的轻量吗?

前言 在官方文档的介绍中,提到了: 协程是轻量的 并给出了一个例子: fun main() = runBlocking {repeat(50_000) {// 启动大量的协程launch {delay

Button按钮类

自学python如何成为大佬(目录):https://blog.csdn.net/weixin_67859959/article/details/139049996?spm1001.2014.3001.5501 按钮是GUI界面中应用最为广泛的控件&#xff0c;它常用于捕获用户生成的单击事件&#xff0c;其最明显的用途是触发绑定到一个处理函数。 wxPython类…

180.二叉树:二叉搜索树(力扣)

代码解决 /*** Definition for a binary tree node.* struct TreeNode {* int val;* TreeNode *left;* TreeNode *right;* TreeNode() : val(0), left(nullptr), right(nullptr) {}* TreeNode(int x) : val(x), left(nullptr), right(nullptr) {}* Tre…

MFC上下文菜单与定时器学习笔记

本博文简单介绍了上下文菜单以及定时器的知识内容&#xff0c;作为笔记发表在csdn上面。 在这里插入图片描述 菜单资源的使用 添加菜单资源加载菜单资源&#xff1a; 注册窗口类时设置菜单创建窗口传参设置菜单在主窗口WM_CREATE消息中利用SetMenu函数设置 加载菜单资…

Python学习笔记6:pychram相关知识及安装教程,后续需要学习的入门知识

上篇文章说了&#xff0c;今天去公司重新装一下IDE&#xff0c;最后也是把过程这边再记录一下&#xff0c;有需要的可以参考一下。 关于pychram pychram是什么&#xff1f; PyCharm是由JetBrains公司开发的一款流行的Python集成开发环境&#xff08;IDE&#xff09;。它专为…

RAM IP核配置

REVIEW 之前已经学习过&#xff1a; ROM:FPGA寄存器 Vivado IP核-CSDN博客 串口接收&#xff1a;Vivado 串口接收优化-CSDN博客 1. 今日摸鱼计划 RAM创建与测试 小梅哥视频&#xff1a; 21C_嵌入式块存储器RAM介绍_哔哩哔哩_bilibili 21D_嵌入式块存储器RAM实现和仿真_哔哩…

wordpress旅游网站模板

旅行社wordpress主题 简洁实用的旅行社wordpress主题&#xff0c;适用于旅行社建网站的wordpress主题模板。 https://www.jianzhanpress.com/?p4296 旅游WordPress主题 简洁实用的旅游WordPress主题&#xff0c;适合做旅游公司网站的WordPress主题模板。 https://www.jian…

网络故障排除:保持网络稳定与业务连续

目录 什么是网络故障&#xff1f; 网络故障排除的基本步骤 1. 问题识别 2. 确定故障范围 3. 检查物理连接 4. 检查设备配置 5. 测试与诊断 6. 实施解决方案 7. 验证与监控 了解更多 在现代企业中&#xff0c;网络的稳定性和性能直接影响业务的连续性和效率。作为一名…