modbus协议通信

news/2024/11/9 1:45:28/

一、总概括:
Modbus Slave搭配-Modbus Poll收发数据
Modbus Slave是一个模拟Modbus协议从机的上位机软件,主要用于模拟测试跟其他主机设备通信的过程。与之成套存在的另一个软件--Modbus Poll,则是模拟Modbus协议主机的上位机软件。该软件内部封装标准Modbus协议栈,通过图形化界面使得操作更为简便。目前软件支持01、02、03、04、05、06、15、16功能码,原始报文查看,数据记录等功能,是调试Modbus协议栈的好帮手。

1.qModMaster配合ModbusSlave数据收发
ModbusSlave: 从机,作为服务器,监听端口
qModMaster: 主机,作为客户端,负责与从机读写数据

主站(Master),是一个控制设备,负责发起和管理 Modbus TCP 通信。它可以向从站发送读取或写入请求,并接收从站返回的响应。主站通常是一个上位机或监控系统,负责控制和监视整个系统。
从站(Slave):从站是被动设备,响应主站的请求并提供数据。它可以是传感器、PLC 或其他设备。从站接收主站的读取或写入请求,并返回相应的数据或执行相应的操作。
Modbus TCP中,主站通常是tcp的client端,从站是tcp的server端,开启默认端口502。这个很容易混淆,这里在强调下。


二、利用libmodbus库编写代码模拟从机功能,并进行代码分析
windows下模拟运行modbusmaster 参考 https://blog.csdn.net/weixin_46366218/article/details/129402339 或者 
https://blog.csdn.net/zzh_AI/article/details/106994121?spm=1001.2014.3001.5506 发现写入失败,
参考 https://blog.csdn.net/qq_40531408/article/details/126689032 中的代码,写入失败,把写入的代码注释掉,读取ok
---modbus poll中setup选择的function选择16 Write Muitiple Registers中可以进行写操作,修改modbus slave中的值,是否将程序中的调用接口功能码修改一下也可以进行写操作呢?


三、开源代码QModMaster配合Modbus Slave使用
qt模拟modbus master https://blog.csdn.net/yyz_1987/article/details/132172864?spm=1001.2014.3001.5502
代码模拟modslave master中ip地址为127.0.0.1 502 modbus slave中setup选择any address

---至此tcp通信基本OK


四、rtu通信 串口通信
modbus master和modbus poll进行rtu通信 https://blog.csdn.net/qq_36961530/article/details/107185858?spm=1001.2014.3001.5502
先下载和使用虚拟串口 https://cloud.tencent.com/developer/article/2311089
参考代码示例 https://blog.csdn.net/dengjin20104042056/article/details/116795320
利用modbus slave和自写的main程序通信成功


五、遇到的问题
QModbusMaster与ModbusSlave通信 
QModbus中的 m_modbus = modbus_new_rtu(port.toLatin1().constData(),baud,parity.toLatin1(),dataBits,stopBits,RTS);
报错“Connection failed. Could not connect to serial port”的问题
将其中的参数 parity.toLatin1() 改为‘N’即可了
原因:1,QChar 转换char: char QChar::toLatin1();char QChar::toAscii();
Qstring用函数QChar EUtils::parity(QString p)只取第一个字符之后 转换成了QChar 但是取到的值还是‘奇’ ‘偶’ ‘无’这三个值 不符合 modbus_new_rtu的char值的判断


http://www.ppmy.cn/news/1212411.html

相关文章

Flutter笔记:状态提升、控制器模式、GetX控制器和服务

Flutter笔记 状态提升、控制器模式、GetX控制器和服务 作者:李俊才 (jcLee95):https://blog.csdn.net/qq_28550263 邮箱 :291148484163.com 本文地址:https://blog.csdn.net/qq_28550263/article/details/1…

Hive 常用存储、压缩格式

1. Hive常用的存储格式 TEXTFI textfile为默认存储格式 存储方式&#xff1a;行存储 磁盘开销大 数据解析开销大 压缩的text文件 hive 无法进行合拆分 SEQUENCEFILE sequencefile二进制文件&#xff0c;以<key,value>的形式序列到文件中 存储方式&#xff1a;行存储 可…

Bitdu:安全高收益 2023最具潜力合约交易所来袭

加密资产赛道的广阔机遇&#xff0c;正源源不断地吸引优质玩家入场。上线一个月的加密资产交易所Bitdu的表现引人注目。 数据显示&#xff0c;10月13日上线至今Bitdu合约业务新增注册用户突破5万、日交易额逾5亿美金&#xff0c;在行业权威网站上的排名也跃升至26位。值得一提的…

spring-cloud-stream

系列文章目录 第一章 Java线程池技术应用 第二章 CountDownLatch和Semaphone的应用 第三章 Spring Cloud 简介 第四章 Spring Cloud Netflix 之 Eureka 第五章 Spring Cloud Netflix 之 Ribbon 第六章 Spring Cloud 之 OpenFeign 第七章 Spring Cloud 之 GateWay 第八章 Sprin…

vue+iView实现下载zip文件导出多个excel表格

1&#xff0c;需求&#xff1a;在vue项目中&#xff0c;实现分月份导出多个Excel表格。 点击导出&#xff0c;下载zip文件&#xff0c;解压出多张表数据。 2&#xff0c;关键代码&#xff1a; <Button class"export button-style button-space" click"ex…

哨兵1号回波数据(L0级)产品目录介绍

1 数据包总览 哨兵1号L0级数据产品系列如下图所示&#xff0c;本文针对图中红框中的数据产品进行介绍&#xff08;定标数据、噪声数据没下载到。。。&#xff09;。 1.1 数据包名称 示例&#xff1a; S1A_S3_RAW__0SSV_20211230T105851_20211230T105907_041237_04E698_94F0.S…

基于python+TensorFlow+Django卷积网络算法+深度学习模型+蔬菜识别系统

欢迎大家点赞、收藏、关注、评论啦 &#xff0c;由于篇幅有限&#xff0c;只展示了部分核心代码。 文章目录 一项目简介 二、功能三、系统四. 总结 一项目简介 介绍了TensorFlow在图像识别分类中的应用&#xff0c;并通过相关代码进行了讲解。通过TensorFlow提供的工具和库&am…

Flutter之Json序列化

前言 使用 json_annotation 框架实现json字符串序列化和反序列化 框架官方地址&#xff1a;json_serializable 一、引入依赖&#xff1a;在pubspec.yaml中添加 dependencies:json_annotation: ^4.8.1dev_dependencies:build_runner: ^2.3.3json_serializable: ^6.6.0 二、…